Index: tmp/org.txm.progression.core/src/org/txm/progression/core/messages/messages.properties
===================================================================
--- tmp/org.txm.progression.core/src/org/txm/progression/core/messages/messages.properties	(revision 1537)
+++ tmp/org.txm.progression.core/src/org/txm/progression/core/messages/messages.properties	(revision 1538)
@@ -1,14 +1,27 @@
-#TXM messages generated by the PluginMessagesManager class
-#Thu Dec 06 15:00:56 CET 2018
-occurrences=Occurrences
-density=(density)
-doneColonNoMatchFound=Done\: no match found.
-progressionOf=Progression of 
-theProgressionCommandIsNotYetAvailableForDiscontinuousSubcorpora=The Progression command is not available for discontinuous sub-corpora.
-filteringREGEXColon=, filtering REGEX\: 
-RESULT_TYPE=Progression
-inP0=in
-structureColon=structure\: 
-tEqualsP0=T \= {0}
-propertyColon=, property\: 
-errorColonSubcorpusWithSize0=** Error\: the sub-corpus is empty
+#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
+#TXM messages generated by the PluginMessagesManager class
+#Thu Dec 06 15:00:56 CET 2018
+
+RESULT_TYPE = Progression
+
+density = (density)
+
+doneColonNoMatchFound = Done: no match found.
+
+errorColonSubcorpusWithSize0 = ** Error: the sub-corpus is empty
+
+filteringREGEXColon = , filtering REGEX: 
+
+inP0 = in {0}
+
+occurrences = Occurrences
+
+progressionOf = Progression of 
+
+propertyColon = , property: 
+
+structureColon = structure: 
+
+tEqualsP0 = T = {0}
+
+theProgressionCommandIsNotYetAvailableForDiscontinuousSubcorpora = The Progression command is not available for discontinuous sub-corpora.
Index: tmp/org.txm.progression.core/src/org/txm/progression/core/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.progression.core/src/org/txm/progression/core/messages/messages_fr.properties	(revision 1537)
+++ tmp/org.txm.progression.core/src/org/txm/progression/core/messages/messages_fr.properties	(revision 1538)
@@ -1,14 +1,27 @@
-#TXM messages generated by the PluginMessagesManager class
-#Thu Dec 06 15:00:56 CET 2018
-occurrences=Occurrences
-density=(densité)
-doneColonNoMatchFound=Terminé\: pas de correspondance trouvée.
-progressionOf=Progression de 
-theProgressionCommandIsNotYetAvailableForDiscontinuousSubcorpora=La fonctionnalité Progression n'est pas disponible pour les sous-corpus discontinus.
-filteringREGEXColon=, REGEX de filtrage \: 
-RESULT_TYPE=Progression
-inP0=dans
-structureColon=structure \:  
-tEqualsP0=T \= {0}
-propertyColon=, propriété \:  
-errorColonSubcorpusWithSize0=** Erreur \: le sous-corpus est vide
+#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
+#TXM messages generated by the PluginMessagesManager class
+#Thu Dec 06 15:00:56 CET 2018
+
+RESULT_TYPE = Progression
+
+density = (densité)
+
+doneColonNoMatchFound = Terminé: pas de correspondance trouvée.
+
+errorColonSubcorpusWithSize0 = ** Erreur : le sous-corpus est vide
+
+filteringREGEXColon = , REGEX de filtrage : 
+
+inP0 = dans {0}
+
+occurrences = Occurrences
+
+progressionOf = Progression de 
+
+propertyColon = , propriété :  
+
+structureColon = structure :  
+
+tEqualsP0 = T = {0}
+
+theProgressionCommandIsNotYetAvailableForDiscontinuousSubcorpora = La fonctionnalité Progression n'est pas disponible pour les sous-corpus discontinus.
Index: tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java
===================================================================
--- tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java	(revision 1537)
+++ tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java	(revision 1538)
@@ -300,7 +300,7 @@
 			this.structurePositions = new int[0];
 			this.structureNames = new String[0];
 
-			this.subTask("Processing queries.");
+			this.subTask("Processing queries...");
 			if (!stepQueries()) {
 				Log.severe(ProgressionCoreMessages.doneColonNoMatchFound);
 				return false;
@@ -313,7 +313,7 @@
 		}
 
 		// Structural units
-		this.subTask("Processing structural units.");
+		this.subTask("Processing structural units...");
 		if (!this.stepStructuralUnits())	{
 			return false;
 		}
@@ -322,7 +322,7 @@
 
 		// Finalization steps
 		if(this.hasParameterChanged(ProgressionPreferences.QUERIES))	{
-			this.subTask("Finalizing.");
+			this.subTask("Finalizing...");
 			if (!stepFinalize())	{
 				return false;
 			}
Index: tmp/org.txm.progression.rcp/src/org/txm/progression/rcp/editors/ProgressionEditor.java
===================================================================
--- tmp/org.txm.progression.rcp/src/org/txm/progression/rcp/editors/ProgressionEditor.java	(revision 1537)
+++ tmp/org.txm.progression.rcp/src/org/txm/progression/rcp/editors/ProgressionEditor.java	(revision 1538)
@@ -208,7 +208,9 @@
 					}
 				}
 			});
+			queryWidget.getQueryWidget().addModifyListener(computeKeyListener);
 			
+			
 			Button addNewQueryButton = new Button(getMainParametersComposite(), SWT.PUSH);
 			addNewQueryButton.setText(ProgressionUIMessages.add);
 			addNewQueryButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
@@ -278,7 +280,11 @@
 			bandeField.setEnabled(densityButton.getSelection());
 			bandeField.setText("" + this.getResult().getBandeMultiplier()); //$NON-NLS-1$
 			bandeField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, true, 2, 1));
+			bandeField.addKeyListener(computeKeyListener);
+			bandeField.addModifyListener(computeKeyListener);
 
+			
+			
 			// Structural units and properties combo viewers
 			StructuralUnitsCombosGroup structuration = new StructuralUnitsCombosGroup(paramPanel, this, this.getResult().getStructuralUnit(), this.getResult().getStructuralUnitProperty());
 			GridData gdata = new GridData(GridData.BEGINNING, GridData.BEGINNING, true, false, 3, 1);
@@ -297,11 +303,10 @@
 			regexLabel.setAlignment(SWT.CENTER);
 
 			propertyRegex = new Text(structuration, SWT.SINGLE | SWT.BORDER);
-			// FIXME: layout
-			//propertyRegex.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1));
 			propertyRegex.addKeyListener(computeKeyListener);
+			propertyRegex.addModifyListener(computeKeyListener);
+			
 
-
 			// Repeat same values in part markers
 			repeatSameValues = new Button(paramPanel, SWT.CHECK);
 			repeatSameValues.setText(ProgressionUIMessages.repeatSameValues);
@@ -613,7 +618,7 @@
 	@Override
 	public void updateEditorFromChart(boolean update) {
 
-		queryList = this.getResult().getQueries();
+		//queryList = this.getResult().getQueries();
 		
 		 // initialize query fields
 		if (queryWidgets.size() == 0 && queryList != null) {
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/utils/SWTEditorsUtils.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/utils/SWTEditorsUtils.java	(revision 1537)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/utils/SWTEditorsUtils.java	(revision 1538)
@@ -43,21 +43,36 @@
 	 */
 	public static IEditorPart getEditor(TXMResult result)	{
 
-		for (IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
-			for (IWorkbenchPage page : window.getPages()) {
-				return page.findEditor(new TXMResultEditorInput<TXMResult>(result));
-			}
+		// FIXME: SJ: old version, doesn't work with ChartEditorInput
+//		for (IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
+//			for (IWorkbenchPage page : window.getPages()) {
+//				return page.findEditor(new TXMResultEditorInput<TXMResult>(result));
+//			}
+//		}
+//		return null;
+		
+		// FIXME: SJ: new version, also works with ChartEditorInput
+		ArrayList<TXMEditor> editors = getEditors(result);
+		if(!editors.isEmpty())	{
+			return editors.get(0);
 		}
+		
 		return null;
 	}
 
 	/**
-	 * return all opened editors of every parts of every windows
+	 * Gets all opened editors.
+	 * @return all opened editors if there is at least one otherwise returns an empty list
 	 */
 	public static ArrayList<TXMEditor> getEditors() {
 		return getEditors(null);
 	}
 
+	/**
+	 * Gets all opened editors for the specified result.
+	 * @param result
+	 * @return all opened editors for the specified result if there is at least one otherwise returns an empty list
+	 */
 	public static ArrayList<TXMEditor> getEditors(TXMResult result)	{
 
 		ArrayList<TXMEditor> editors = new ArrayList<TXMEditor>();
@@ -121,38 +136,6 @@
 		return (TXMEditor)editor;
 	}
 
-
-	//	// FIXME: SJ: seems useless since page.findEditor() seem to return the multipage editor if a nested editor exists? 
-	//	/***
-	//	 * Gets an editor for the specified result if its opened inside a TXMMultiPageEditor.
-	//	 * @param result the result used by the editor to find
-	//	 * @return the editor if its opened otherwise null
-	//	 */
-	//	public static IEditorPart getEditorInMultiPageEditor(TXMResult result)	{
-	//		
-	//		IEditorPart editor = null;
-	//		
-	//		for (IEditorReference reference : PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences()) {
-	//			IEditorPart tmpEditor = reference.getEditor(false);
-	//
-	//			if(tmpEditor instanceof TXMMultiPageEditor)	{
-	//				TXMMultiPageEditor txmMultipageEditor = ((TXMMultiPageEditor)tmpEditor);
-	//				for (int i = 0; i < txmMultipageEditor.getEditors().size(); i++) {
-	//					if(txmMultipageEditor.getEditors().get(i) instanceof TXMEditor)	{
-	//						TXMEditor txmEditor = ((TXMEditor)txmMultipageEditor.getEditors().get(i));
-	//						if(txmEditor.getResult() == result)	{
-	//							editor = txmEditor;
-	//							break;
-	//						}
-	//					}
-	//				}
-	//				
-	//			}
-	//		}
-	//		
-	//		return editor;
-	//	}
-
 	/**
 	 * Checks if the editor specified by its editor input is already open in the active page.
 	 * @param editorInput
@@ -177,15 +160,6 @@
 		return null;
 	}
 
-	//	/**
-	//	 * Checks if the specified editor is already open in the active page.
-	//	 * @param editor
-	//	 * @return
-	//	 */
-	//	public static boolean isOpenEditor(EditorPart editor)	{
-	//		return isOpenEditor(editor.getEditorInput());
-	//	}
-
 	/**
 	 * Splits the parent area of an editor and add another one in this area by splitting it. 
 	 * (Same behavior than the splitting drag and drop event on editor.)
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 1537)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 1538)
@@ -366,6 +366,8 @@
 		try {
 			this.parent = parent;
 
+			//this.getContainer().setRedraw(false);
+			
 			// to hide and display the extended parameters composite
 			this.initParentLayout(parent, 1);
 
@@ -453,7 +455,6 @@
 //			}
 			
 
-			
 			if (this.getResult().isLocked()) {
 				this.setLocked(true);
 			}
@@ -471,6 +472,8 @@
 		}
 		
 		this.setDirty(false);
+		
+		//this.getContainer().setRedraw(true);
 	}
 
 	public void setLocked(boolean b) {
@@ -648,7 +651,7 @@
 		this.dirty = dirty;
 
 		// FIXME: SJ: future version that enable the button ONLY if the result can compute
-		// need to check all canCompute() result method before enabling it
+		// need to check all canCompute() result methods before enabling it
 //		try {
 //			// enable/disable the compute button according to dirty state of the editor
 //			if (this.computeButton != null && !this.computeButton.isDisposed()) {
@@ -834,14 +837,17 @@
 //									}
 									
 
+									
 									// subclasses manual result updating from editor fields
 									Log.finest("TXMEditor.compute(): " + TXMEditor.this.getClass().getSimpleName() + ": manually updating result from editor."); //$NON-NLS-1$
 									updateResultFromEditor();
-	
-									 // auto updating result from Parameter annotations in result <=> editor
+
+									// auto updating result from Parameter annotations in result <=> editor
 									Log.finest("TXMEditor.compute(): " + TXMEditor.this.getClass().getSimpleName() + ": auto updating result from editor."); //$NON-NLS-1$
 									autoUpdateResultFromEditorParameters();
-	
+		
+
+									
 									// FIXME: SJ: useless at this time?
 									// Stores the last parameters before the computing to later auto-update the Widgets only if some parameters have changed 
 									//setLastComputingParameters(TXMEditor.this.getResult().getLastParametersFromHistory());
@@ -1127,9 +1133,9 @@
 			try {
 				f.setAccessible(true);
 				object = f.get(this);
-				if (object == null) {
-					continue; // widget not set
-				}
+//				if (object == null) {
+//					continue; // widget not set
+//				}
 				value = this.getResult().getParameter(parameter.key(), true); // propagate to parent one time
 
 				if (value == null) {
@@ -1263,9 +1269,9 @@
 			try {
 				f.setAccessible(true);
 				Object object = f.get(this);
-				if (object == null) {
-					continue; // widget not set
-				}
+//				if (object == null) {
+//					continue; // widget not set
+//				}
 				Object value = null;
 				if(object instanceof ToolItem)	{
 					value = ((ToolItem)object).getSelection(); 
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/PropertiesComboViewer.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/PropertiesComboViewer.java	(revision 1537)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/PropertiesComboViewer.java	(revision 1538)
@@ -10,8 +10,10 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Spinner;
 import org.txm.core.results.TXMResult;
 import org.txm.rcp.editors.TXMEditor;
+import org.txm.rcp.editors.listeners.BaseAbstractComputeListener;
 import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 import org.txm.searchengine.cqp.corpus.Property;
 
@@ -38,7 +40,7 @@
 	 * @param selectedSUP
 	 * @param addBlankEntry to add an empty blank entry at start of the list to clear property.
 	 */
-	public PropertiesComboViewer(Composite parent, int style, TXMEditor<? extends TXMResult> editor, boolean autoCompute, List<? extends Property> properties, Property selectedProperty, boolean addBlankEntry) {
+	public PropertiesComboViewer(Composite parent, int style, TXMEditor<? extends TXMResult> editor, boolean autoCompute, List<? extends Property> properties, Property selectedProperty, boolean addBlankEntry, ComputeSelectionListener listener) {
 		super(parent, style);
 		
 		this.addBlankEntry = addBlankEntry;
@@ -46,13 +48,20 @@
 		this.setContentProvider(ArrayContentProvider.getInstance());
 
 		this.updateFromList(properties, selectedProperty);
-
+		
 		// Listener
-		this.addSelectionChangedListener(new ComputeSelectionListener(editor, autoCompute));
+		if(listener != null)	{
+			this.addSelectionChangedListener(listener);
+		}
 
 	}
 
 
+	public PropertiesComboViewer(Composite parent, int style, TXMEditor<? extends TXMResult> editor, boolean autoCompute, List<? extends Property> properties, Property selectedProperty, boolean addBlankEntry) {
+		this(parent, style, editor, autoCompute, properties, selectedProperty, addBlankEntry, new ComputeSelectionListener(editor, autoCompute));
+	}
+	
+	
 	/**
 	 * 
 	 * @param parent
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/StructuralUnitPropertiesComboViewer.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/StructuralUnitPropertiesComboViewer.java	(revision 1537)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/StructuralUnitPropertiesComboViewer.java	(revision 1538)
@@ -33,7 +33,8 @@
 	 * @param addBlankEntry to add an empty blank entry at start of the list to clear property.
 	 */
 	public StructuralUnitPropertiesComboViewer(Composite parent, int style, TXMEditor<? extends TXMResult> editor, boolean autoCompute, StructuralUnit su, StructuralUnitProperty selectedSUP, boolean addBlankEntry) {
-		super(parent, style, editor, false, null, null, addBlankEntry);
+		super(parent, style, editor, false, null, null, addBlankEntry, null);
+		
 		this.updateFromStructuralUnit(su, selectedSUP);
 		
 		// Listener
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/adapters/TXMResultAdapter.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/adapters/TXMResultAdapter.java	(revision 1537)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/adapters/TXMResultAdapter.java	(revision 1538)
@@ -41,6 +41,7 @@
 	public String getLabel(Object result) {
 		String label = ((TXMResult) result).getCurrentName();
 
+		// FIXME: SJ: doesn't work if a result has more than one editor opened
 		IEditorPart editor = SWTEditorsUtils.getEditor((TXMResult) result);
 		if(editor != null && editor.isDirty())	{
 			label += " *"; //$NON-NLS-1$
Index: tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/preferences/ChartsEnginePreferences.java
===================================================================
--- tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/preferences/ChartsEnginePreferences.java	(revision 1537)
+++ tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/preferences/ChartsEnginePreferences.java	(revision 1538)
@@ -72,11 +72,14 @@
 	/**
 	 * Default font string representation.
 	 */
-	public final static String DEFAULT_FONT = "1|Lucida Sans Unicode|11.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|34|Lucida Sans Unicode;"; //$NON-NLS-1$  
+	public final static String DEFAULT_FONT = "1|Lucida Sans Unicode|11.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|34|Lucida Sans Unicode;"; //$NON-NLS-1$
+	
+	//public final static String DEFAULT_FONT = "1|Lucida Sans|11|0;"; //$NON-NLS-1$
+	
 	//public final static String DEFAULT_FONT = "1|Tahoma|8.25|0|WINDOWS|1|-11|0|0|0|400|0|0|0|1|0|0|0|0|Tahoma;"; //$NON-NLS-1$
+	// TODO: version Linux : 1|Lucida Sans|11.0|0|GTK|1|
 	
 	
-	
 	public final static String DEFAULT_CHART_TYPE = "[Default]"; //$NON-NLS-1$
 	
 
Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java	(revision 1537)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java	(revision 1538)
@@ -221,8 +221,8 @@
 		for(int i = 0; i < contributions.length; i++) {
 			
 			// FIXME: to manage more than one input format, Store them in the class rather than in the extension schema?
-			String formatsStr = contributions[i].getAttribute("inputFormat").replace(" ", "").trim();
-			String[] formats = formatsStr.split(",");
+			String formatsStr = contributions[i].getAttribute("inputFormat").replace(" ", "").trim(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			String[] formats = formatsStr.split(","); //$NON-NLS-1$
 			
 			try {
 				SWTChartsComponentsProvider swtChartsComponentsProvider = (SWTChartsComponentsProvider)contributions[i].createExecutableExtension("class");  //$NON-NLS-1$
Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java	(revision 1537)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java	(revision 1538)
@@ -668,7 +668,14 @@
 		return chartToolBar;
 	}
 
+//	@Override
+//	public boolean isDirty() {
+//		boolean d1 = super.isDirty();
+//		boolean d2 = this.getResult().isChartDirty();
+//		return super.isDirty() && this.getResult().isChartDirty();
+//	}
 	
+	
 	@Override
 	public T getResult()	{
 		return (T) this.getEditorInput().getResult();
Index: tmp/org.txm.partition.rcp/src/org/txm/partition/rcp/editors/PartitionDimensionsEditor.java
===================================================================
--- tmp/org.txm.partition.rcp/src/org/txm/partition/rcp/editors/PartitionDimensionsEditor.java	(revision 1537)
+++ tmp/org.txm.partition.rcp/src/org/txm/partition/rcp/editors/PartitionDimensionsEditor.java	(revision 1538)
@@ -1,7 +1,6 @@
 package org.txm.partition.rcp.editors;
 
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.ToolItem;
 import org.txm.chartsengine.rcp.editors.ChartEditor;
 import org.txm.core.results.Parameter;
@@ -47,8 +46,6 @@
 	}
 
 
-
-
 	@Override
 	public void updateEditorFromChart(boolean update) {
 		// nothing to do
