Index: tmp/org.txm.chartsengine.r.core/src/org/txm/stat/engine/r/RWorkspaceRenderer.java
===================================================================
--- tmp/org.txm.chartsengine.r.core/src/org/txm/stat/engine/r/RWorkspaceRenderer.java	(revision 1768)
+++ tmp/org.txm.chartsengine.r.core/src/org/txm/stat/engine/r/RWorkspaceRenderer.java	(revision 1769)
@@ -85,7 +85,7 @@
 	 * @throws REXPMismatchException the rEXP mismatch exception
 	 * @throws StatException the stat exception
 	 */
-	public File plot(File file, String expr) throws REXPMismatchException,	StatException {
+	public File plot(File file, String expr) {
 		return plot(file, expr, defaultDevice );
 	}
 
@@ -98,8 +98,7 @@
 	 * @throws REXPMismatchException the rEXP mismatch exception
 	 * @throws StatException the stat exception
 	 */
-	public File plot(File file, String expr, RDevice device) throws REXPMismatchException, StatException
-	{
+	public File plot(File file, String expr, RDevice device) {
 		try {
 			file.createNewFile();
 		}
@@ -119,50 +118,57 @@
 				name = StringEscapeUtils.escapeJava(file.getCanonicalPath());
 			}
 			catch (IOException e) {
-				throw new StatException(e);
+				e.printStackTrace();
+				return null;
 			}
 		}
 		else {
 			name = file.getAbsolutePath();
 		}
 
-		if (devicename.equals("devSVG"))	{
-			workspace.voidEval("library(RSvgDevice);");
-		}
+		try {
+			if (devicename.equals("devSVG"))	{
+				workspace.voidEval("library(RSvgDevice);");
+			}
 
 
 
-		// FIXME : test for window dimensions so the large plots can be entirely displayed. Need to pass width and height to RWorkspace.plot() so
-		// RChartsEngine will be able to dynamically compute the width from the number of bars in a barplot for example.
-		//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", width=20, height=10))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			// FIXME : test for window dimensions so the large plots can be entirely displayed. Need to pass width and height to RWorkspace.plot() so
+			// RChartsEngine will be able to dynamically compute the width from the number of bars in a barplot for example.
+			//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", width=20, height=10))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
-		
-		//workspace.voidEval("par(family = \"mono\")");
-				
-		//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			
+			//workspace.voidEval("par(family = \"mono\")");
+					
+			//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
-		// FIXME: tests: Unicode and charts engine font preference
-		//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", family = \"Lucida Sans Unicode\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		Font font = ChartsEngine.createFont();
-		REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", family = \"" + font.getFontName() + "\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", family = \"" + font.getFamily() + "\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		
-		
-		if (xp.isString() && xp.asString() != null) { // if there's a string
-			// then we have a
-			// problem, R sent an
-			// error
-			// System.out.println("Can't open svg graphics device:\n"+xp.asString());
-			// this is analogous to 'warnings', but for us it's sufficient to
-			// get just the 1st warning
-			REXP w = workspace.eval("if (exists(\"last.warning\") && length(last.warning)>0) names(last.warning)[1] else 0"); //$NON-NLS-1$
-			// if (w.asString()!=null) System.out.println(w.asString());
-			throw new StatException(w.asString());
+			// FIXME: tests: Unicode and charts engine font preference
+			//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", family = \"Lucida Sans Unicode\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			Font font = ChartsEngine.createFont();
+			REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", family = \"" + font.getFontName() + "\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			//REXP xp = workspace.eval("try("+devicename+"(\"" + name + "\", family = \"" + font.getFamily() + "\"))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			
+			
+			if (xp.isString() && xp.asString() != null) { // if there's a string
+				// then we have a
+				// problem, R sent an
+				// error
+				// System.out.println("Can't open svg graphics device:\n"+xp.asString());
+				// this is analogous to 'warnings', but for us it's sufficient to
+				// get just the 1st warning
+				REXP w = workspace.eval("if (exists(\"last.warning\") && length(last.warning)>0) names(last.warning)[1] else 0"); //$NON-NLS-1$
+				// if (w.asString()!=null) System.out.println(w.asString());
+				throw new StatException(w.asString());
+			}
+
+			// ok, so the device should be fine - let's plot
+			workspace.voidEval(expr);
+			workspace.voidEval("dev.off()"); //$NON-NLS-1$
 		}
-
-		// ok, so the device should be fine - let's plot
-		workspace.voidEval(expr);
-		workspace.voidEval("dev.off()"); //$NON-NLS-1$
+		catch (Exception e) {
+			e.printStackTrace();
+			return null;
+		}
 		
 		return file;
 	}
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 1768)
+++ tmp/org.txm.chartsengine.svgbatik.rcp/src/org/txm/chartsengine/svgbatik/rcp/swt/SVGComposite.java	(revision 1769)
@@ -39,7 +39,14 @@
 
 
 
+	
+	@Override
+	public void loadChart(Object data) {
+		this.loadSVGDocument((File) data);
+	}
 
+	
+
 	/**
 	 * Loads a SVG document from the specified file.
 	 * @param file the file to load
@@ -86,13 +93,7 @@
 
 	
 
-	
-	@Override
-	public void loadChart(Object data) {
-		this.loadSVGDocument((File) data);
-	}
 
-	
 
 
 
