Index: tmp/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesSelectionEditor.java
===================================================================
--- tmp/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesSelectionEditor.java	(revision 635)
+++ tmp/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesSelectionEditor.java	(revision 636)
@@ -52,8 +52,6 @@
 		
 		banality = new FloatSpinner(this.getCommandParametersGroup(), SWT.BORDER);
 		banality.setToolTipText("Banality threshold");
-		banality.setIncrement(1);
-		banality.setMinimum(0);
 		banality.setMaximumAsFloat(2);
 		banality.addSelectionListener(new ComputeSelectionListener(this));
 		
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 635)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 636)
@@ -453,7 +453,7 @@
 
 					
 					if (!editorInput.getResult().compute(monitor)) {
-						Log.info("TXMEditor.compute(): compute failed.");
+						Log.info("TXMEditor.compute(): computing failed.");
 					}
 
 					monitor.worked(50);
@@ -465,7 +465,7 @@
 							public void run() {
 								try {
 
-									Log.info("TXMEditor.compute(): opening editor with id " + editorId);
+									Log.info("TXMEditor.compute(): opening editor with id: " + editorId);
 
 									IWorkbenchWindow window = TXMWindows.getActiveWindow();
 									IWorkbenchPage page = window.getActivePage();
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/FloatSpinner.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/FloatSpinner.java	(revision 635)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/FloatSpinner.java	(revision 636)
@@ -22,6 +22,8 @@
 	public FloatSpinner(Composite parent, int style) {
 		super(parent, style);
 		this.setDigits(1);
+		this.setMinimum(0);
+		this.setIncrement(1);
 	}
 
 	/**
Index: tmp/org.txm.wordcloud.rcp/src/org/txm/wordcloud/rcp/editors/WordCloudEditor.java
===================================================================
--- tmp/org.txm.wordcloud.rcp/src/org/txm/wordcloud/rcp/editors/WordCloudEditor.java	(revision 635)
+++ tmp/org.txm.wordcloud.rcp/src/org/txm/wordcloud/rcp/editors/WordCloudEditor.java	(revision 636)
@@ -7,6 +7,7 @@
 import org.eclipse.swt.widgets.Spinner;
 import org.txm.chartsengine.rcp.editors.ChartEditor;
 import org.txm.core.results.Parameter;
+import org.txm.rcp.swt.widget.FloatSpinner;
 import org.txm.utils.logger.Log;
 import org.txm.wordcloud.core.functions.WordCloud;
 import org.txm.wordcloud.core.preferences.WordCloudPreferences;
@@ -29,7 +30,7 @@
 	protected Spinner maxWordsCount; 
 	
 	@Parameter(key=WordCloudPreferences.ROTATION_PERCENT)
-	protected Spinner rotationPercent; 
+	protected FloatSpinner rotationPercent; 
 	
 	@Parameter(key=WordCloudPreferences.RANDOM_POSITIONS)
 	protected Button randomPositions;
@@ -58,10 +59,8 @@
 
 		// rotation percent
 		new Label(parametersArea, SWT.NONE).setText(WordCloudUIMessages.EditorToolBar_Percent_of_rotated_labels);
-		rotationPercent = new Spinner(parametersArea, SWT.BORDER);
-		rotationPercent.setMinimum(0);
-		rotationPercent.setIncrement(1);
-		rotationPercent.setMaximum(100);
+		rotationPercent = new FloatSpinner(parametersArea, SWT.BORDER);
+		rotationPercent.setMaximumAsFloat(100);
 
 		// random positions
 		randomPositions = new Button(parametersArea, SWT.CHECK);
Index: tmp/org.txm.wordcloud.rcp/src/org/txm/wordcloud/rcp/handlers/ComputeWordCloud.java
===================================================================
--- tmp/org.txm.wordcloud.rcp/src/org/txm/wordcloud/rcp/handlers/ComputeWordCloud.java	(revision 635)
+++ tmp/org.txm.wordcloud.rcp/src/org/txm/wordcloud/rcp/handlers/ComputeWordCloud.java	(revision 636)
@@ -27,8 +27,6 @@
 //
 package org.txm.wordcloud.rcp.handlers;
 
-import java.util.ArrayList;
-
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.txm.chartsengine.rcp.editors.ChartEditor;
@@ -39,7 +37,6 @@
 import org.txm.rcp.views.corpora.CorporaView;
 import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
 import org.txm.searchengine.cqp.corpus.Corpus;
-import org.txm.searchengine.cqp.corpus.Property;
 import org.txm.searchengine.cqp.corpus.query.Query;
 import org.txm.wordcloud.core.functions.WordCloud;
 import org.txm.wordcloud.core.messages.WordCloudCoreMessages;
@@ -85,14 +82,14 @@
 					Corpus corpus = (Corpus) selection; 
 					String lang = corpus.getLang();
 					Query query;
-					if (corpus.getProperty(lang + "pos") != null) {
+					if (corpus.getProperty(lang + "pos") != null) { //$NON-NLS-1$
 						query = new Query(WordCloud.getQueryForLang(lang));
 					}
 					else {
-						query = new Query("[]");
+						query = new Query("[]"); //$NON-NLS-1$
 					}
 					
-					System.out.println("Used query: " + query);
+					System.out.println("Used query: " + query); //$NON-NLS-1$
 
 					Index index = new Index((Corpus)selection);
 					index.setQuery(query);
Index: tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 635)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 636)
@@ -1208,7 +1208,9 @@
 			clone.createUUID();
 			this.parent.addChild(clone);
 			TXMPreferences.cloneNode(this, clone);
+			clone.dirty = true;
 		} catch (Exception e) {
+			Log.printStackTrace(e);
 		}
 		return clone;
 	}
@@ -1434,8 +1436,7 @@
 		return true;
 	}
 
-	// public abstract boolean toTxt(File file, String encoding) throws
-	// Exception;
+	// public abstract boolean toTxt(File file, String encoding) throws Exception;
 	@Deprecated
 	// FIXME: should be moved in an exporter extension
 	public abstract boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception;
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 635)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java	(revision 636)
@@ -88,14 +88,6 @@
 		super();
 	}
 
-	/**
-	 * Returns the result object associated with the editor through its editor input.
-	 * @return
-	 */
-	public T getResult()	{
-		return (T) this.getEditorInput().getResult();
-	}
-	
 
 	/**
 	 * 
@@ -139,6 +131,7 @@
 		
 		// Chart composite
 		this.chartComposite = this.getSWTChartsComponentsProvider().createComposite(this, parent);
+		
 		GridData gd = new GridData(GridData.FILL_BOTH);
 //		gd.grabExcessVerticalSpace = true;
 //		gd.grabExcessHorizontalSpace = true;
@@ -725,7 +718,15 @@
 		// does nothing by default
 	}
 	
+	
 	@Override
+	public T getResult()	{
+		return (T) this.getEditorInput().getResult();
+	}
+	
+
+	
+	@Override
 	public Composite getToolBarContainer(String toolbarLocalId) {
 		if (ChartEditorToolBar.ID.equals(toolbarLocalId)) {
 			return this.getTopToolBarContainer();
Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditorInput.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditorInput.java	(revision 635)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditorInput.java	(revision 636)
@@ -69,6 +69,14 @@
 		super(result);
 		this.swtChartsComponentsProvider = swtComponentsProvider;
 		this.chartContainer = chartContainer;
+		
+		// check that the charts engine used for the result matches the SWT components provider otherwise fin a suitable components provider
+		ChartsEngine chartsEngine = ChartsEngine.getChartsEngine(result); 
+		if(chartsEngine != swtComponentsProvider.getChartsEngine())	{
+			this.swtChartsComponentsProvider = SWTChartsComponentsProvider.getComponentsProvider(chartsEngine);
+			System.err.println("ChartEditorInput.ChartEditorInput(): charts engine used to create the chart is not the current one. The SWT components provider has been changed to match it: " + this.swtChartsComponentsProvider + ".");
+		}
+		
 	}
 
 	
Index: tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/preferences/WordCloudPreferences.java
===================================================================
--- tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/preferences/WordCloudPreferences.java	(revision 635)
+++ tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/preferences/WordCloudPreferences.java	(revision 636)
@@ -4,6 +4,7 @@
 import org.eclipse.core.runtime.preferences.DefaultScope;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.prefs.Preferences;
+import org.txm.chartsengine.core.preferences.ChartsEnginePreferences;
 import org.txm.core.preferences.TXMPreferences;
 
 /**
@@ -24,6 +25,7 @@
 	public static final String F_MIN = PREFERENCES_PREFIX + "f_min"; //$NON-NLS-1$
 	public static final String ROTATION_PERCENT = PREFERENCES_PREFIX + "rotation_percent"; //$NON-NLS-1$
 	public static final String RANDOM_POSITIONS = PREFERENCES_PREFIX + "random_positions"; //$NON-NLS-1$
+
 	
 	@Override
 	public void initializeDefaultPreferences() {
@@ -34,7 +36,7 @@
 		preferences.putInt(ROTATION_PERCENT, 10);
 		preferences.putBoolean(RANDOM_POSITIONS, false);
 
-		// FIXME: shared charts rendering preferences
-		//ChartsEnginePreferences.initializeChartsEngineSharedPreferences(preferences);
+		// shared charts rendering preferences
+		ChartsEnginePreferences.initializeChartsEngineSharedPreferences(preferences);
 	}
 }
Index: tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java
===================================================================
--- tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 635)
+++ tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 636)
@@ -145,7 +145,7 @@
 	 */
 	// FIXME: to factorize and move to RWorkspace 
 	public static boolean initPackages()	{
-		String[] packages = {"Rcpp", "RColorBrewer", "wordcloud"}; //$NON-NLS-1$ //$NON-NLS-2$
+		String[] packages = {"Rcpp", "RColorBrewer", "wordcloud"}; //$NON-NLS-1$ //$NON-NLS-2$  //$NON-NLS-3$
 			if (!loadAndInstallNeededPackages(packages)) {
 				System.out.println(WordCloudCoreMessages.Log_Aborting);
 				return false;
@@ -211,7 +211,6 @@
 	}
 
 	@Override
-	@Deprecated
 	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
@@ -222,10 +221,7 @@
 		// TODO Auto-generated method stub
 	}
 
-	/**
-	 * 
-	 * @return
-	 */
+	@Override
 	public String getName() {
 		return this.getSimpleName();
 	}
@@ -277,14 +273,14 @@
 	 * @return
 	 */
 	public static String getQueryForLang(String lang) {
-		if ("fr".equals(lang)) {
-			return "[frpos=\"NOM|NAM|ADJ|VER.*\"  & frlemma!=\"être|avoir|faire|pouvoir|devoir|vouloir|falloir|aller|dire|savoir\"]"; // requete de Serge pour le français TT
+		if ("fr".equals(lang)) { //$NON-NLS-1$
+			return "[frpos=\"NOM|NAM|ADJ|VER.*\"  & frlemma!=\"être|avoir|faire|pouvoir|devoir|vouloir|falloir|aller|dire|savoir\"]"; // requete de Serge pour le français TT //$NON-NLS-1$
 		}
 		else if ("en".equals(lang)) {
-			return "[enpos=\"N.*|JJ.*|V.*\"  & enlemma!=\"be|have|do|say|go|make|other\"]"; // requete de Serge pour l'anglais TT
+			return "[enpos=\"N.*|JJ.*|V.*\"  & enlemma!=\"be|have|do|say|go|make|other\"]"; // requete de Serge pour l'anglais TT //$NON-NLS-1$
 		}
 		else {
-			return ".*";
+			return ".*";//$NON-NLS-1$
 		}
 	}
 	
Index: tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java
===================================================================
--- tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 635)
+++ tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 636)
@@ -158,6 +158,22 @@
 
 		
 		ChartCreator chartCreator = ChartsEngine.getCurrent().getChartCreator(this);
+		
+		// try to find a chart creator in other charts engines
+		if(chartCreator == null)	{
+			for (int i = 0; i < ChartsEngine.getChartsEngines().size(); i++) {
+				if(ChartsEngine.getChartsEngines().get(i) == ChartsEngine.getCurrent())	{
+					continue;
+				}
+				chartCreator = ChartsEngine.getChartsEngines().get(i).getChartCreator(this);
+				if(chartCreator != null)	{
+					System.out.println("ChartResult.renderChart(): another suitable chart creator has been found in charts engine: " + ChartsEngine.getChartsEngines().get(i) + ".");
+					break;
+				}
+			}
+		}
+		
+		
 		if(chartCreator != null)	{
 			
 
@@ -188,10 +204,18 @@
 			this.needsToResetView = false;
 			
 			this.chartDirty = false;
+			
+			// FIXME: debug
+			System.err.println("ChartResult.renderChart(): chart rendering done.");
+
 			return true;
 			
 		}
-		return false;
+		else	{
+			// FIXME: debug
+			System.err.println("ChartResult.renderChart(): can not find any suitable chart creator for result: " + this.getClass() + ".");
+			return false;
+		}
 	}
 	
 	
Index: tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/ChartsEngine.java
===================================================================
--- tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/ChartsEngine.java	(revision 635)
+++ tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/ChartsEngine.java	(revision 636)
@@ -297,11 +297,29 @@
 		return chartsEngine;
 	}
 	
+	
 	/**
+	 * Gets the first charts engine that can render the specified result.
+	 * @param result
+	 * @return
+	 */
+	public static ChartsEngine getChartsEngine(ChartResult result)	{
+		ChartsEngine chartsEngine = null;
+		for (int i = 0; i < ChartsEngine.chartsEngines.size(); i++) {
+			if(ChartsEngine.chartsEngines.get(i).canCreateChart(result))	{
+				chartsEngine = ChartsEngine.chartsEngines.get(i);
+				break;
+			}
+		}
+		return chartsEngine;
+	}
+	
+	
+	/**
 	 * Returns the installed charts engine contributions.
 	 * @return
 	 */
-	public static  ArrayList<ChartsEngine> getChartsEngines()	{
+	public static ArrayList<ChartsEngine> getChartsEngines()	{
 		return ChartsEngine.chartsEngines;
 	}
 
