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 640)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java	(revision 641)
@@ -207,10 +207,9 @@
 		
 		
 		// check that the charts engine used for the result matches the SWT components provider otherwise fin a suitable components provider
-		ChartsEngine chartsEngine = ChartsEngine.getChartsEngine(this.getResult()); 
-		if(chartsEngine != this.getSWTChartsComponentsProvider().getChartsEngine())	{
-			this.getEditorInput().setSWTChartsComponentsProvider(SWTChartsComponentsProvider.getComponentsProvider(chartsEngine));
-			this.getSWTChartsComponentsProvider().setChartsEngine(chartsEngine);
+		if(this.getResult().getChartsEngine() != this.getSWTChartsComponentsProvider().getChartsEngine())	{
+			this.getEditorInput().setSWTChartsComponentsProvider(SWTChartsComponentsProvider.getComponentsProvider(this.getResult().getChartsEngine()));
+			this.getSWTChartsComponentsProvider().setChartsEngine(this.getResult().getChartsEngine());
 			System.err.println("ChartEditor.__updateEditorFromResult(): charts engine used to create the chart is not the current one. The SWT components provider has been changed to match it: " + this.getSWTChartsComponentsProvider() + ".");
 			
 			// recreating the chart composite
Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java	(revision 640)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java	(revision 641)
@@ -3,7 +3,11 @@
 import java.awt.Font;
 import java.awt.GraphicsEnvironment;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
 
+import org.apache.commons.lang.StringUtils;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
@@ -15,6 +19,7 @@
 import org.txm.chartsengine.core.ChartsEngine;
 import org.txm.chartsengine.core.preferences.ChartsEnginePreferences;
 import org.txm.chartsengine.core.results.ChartResult;
+import org.txm.chartsengine.rcp.SWTChartsComponentsProvider;
 import org.txm.chartsengine.rcp.editors.ChartEditor;
 import org.txm.chartsengine.rcp.messages.SWTComponentsProviderMessages;
 import org.txm.rcp.IImageKeys;
@@ -160,50 +165,51 @@
 		fontSizeCombo.select(currentFontSizeIndex);
 
 		
-		// Chart types from installed chart creators
+		// Chart types from installed chart creators in all installed charts engines
+		final Combo chartTypeCombo = new Combo(this, SWT.READ_ONLY);
+		ArrayList<String> chartsEngineNames = new ArrayList<String>();
+		ArrayList<ChartCreator> allChartCreators = new ArrayList<ChartCreator>();
 		
-//		if(contributions.length > 1)	{
-			final Combo chartTypeCombo = new Combo(this, SWT.READ_ONLY);
-			
-			ArrayList<ChartCreator> chartCreators = new ArrayList<ChartCreator>();
-			for (int i = 0; i < ChartsEngine.getChartsEngines().size(); i++) {
-				chartCreators.addAll(ChartsEngine.getChartsEngines().get(i).getChartCreators(this.chartEditorPart.getResult()));	
+		for (int i = 0; i < ChartsEngine.getChartsEngines().size(); i++) {
+			ArrayList<ChartCreator> chartCreators = ChartsEngine.getChartsEngines().get(i).getChartCreators(this.chartEditorPart.getResult());
+			for (int j = 0; j < chartCreators.size(); j++) {
+				chartsEngineNames.add(ChartsEngine.getChartsEngines().get(i).getName());
+				allChartCreators.add(chartCreators.get(j));
 			}
+		}
+		
+		
+		String chartTypes[] = new String[allChartCreators.size()];
+		int currentChartTypeIndex = 0;
+		
+		for(int i = 0; i < allChartCreators.size(); i++) {
 			
-			
-			String chartTypes[] = new String[chartCreators.size()];
-			int currentChartTypeIndex = 0;
-			for(int i = 0; i < chartCreators.size(); i++) {
-				chartTypes[i] = chartCreators.get(i).getChartType();
-				if(chartTypes[i] == null)	{
-					chartTypes[i] = ChartsEnginePreferences.DEFAULT_CHART_TYPE;
-				}
-				if(this.getEditorPart().getChartType() != null && this.getEditorPart().getChartType().equals(chartTypes[i])) {
-					currentChartTypeIndex = i;
-				}
-				
+			chartTypes[i] = allChartCreators.get(i).getChartType();
+			if(chartTypes[i] == null)	{
+				chartTypes[i] = ChartsEnginePreferences.DEFAULT_CHART_TYPE;
 			}
-			chartTypeCombo.setItems(chartTypes);
-			
-			ToolItem chartTypeComboItem = new ToolItem(this, SWT.SEPARATOR);
-			chartTypeComboItem.setControl(chartTypeCombo);
-			chartTypeCombo.pack();
-			chartTypeComboItem.setWidth(chartTypeCombo.getBounds().width);
-			
-			chartTypeCombo.select(currentChartTypeIndex);
-			
-			
-			if(chartCreators.size() < 2)	{
-				chartTypeCombo.setVisible(false);
+
+			if(this.getEditorPart().getChartType() != null && this.getEditorPart().getChartType().equals(chartTypes[i])
+					&& this.getEditorPart().getChartsEngine().getName().equals(chartsEngineNames.get(i))) {
+				currentChartTypeIndex = i;
 			}
-//		}
-//		else	{
-//			final Combo chartTypeCombo = null;
-//		}
+			chartTypes[i] = chartsEngineNames.get(i) + " / " + chartTypes[i];
+		}
+		chartTypeCombo.setItems(chartTypes);
 		
+		ToolItem chartTypeComboItem = new ToolItem(this, SWT.SEPARATOR);
+		chartTypeComboItem.setControl(chartTypeCombo);
+		chartTypeCombo.pack();
+		chartTypeComboItem.setWidth(chartTypeCombo.getBounds().width);
 		
+		chartTypeCombo.select(currentChartTypeIndex);
 		
 		
+		if(allChartCreators.size() < 2)	{
+			chartTypeCombo.setVisible(false);
+		}
+		
+		
 		// Listeners
 		SelectionListener listener = new SelectionListener() {
 			
@@ -228,7 +234,12 @@
 					chartEditorPart.getResult().setFont("1|" + fontCombo.getItem(fontCombo.getSelectionIndex()) + "|" + fontSizeCombo.getItem(fontSizeCombo.getSelectionIndex()) + "|0");
 				}
 				else if(e.getSource() == chartTypeCombo)	{
-					chartEditorPart.getResult().setChartType(chartTypeCombo.getItem(chartTypeCombo.getSelectionIndex()));
+					
+					String[] data = StringUtils.split(chartTypeCombo.getItem(chartTypeCombo.getSelectionIndex()), '/');
+					data[0] = StringUtils.trim(data[0]);
+					data[1] = StringUtils.trim(data[1]);
+					chartEditorPart.getResult().setChartType(data[1]);
+					chartEditorPart.getResult().setChartsEngine(ChartsEngine.getChartsEngineByName(data[0]));
 					update = 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 640)
+++ tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/ChartsEngine.java	(revision 641)
@@ -286,7 +286,7 @@
 	/**
 	 * Gets an installed charts engine according to its class type.
 	 * @param type
-	 * @return the installed charts engine according to its class type if it exists otherwise null;
+	 * @return the installed charts engine according to its class type if it exists otherwise null
 	 */
 	public static ChartsEngine getChartsEngine(Class type)	{
 		ChartsEngine chartsEngine = null;
@@ -317,6 +317,22 @@
 	
 	
 	/**
+	 * Gets an installed charts engine according to its name.
+	 * @param type
+	 * @return the installed charts engine according to its name if it exists otherwise null
+	 */
+	public static ChartsEngine getChartsEngineByName(String name)	{
+		ChartsEngine chartsEngine = null;
+		for(int i = 0; i < ChartsEngine.chartsEngines.size(); i++) {
+			if(chartsEngines.get(i).getName().equals(name))	{
+				chartsEngine = ChartsEngine.chartsEngines.get(i);
+				break;
+			}
+		}
+		return chartsEngine;
+	}
+	
+	/**
 	 * Gets the first charts engine that can render the specified result.
 	 * @param result
 	 * @return
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 640)
+++ tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 641)
@@ -22,7 +22,13 @@
  */
 public abstract class ChartResult extends TXMResult {
 
+	
 	/**
+	 * Linked charts engine.
+	 */
+	protected ChartsEngine chartsEngine;
+	
+	/**
 	 * The chart object.
 	 */
 	protected Object chart;
@@ -98,6 +104,7 @@
 	 */
 	public ChartResult(TXMResult parent) {
 		super(parent);
+		this.chartsEngine = ChartsEngine.getCurrent();
 		this.chartDirty = true;
 		this.needsToResetView = false;
 		this.needsToClearItemsSelection = false;
@@ -510,6 +517,24 @@
 		this.multipleLineStrokes = multipleStrokes;
 	}
 
+
+	/**
+	 * Gets the current charts engine used for the rendering.
+	 * @return the chartsEngine
+	 */
+	public ChartsEngine getChartsEngine() {
+		return chartsEngine;
+	}
+
+
+	/**
+	 * Sets the charts engine to use for the rendering.
+	 * @param chartsEngine the chartsEngine to set
+	 */
+	public void setChartsEngine(ChartsEngine chartsEngine) {
+		this.chartsEngine = chartsEngine;
+	}
+
 	
 	
 	// FIXME
