Index: tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/FindMessagesToBind.java
===================================================================
--- tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/FindMessagesToBind.java	(revision 2536)
+++ tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/FindMessagesToBind.java	(revision 2537)
@@ -21,14 +21,16 @@
 
 /**
  * 
- * Finds duplicated messages in all core and rcp plug-ins.
- * Merges them in a new key and move them to org.txm.core or org.txm.rcp.
+ * Finds unbounded messages and saves them to a file.
+ * E.g. Line of code containing Strings that are concatenated.
  *
  */
 public class FindMessagesToBind {
-
+	
 	File report;
+	
 	PrintWriter writer;
+	
 	boolean searchOnlyExternalized = true;
 	
 	public FindMessagesToBind(File report) {
@@ -36,55 +38,61 @@
 	}
 	
 	private int processSourceFile(File sourceFile, boolean searchOnlyExternalized) {
-
 		
-		//BufferedReader reader = IOUtils.getReader(sourceFile)
-		//String line = reader.readLine();
+		
+		// BufferedReader reader = IOUtils.getReader(sourceFile)
+		// String line = reader.readLine();
 		this.searchOnlyExternalized = searchOnlyExternalized;
 		boolean ignore = false;
 		ArrayList<String> lines = IOUtils.getLines(sourceFile, "UTF-8");
-		ArrayList<String> toBind = new ArrayList<String>();
+		ArrayList<String> toBind = new ArrayList<>();
 		
 		int nLine = 0;
 		for (String line : lines) {
 			nLine++;
-			//println ""+line
+			// println ""+line
 			String l = line.trim();
-
+			
 			if (ignore) {
 				if (l.startsWith("*/") || l.endsWith("*/")) {
 					ignore = false;
 				}
-			} else {
+			}
+			else {
 				if (l.startsWith("//") || l.startsWith("@")) {
 					// ignore
-				} else if (l.startsWith("/*")) {
+				}
+				else if (l.startsWith("/*")) {
 					ignore = true;
-					if (l.endsWith("*/")) ignore=false;
-				} else {
-//					ArrayList<String> strings = getLineStrings(l);
-//					if (strings.size() > 0) {
-//						System.out.println(strings);
-//					}
+					if (l.endsWith("*/")) ignore = false;
+				}
+				else {
+					// ArrayList<String> strings = getLineStrings(l);
+					// if (strings.size() > 0) {
+					// System.out.println(strings);
+					// }
 					
 					Matcher m = p1.matcher(l);
 					if (m.find()) {
-						toBind.add(""+nLine+"\t"+l);
-					//	System.out.println(sourceFile.getAbsolutePath()+ " " + l);
-						//System.out.println("1 "+m.group(1));
-					} else {
+						toBind.add("" + nLine + "\t" + l);
+						// System.out.println(sourceFile.getAbsolutePath()+ " " + l);
+						// System.out.println("1 "+m.group(1));
+					}
+					else {
 						m = p2.matcher(l);
 						if (m.find()) {
-							toBind.add(""+nLine+"\t"+l);
-						//	System.out.println(sourceFile.getAbsolutePath()+ " " + l);
-							//System.out.println("2 "+m.group(2));
-						} else if (!l.contains("$NON-NLS-") && !searchOnlyExternalized) {
+							toBind.add("" + nLine + "\t" + l);
+							// System.out.println(sourceFile.getAbsolutePath()+ " " + l);
+							// System.out.println("2 "+m.group(2));
+						}
+						else if (!l.contains("$NON-NLS-") && !searchOnlyExternalized) {
 							m = p3.matcher(l);
 							if (m.find()) {
-								toBind.add(""+nLine+"\t"+l);
-								//System.out.println(sourceFile.getAbsolutePath()+ " " + l);
-								//System.out.println("2 "+m.group(2));
-							} else {
+								toBind.add("" + nLine + "\t" + l);
+								// System.out.println(sourceFile.getAbsolutePath()+ " " + l);
+								// System.out.println("2 "+m.group(2));
+							}
+							else {
 								
 							}
 						}
@@ -96,76 +104,84 @@
 		if (toBind.size() > 0) {
 			writer.println(sourceFile.getAbsolutePath());
 			for (String l : toBind) {
-				writer.println("\t"+l);
+				writer.println("\t" + l);
 			}
 		}
 		
 		return toBind.size();
 	}
-	Pattern p1 = Pattern.compile("("+WorkspaceMessagesManager.KEY_REGEX.pattern()+")( ?\\+)");
-	Pattern p2 = Pattern.compile("( ?\\+)("+WorkspaceMessagesManager.KEY_REGEX.pattern()+")");
-	Pattern p3 = Pattern.compile("("+WorkspaceMessagesManager.STRING_REGEX.pattern()+" ?\\+)");
 	
+	Pattern p1 = Pattern.compile("(" + WorkspaceMessagesManager.KEY_REGEX.pattern() + ")( ?\\+)");
+	
+	Pattern p2 = Pattern.compile("( ?\\+)(" + WorkspaceMessagesManager.KEY_REGEX.pattern() + ")");
+	
+	Pattern p3 = Pattern.compile("(" + WorkspaceMessagesManager.STRING_REGEX.pattern() + " ?\\+)");
+	
 	private ArrayList<String> getLineStrings(String l) {
-		ArrayList<String> strings = new ArrayList<String>();
+		ArrayList<String> strings = new ArrayList<>();
 		boolean inS = false;
 		int start = 0;
 		int comment = 0;
-		for(int i = 0 ; i < l.length() ; i++) {
-			String c = ""+l.charAt(i);
+		for (int i = 0; i < l.length(); i++) {
+			String c = "" + l.charAt(i);
 			if (inS) {
 				comment = 0;
 				if (c.equals("\\")) {
 					i++;
-				} else if (c.equals("\"")) {
+				}
+				else if (c.equals("\"")) {
 					inS = false;
-					strings.add(l.substring(start, i+1));
+					strings.add(l.substring(start, i + 1));
 				}
-			} else {
+			}
+			else {
 				if (c.equals("\"")) {
 					inS = true;
 					start = i;
 					comment = 0;
-				} else if (c.equals("/")) {
+				}
+				else if (c.equals("/")) {
 					comment++;
 					if (comment == 2) break;
-				} else {
+				}
+				else {
 					comment = 0;
 				}
 			}
 		}
 		return strings;
 	}
-
+	
 	public void run() throws UnsupportedEncodingException, FileNotFoundException, IOException {
 		WorkspaceMessagesManager wmm = new WorkspaceMessagesManager();
 		LinkedHashMap<File, PluginMessagesManager> h = wmm.getPluginMessages();
-
+		
 		writer = IOUtils.getWriter(report);
 		int total = 0;
 		
 		TreeSet<File> projects = new TreeSet(h.keySet());
 		for (File project : projects) {
-
-			//System.out.println("Project: "+project);
-
+			
+			// System.out.println("Project: "+project);
+			
 			File srcDir = new File(project, "src/java");
-			if (!srcDir.exists())  srcDir = new File(project, "src");
+			if (!srcDir.exists()) srcDir = new File(project, "src");
 			if (!srcDir.exists()) continue; // no Java sources
-
+			
 			ArrayList<File> files = DeleteDir.scanDirectory(srcDir, true);
 			Collections.sort(files, new Comparator<File>() {
+				
 				@Override
 				public int compare(File arg0, File arg1) {
 					return arg0.getAbsolutePath().compareTo(arg1.getAbsolutePath());
 				}
 			});
 			for (File javaFile : files) {
-
+				
 				if (!javaFile.getName().endsWith(".java")) continue;
 				if (javaFile.getName().endsWith("Messages.java")) continue;
-
-				//System.out.println(" File: "+javaFile);
+				
+				// System.out.println(" File: "+javaFile);
 				total += processSourceFile(javaFile, true);
 			}
 		}
@@ -173,15 +189,16 @@
 		writer.close();
 		
 		if (total > 0) {
-			System.out.println(""+total+" potential bindinds.");
-		} else {
+			System.out.println("" + total + " potential bindinds.");
+		}
+		else {
 			System.out.println("You are the very best of the very best: nothing to do!");
 		}
 	}
-
+	
 	public static void main(String[] args) throws UnsupportedEncodingException, FileNotFoundException, IOException {
 		File report = new File("report.txt");
 		new FindMessagesToBind(report).run();
-		System.out.println("Report: "+report.getAbsolutePath());
+		System.out.println("Report: " + report.getAbsolutePath());
 	}
 }
Index: tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/MergeDuplicatedStringsInAPlugin.java
===================================================================
--- tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/MergeDuplicatedStringsInAPlugin.java	(revision 2536)
+++ tmp/org.txm.translate.rcp/src/org/txm/rcp/translate/devtools/MergeDuplicatedStringsInAPlugin.java	(revision 2537)
@@ -12,7 +12,7 @@
 
 /**
  * 
- * Finds duplicated strings in a plug-in, merge them in one key and remove duplicated.
+ * Finds duplicated strings in a plug-in, merges them in one key and removes duplicated.
  *
  */
 public class MergeDuplicatedStringsInAPlugin {
@@ -26,19 +26,20 @@
 	public MergeDuplicatedStringsInAPlugin(boolean debug) {
 		this.debug = debug;
 	}
-
+	
 	public int merge(PluginMessagesManager pm) {
 		HashMap<String, String> defaults = pm.getMessagesForDefaultLang();
-		TreeMap<String, String> value2Key = new TreeMap<String, String>();
+		TreeMap<String, String> value2Key = new TreeMap<>();
 		
-		TreeMap<String, TreeSet<String>> merges = new TreeMap<String, TreeSet<String>>();
-		TreeSet<String> keys = new TreeSet<String>(defaults.keySet());
+		TreeMap<String, TreeSet<String>> merges = new TreeMap<>();
+		TreeSet<String> keys = new TreeSet<>(defaults.keySet());
 		for (String key : keys) {
 			String value = defaults.get(key);
 			if (value2Key.containsKey(value)) { // duplicated message
 				pm.renameKey(key, value2Key.get(value));
 				merges.get(value2Key.get(value)).add(key);
-			} else {
+			}
+			else {
 				value2Key.put(value, key);
 				merges.put(key, new TreeSet<String>());
 			}
@@ -51,24 +52,25 @@
 		}
 		
 		if (merges.size() > 0) {
-			System.out.println(" Done: "+pm.getMessageFullName()+" "+merges.size()+" merges: "+merges);
-		} else {
-			//System.out.println(" Done: no merge");
+			System.out.println(" Done: " + pm.getMessageFullName() + " " + merges.size() + " merges: " + merges);
 		}
+		else {
+			// System.out.println(" Done: no merge");
+		}
 		
 		return merges.size();
 	}
 	
 	/**
 	 * @param args
-	 * @throws IOException 
-	 * @throws FileNotFoundException 
-	 * @throws UnsupportedEncodingException 
+	 * @throws IOException
+	 * @throws FileNotFoundException
+	 * @throws UnsupportedEncodingException
 	 */
 	public static void main(String[] args) throws UnsupportedEncodingException, FileNotFoundException, IOException {
-
+		
 		MergeDuplicatedStringsInAPlugin merger = new MergeDuplicatedStringsInAPlugin(false);
-
+		
 		WorkspaceMessagesManager wmm = new WorkspaceMessagesManager();
 		int total = 0;
 		for (PluginMessagesManager pm : wmm.getPluginMessages().values()) {
@@ -76,12 +78,13 @@
 			
 			pm.saveChanges(true);
 		}
-
+		
 		wmm.saveKeyModificationsInSources();
 		
 		if (total > 0) {
-			System.out.println("Done: "+total);
-		} else {
+			System.out.println("Done: " + total);
+		}
+		else {
 			System.out.println("Done: no merge");
 		}
 	}
