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 2689)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 2690)
@@ -2117,8 +2117,8 @@
 			}
 			clone = this.getClass().getDeclaredConstructor(String.class).newInstance(newNodePath);
 			
-			System.out.println("CLONE COMPUTED? " + clone.hasBeenComputedOnce());
-			System.out.println("CLONE DIRTY? " + clone.isDirty());
+			System.out.println("CLONE HAS BEEN COMPUTED? " + clone.hasBeenComputedOnce());
+			System.out.println("CLONE IS DIRTY? " + clone.isDirty());
 			
 			if (all) {
 				for (TXMResult child : this.children) {
Index: tmp/org.txm.chartsengine.svgbatik.rcp/src/org/txm/chartsengine/svgbatik/rcp/swt/SVGChartComposite.java
===================================================================
--- tmp/org.txm.chartsengine.svgbatik.rcp/src/org/txm/chartsengine/svgbatik/rcp/swt/SVGChartComposite.java	(revision 2689)
+++ tmp/org.txm.chartsengine.svgbatik.rcp/src/org/txm/chartsengine/svgbatik/rcp/swt/SVGChartComposite.java	(revision 2690)
@@ -1,4 +1,5 @@
 package org.txm.chartsengine.svgbatik.rcp.swt;
+
 import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
 import java.io.BufferedOutputStream;
@@ -40,9 +41,9 @@
  * @author sjacquot
  *
  */
-public class SVGChartComposite extends SwingChartComposite	{
-
+public class SVGChartComposite extends SwingChartComposite {
 	
+	
 	/**
 	 * The chart SVG file.
 	 */
@@ -51,6 +52,7 @@
 	
 	/**
 	 * Creates a Batik SVG composite.
+	 * 
 	 * @param parent
 	 * @param style
 	 */
@@ -58,17 +60,18 @@
 		super(chartEditor, parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);
 		this.file = null;
 	}
-
 	
+	
 	@Override
 	public void loadChart(Object chart) {
 		this.loadSVGDocument((File) chart);
 	}
-
 	
-
+	
+	
 	/**
 	 * Loads a SVG document from the specified file.
+	 * 
 	 * @param file the file to load
 	 */
 	// FIXME: SJ: we should use Batik listener system to check if the file has been well loaded
@@ -84,34 +87,39 @@
 		
 		this.file = file;
 		
-		Log.fine(TXMCoreMessages.bind("Loading SVG document from file: {0}...", file.getAbsolutePath()));
-
+		
 		SwingUtilities.invokeLater(new Runnable() {
-
+			
 			@Override
 			public void run() {
-
+				
 				try {
+					Log.fine(TXMCoreMessages.bind("Loading SVG document from file: {0}...", file.getAbsolutePath()));
+					
 					getSVGCanvas().loadSVGDocument(file.toURL().toExternalForm());
+					
+					Log.fine(TXMCoreMessages.bind("File {0} loaded.", file.getAbsolutePath()));
+					
 				}
 				catch (Exception e) {
 					Log.severe(TXMCoreMessages.bind("Can't load SVG document from file {0}.", file));
 					Log.printStackTrace(e);
 				}
-
+				
 			}
 		});
 	}
-
 	
+	
 	/**
 	 * Gets the SVG document.
+	 * 
 	 * @return
 	 */
-	public SVGDocument getSVGDocument()	{
+	public SVGDocument getSVGDocument() {
 		return this.getSVGCanvas().getSVGDocument();
 	}
-
+	
 	/**
 	 * Gets the SVG canvas chart component.
 	 * Convenience method for getChartComponent().
@@ -121,190 +129,191 @@
 	public SVGCanvas getSVGCanvas() {
 		return (SVGCanvas) this.chartComponent;
 	}
-
 	
-
+	
+	
 	@Override
 	public void clearChartItemsSelection() {
 		Log.severe("SVGChartComposite.clearChartItemsSelection(): not implemented.");
 	}
-
-
+	
+	
 	@Override
 	protected IChartComponent _createChartComponent() {
 		return new SVGCanvas();
 	}
-
-
+	
+	
 	@Override
 	public File exportView(File file, String fileFormat) {
 		// SVG
-		if(fileFormat == ChartsEngine.OUTPUT_FORMAT_SVG)	{
-
-
-
+		if (fileFormat == ChartsEngine.OUTPUT_FORMAT_SVG) {
+			
+			
+			
 			// FIXME : Batik transcoder version
 			// FIXME : the cropping to match view in SVG doesn't work
 			try {
-				//AbstractTranscoder imageTranscoder = this.getImageTranscoder(fileFormat);
-				AbstractTranscoder imageTranscoder =  new SVGTranscoder();
-
-
+				// AbstractTranscoder imageTranscoder = this.getImageTranscoder(fileFormat);
+				AbstractTranscoder imageTranscoder = new SVGTranscoder();
+				
+				
 				// Transcoder configuration
-				//imageTranscoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, new Integer(300));
-
-
+				// imageTranscoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, new Integer(300));
+				
+				
 				// SVG Cropping tests
-//				Rectangle area = new Rectangle(200, 200, 300, 500); // FIXME : how to get the correct area after the charts has been zoomed or moved ?
-////				imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(this.composite.getPanel().getWidth()));
-////				imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(this.composite.getPanel().getHeight()));
-//				imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(20));
-//				imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(20));
-//				imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_AOI, area);
-
-
+				// Rectangle area = new Rectangle(200, 200, 300, 500); // FIXME : how to get the correct area after the charts has been zoomed or moved ?
+				//// imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(this.composite.getPanel().getWidth()));
+				//// imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(this.composite.getPanel().getHeight()));
+				// imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(20));
+				// imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(20));
+				// imageTranscoder.addTranscodingHint(JPEGTranscoder.KEY_AOI, area);
+				
+				
 				// Add a viewbox attribute
-				//((Element)this.composite.getSVGDocument().getFirstChild()).setAttribute("viewBox", "20 20 400 350"); // FIXME : how to get the correct area after the charts has been zoomed or moved ?
-
+				// ((Element)this.composite.getSVGDocument().getFirstChild()).setAttribute("viewBox", "20 20 400 350"); // FIXME : how to get the correct area after the charts has been zoomed or moved
+				// ?
+				
 				// Adjust dimensions from component
-				((Element)this.getSVGDocument().getFirstChild()).setAttribute("width", String.valueOf(this.getSVGCanvas().getWidth()));
-				((Element)this.getSVGDocument().getFirstChild()).setAttribute("height", String.valueOf(this.getSVGCanvas().getHeight()));
-
-
+				((Element) this.getSVGDocument().getFirstChild()).setAttribute("width", String.valueOf(this.getSVGCanvas().getWidth()));
+				((Element) this.getSVGDocument().getFirstChild()).setAttribute("height", String.valueOf(this.getSVGCanvas().getHeight()));
+				
+				
 				TranscoderInput input = new TranscoderInput(this.getSVGDocument());
-
+				
 				// SVGTranscoder needs an OutputStreamWriter, not an OutputStream
-				if(imageTranscoder instanceof SVGTranscoder)	{
-
+				if (imageTranscoder instanceof SVGTranscoder) {
+					
 					FileWriter outputStreamWriter = new FileWriter(file);
 					imageTranscoder.transcode(input, new TranscoderOutput(outputStreamWriter));
-
+					
 					outputStreamWriter.flush();
 					outputStreamWriter.close();
 				}
-//				else	{
-//					OutputStream outputStream = new FileOutputStream(file);
-//					TranscoderOutput output = new TranscoderOutput(outputStream);
-//
-//					imageTranscoder.transcode(input, output);
-//
-//					outputStream.flush();
-//					outputStream.close();
-//				}
+				// else {
+				// OutputStream outputStream = new FileOutputStream(file);
+				// TranscoderOutput output = new TranscoderOutput(outputStream);
+				//
+				// imageTranscoder.transcode(input, output);
+				//
+				// outputStream.flush();
+				// outputStream.close();
+				// }
 			}
-			catch(FileNotFoundException e) {
+			catch (FileNotFoundException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
-			catch(TranscoderException e) {
+			catch (TranscoderException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
-			catch(IOException e) {
+			catch (IOException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			}
-
-
-
+			
+			
+			
 			// FIXME : SVG via Batik
-		    // FIXME : it saves the JPanel content as image raster tag in the SVG instead of creating real SVG shapes tag
-
-//			 // Get a DOMImplementation
-//		    DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
-//
-//		    String svgNS = "http://www.w3.org/2000/svg";
-//		    Document document = domImpl.createDocument(svgNS, "svg", null);
-//
-//		    SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
-//
-//		    // Paint in the SVGGraphics2D implementation
-//		    //this.composite.getPanel().getSVGCanvas().paint(svgGenerator);
-//		    this.composite.getPanel().paint(svgGenerator);
-//
-//		    boolean useCSS = true;
-//
-//		    try {
-//				Writer out = new FileWriter(file);
-//				svgGenerator.stream(out, useCSS);
-//			}
-//			catch(UnsupportedEncodingException e) {
-//				// TODO Auto-generated catch block
-//				e.printStackTrace();
-//			}
-//			catch(SVGGraphics2DIOException e) {
-//				// TODO Auto-generated catch block
-//				e.printStackTrace();
-//			}
-//			catch(IOException e) {
-//				// TODO Auto-generated catch block
-//				e.printStackTrace();
-//			}
-//
-
-
-
+			// FIXME : it saves the JPanel content as image raster tag in the SVG instead of creating real SVG shapes tag
+			
+			// // Get a DOMImplementation
+			// DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
+			//
+			// String svgNS = "http://www.w3.org/2000/svg";
+			// Document document = domImpl.createDocument(svgNS, "svg", null);
+			//
+			// SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
+			//
+			// // Paint in the SVGGraphics2D implementation
+			// //this.composite.getPanel().getSVGCanvas().paint(svgGenerator);
+			// this.composite.getPanel().paint(svgGenerator);
+			//
+			// boolean useCSS = true;
+			//
+			// try {
+			// Writer out = new FileWriter(file);
+			// svgGenerator.stream(out, useCSS);
+			// }
+			// catch(UnsupportedEncodingException e) {
+			// // TODO Auto-generated catch block
+			// e.printStackTrace();
+			// }
+			// catch(SVGGraphics2DIOException e) {
+			// // TODO Auto-generated catch block
+			// e.printStackTrace();
+			// }
+			// catch(IOException e) {
+			// // TODO Auto-generated catch block
+			// e.printStackTrace();
+			// }
+			//
+			
+			
+			
 			// FIXME : SVG via JFreeSVG : doesn't work
-//        	SVGGraphics2D g2 = new SVGGraphics2D(this.composite.getPanel().getWidth(), this.composite.getPanel().getHeight());
-//
-//			// suppress shadow generation, because SVG is a vector format and
-//			// the shadow effect is applied via bitmap effects...
-//			g2.setRenderingHint(JFreeChart.KEY_SUPPRESS_SHADOW_GENERATION, true);
-//			String svg = null;
-//			this.composite.
-//			getPanel().
-//			paintAll(g2);
-//			svg = g2.getSVGElement();
-//
-//			if (file != null) {
-//			    BufferedWriter writer = null;
-//			    try {
-//			        writer = new BufferedWriter(new FileWriter(file));
-//			        writer.write("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
-//			        writer.write(svg + "\n");
-//			        writer.flush();
-//			    }
-//				catch(IOException e) {
-//					// TODO Auto-generated catch block
-//					e.printStackTrace();
-//				}
-//			    finally	{
-//			    	try	{
-//			            if (writer != null) {
-//			                writer.close();
-//			            }
-//			        }
-//			        catch (IOException ex) {
-//			            throw new RuntimeException(ex);
-//			        }
-//			    }
-//
-//			}
-
-
-
-
+			// SVGGraphics2D g2 = new SVGGraphics2D(this.composite.getPanel().getWidth(), this.composite.getPanel().getHeight());
+			//
+			// // suppress shadow generation, because SVG is a vector format and
+			// // the shadow effect is applied via bitmap effects...
+			// g2.setRenderingHint(JFreeChart.KEY_SUPPRESS_SHADOW_GENERATION, true);
+			// String svg = null;
+			// this.composite.
+			// getPanel().
+			// paintAll(g2);
+			// svg = g2.getSVGElement();
+			//
+			// if (file != null) {
+			// BufferedWriter writer = null;
+			// try {
+			// writer = new BufferedWriter(new FileWriter(file));
+			// writer.write("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n");
+			// writer.write(svg + "\n");
+			// writer.flush();
+			// }
+			// catch(IOException e) {
+			// // TODO Auto-generated catch block
+			// e.printStackTrace();
+			// }
+			// finally {
+			// try {
+			// if (writer != null) {
+			// writer.close();
+			// }
+			// }
+			// catch (IOException ex) {
+			// throw new RuntimeException(ex);
+			// }
+			// }
+			//
+			// }
+			
+			
+			
+			
 		}
 		// PDF (using Lowagie iTtext lib)
-		else if(fileFormat == ChartsEngine.OUTPUT_FORMAT_PDF)	{
-
+		else if (fileFormat == ChartsEngine.OUTPUT_FORMAT_PDF) {
+			
 			Document document = new Document(new Rectangle(0, 0, this.getSVGCanvas().getWidth(), this.getSVGCanvas().getHeight()));
 			try {
-
+				
 				PdfWriter writer = PdfWriter.getInstance(document, new BufferedOutputStream(new FileOutputStream(file)));
 				document.open();
 				PdfContentByte cb = writer.getDirectContent();
-
+				
 				Graphics2D g = cb.createGraphics(this.getSVGCanvas().getWidth(), this.getSVGCanvas().getHeight());
 				this.getSVGCanvas().printAll(g);
 				g.dispose();
-			 }
-			 catch (Exception e) {
-				 e.printStackTrace();
-			 }
-			 document.close();
+			}
+			catch (Exception e) {
+				e.printStackTrace();
+			}
+			document.close();
 		}
-		// FIXME: SJ: this code should be moved to parent class SwingChartComposite 
+		// FIXME: SJ: this code should be moved to parent class SwingChartComposite
 		// Raster (using AWT/Swing methods)
 		else {
 			BufferedImage image = new BufferedImage(this.getSVGCanvas().getWidth(), this.getSVGCanvas().getHeight(), BufferedImage.TYPE_INT_RGB);
@@ -318,25 +327,25 @@
 				e.printStackTrace();
 			}
 		}
-
+		
 		return file;
 	}
-
-
+	
+	
 	@Override
-	public ArrayList<String> getEditorSupportedExportFileFormats()	{
-
-		ArrayList<String> supportedExportFileFormats = new ArrayList<String>(5);
-
+	public ArrayList<String> getEditorSupportedExportFileFormats() {
+		
+		ArrayList<String> supportedExportFileFormats = new ArrayList<>(5);
+		
 		supportedExportFileFormats.add(ChartsEngine.OUTPUT_FORMAT_SVG); // Default format
 		supportedExportFileFormats.add(ChartsEngine.OUTPUT_FORMAT_PDF);
-
+		
 		// Auto-populate supported output file raster formats from available image writers
 		ChartsEngine.populateSupportedOutputRasterFileFormats(supportedExportFileFormats);
-
-
+		
+		
 		return supportedExportFileFormats;
-
+		
 	}
 	
 }
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 2689)
+++ tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 2690)
@@ -183,14 +183,27 @@
 		try {
 			Log.finest("*** ChartResult._compute(): " + this.getClass().getSimpleName() + ": starting computing process...");
 			
-			// FIXME: SJ: Computes the result only if at least one computing parameter has changed
-			if (super.hasParameterChanged()) { // test only Parameter.COMPUTING
+			// computes the result only if at least one computing parameter has changed
+			if (super.hasParameterChanged()) {
+				
+				// Debug
+				Log.finest("+++ ChartResult._compute(): " + this.getClass().getSimpleName() + ": computing result of type " + this.getClass() + "...");
+				
 				computingState = this.__compute(monitor.createNewMonitor(90));
 			}
-			// }
-			if (computingState && (hasRenderingParameterChanged() || super.hasParameterChanged())) { // test only Parameter.RENDERING
+			else {
+				// Debug
+				Log.finest("--- ChartResult._compute(): " + this.getClass().getSimpleName() + ": result parameters have not changed since last computing, computing skipped.");
+			}
+			
+			// rendering the chart
+			if (computingState && (this.hasRenderingParameterChanged() || super.hasParameterChanged())) {
 				computingState = this.renderChart(monitor.createNewMonitor(10));
 			}
+			else {
+				// FIXME: Debug
+				Log.finest("--- ChartResult.renderChart(): chart rendering parameters have not changed since last rendering, rendering skipped."); //$NON-NLS-1$
+			}
 		}
 		catch (Exception e) {
 			e.printStackTrace();
@@ -215,13 +228,13 @@
 		Log.finest("*** ChartResult.renderChart(): rendering chart for result " + this.getClass() + " and chart type " + this.getChartType() + "..."); //$NON-NLS-1$
 		
 		// update the chart dirty state from history if a parameter has changed since last computing
-		this.updateChartDirtyFromHistory();
+		// this.updateChartDirtyFromHistory();
+		//
+		// if (!this.chartDirty) {
+		// Log.finest("--- ChartResult.renderChart(): chart rendering parameters have not changed since last rendering, rendering skipped."); //$NON-NLS-1$
+		// return true;
+		// }
 		
-		if (!this.chartDirty) {
-			Log.finest("--- ChartResult.renderChart(): chart rendering parameters have not changed since last rendering, rendering skipped."); //$NON-NLS-1$
-			return true;
-		}
-		
 		ChartCreator chartCreator = this.getChartCreator();
 		
 		// try to find a chart creator in other charts engines
@@ -326,7 +339,7 @@
 		// need to investigate further
 		ArrayList<Integer> parametersTypes = new ArrayList<>();
 		parametersTypes.add(Parameter.COMPUTING);
-		parametersTypes.add(Parameter.RENDERING); // when adding this, it breaks the rendering of the Progression due of the call of this method too early in the process
+		parametersTypes.add(Parameter.RENDERING); // when adding this, it breaks the rendering of the Progression due of the call of this method too early in the process, also breaks the AHC
 		// then hasRenderingParameterChanged() always returns false
 		this.updateLastParameters(parametersTypes);
 	}
@@ -340,7 +353,7 @@
 	
 	/**
 	 * Clears the parameters used for last rendering.
-	 * Dedicated to force a chart recreation, eg. for cloning the chart result or for dynamically changing the chart type .
+	 * Dedicated to force a chart recreation, e.g. for cloning the chart result or for dynamically changing the chart type .
 	 * 
 	 * @throws Exception
 	 */
