Index: tmp/org.txm.chartsengine.svgbatik.rcp/src/org/txm/chartsengine/svgbatik/rcp/swt/SVGComposite.java
===================================================================
--- tmp/org.txm.chartsengine.svgbatik.rcp/src/org/txm/chartsengine/svgbatik/rcp/swt/SVGComposite.java	(revision 1726)
+++ tmp/org.txm.chartsengine.svgbatik.rcp/src/org/txm/chartsengine/svgbatik/rcp/swt/SVGComposite.java	(revision 1727)
@@ -7,6 +7,7 @@
 import org.txm.chartsengine.rcp.swt.SwingChartComposite;
 import org.txm.chartsengine.svgbatik.rcp.swing.SVGPanel;
 import org.txm.core.messages.TXMCoreMessages;
+import org.txm.importer.ValidateXml;
 import org.txm.utils.logger.Log;
 import org.w3c.dom.svg.SVGDocument;
 
@@ -51,7 +52,12 @@
 		this.file = file;
 		Log.fine(TXMCoreMessages.bind("Loading SVG document from file: {0}...", file.getAbsolutePath()));
 		try {
-			this.getPanel().loadSVGDocument(file.toURL().toExternalForm());
+			if (ValidateXml.test(file)) {
+				this.getPanel().loadSVGDocument(file.toURL().toExternalForm());
+			} else {
+				Log.severe("** Malformed SVG file: "+file);
+				this.getPanel().resetView();
+			}
 		}
 		catch(MalformedURLException e) {
 			Log.severe("Can't load SVG document from file: " + file + e);
Index: tmp/org.txm.progression.core/src/org/txm/progression/core/chartsengine/jfreechart/themes/highcharts/renderers/ProgressionItemSelectionRenderer.java
===================================================================
--- tmp/org.txm.progression.core/src/org/txm/progression/core/chartsengine/jfreechart/themes/highcharts/renderers/ProgressionItemSelectionRenderer.java	(revision 1726)
+++ tmp/org.txm.progression.core/src/org/txm/progression/core/chartsengine/jfreechart/themes/highcharts/renderers/ProgressionItemSelectionRenderer.java	(revision 1727)
@@ -38,7 +38,7 @@
 	 * Stack to store selected items to draw at last, over others items.
 	 */
 	protected ArrayList itemsToDrawAtLast; 
-	
+
 	/**
 	 * additional series informations to show in tooltips
 	 */
@@ -78,69 +78,72 @@
 				String hex = "#" + Integer.toHexString(color.getRGB()).substring(2);
 				XYSeriesCollection xyDataset = (XYSeriesCollection) dataset;
 
-//
-//				// FIXME: test affichage des concordances des occurrences directement dans le tooltip
-//				// Progression
-//				String concordanceStr = "";
+				//
+				//				// FIXME: test affichage des concordances des occurrences directement dans le tooltip
+				//				// Progression
+				//				String concordanceStr = "";
 
-//				if(renderer.getChartType() == ChartsEngine.CHART_TYPE_PROGRESSION)	{
-//					try {
-//						Progression progression = ((Progression)renderer.getItemSelector().getResultData());
-//							//System.out.println("ItemSelectionXYStepRenderer.initToolTipGenerator(...).new XYToolTipGenerator() {...}.generateToolTip() query: " + progression.getQueries().get(xyDataset.getSeriesIndex(xyDataset.getSeries(series).getKey())));
-//						Property analysisProperty = progression.
-//								getCorpus().
-//								getProperty("word");
-//						List<Property> viewProperties = new ArrayList<Property>();
-//						viewProperties.add(progression.
-//								getCorpus().
-//								getProperty("word"));
-//						ReferencePattern referencePattern = new ReferencePattern();
-//						ReferencePattern refAnalysePattern = new ReferencePattern();
-//						Concordance concordance = new Concordance(progression.getCorpus(), progression.getQueries().get(xyDataset.getSeriesIndex(xyDataset.getSeries(series).getKey())), analysisProperty, viewProperties, referencePattern, refAnalysePattern, 10, 10);
-//
-//						System.err.println("ItemSelectionXYStepRenderer.initToolTipGenerator(...).new XYToolTipGenerator() {...}.generateToolTip() concordance nlines: " + concordance.getNLines());
-//						System.err.println("ItemSelectionXYStepRenderer.initToolTipGenerator(...).new XYToolTipGenerator() {...}.generateToolTip() item position: " + (xyDataset.getSeries(series).getY(item).intValue() - 1));
-//
-//
-//
-//						Line line = concordance.getLines(xyDataset.getSeries(series).getY(item).intValue() - 1, xyDataset.getSeries(series).getY(item).intValue() - 1).get(0);
-//						concordanceStr = "<p>" + line.leftContextToString() + " <b>" + line.keywordToString() + "</b> " + line.rightContextToString() + "</p>";
-//						//xyDataset.getSeriesIndex(xyDataset.getSeries(series).getKey())
-//					}
-//					catch(CqiClientException e) {
-//						// TODO Auto-generated catch block
-//						e.printStackTrace();
-//					}
-//					catch(IOException e) {
-//						// TODO Auto-generated catch block
-//						e.printStackTrace();
-//					}
-//					catch(CqiServerError e) {
-//						// TODO Auto-generated catch block
-//						e.printStackTrace();
-//					}
-//				}
+				//				if(renderer.getChartType() == ChartsEngine.CHART_TYPE_PROGRESSION)	{
+				//					try {
+				//						Progression progression = ((Progression)renderer.getItemSelector().getResultData());
+				//							//System.out.println("ItemSelectionXYStepRenderer.initToolTipGenerator(...).new XYToolTipGenerator() {...}.generateToolTip() query: " + progression.getQueries().get(xyDataset.getSeriesIndex(xyDataset.getSeries(series).getKey())));
+				//						Property analysisProperty = progression.
+				//								getCorpus().
+				//								getProperty("word");
+				//						List<Property> viewProperties = new ArrayList<Property>();
+				//						viewProperties.add(progression.
+				//								getCorpus().
+				//								getProperty("word"));
+				//						ReferencePattern referencePattern = new ReferencePattern();
+				//						ReferencePattern refAnalysePattern = new ReferencePattern();
+				//						Concordance concordance = new Concordance(progression.getCorpus(), progression.getQueries().get(xyDataset.getSeriesIndex(xyDataset.getSeries(series).getKey())), analysisProperty, viewProperties, referencePattern, refAnalysePattern, 10, 10);
+				//
+				//						System.err.println("ItemSelectionXYStepRenderer.initToolTipGenerator(...).new XYToolTipGenerator() {...}.generateToolTip() concordance nlines: " + concordance.getNLines());
+				//						System.err.println("ItemSelectionXYStepRenderer.initToolTipGenerator(...).new XYToolTipGenerator() {...}.generateToolTip() item position: " + (xyDataset.getSeries(series).getY(item).intValue() - 1));
+				//
+				//
+				//
+				//						Line line = concordance.getLines(xyDataset.getSeries(series).getY(item).intValue() - 1, xyDataset.getSeries(series).getY(item).intValue() - 1).get(0);
+				//						concordanceStr = "<p>" + line.leftContextToString() + " <b>" + line.keywordToString() + "</b> " + line.rightContextToString() + "</p>";
+				//						//xyDataset.getSeriesIndex(xyDataset.getSeries(series).getKey())
+				//					}
+				//					catch(CqiClientException e) {
+				//						// TODO Auto-generated catch block
+				//						e.printStackTrace();
+				//					}
+				//					catch(IOException e) {
+				//						// TODO Auto-generated catch block
+				//						e.printStackTrace();
+				//					}
+				//					catch(CqiServerError e) {
+				//						// TODO Auto-generated catch block
+				//						e.printStackTrace();
+				//					}
+				//				}
 
-				String token = xyDataset.getSeriesKey(series).toString();
-				token = token.substring(0, token.lastIndexOf(" "));
-				int tokenCount = xyDataset.getSeries(series).getItemCount() - 2; // -2 for the 0 point and the dummy last point
+				if (xyDataset.getSeriesCount() > series) {
+					String token = xyDataset.getSeriesKey(series).toString();
+					token = token.substring(0, token.lastIndexOf(" "));
+					int tokenCount = xyDataset.getSeries(series).getItemCount() - 2; // -2 for the 0 point and the dummy last point
 
-				return CustomHTMLToolTip.getDefaultHTMLBody(renderer, hex) + "<p><span style=\"color: " + hex + ";\">" + token + "</span> <b>(" + RendererUtils.valuesNumberFormat.format(xyDataset.getSeries(series).getY(item)) + " / " + tokenCount + ")</b>"
-						+ "</p></body><html>";
+					return CustomHTMLToolTip.getDefaultHTMLBody(renderer, hex) + "<p><span style=\"color: " + hex + ";\">" + token + "</span> <b>(" + RendererUtils.valuesNumberFormat.format(xyDataset.getSeries(series).getY(item)) + " / " + tokenCount + ")</b>"
+					+ "</p></body><html>";
+
+					// FIXME: test contexts in tool tip
+					//				return CustomHTMLToolTip.getDefaultHTMLBody(renderer, hex) + "<p><span style=\"color: " + hex + ";\">" + xyDataset.getSeriesKey(series)
+					//						+ "</span></p><p><b>" + valuesNumberFormat.format(xyDataset.getSeries(series).getY(item)) + ChartsEngineMessages.ChartsEngine_LABEL_VALUE_SEPARATORS
+					//						+ " </b><b>" + valuesNumberFormat.format(xyDataset.getSeries(series).getX(item)) + "</b>"
+					//						+ concordanceStr
+					//						+ "</p></body><html>";
+				}
 				
-				// FIXME: test contexts in tool tip
-//				return CustomHTMLToolTip.getDefaultHTMLBody(renderer, hex) + "<p><span style=\"color: " + hex + ";\">" + xyDataset.getSeriesKey(series)
-//						+ "</span></p><p><b>" + valuesNumberFormat.format(xyDataset.getSeries(series).getY(item)) + ChartsEngineMessages.ChartsEngine_LABEL_VALUE_SEPARATORS
-//						+ " </b><b>" + valuesNumberFormat.format(xyDataset.getSeries(series).getX(item)) + "</b>"
-//						+ concordanceStr
-//						+ "</p></body><html>";
-				
+				return "";
 			}
 		});
 	}
-	
-	
-	
+
+
+
 	@Override
 	public Paint getItemPaint(int series, int item) {
 
@@ -154,14 +157,14 @@
 				return new Color(color.getRed(), color.getGreen(), color.getBlue(), 195);
 			}
 			// Multiple item selection
-//			else if(this.itemSelector.isMultipleSelectedItem(series, item))	{
-//				// FIXME: rendering tests
-//				return new Color(130, 130, 130, 195);
-//				//return new Color(color.getRed(), color.getGreen(), color.getBlue(), 140);
-//			}
+			//			else if(this.itemSelector.isMultipleSelectedItem(series, item))	{
+			//				// FIXME: rendering tests
+			//				return new Color(130, 130, 130, 195);
+			//				//return new Color(color.getRed(), color.getGreen(), color.getBlue(), 140);
+			//			}
 
 		}
-		
+
 		return color;
 	}
 
@@ -171,7 +174,7 @@
 
 		Shape s = super.getItemShape(series, item);
 		AffineTransform t = new AffineTransform();
-		
+
 		// shapes are being patched and its not the first false point
 		if (item != 0 && additionalShapesScale != null) {
 			if (additionalShapesScale.size() > series) {
@@ -186,67 +189,67 @@
 				}
 			}
 		} 
-		
+
 		// TODO: find better way to not draw a shape
 		// If not selected item, reduce the shape therefore it will be hidden by the lines chart
 		if(!this.multipleItemsSelector.isMouseOverItem(series, item) && !this.multipleItemsSelector.isSelectedItem(series, item)) {
 			t.setToScale(0.1, 0.1);
 		}
 		// FIXME: Multiple selection
-//		else if(this.itemSelector.isMultipleSelectedItem(series, item))	{
-////			
-//			// Add a background rectangle to the label selected item
-//			XYSeriesCollection dataset = (XYSeriesCollection) this.getPlot().getDataset();
-//					
-//			Graphics2D graphics = ((Graphics2D) this.chartPanel.getGraphics());
-//			 
-//			// FIXME: get graphics by creating an image insetad of passing the chart panel to this renderer
-////			BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
-////			Graphics2D graphics = img.createGraphics();
-//			// FIXME: rendering quality tests
-////			RenderingHints rh = new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-////			rh.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-////			rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
-////			rh.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
-////		    graphics.setRenderingHints(rh);
-//			
-//			Font font = this.getItemLabelFont(series, item);
-//			String label = valuesNumberFormat.format(dataset.getSeries(series).getY(item)) + " / " + (dataset.getSeries(series).getItemCount() - 2); //$NON-NLS-1$ // -2 for the 0 point and the dummy last point;
-//
-//			GlyphVector v = font.createGlyphVector(graphics.getFontMetrics(font).getFontRenderContext(), label);
-//	        Shape labelShape = v.getOutline();
-//	        //Rectangle2D labelBounds = v.getVisualBounds();
-//	        
-//			Rectangle2D labelBounds = font.getStringBounds(label, graphics.getFontRenderContext());
-//
-//			// FIXME : not rounded rectangle version
-////			Shape labelBackground = new Rectangle2D.Double(-bounds.getWidth() / 2, -s.getBounds2D().getHeight() / 2 + 1, bounds.getWidth() + 4, bounds.getHeight() / 2 + 8);
-//
-//			//Rectangle2D labelBounds = font.getStringBounds(label, graphics.getFontRenderContext());
-//			
-//	        //Rectangle labelBounds = labelShape.getBounds();
-//	        
-//			//Shape labelBackground = new RoundRectangle2D.Double(-(labelBounds.getWidth() + 4) / 2, -s.getBounds2D().getHeight() / 2 + 1, labelBounds.getWidth() + 8, labelBounds.getHeight() / 2 + 10, 5, 5);
-//			double width = labelBounds.getWidth() + 10;
-//			double height = labelBounds.getHeight() + 10;
-//			Shape labelBackground = new RoundRectangle2D.Double(-width  / 2, -height / 2 - 15, width, height, 5, 5);
-//			
-//			AffineTransform t2 = new AffineTransform();
-//			t2.setToScale(0.9, 0.9);
-//			Shape labelBackground2 = t2.createTransformedShape(labelBackground);
-//			
-//			
-//			Area a = new Area(s);
-//			a.add(new Area(labelBackground));
-//			//a.add(new Area(labelBackground2));
-//			//a.add(new Area(labelShape));
-//			
-//			s = a;
-//			//t.setToScale(1.5, 1.5);
-//
-//			//return a;
-//			
-//		}
+		//		else if(this.itemSelector.isMultipleSelectedItem(series, item))	{
+		////			
+		//			// Add a background rectangle to the label selected item
+		//			XYSeriesCollection dataset = (XYSeriesCollection) this.getPlot().getDataset();
+		//					
+		//			Graphics2D graphics = ((Graphics2D) this.chartPanel.getGraphics());
+		//			 
+		//			// FIXME: get graphics by creating an image insetad of passing the chart panel to this renderer
+		////			BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
+		////			Graphics2D graphics = img.createGraphics();
+		//			// FIXME: rendering quality tests
+		////			RenderingHints rh = new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+		////			rh.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		////			rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+		////			rh.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+		////		    graphics.setRenderingHints(rh);
+		//			
+		//			Font font = this.getItemLabelFont(series, item);
+		//			String label = valuesNumberFormat.format(dataset.getSeries(series).getY(item)) + " / " + (dataset.getSeries(series).getItemCount() - 2); //$NON-NLS-1$ // -2 for the 0 point and the dummy last point;
+		//
+		//			GlyphVector v = font.createGlyphVector(graphics.getFontMetrics(font).getFontRenderContext(), label);
+		//	        Shape labelShape = v.getOutline();
+		//	        //Rectangle2D labelBounds = v.getVisualBounds();
+		//	        
+		//			Rectangle2D labelBounds = font.getStringBounds(label, graphics.getFontRenderContext());
+		//
+		//			// FIXME : not rounded rectangle version
+		////			Shape labelBackground = new Rectangle2D.Double(-bounds.getWidth() / 2, -s.getBounds2D().getHeight() / 2 + 1, bounds.getWidth() + 4, bounds.getHeight() / 2 + 8);
+		//
+		//			//Rectangle2D labelBounds = font.getStringBounds(label, graphics.getFontRenderContext());
+		//			
+		//	        //Rectangle labelBounds = labelShape.getBounds();
+		//	        
+		//			//Shape labelBackground = new RoundRectangle2D.Double(-(labelBounds.getWidth() + 4) / 2, -s.getBounds2D().getHeight() / 2 + 1, labelBounds.getWidth() + 8, labelBounds.getHeight() / 2 + 10, 5, 5);
+		//			double width = labelBounds.getWidth() + 10;
+		//			double height = labelBounds.getHeight() + 10;
+		//			Shape labelBackground = new RoundRectangle2D.Double(-width  / 2, -height / 2 - 15, width, height, 5, 5);
+		//			
+		//			AffineTransform t2 = new AffineTransform();
+		//			t2.setToScale(0.9, 0.9);
+		//			Shape labelBackground2 = t2.createTransformedShape(labelBackground);
+		//			
+		//			
+		//			Area a = new Area(s);
+		//			a.add(new Area(labelBackground));
+		//			//a.add(new Area(labelBackground2));
+		//			//a.add(new Area(labelShape));
+		//			
+		//			s = a;
+		//			//t.setToScale(1.5, 1.5);
+		//
+		//			//return a;
+		//			
+		//		}
 		else	{
 			t.setToScale(1.5, 1.5);
 		}
@@ -262,10 +265,10 @@
 		this.chartPanel = chartPanel;
 	}
 
-	
+
 	@Override
 	public String getSelectedItemLabelFromDataset(XYDataset dataset, int series, int item)	{
-		
+
 		// manage the first and last dummy point
 		if(item == 0)	{
 			item++;
@@ -273,43 +276,43 @@
 		else if(item == dataset.getItemCount(series) - 1)	{
 			item--;
 		}
-		
+
 		String label = "";
 		int globalPosition = (int) dataset.getXValue(series, item) + 1;
-		
+
 		try {
-			
+
 			Property prop;
-			
+
 			// Ref
 			prop = ((Progression)this.multipleItemsSelector.getResult()).getCorpus().getProperty("ref"); //$NON-NLS-1$
 			// Text id
 			if(prop == null)	{
 				prop = ((Progression)this.multipleItemsSelector.getResult()).getCorpus().getStructuralUnit("text").getProperty("id"); //$NON-NLS-1$ //$NON-NLS-2$
 			}
-			
+
 			Match selectedWordMatch = new Match(globalPosition, globalPosition);
 			label = selectedWordMatch.getValueForProperty(prop);
-			
+
 		}
 		catch(CqiClientException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
-		
+
 		// manage the first 0 dummy point
 		if(item == 0)	{
 			item++;
 		}
-		
+
 		int tokenCount = ((XYSeriesCollection)dataset).getSeries(series).getItemCount() - 2; // -2 for the 0 point and the dummy last point
 		label += "\n" + globalPosition + " / " + RendererUtils.valuesNumberFormat.format(((XYSeriesCollection)dataset).getDomainUpperBound(false)); //$NON-NLS-1$ //$NON-NLS-2$ // -2 for the 0 point and the dummy last point
 
 		label += "\n" + RendererUtils.valuesNumberFormat.format(((XYSeriesCollection) dataset).getSeries(series).getY(item)) + " / " + (((XYSeriesCollection) dataset).getSeries(series).getItemCount() - 2); //$NON-NLS-1$ //$NON-NLS-2$ // -2 for the 0 point and the dummy last point 
-		
+
 		return label;
 	}
-	
 
 
+
 }
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/r/REigenvaluesChartCreator.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/r/REigenvaluesChartCreator.java	(revision 1726)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/r/REigenvaluesChartCreator.java	(revision 1727)
@@ -2,12 +2,16 @@
 
 import java.io.File;
 
+import org.rosuda.REngine.REXP;
+import org.rosuda.REngine.REXPMismatchException;
 import org.txm.ca.core.functions.CA;
 import org.txm.ca.core.functions.Eigenvalues;
 import org.txm.ca.core.messages.CACoreMessages;
 import org.txm.ca.core.statsengine.r.functions.FactoMineRCA;
 import org.txm.chartsengine.core.results.ChartResult;
 import org.txm.chartsengine.r.core.RChartCreator;
+import org.txm.statsengine.r.core.RWorkspace;
+import org.txm.statsengine.r.core.exceptions.RWorkspaceException;
 
 /**
  * R CA Eigenvalues chart creator.
@@ -22,7 +26,7 @@
 	public File createChartFile(ChartResult result, File file) {
 
 		CA ca = (CA) ((Eigenvalues) result).getCA();
-		
+
 		// FactoMineR R package
 		if(ca.useFactoMineR())	{
 			return this.createSingularValuesBarPlot((FactoMineRCA) ca.getCA(), file);
@@ -40,29 +44,41 @@
 	 * @param ca
 	 * @param file
 	 * @return the singular values bar plot object
+	 * @throws RWorkspaceException 
+	 * @throws REXPMismatchException 
 	 */
 	public File createSingularValuesBarPlot(FactoMineRCA ca, File file) {
-		
+
 		// Create the X axis labels with custom prefix
 		StringBuilder xLabels = new StringBuilder(30);
 		xLabels.append("c("); //$NON-NLS-1$
-		for(int i = 0, c = ca.getColumnsCount() - 1; i < c; i++) {
-			if(i > 0)	 {
-				xLabels.append(", "); //$NON-NLS-1$
+		REXP sv;
+		try {
+			sv = RWorkspace.getRWorkspaceInstance().eval("length("+ca.getSymbol()+"$eig$eigenvalue");  //$NON-NLS-1$ $NON-NLS-2$
+
+			int ncol = sv.asInteger();
+
+			for(int i = 0, c = ncol; i < c; i++) {
+				if(i > 0)	 {
+					xLabels.append(", "); //$NON-NLS-1$
+				}
+				xLabels.append("\"" + (i + 1) + "\""); //$NON-NLS-1$ //$NON-NLS-2$
 			}
-			xLabels.append("\"" + (i + 1) + "\""); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		xLabels.append(")"); //$NON-NLS-1$
+			xLabels.append(")"); //$NON-NLS-1$
 
-		String cmd = "tmpY <- " + ca.getSymbol() + "$eig$eigenvalue[1:length(" + ca.getSymbol() + "$eig$eigenvalue) - 1];\n"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		cmd += "barplot(tmpY, main=\"" //$NON-NLS-1$
-				+ CACoreMessages.eigenvalues + "\", ylab=\"" + //$NON-NLS-1$
-				CACoreMessages.eigenvalue + "\", xlab=\"" + //$NON-NLS-1$
-				CACoreMessages.axis + "\", names.arg=" + xLabels + ");\n"; //$NON-NLS-1$ //$NON-NLS-2$
+			String cmd = "tmpY <- " + ca.getSymbol() + "$eig$eigenvalue[1:length(" + ca.getSymbol() + "$eig$eigenvalue) - 1];\n"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			cmd += "barplot(tmpY, main=\"" //$NON-NLS-1$
+					+ CACoreMessages.eigenvalues + "\", ylab=\"" + //$NON-NLS-1$
+					CACoreMessages.eigenvalue + "\", xlab=\"" + //$NON-NLS-1$
+					CACoreMessages.axis + "\", names.arg=" + xLabels + ");\n"; //$NON-NLS-1$ //$NON-NLS-2$
 
-		this.getChartsEngine().plot(file, cmd);
+			this.getChartsEngine().plot(file, cmd);
 
-		return file;
+			return file;
+		} catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
 	}
 
 
@@ -78,7 +94,7 @@
 	}
 
 
-	
+
 	@Override
 	public Class<Eigenvalues> getResultDataClass() {
 		return Eigenvalues.class;
Index: tmp/org.txm.chartsengine.r.core/src/org/txm/chartsengine/r/core/RChartCreator.java
===================================================================
--- tmp/org.txm.chartsengine.r.core/src/org/txm/chartsengine/r/core/RChartCreator.java	(revision 1726)
+++ tmp/org.txm.chartsengine.r.core/src/org/txm/chartsengine/r/core/RChartCreator.java	(revision 1727)
@@ -28,12 +28,15 @@
 	@Override
 	public void updateChart(ChartResult result) {
 	
-		// creates a new chart but using the same file
-		this.createChartFile(result, (File)result.getChart());
-			
+		Object chart = result.getChart();
+		if (chart != null && chart instanceof File) { // creates a new chart but using the same file
+			this.createChartFile(result, (File)chart);
+		} else {
+			this.createChartFile(result);
+		}
+		
 		// FIXME: using new file
 		//this.createChartFile(resultData, preferencesNode);
-			
 	}
 	
 	@Override
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/EigenvaluesChartEditor.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/EigenvaluesChartEditor.java	(revision 1726)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/EigenvaluesChartEditor.java	(revision 1727)
@@ -34,5 +34,4 @@
 	public void updateEditorFromChart(boolean update) {
 		// nothing to do
 	}
-
-}
+}
\ No newline at end of file
