Index: tmp/org.txm.ca.core/src/org/txm/ca/core/statsengine/r/functions/FactoMineRCA.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/statsengine/r/functions/FactoMineRCA.java	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/statsengine/r/functions/FactoMineRCA.java	(revision 282)
@@ -33,12 +33,11 @@
 import org.rosuda.REngine.REXP;
 import org.rosuda.REngine.REXPMismatchException;
 import org.txm.ca.core.messages.CACoreMessages;
-import org.txm.core.messages.TXMCoreMessages;
 import org.txm.lexicaltable.core.statsengine.data.LexicalTable;
 import org.txm.statsengine.core.StatException;
 import org.txm.statsengine.r.core.RWorkspace;
-import org.txm.statsengine.r.core.RWorkspaceException;
 import org.txm.statsengine.r.core.data.QuantitativeDataStructureImpl;
+import org.txm.statsengine.r.core.exceptions.RWorkspaceException;
 
 // TODO: Auto-generated Javadoc
 /**
@@ -96,11 +95,10 @@
 	/** The colscoords. */
 	private double[][] colscoords;
 
-	private LexicalTable table;
+	private LexicalTable table;	
 	
 	/**
-	 * Create a correspondance analysis on the given table. The correspondance
-	 * analysis is computed as soon as the object is created.
+	 * Create a correspondence analysis on the given table. The correspondence analysis is computed as soon as the object is created.
 	 *
 	 * @param table the table
 	 * @throws StatException the stat exception
@@ -133,7 +131,7 @@
 				colcontrib = sv.asDoubleMatrix();
 				// Arrays.sort(rowdist);
 			} catch (RWorkspaceException e) {
-				throw new StatException(TXMCoreMessages.FactoMineRCA_2 + e.getMessage(), e);
+				throw new StatException(CACoreMessages.FactoMineRCA_2 + e.getMessage(), e);
 			} catch (REXPMismatchException e) {
 				// TODO Auto-generated catch block
 				org.txm.utils.logger.Log.printStackTrace(e);
@@ -153,7 +151,7 @@
 				colcos2 = sv.asDoubleMatrix();
 				// Arrays.sort(rowdist);
 			} catch (RWorkspaceException e) {
-				throw new StatException(TXMCoreMessages.FactoMineRCA_3 + e.getMessage(), e);
+				throw new StatException(CACoreMessages.FactoMineRCA_3 + e.getMessage(), e);
 			} catch (REXPMismatchException e) {
 				// TODO Auto-generated catch block
 				org.txm.utils.logger.Log.printStackTrace(e);
@@ -280,7 +278,7 @@
 						rowcontrib[i][j] = rowcontrib[i][j] / 100.0; 
 				// Arrays.sort(rowdist);
 			} catch (RWorkspaceException e) {
-				throw new StatException(TXMCoreMessages.FactoMineRCA_4 + e.getMessage(), e);
+				throw new StatException(CACoreMessages.FactoMineRCA_4 + e.getMessage(), e);
 			} catch (REXPMismatchException e) {
 				// TODO Auto-generated catch block
 				org.txm.utils.logger.Log.printStackTrace(e);
@@ -300,7 +298,7 @@
 				rowcos2 = sv.asDoubleMatrix();
 				// Arrays.sort(rowdist);
 			} catch (RWorkspaceException e) {
-				throw new StatException(TXMCoreMessages.FactoMineRCA_5 + e.getMessage(), e);
+				throw new StatException(CACoreMessages.FactoMineRCA_5 + e.getMessage(), e);
 			} catch (REXPMismatchException e) {
 				// TODO Auto-generated catch block
 				org.txm.utils.logger.Log.printStackTrace(e);
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/statsengine/r/functions/CA.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/statsengine/r/functions/CA.java	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/statsengine/r/functions/CA.java	(revision 282)
@@ -31,12 +31,12 @@
 
 import org.rosuda.REngine.REXP;
 import org.txm.ca.core.messages.CACoreMessages;
-import org.txm.core.messages.TXMCoreMessages;
 import org.txm.lexicaltable.core.statsengine.data.LexicalTable;
 import org.txm.statsengine.core.StatException;
 import org.txm.statsengine.r.core.RWorkspace;
-import org.txm.statsengine.r.core.RWorkspaceException;
 import org.txm.statsengine.r.core.data.QuantitativeDataStructureImpl;
+import org.txm.statsengine.r.core.exceptions.RWorkspaceException;
+import org.txm.utils.messages.Utf8NLS;
 
 /**
  * Access to the R implementation of the Correspondance Analysis.
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/messages/messages.properties
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/messages/messages.properties	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/messages/messages.properties	(revision 282)
@@ -33,3 +33,8 @@
 ERROR_1 = ** Cannot load the 'ca' library
 ERROR_2 = ** Error while computing correspondence analysis: 
 ERROR_3 = ** Unable to extract singular values
+
+FactoMineRCA_2 = ** Fail to get contrib column: 
+FactoMineRCA_3 = ** Fail to get cos² column: 
+FactoMineRCA_4 = ** Fail to get contrib row: 
+FactoMineRCA_5 = ** Fail to get cos² row: 
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/messages/CACoreMessages.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/messages/CACoreMessages.java	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/messages/CACoreMessages.java	(revision 282)
@@ -1,7 +1,7 @@
 package org.txm.ca.core.messages;
 
 import org.eclipse.osgi.util.NLS;
-import org.txm.core.messages.TXMCoreMessages;
+import org.txm.utils.messages.Utf8NLS;
 
 public class CACoreMessages extends NLS {
 
@@ -45,10 +45,15 @@
 	public static String ERROR_2;
 	public static String ERROR_3;
 
+	public static String FactoMineRCA_2;
+	public static String FactoMineRCA_3;
+	public static String FactoMineRCA_4;
+	public static String FactoMineRCA_5;
+
 	
 	static {
 		// initialize resource bundle
-		TXMCoreMessages.initializeMessages(BUNDLE_NAME, CACoreMessages.class);
+		Utf8NLS.initializeMessages(BUNDLE_NAME, CACoreMessages.class);
 	}
 
 	private CACoreMessages() {
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/messages/messages_fr.properties	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/messages/messages_fr.properties	(revision 282)
@@ -13,7 +13,6 @@
 CHARTS_SINGULAR_VALUES_TOOLTIP_SUM             = ∑
 CHARTS_SINGULAR_VALUES_TOOLTIP_Y_LABEL         = Valeur propre
 CHARTS_SINGULAR_VALUES_X_AXIS_LABEL            = Axe
-CHARTS_SINGULAR_VALUES_X_LABELS_PREFIX         = 
 CHARTS_SINGULAR_VALUES_Y_AXIS_LABEL            = Valeur propre
 
 ColumnLabel_C1   = c1
@@ -33,3 +32,8 @@
 ERROR_1 = ** Impossible de charger la librairie 'ca'
 ERROR_2 = ** Erreur lors du calcul de l'analyse factorielle des correspondances : 
 ERROR_3 = ** Impossible d'extraire les valeurs propres 
+
+FactoMineRCA_2 = ** Echec d'accès à la colonne des contributions : 
+FactoMineRCA_3 = ** Echec d'accès à la colonne des cos² : 
+FactoMineRCA_4 = ** Echec d'accès à la ligne des contributions : 
+FactoMineRCA_5 = ** Echec d'accès à la ligne des cos² : 
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 282)
@@ -86,16 +86,6 @@
 	/** The second dim. */
 	int secondDim = 2;
 
-	/** The show individuals. */
-	@Deprecated
-	// FIXME : charts rendering preferences should be moved outside of the data class
-	boolean showIndividuals = true;
-
-	/** The show variables. */
-	@Deprecated
-	// FIXME : charts rendering preferences should be moved outside of the data class
-	boolean showVariables = false;
-
 	String colfilter="cos2 0.0", rowfilter="cos2 0.0";
 	float cex = 0.7f;
 
@@ -260,6 +250,8 @@
 	 * @param colseparator the column separator
 	 * @param textseparator the text separator
 	 */
+	//FIXME: to move in an exporter
+	@Deprecated
 	public void exportRowInfos(File file, String encoding, String colseparator, String textseparator)
 	{
 		try {
@@ -830,22 +822,7 @@
 		}
 	}
 
-	/**
-	 * Sets the shown elements.
-	 *
-	 * @param individuals the individuals
-	 * @param variables the variables
-	 */
-	// FIXME : charts rendering preferences should be moved outside of the data class
-	@Deprecated
-	public void setShown(boolean individuals, boolean variables) {
-		showIndividuals = individuals;
-		showVariables = variables;
-		if (!(showIndividuals || showVariables))
-			showIndividuals = true;
 
-	}
-
 	String pattern = "(cos2|contrib) (([0-9]+\\.[0-9]+)|([0-9]+))";
 
 	public void displayOptions(String col, String row, float cex) {
@@ -908,6 +885,8 @@
 	 * @param encoding the encoding
 	 * @return true, if successful
 	 */
+	//FIXME: to move in an exporter extension
+	@Deprecated
 	public boolean toTxt(File outfile, String encoding) {
 		return toTxt(outfile, encoding, "\t", ""); //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -921,6 +900,8 @@
 	 * @param txtseparator the txtseparator
 	 * @return true, if successful
 	 */
+	//FIXME: to move in an exporter extension
+	@Deprecated
 	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		acquireSemaphore();
 		boolean rez = ca.toTxt(outfile, encoding, colseparator, txtseparator);
@@ -973,46 +954,12 @@
 	}
 
 
-//	@Override
-//	public boolean delete() {
-//		return getHasResultsParent().removeResult(this);
-//	}
-
 	@Override
 	public String[] getExportTXTExtensions() {
 		return new String[]{"*.txt"};
 	}
 
-//	@Override
-//	public HasResults getHasResultsParent() {
-//		return table;
-////		if (partition != null)
-////			return partition;
-////		return corpus;
-//	}
 
-	// FIXME: TXMResult tests
-//	ArrayList<Object> results = new ArrayList<Object>();
-//	@Override
-//	public List<Object> getResults() {
-//		return results;
-//	}
-//
-//	@Override
-//	public boolean removeResult(Object result) {
-//		return results.remove(result);
-//	}
-//
-//	@Override
-//	public List<HasResults> getSubHasResults() {
-//		return new ArrayList<HasResults>();
-//	}
-//
-//	@Override
-//	public void storeResult(Object result) {
-//		results.add(result);
-//	}
-
 	@Override
 	public String getName() {
 		String name;
@@ -1021,7 +968,7 @@
 		else {
 			name = this.corpus.getSimpleName();
 		}
-		name +=  ":" + this.getAnalysisProperty();
+		name +=  ":" + this.getSimpleName();
 		return name;
 	}
 
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/r/RCAChartCreator.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/r/RCAChartCreator.java	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/r/RCAChartCreator.java	(revision 282)
@@ -10,10 +10,10 @@
 import org.txm.ca.core.messages.CACoreMessages;
 import org.txm.ca.core.preferences.CAPreferences;
 import org.txm.ca.core.statsengine.r.functions.FactoMineRCA;
+import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.ITXMResult;
 import org.txm.chartsengine.r.core.RChartCreator;
 import org.txm.chartsengine.r.core.RChartsEngine;
-import org.txm.core.preferences.TXMPreferences;
 import org.txm.utils.logger.Log;
 
 /**
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/jfreechart/themes/highcharts/renderers/FCAItemSelectionRenderer.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/jfreechart/themes/highcharts/renderers/FCAItemSelectionRenderer.java	(revision 281)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/chartsengine/jfreechart/themes/highcharts/renderers/FCAItemSelectionRenderer.java	(revision 282)
@@ -5,6 +5,7 @@
 import java.awt.Graphics2D;
 import java.awt.Paint;
 import java.awt.Shape;
+import java.awt.font.GlyphVector;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Area;
 import java.awt.geom.Rectangle2D;
@@ -118,8 +119,21 @@
 		this.setBaseItemLabelsVisible(true);
 	}
 
+	@Override
+	public Font getItemLabelFont(int series, int item) {
 
+		// regular
+		Font font = super.getItemLabelFont(series, item);
+		font = font.deriveFont(Font.PLAIN, font.getSize());
 
+		// Change item label font size and style
+		if(this.multipleItemsSelector.isMouseOverItem(series, item) || this.multipleItemsSelector.isSelectedItem(series, item)) {
+			font = font.deriveFont(Font.BOLD, font.getSize() * 1.2f);
+		}
+		return font;
+	}
+
+
 	@Override
 	public Shape getItemShape(int series, int item) {
 
@@ -154,12 +168,12 @@
 
 				// FIXME : test de tooltip text à la main
 //				Shape tooltip = new Rectangle2D.Double(10, 10, 50, 50);
-//				GlyphVector text =  this.getBaseItemLabelFont().createGlyphVector(((Graphics2D) this.chartPanel.getGraphics()).getFontRenderContext(), "testteezrezrzerzerzerzerze");
+//				GlyphVector text =  this.getBaseItemLabelFont().createGlyphVector(((Graphics2D) this.multipleItemsSelector.getChartPanel().getGraphics()).getFontRenderContext(), "testteezrezrzerzerzerzerze");
 ////				t.setToTranslation(-100,  -200);
 //				Shape textShape = t.createTransformedShape(text.getOutline());
 //				a.add(new Area(tooltip));
 //				a.add(new Area(textShape));
-
+				
 				return a;
 			}
 
@@ -180,7 +194,7 @@
 			}
 
 		}
-		
+
 		return s;
 	}
 
Index: tmp/org.txm.ca.core/META-INF/MANIFEST.MF
===================================================================
--- tmp/org.txm.ca.core/META-INF/MANIFEST.MF	(revision 281)
+++ tmp/org.txm.ca.core/META-INF/MANIFEST.MF	(revision 282)
@@ -4,7 +4,8 @@
 Bundle-SymbolicName: org.txm.ca.core;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Require-Bundle: org.txm.core;bundle-version="0.7.0",
+Require-Bundle: org.txm.statsengine.core;bundle-version="1.0.0",
+ org.txm.core;bundle-version="0.7.0",
  org.eclipse.core.runtime;bundle-version="3.10.0",
  org.txm.chartsengine.r.core;bundle-version="1.0.0",
  org.txm.chartsengine.jfreechart.core;bundle-version="1.0.0",
@@ -18,3 +19,4 @@
  org.txm.ca.core.messages,
  org.txm.ca.core.preferences,
  org.txm.ca.core.statsengine.r.functions
+Bundle-Vendor: Textometrie.org
Index: tmp/org.txm.cah.core/src/org/txm/cah/core/chartsengine/r/RCAHChartCreator.java
===================================================================
--- tmp/org.txm.cah.core/src/org/txm/cah/core/chartsengine/r/RCAHChartCreator.java	(revision 281)
+++ tmp/org.txm.cah.core/src/org/txm/cah/core/chartsengine/r/RCAHChartCreator.java	(revision 282)
@@ -4,9 +4,9 @@
 
 import org.txm.cah.core.functions.CAH;
 import org.txm.cah.core.preferences.CAHPreferences;
+import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.ITXMResult;
 import org.txm.chartsengine.r.core.RChartCreator;
-import org.txm.core.preferences.TXMPreferences;
 
 /**
  * R CAH chart creator.
Index: tmp/org.txm.cah.core/src/org/txm/cah/core/messages/CAHCoreMessages.java
===================================================================
--- tmp/org.txm.cah.core/src/org/txm/cah/core/messages/CAHCoreMessages.java	(revision 281)
+++ tmp/org.txm.cah.core/src/org/txm/cah/core/messages/CAHCoreMessages.java	(revision 282)
@@ -1,7 +1,7 @@
 package org.txm.cah.core.messages;
 
 import org.eclipse.osgi.util.NLS;
-import org.txm.core.messages.TXMCoreMessages;
+import org.txm.utils.messages.Utf8NLS;
 
 public class CAHCoreMessages extends NLS {
 
@@ -17,7 +17,7 @@
 	
 	static {
 		// initialize resource bundle
-		TXMCoreMessages.initializeMessages(BUNDLE_NAME, CAHCoreMessages.class);
+		Utf8NLS.initializeMessages(BUNDLE_NAME, CAHCoreMessages.class);
 	}
 
 	private CAHCoreMessages() {
Index: tmp/org.txm.cah.core/src/org/txm/cah/core/functions/CAH.java
===================================================================
--- tmp/org.txm.cah.core/src/org/txm/cah/core/functions/CAH.java	(revision 281)
+++ tmp/org.txm.cah.core/src/org/txm/cah/core/functions/CAH.java	(revision 282)
@@ -39,7 +39,7 @@
 import org.txm.searchengine.cqp.corpus.Corpus;
 import org.txm.searchengine.cqp.corpus.Partition;
 import org.txm.statsengine.r.core.RWorkspace;
-import org.txm.statsengine.r.core.RWorkspaceException;
+import org.txm.statsengine.r.core.exceptions.RWorkspaceException;
 import org.txm.utils.logger.Log;
 
 /**
Index: tmp/org.txm.cah.core/META-INF/MANIFEST.MF
===================================================================
--- tmp/org.txm.cah.core/META-INF/MANIFEST.MF	(revision 281)
+++ tmp/org.txm.cah.core/META-INF/MANIFEST.MF	(revision 282)
@@ -6,7 +6,6 @@
 Require-Bundle: org.txm.ca.core;bundle-version="1.0.0",
  org.eclipse.core.runtime,
  org.txm.core;bundle-version="0.7.0",
- org.txm.chartsengine.core;bundle-version="1.0.0",
  org.txm.chartsengine.r.core;bundle-version="1.0.0",
  org.txm.chartsengine.jfreechart.core;bundle-version="1.0.0",
  org.txm.lexicaltable.core;bundle-version="1.0.0"
@@ -17,3 +16,4 @@
  org.txm.cah.core.functions,
  org.txm.cah.core.messages,
  org.txm.cah.core.preferences
+Bundle-Vendor: Textometrie.org
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/handlers/ComputeCA.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/handlers/ComputeCA.java	(revision 281)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/handlers/ComputeCA.java	(revision 282)
@@ -33,28 +33,23 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.window.Window;
 import org.eclipse.osgi.util.NLS;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.txm.ca.core.functions.CA;
 import org.txm.ca.core.functions.ICAComputable;
-import org.txm.ca.core.preferences.CAPreferences;
-import org.txm.ca.rcp.editors.CAEditorInput;
 import org.txm.ca.rcp.messages.CAUIMessages;
-import org.txm.core.preferences.TXMPreferences;
 import org.txm.lexicaltable.core.statsengine.data.LexicalTable;
 import org.txm.lexicaltable.rcp.editors.LexicalTableDialog;
+import org.txm.rcp.editors.TXMResultEditorInput;
 import org.txm.rcp.handlers.BaseAbstractHandler;
 import org.txm.rcpapplication.JobsTimer;
 import org.txm.rcpapplication.Messages;
 import org.txm.rcpapplication.StatusLine;
 import org.txm.rcpapplication.utils.JobHandler;
 import org.txm.rcpapplication.views.corpora.CorporaView;
-import org.txm.searchengine.cqp.corpus.Corpus;
 import org.txm.searchengine.cqp.corpus.Partition;
 import org.txm.searchengine.cqp.corpus.Property;
 import org.txm.utils.logger.MessageBox;
@@ -70,7 +65,7 @@
 public class ComputeCA extends BaseAbstractHandler {
 
 	/** The CA. */
-	private CA ca;
+	public CA ca = null;
 
 	/** The property. */
 	private Property property;
@@ -102,16 +97,19 @@
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 		
+		ca = null;
+		
 		if (!this.checkStatsEngine()) {
 			return null;
 		}
 		
 		final IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
-		final IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
+		final Object selection = this.getSelection();
+		
 		int code = 0;
-		// From partition
-		if (selection.getFirstElement() instanceof Partition) {
-			partition = (Partition) selection.getFirstElement();
+		// Create CA from partition
+		if (selection instanceof Partition) {
+			partition = (Partition) selection;
 			//warning to few parts
 			if (partition.getNPart() < 4) {
 				MessageDialog d = new MessageDialog(
@@ -136,9 +134,9 @@
 				vmax = d.getMaxLines();
 			}
 		}
-		// From Lexical Table
-		else if (selection.getFirstElement() instanceof LexicalTable) {
-			lexicaltable = (LexicalTable) selection.getFirstElement();
+		// Create CA from Lexical Table
+		else if (selection instanceof LexicalTable) {
+			lexicaltable = (LexicalTable) selection;
 			property = lexicaltable.getProperty();
 			partition = lexicaltable.getPartition();
 			if (lexicaltable.getNColumns() < 4) {
@@ -151,18 +149,25 @@
 			}
 			code = Window.OK;
 		}
+		// Reopens an existing editor
+		else if (selection instanceof CA) {
+			ca = (CA) selection;
+			partition = ca.getPartition();
+		}
 		// From others 
-		else if (selection.getFirstElement() instanceof ICAComputable) {
-			partition = ((ICAComputable) selection.getFirstElement()).getPartition();
+		else if (selection instanceof ICAComputable) {
+			partition = ((ICAComputable) selection).getPartition();
 		}
 
 		if (code == Window.OK) {
 			// final Property property = d.getProperty();
 			String statusmessage;
-			if (partition != null)
+			if (partition != null)	{
 				statusmessage = NLS.bind(CAUIMessages.ComputeCorrespondanceAnalysis_0, partition.getName(), property);
-			else
+			}
+			else	{
 				statusmessage = NLS.bind(CAUIMessages.ComputeCorrespondanceAnalysis_0, selection, "<none>"); //$NON-NLS-1$
+			}
 			
 			System.out.println(statusmessage);
 			JobHandler jobhandler = new JobHandler(statusmessage) {
@@ -174,60 +179,59 @@
 						monitor.beginTask("", 100); //$NON-NLS-1$
 						monitor.subTask(CAUIMessages.ComputeCorrespondanceAnalysis_15);
 
-						if (selection.getFirstElement() instanceof Partition)	{
-							ca = new CA(partition, property, fmin, vmax);
-						}
-						else if (selection.getFirstElement() instanceof LexicalTable)	{
-							ca = new CA(lexicaltable);
-						}
-						else if (selection.getFirstElement() instanceof ICAComputable)	{
-							ca = ((ICAComputable) selection.getFirstElement()).toCA();
-						}
+						if(ca == null)	{
+							if (selection instanceof Partition)	{
+								ca = new CA(partition, property, fmin, vmax);
+							}
+							else if (selection instanceof LexicalTable)	{
+								ca = new CA(lexicaltable);
+							}
+							else if (selection instanceof ICAComputable)	{
+								ca = ((ICAComputable) selection).toCA();
+							}
+	
+	
+							if (selection instanceof Partition) {
+								if (monitor.isCanceled()) return Status.CANCEL_STATUS;
+								monitor.subTask(CAUIMessages.ComputeCorrespondanceAnalysis_16);
+								
+								this.acquireSemaphore();
+								ca.stepLexicalTable();
+								this.releaseSemaphore();
+								
+								this.acquireSemaphore();
+								ca.stepSortTableLexical();
+								this.releaseSemaphore();
+							}
+							
+							monitor.worked(20);
 
+							if (monitor.isCanceled()) return Status.CANCEL_STATUS;
 
-						if (selection.getFirstElement() instanceof Partition) {
-							if (monitor.isCanceled()) return Status.CANCEL_STATUS;
-							monitor.subTask(CAUIMessages.ComputeCorrespondanceAnalysis_16);
-							
+							monitor.subTask(CAUIMessages.ComputeCorrespondanceAnalysis_17);
 							this.acquireSemaphore();
-							ca.stepLexicalTable();
+							ca.stepCompute();
 							this.releaseSemaphore();
 							
-							this.acquireSemaphore();
-							ca.stepSortTableLexical();
-							this.releaseSemaphore();
+							ca.getLexicalTable().addResult(ca);
+
 						}
+						if(ca == null)	{
+							return Status.CANCEL_STATUS;
+						}
 
-						monitor.worked(20);
-
-						if (monitor.isCanceled()) return Status.CANCEL_STATUS;
-
-						monitor.subTask(CAUIMessages.ComputeCorrespondanceAnalysis_17);
-						this.acquireSemaphore();
-						ca.stepCompute();
-						this.releaseSemaphore();
 						
-						boolean variables = TXMPreferences.getBoolean(CAPreferences.PREFERENCES_NODE, CAPreferences.SHOW_VARIABLES);
-						boolean individuals = TXMPreferences.getBoolean(CAPreferences.PREFERENCES_NODE, CAPreferences.SHOW_INDIVIDUALS);
-						
-						
-						ca.setShown(individuals, variables);
-
-						ca.getLexicalTable().addResult(ca);
-						
 						monitor.worked(20);
 						monitor.subTask(CAUIMessages.ComputeCorrespondanceAnalysis_8);
 
 						syncExec(new Runnable() {
 							@Override
 							public void run() {
-								if (ca == null) return;
-								IWorkbenchPage page = window.getActivePage();
-								CAEditorInput editorInput = new CAEditorInput(ca, partition, property);
-
 								try {
+									IWorkbenchPage page = window.getActivePage();
+									TXMResultEditorInput editorInput = new TXMResultEditorInput(ca);
 									StatusLine.setMessage(CAUIMessages.ComputeCorrespondanceAnalysis_14);
-									IEditorPart editor = page.openEditor(editorInput, "CAEditor"); //$NON-NLS-1$
+									page.openEditor(editorInput, "CAEditor"); //$NON-NLS-1$
 									StatusLine.setMessage(CAUIMessages.ComputeCorrespondanceAnalysis_14);
 								} catch (Exception e) {
 									org.txm.rcpapplication.utils.Logger.printStackTrace(e);
@@ -237,15 +241,19 @@
 						});
 						monitor.worked(50);
 
-						monitor.subTask(Messages.CreatePartition_9);
-						syncExec(new Runnable() {
-							@Override
-							public void run() {
-								CorporaView.refresh();
-								CorporaView.expand(ca.getParent());
-							}
-						});
+						monitor.subTask(Messages.RefreshingCorporaView);
 
+						//FIXME: doesn't work, why?
+						//CorporaView.refreshObject(ca);
+						
+//						syncExec(new Runnable() {
+//							@Override
+//							public void run() {
+//								CorporaView.refresh();
+//								CorporaView.expand(ca.getParent());
+//							}
+//						});
+
 						monitor.worked(100);
 					} catch (ThreadDeath td) {
 						return Status.CANCEL_STATUS;
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/CAUIMessages.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/CAUIMessages.java	(revision 281)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/CAUIMessages.java	(revision 282)
@@ -1,7 +1,7 @@
 package org.txm.ca.rcp.messages;
 
 import org.eclipse.osgi.util.NLS;
-import org.txm.core.messages.TXMCoreMessages;
+import org.txm.utils.messages.Utf8NLS;
 
 public class CAUIMessages extends NLS {
 
@@ -52,7 +52,7 @@
 	
 	static {
 		// initializes resource bundle
-		TXMCoreMessages.initializeMessages(BUNDLE_NAME, CAUIMessages.class);
+		Utf8NLS.initializeMessages(BUNDLE_NAME, CAUIMessages.class);
 	}
 
 	private CAUIMessages() {
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditorInput.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditorInput.java	(revision 281)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditorInput.java	(revision 282)
@@ -1,582 +0,0 @@
-// Copyright © 2010-2013 ENS de Lyon.
-// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of
-// Lyon 2, University of Franche-Comté, University of Nice
-// Sophia Antipolis, University of Paris 3.
-//
-// The TXM platform is free software: you can redistribute it
-// and/or modify it under the terms of the GNU General Public
-// License as published by the Free Software Foundation,
-// either version 2 of the License, or (at your option) any
-// later version.
-//
-// The TXM platform is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-// PURPOSE. See the GNU General Public License for more
-// details.
-//
-// You should have received a copy of the GNU General
-// Public License along with the TXM platform. If not, see
-// http://www.gnu.org/licenses.
-//
-//
-//
-// $LastChangedDate:$
-// $LastChangedRevision:$
-// $LastChangedBy:$
-//
-package org.txm.ca.rcp.editors;
-
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-import org.eclipse.ui.part.EditorPart;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.txm.ca.core.functions.CA;
-import org.txm.ca.core.preferences.CAPreferences;
-import org.txm.ca.rcp.messages.CAUIMessages;
-import org.txm.chartsengine.rcp.SWTChartsComponentsProvider;
-import org.txm.chartsengine.rcp.editors.ChartEditorInput;
-import org.txm.chartsengine.rcp.editors.ChartEditorPart;
-import org.txm.rcp.editors.TXMResultEditorInput;
-import org.txm.rcpapplication.Application;
-import org.txm.rcpapplication.IImageKeys;
-import org.txm.rcpapplication.Messages;
-import org.txm.rcpapplication.editors.Tablable;
-import org.txm.rcpapplication.editors.input.AbstractTablable;
-import org.txm.rcpapplication.editors.input.FrequencyListContentProvider;
-import org.txm.rcpapplication.editors.input.FrequencyListLabelProvider;
-import org.txm.rcpapplication.editors.input.IProvidingMultiPageEditorInput;
-import org.txm.searchengine.cqp.corpus.Partition;
-import org.txm.searchengine.cqp.corpus.Property;
-
-
-// TODO: Auto-generated Javadoc
-/**
- * The Class CorrespondanceAnalysisEditorInput.
- *
- *@author sjacquot
- * @author sloiseau
- */
-//FIXME: extract all the UI related and move it to CAEditor
-public class CAEditorInput extends TXMResultEditorInput implements IProvidingMultiPageEditorInput {
-
-	/** The ca. */
-	private CA ca;
-	
-	private static String SEPARATOR = "SEPARATOR"; //$NON-NLS-1$
-
-	private static String COL_TYPE = "Double"; //$NON-NLS-1$
-	
-	/** The property. */
-	private Property property;
-
-	/** The editors. */
-	private List<EditorPart> editors;
-
-	/** The inputs. */
-	private List<IEditorInput> inputs;
-
-	/** The names. */
-	private List<String> names = Arrays.asList(new String[] {
-			CAUIMessages.CorrespondanceAnalysisEditorInput_1,
-			CAUIMessages.CorrespondanceAnalysisEditorInput_0,
-			CAUIMessages.CorrespondanceAnalysisEditorInput_8,
-			CAUIMessages.CorrespondanceAnalysisEditorInput_9,
-			CAUIMessages.CorrespondanceAnalysisEditorInput_2 });
-
-	
-	
-	/**
-	 * Instantiates a new correspondence analysis editor input.
-	 *
-	 * @param ca the ca
-	 * @param partition the partition
-	 * @param property the property
-	 */
-	public CAEditorInput(CA ca, Partition partition, Property property) {
-		super(ca);
-		this.ca = ca;
-		this.property = property;
-
-		if(ca == null)	{
-			throw new IllegalArgumentException(CAUIMessages.CorrespondanceAnalysisEditorInput_3);
-		}
-
-		// Create the tab-editor
-		editors = new ArrayList<EditorPart>();
-
-		// Create the input for each tab-editor
-		inputs = new ArrayList<IEditorInput>();
-
-		// Initialize the editor parts and editor inputs
-		this.initCAFactorialMapEditor();
-		this.initCASingularValuesTableEditor();
-		this.initRowsTableEditor();
-		this.initColumnsTableEditor();
-		this.initCASingularValuesBarChartEditor();
-	}
-
-	
-	
-	
-	
-	
-	/**
-	 * The Class CASingularValueLabelProvider.
-	 */
-	private class CASingularValueLabelProvider extends LabelProvider implements	ITableLabelProvider {
-
-
-		/**
-		 * Percent values number format.
-		 */
-		protected DecimalFormat percentValuesNumberFormat = new DecimalFormat(new String("0.00")); //$NON-NLS-1$
-
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
-		 */
-		@Override
-		public Image getColumnImage(Object element, int columnIndex) {
-			// TODO Auto-generated method stub
-			return null;
-		}
-
-		/* (non-Javadoc)
-		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
-		 */
-		@Override
-		@SuppressWarnings("unchecked") //$NON-NLS-1$
-		public String getColumnText(Object element, int columnIndex) {
-			DecimalFormat f;
-			Object o = ((List<Object>) element).get(columnIndex);
-			switch (columnIndex) {
-				case 0: // factor
-					return o.toString();
-				case 1: // eigenvalue
-					if ((Double) o < 1) {
-						if ((Double) o < 0.0001)
-							f = new DecimalFormat("0.0000E00"); //$NON-NLS-1$
-						else
-							f = new DecimalFormat("0.0000"); //$NON-NLS-1$
-					} else {
-						f = new DecimalFormat("##########0.0000"); //$NON-NLS-1$
-					}
-					// FIXME: printf syntax tests
-					//return String.format("%.4f", o);
-					return f.format(o);
-				case 2: // percent
-				case 3: // cumul
-					return percentValuesNumberFormat.format(o);
-				default:
-					return ""; //$NON-NLS-1$
-			}
-		}
-	}
-
-
-
-	/**
-	 * Initializes CA factorial map editor.
-	 */
-	public void initCAFactorialMapEditor()	{
-
-		// Editor part
-		ChartEditorPart caFactorialMapEditorPart = new CAFactorialMapChartEditor(new ChartEditorInput(ca, CAPreferences.PREFERENCES_NODE));
-		editors.add(caFactorialMapEditorPart);
-
-		// Editor input
-		inputs.add(caFactorialMapEditorPart.getEditorInput());
-
-	}
-
-	
-
-	/**
-	 * Initializes CA singular values bar chart editor.
-	 */
-	public void initCASingularValuesBarChartEditor()	{
-		
-		// Editor part
-		EditorPart caSingularValuesEditorPart = SWTChartsComponentsProvider.getCurrent().createChartEditor(ca, CAPreferences.PREFERENCES_NODE, "Singular Values"); //$NON-NLS-1$
-		editors.add(caSingularValuesEditorPart);
-
-		// Editor input
-		inputs.add(caSingularValuesEditorPart.getEditorInput());
-	}
-
-	
-	/**
-	 * Initializes CA singular values table editor.
-	 */
-	public void initCASingularValuesTableEditor()	{
-		// Editor part
-		editors.add(new SingularValuesEditor());
-
-		// Editor input
-		Tablable table = new AbstractTablable() {
-			@Override
-			public String[] getColumnTitles() {
-				return new String[] {
-						CAUIMessages.CorrespondanceAnalysisEditorInput_4,
-						CAUIMessages.CorrespondanceAnalysisEditorInput_5,
-						"%", CAUIMessages.CorrespondanceAnalysisEditorInput_11 + "%", "", ""}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-			}
-
-			@Override
-			public String[] getColumnTypes() {
-				return new String[] {
-						Messages.FrequencyListEditorInput_6,
-						COL_TYPE,
-						COL_TYPE,
-						COL_TYPE,
-						COL_TYPE,
-						SEPARATOR};
-			}
-
-			@Override
-			public IStructuredContentProvider getContentProvider() {
-				return new IStructuredContentProvider() {
-					@Override
-					public Object[] getElements(Object inputElement) {
-						CA ca = (CA) inputElement;
-						List<List<Object>> tabledata = ca.getSingularValuesInfos();
-						return tabledata.toArray();
-					}
-
-					@Override
-					public void dispose() {
-						// TODO Auto-generated method stub
-					}
-
-					@Override
-					public void inputChanged(Viewer viewer, Object oldInput,
-							Object newInput) {
-						// TODO Auto-generated method stub
-					}
-				};
-			}
-
-			@Override
-			public Object getInput() {
-				return ca;
-			}
-
-			@Override
-			public LabelProvider getLabelProvider() {
-				return new CASingularValueLabelProvider();
-			}
-		};
-
-		inputs.add(table);
-	}
-
-
-
-	/**
-	 * Initializes rows data table editor.
-	 */
-	public void initRowsTableEditor()	{
-		// Editor part
-		editors.add(new ColsRowsInfosEditor());
-
-		// Editor input
-		Tablable table = new AbstractTablable() {
-
-			List<String> coltypes;
-			@Override
-			public String[] getColumnTitles() {
-				return ca.getRowInfosTitles();
-				// new String[]{"Rows"," ","Quality","Mass", "Dist", "Inertia"};
-			}
-
-			@Override
-			public String[] getColumnTypes() {
-				coltypes = new ArrayList<String>();
-				coltypes.add(Messages.FrequencyListEditorInput_6);
-				coltypes.add(SEPARATOR);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				for (int c = 0; c < 3; c++)// seulement les 3 premiers axes
-				{
-					coltypes.add(SEPARATOR);
-					coltypes.add(COL_TYPE);
-					coltypes.add(COL_TYPE);
-				}
-				coltypes.add(SEPARATOR);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(SEPARATOR);
-				return coltypes.toArray(new String[] {});
-				// new String[]{Messages.FrequencyListEditorInput_6,
-				// Messages.SpecificitiesResultEditorInput_11,
-				// Messages.SpecificitiesResultEditorInput_11,
-				// Messages.SpecificitiesResultEditorInput_11};
-			}
-
-			@Override
-			public IStructuredContentProvider getContentProvider() {
-
-				return new IStructuredContentProvider() {
-					@Override
-					public Object[] getElements(Object inputElement) {
-
-						CA ca = (CA) inputElement;
-						return ca.getRowInfos();
-					}
-
-					@Override
-					public void dispose() {
-						// TODO Auto-generated method stub
-					}
-
-					@Override
-					public void inputChanged(Viewer viewer, Object oldInput,
-							Object newInput) {
-						// TODO Auto-generated method stub
-					}
-				};
-			}
-
-			@Override
-			public Object getInput() {
-				return ca;
-			}
-
-			@Override
-			public LabelProvider getLabelProvider() {
-				return new ColRowInfosLabelProvider(this.getColumnTitles());
-			}
-		};
-		inputs.add(table);
-	}
-
-
-	/**
-	 * Initializes columns data table editor.
-	 */
-	public void initColumnsTableEditor()	{
-		// Editor part
-		editors.add(new ColsRowsInfosEditor());
-
-		// Editor input
-		Tablable table = new AbstractTablable() {
-
-			List<String> colnames = new ArrayList<String>();
-			List<String> coltypes = new ArrayList<String>();
-			boolean firstInit = true;
-
-			@Override
-			public String[] getColumnTitles() {
-				return ca.getColInfosTitles();
-			}
-
-			@Override
-			public String[] getColumnTypes() {
-				coltypes = new ArrayList<String>();
-				coltypes.add(Messages.FrequencyListEditorInput_6);
-				coltypes.add(SEPARATOR);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				for (int c = 0; c < 3; c++) {
-					coltypes.add(SEPARATOR);
-					coltypes.add(COL_TYPE);
-					coltypes.add(COL_TYPE);
-				}
-				coltypes.add(SEPARATOR);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(COL_TYPE);
-				coltypes.add(SEPARATOR);
-				return coltypes.toArray(new String[] {});
-				// new String[]{Messages.FrequencyListEditorInput_6,
-				// COL_TYPE,
-				// COL_TYPE,
-				// COL_TYPE};
-			}
-
-			@Override
-			public IStructuredContentProvider getContentProvider() {
-
-				return new IStructuredContentProvider() {
-					@Override
-					public Object[] getElements(Object inputElement) {
-						CA ca = (CA) inputElement;
-						return ca.getColInfos();
-					}
-
-					@Override
-					public void dispose() {
-						// TODO Auto-generated method stub
-					}
-
-					@Override
-					public void inputChanged(Viewer viewer, Object oldInput,
-							Object newInput) {
-						// TODO Auto-generated method stub
-					}
-				};
-			}
-
-			@Override
-			public Object getInput() {
-				return ca;
-			}
-
-			@Override
-			public LabelProvider getLabelProvider() {
-				return new ColRowInfosLabelProvider(this.getColumnTitles());
-			}
-		};
-		inputs.add(table);
-	}
-
-
-
-	/**
-	 * Exists.
-	 *
-	 * @return true, if successful
-	 * @see org.eclipse.ui.IEditorInput#exists()
-	 */
-	@Override
-	public boolean exists() {
-		return false;
-	}
-
-	/**
-	 * Gets the image descriptor.
-	 *
-	 * @return the image descriptor
-	 * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
-	 */
-	@Override
-	public ImageDescriptor getImageDescriptor() {
-		return AbstractUIPlugin.imageDescriptorFromPlugin(
-				Application.PLUGIN_ID,
-				IImageKeys.ACTION_CORRESPONDANCE_ANALYSIS);
-	}
-
-	/**
-	 * Gets the persistable.
-	 *
-	 * @return the persistable
-	 * @see org.eclipse.ui.IEditorInput#getPersistable()
-	 */
-	@Override
-	public IPersistableElement getPersistable() {
-		return null;
-	}
-
-	/**
-	 * Gets the adapter.
-	 *
-	 * @param arg0 the arg0
-	 * @return the adapter
-	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
-	 */
-	@Override
-	@SuppressWarnings("unchecked") //$NON-NLS-1$
-	public Object getAdapter(Class arg0) {
-		return null;
-	}
-
-	/**
-	 * Gets the cA.
-	 *
-	 * @return the Correspondance analysis underlying object
-	 */
-	public CA getCA() {
-		return ca;
-	}
-
-	/**
-	 * Gets the property.
-	 *
-	 * @return the property
-	 */
-	public Property getProperty() {
-		return property;
-	}
-
-	/**
-	 * Gets the content provider.
-	 *
-	 * @return the content provider
-	 */
-	public IStructuredContentProvider getContentProvider() {
-		return new FrequencyListContentProvider();
-	}
-
-	/**
-	 * Gets the input.
-	 *
-	 * @return the input
-	 */
-	public Object getInput() {
-		return ca;
-	}
-
-	/**
-	 * Gets the label provider.
-	 *
-	 * @return the label provider
-	 */
-	public LabelProvider getLabelProvider() {
-		return new FrequencyListLabelProvider();
-	}
-
-	/**
-	 * Gets the column titles.
-	 *
-	 * @return the column titles
-	 */
-	public String[] getColumnTitles() {
-		return new String[] { Messages.FrequencyListEditorInput_9,
-				Messages.FrequencyListEditorInput_4 };
-	}
-
-	// Implementing IProvidingMultiPageEditorInput
-	/* (non-Javadoc)
-	 * @see org.txm.rcpapplication.editors.input.IProvidingMultiPageEditorInput#getEditorInputs()
-	 */
-	@Override
-	public List<IEditorInput> getEditorInputs() {
-		return inputs;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.txm.rcpapplication.editors.input.IProvidingMultiPageEditorInput#getEditors()
-	 */
-	@Override
-	public List<EditorPart> getEditors() {
-		return editors;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.txm.rcpapplication.editors.input.IProvidingMultiPageEditorInput#getNames()
-	 */
-	@Override
-	public List<String> getNames() {
-		return names;
-	}
-
-}
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/___CAEditorInput.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/___CAEditorInput.java	(revision 0)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/___CAEditorInput.java	(revision 282)
@@ -0,0 +1,204 @@
+// Copyright © 2010-2013 ENS de Lyon.
+// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of
+// Lyon 2, University of Franche-Comté, University of Nice
+// Sophia Antipolis, University of Paris 3.
+//
+// The TXM platform is free software: you can redistribute it
+// and/or modify it under the terms of the GNU General Public
+// License as published by the Free Software Foundation,
+// either version 2 of the License, or (at your option) any
+// later version.
+//
+// The TXM platform is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied
+// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+// PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General
+// Public License along with the TXM platform. If not, see
+// http://www.gnu.org/licenses.
+//
+//
+//
+// $LastChangedDate:$
+// $LastChangedRevision:$
+// $LastChangedBy:$
+//
+package org.txm.ca.rcp.editors;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.part.EditorPart;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.txm.ca.core.functions.CA;
+import org.txm.ca.rcp.messages.CAUIMessages;
+import org.txm.rcp.editors.TXMResultEditorInput;
+import org.txm.rcpapplication.Application;
+import org.txm.rcpapplication.IImageKeys;
+import org.txm.searchengine.cqp.corpus.Partition;
+import org.txm.searchengine.cqp.corpus.Property;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class CorrespondanceAnalysisEditorInput.
+ *
+ *@author sjacquot
+ * @author sloiseau
+ */
+//FIXME: extract all the UI related and move it to CAEditor
+//FIXME: done, this class should not be useful anymore
+@Deprecated
+public class ___CAEditorInput extends TXMResultEditorInput {
+
+	/** The ca. */
+	private CA ca;
+	
+	/** The property. */
+	private Property property;
+
+	/** The editors. */
+	private List<EditorPart> editors;
+
+	/** The inputs. */
+	private List<IEditorInput> inputs;
+
+	
+	/**
+	 * Instantiates a new correspondence analysis editor input.
+	 *
+	 * @param ca the ca
+	 * @param partition the partition
+	 * @param property the property
+	 */
+	public ___CAEditorInput(CA ca, Partition partition, Property property) {
+		super(ca);
+		this.ca = ca;
+		this.property = property;
+
+		if(ca == null)	{
+			throw new IllegalArgumentException(CAUIMessages.CorrespondanceAnalysisEditorInput_3);
+		}
+
+		// Create the tab-editor
+		editors = new ArrayList<EditorPart>();
+
+		// Create the input for each tab-editor
+		inputs = new ArrayList<IEditorInput>();
+
+//		// Initialize the editor parts and editor inputs
+//		this.initCAFactorialMapEditor();
+//		this.initCASingularValuesTableEditor();
+//		this.initRowsTableEditor();
+//		this.initColumnsTableEditor();
+//		this.initCASingularValuesBarChartEditor();
+	}
+
+	
+	
+	
+	
+	
+
+
+
+	/**
+	 * Exists.
+	 *
+	 * @return true, if successful
+	 * @see org.eclipse.ui.IEditorInput#exists()
+	 */
+	@Override
+	public boolean exists() {
+		return false;
+	}
+
+	/**
+	 * Gets the image descriptor.
+	 *
+	 * @return the image descriptor
+	 * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+	 */
+	@Override
+	public ImageDescriptor getImageDescriptor() {
+		return AbstractUIPlugin.imageDescriptorFromPlugin(
+				Application.PLUGIN_ID,
+				IImageKeys.ACTION_CORRESPONDANCE_ANALYSIS);
+	}
+
+	/**
+	 * Gets the persistable.
+	 *
+	 * @return the persistable
+	 * @see org.eclipse.ui.IEditorInput#getPersistable()
+	 */
+	@Override
+	public IPersistableElement getPersistable() {
+		return null;
+	}
+
+	/**
+	 * Gets the adapter.
+	 *
+	 * @param arg0 the arg0
+	 * @return the adapter
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	@Override
+	@SuppressWarnings("unchecked") //$NON-NLS-1$
+	public Object getAdapter(Class arg0) {
+		return null;
+	}
+
+	/**
+	 * Gets the cA.
+	 *
+	 * @return the Correspondance analysis underlying object
+	 */
+	public CA getCA() {
+		return ca;
+	}
+
+	/**
+	 * Gets the property.
+	 *
+	 * @return the property
+	 */
+	public Property getProperty() {
+		return property;
+	}
+
+
+	/**
+	 * Gets the input.
+	 *
+	 * @return the input
+	 */
+	public Object getInput() {
+		return ca;
+	}
+
+
+
+	// Implementing IProvidingMultiPageEditorInput
+	/* (non-Javadoc)
+	 * @see org.txm.rcpapplication.editors.input.IProvidingMultiPageEditorInput#getEditorInputs()
+	 */
+	public List<IEditorInput> getEditorInputs() {
+		return inputs;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.txm.rcpapplication.editors.input.IProvidingMultiPageEditorInput#getEditors()
+	 */
+	public List<EditorPart> getEditors() {
+		return editors;
+	}
+
+
+}

Property changes on: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/___CAEditorInput.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditor.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditor.java	(revision 281)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditor.java	(revision 282)
@@ -27,9 +27,18 @@
 //
 package org.txm.ca.rcp.editors;
 
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
@@ -53,13 +62,20 @@
 import org.eclipse.ui.part.EditorPart;
 import org.txm.ca.core.chartsengine.base.Utils;
 import org.txm.ca.core.functions.CA;
+import org.txm.ca.core.preferences.CAPreferences;
+import org.txm.ca.rcp.messages.CAUIMessages;
 import org.txm.chartsengine.rcp.SWTChartsComponentsProvider;
+import org.txm.chartsengine.rcp.editors.ChartEditorInput;
 import org.txm.chartsengine.rcp.editors.ChartEditorPart;
 import org.txm.rcp.editors.SplitedGenericMultiPageEditor;
+import org.txm.rcp.editors.TXMResultEditorInput;
 import org.txm.rcpapplication.Messages;
 import org.txm.rcpapplication.commands.editor.CustomizableEditor;
 import org.txm.rcpapplication.editors.GenericMultiPageEditor;
-import org.txm.rcpapplication.editors.input.IProvidingMultiPageEditorInput;
+import org.txm.rcpapplication.editors.Tablable;
+import org.txm.rcpapplication.editors.input.AbstractTablable;
+import org.txm.rcpapplication.editors.input.FrequencyListContentProvider;
+import org.txm.rcpapplication.editors.input.FrequencyListLabelProvider;
 import org.txm.searchengine.cqp.corpus.Corpus;
 
 // TODO: Auto-generated Javadoc
@@ -77,8 +93,29 @@
 	/** The ca. */
 	private CA ca;
 
+	/**
+	 * The main editor is the editor on the left area and that is always visible (not tabbed).
+	 */
 	protected EditorPart mainEditor;
+
 	
+	private static String SEPARATOR = "SEPARATOR"; //$NON-NLS-1$
+
+	private static String COL_TYPE = "Double"; //$NON-NLS-1$
+	
+	/** The names. */
+	private List<String> names = Arrays.asList(new String[] {
+			CAUIMessages.CorrespondanceAnalysisEditorInput_1,
+			CAUIMessages.CorrespondanceAnalysisEditorInput_0,
+			CAUIMessages.CorrespondanceAnalysisEditorInput_8,
+			CAUIMessages.CorrespondanceAnalysisEditorInput_9,
+			CAUIMessages.CorrespondanceAnalysisEditorInput_2 });
+
+	
+
+	/**
+	 * 
+	 */
 	public CAEditor() {
 		super();
 	}
@@ -135,22 +172,30 @@
 		AFCgraph.setLayout(new FillLayout());
 		// /////////////////////
 
-		IEditorInput input = getEditorInput();
-		if (!(input instanceof IProvidingMultiPageEditorInput)) {
-			throw new IllegalArgumentException(NLS.bind(
-					Messages.GenericMultiPageEditor_1, input.getName()));
+		
+		editors = new ArrayList<EditorPart>();
+		inputs = new ArrayList<IEditorInput>();
+
+		TXMResultEditorInput cainput = (TXMResultEditorInput) getEditorInput();
+		this.ca = (CA) cainput.getResult();
+
+		if (this.ca.getPartition() != null)	{
+			setPartName(this.ca.getPartition().getName() + ":" + this.ca.getAnalysisProperty()); //$NON-NLS-1$
 		}
+		
+		// Initialize the editor parts and editor inputs
+		this.initCAFactorialMapEditor();
+		this.initCASingularValuesTableEditor();
+		this.initRowsTableEditor();
+		this.initColumnsTableEditor();
+		this.initCASingularValuesBarChartEditor();
 
-		editors = ((IProvidingMultiPageEditorInput) input).getEditors();
-		inputs = ((IProvidingMultiPageEditorInput) input).getEditorInputs();
-		names = ((IProvidingMultiPageEditorInput) input).getNames();
-
+		
 		if (editors.size() != inputs.size()) {
-			throw new IllegalArgumentException(NLS.bind(
-					Messages.GenericMultiPageEditor_3, editors.size(), inputs.size()));
+			throw new IllegalArgumentException(NLS.bind(Messages.GenericMultiPageEditor_3, editors.size(), inputs.size()));
 		}
 
-		// put first editor in the left panel
+		// put first editor in the left panel and set is as "main" editor
 		try {
 			
 			final CAFactorialMapChartEditor caFactorialMapEditorPart = (CAFactorialMapChartEditor) editors.get(0); 
@@ -158,7 +203,7 @@
 			
 			IEditorSite site = createSite(caFactorialMapEditorPart);
 			// call init first so that if an exception is thrown, we have created no new widgets
-			caFactorialMapEditorPart.init(site, inputs.get(0));
+			caFactorialMapEditorPart.init(site, editors.get(0).getEditorInput());
 
 			// Set the parent multi pages editor of the CA factorial map editor to activate it from the child editor
 			caFactorialMapEditorPart.setParentMultiPagesEditor(this);
@@ -166,9 +211,9 @@
 			caFactorialMapEditorPart.createChart();
 			caFactorialMapEditorPart.createPartControl(AFCgraph); // must be called AFTER createChart() because the initItemListener checks if getChart() is null
 			caFactorialMapEditorPart.loadChart();
+			caFactorialMapEditorPart.refresh();
+			
 
-			
-			
 			caFactorialMapEditorPart.addPropertyListener(new IPropertyListener() {
 				@Override
 				public void propertyChanged(Object source, int propertyId) {
@@ -185,6 +230,7 @@
 			return;
 		}
 
+		// add the other editors
 		for (int i = 1; i < editors.size(); i++) {
 			int editorIndex = 0;
 			try {
@@ -263,23 +309,337 @@
 
 		
 
-		CAEditorInput cainput = (CAEditorInput) getEditorInput();
-		this.ca = cainput.getCA();
 
-		if (cainput.getCA().getPartition() != null)	{
-			setPartName(cainput.getCA().getPartition().getName() + ":" //$NON-NLS-1$
-				+ cainput.getCA().getAnalysisProperty());
-		}
-
 		this.setActivePage(LAST_EDITOR_USED);
 		
 		this.setPartName(this.getEditorInput().getName());
 	}
 
+	
+	
 	/**
-	 * Gets the cA.
+	 * Initializes CA factorial map editor.
+	 */
+	public void initCAFactorialMapEditor()	{
+
+		// Editor part
+		ChartEditorPart caFactorialMapEditorPart = new CAFactorialMapChartEditor(new ChartEditorInput(ca, CAPreferences.PREFERENCES_NODE));
+		editors.add(caFactorialMapEditorPart);
+
+		// Editor input
+		inputs.add(caFactorialMapEditorPart.getEditorInput());
+
+	}
+
+	
+
+	/**
+	 * Initializes CA singular values bar chart editor.
+	 */
+	public void initCASingularValuesBarChartEditor()	{
+		
+		// Editor part
+		EditorPart caSingularValuesEditorPart = SWTChartsComponentsProvider.getCurrent().createChartEditor(ca, CAPreferences.PREFERENCES_NODE, "Singular Values"); //$NON-NLS-1$
+		editors.add(caSingularValuesEditorPart);
+
+		// Editor input
+		inputs.add(caSingularValuesEditorPart.getEditorInput());
+	}
+
+	
+	/**
+	 * Initializes CA singular values table editor.
+	 */
+	public void initCASingularValuesTableEditor()	{
+		// Editor part
+		editors.add(new SingularValuesEditor());
+
+		// Editor input
+		Tablable table = new AbstractTablable() {
+			@Override
+			public String[] getColumnTitles() {
+				return new String[] {
+						CAUIMessages.CorrespondanceAnalysisEditorInput_4,
+						CAUIMessages.CorrespondanceAnalysisEditorInput_5,
+						"%", CAUIMessages.CorrespondanceAnalysisEditorInput_11 + "%", "", ""}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+			}
+
+			@Override
+			public String[] getColumnTypes() {
+				return new String[] {
+						Messages.FrequencyListEditorInput_6,
+						COL_TYPE,
+						COL_TYPE,
+						COL_TYPE,
+						COL_TYPE,
+						SEPARATOR};
+			}
+
+			@Override
+			public IStructuredContentProvider getContentProvider() {
+				return new IStructuredContentProvider() {
+					@Override
+					public Object[] getElements(Object inputElement) {
+						CA ca = (CA) inputElement;
+						List<List<Object>> tabledata = ca.getSingularValuesInfos();
+						return tabledata.toArray();
+					}
+
+					@Override
+					public void dispose() {
+						// TODO Auto-generated method stub
+					}
+
+					@Override
+					public void inputChanged(Viewer viewer, Object oldInput,
+							Object newInput) {
+						// TODO Auto-generated method stub
+					}
+				};
+			}
+
+			@Override
+			public Object getInput() {
+				return ca;
+			}
+
+			@Override
+			public LabelProvider getLabelProvider() {
+				return new CASingularValueLabelProvider();
+			}
+		};
+
+		inputs.add(table);
+	}
+
+
+
+	/**
+	 * Initializes rows data table editor.
+	 */
+	public void initRowsTableEditor()	{
+		// Editor part
+		editors.add(new ColsRowsInfosEditor());
+
+		// Editor input
+		Tablable table = new AbstractTablable() {
+
+			List<String> coltypes;
+			@Override
+			public String[] getColumnTitles() {
+				return ca.getRowInfosTitles();
+				// new String[]{"Rows"," ","Quality","Mass", "Dist", "Inertia"};
+			}
+
+			@Override
+			public String[] getColumnTypes() {
+				coltypes = new ArrayList<String>();
+				coltypes.add(Messages.FrequencyListEditorInput_6);
+				coltypes.add(SEPARATOR);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				for (int c = 0; c < 3; c++)// seulement les 3 premiers axes
+				{
+					coltypes.add(SEPARATOR);
+					coltypes.add(COL_TYPE);
+					coltypes.add(COL_TYPE);
+				}
+				coltypes.add(SEPARATOR);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(SEPARATOR);
+				return coltypes.toArray(new String[] {});
+				// new String[]{Messages.FrequencyListEditorInput_6,
+				// Messages.SpecificitiesResultEditorInput_11,
+				// Messages.SpecificitiesResultEditorInput_11,
+				// Messages.SpecificitiesResultEditorInput_11};
+			}
+
+			@Override
+			public IStructuredContentProvider getContentProvider() {
+
+				return new IStructuredContentProvider() {
+					@Override
+					public Object[] getElements(Object inputElement) {
+
+						CA ca = (CA) inputElement;
+						return ca.getRowInfos();
+					}
+
+					@Override
+					public void dispose() {
+						// TODO Auto-generated method stub
+					}
+
+					@Override
+					public void inputChanged(Viewer viewer, Object oldInput,
+							Object newInput) {
+						// TODO Auto-generated method stub
+					}
+				};
+			}
+
+			@Override
+			public Object getInput() {
+				return ca;
+			}
+
+			@Override
+			public LabelProvider getLabelProvider() {
+				return new ColRowInfosLabelProvider(this.getColumnTitles());
+			}
+		};
+		inputs.add(table);
+	}
+
+
+	/**
+	 * Initializes columns data table editor.
+	 */
+	public void initColumnsTableEditor()	{
+		// Editor part
+		editors.add(new ColsRowsInfosEditor());
+
+		// Editor input
+		Tablable table = new AbstractTablable() {
+
+			List<String> colnames = new ArrayList<String>();
+			List<String> coltypes = new ArrayList<String>();
+			boolean firstInit = true;
+
+			@Override
+			public String[] getColumnTitles() {
+				return ca.getColInfosTitles();
+			}
+
+			@Override
+			public String[] getColumnTypes() {
+				coltypes = new ArrayList<String>();
+				coltypes.add(Messages.FrequencyListEditorInput_6);
+				coltypes.add(SEPARATOR);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				for (int c = 0; c < 3; c++) {
+					coltypes.add(SEPARATOR);
+					coltypes.add(COL_TYPE);
+					coltypes.add(COL_TYPE);
+				}
+				coltypes.add(SEPARATOR);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(COL_TYPE);
+				coltypes.add(SEPARATOR);
+				return coltypes.toArray(new String[] {});
+				// new String[]{Messages.FrequencyListEditorInput_6,
+				// COL_TYPE,
+				// COL_TYPE,
+				// COL_TYPE};
+			}
+
+			@Override
+			public IStructuredContentProvider getContentProvider() {
+
+				return new IStructuredContentProvider() {
+					@Override
+					public Object[] getElements(Object inputElement) {
+						CA ca = (CA) inputElement;
+						return ca.getColInfos();
+					}
+
+					@Override
+					public void dispose() {
+						// TODO Auto-generated method stub
+					}
+
+					@Override
+					public void inputChanged(Viewer viewer, Object oldInput,
+							Object newInput) {
+						// TODO Auto-generated method stub
+					}
+				};
+			}
+
+			@Override
+			public Object getInput() {
+				return ca;
+			}
+
+			@Override
+			public LabelProvider getLabelProvider() {
+				return new ColRowInfosLabelProvider(this.getColumnTitles());
+			}
+		};
+		inputs.add(table);
+	}
+
+
+	/**
+	 * The Class CASingularValueLabelProvider.
+	 */
+	private class CASingularValueLabelProvider extends LabelProvider implements	ITableLabelProvider {
+
+
+		/**
+		 * Percent values number format.
+		 */
+		protected DecimalFormat percentValuesNumberFormat = new DecimalFormat(new String("0.00")); //$NON-NLS-1$
+
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+		 */
+		@Override
+		public Image getColumnImage(Object element, int columnIndex) {
+			// TODO Auto-generated method stub
+			return null;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+		 */
+		@Override
+		@SuppressWarnings("unchecked") //$NON-NLS-1$
+		public String getColumnText(Object element, int columnIndex) {
+			DecimalFormat f;
+			Object o = ((List<Object>) element).get(columnIndex);
+			switch (columnIndex) {
+				case 0: // factor
+					return o.toString();
+				case 1: // eigenvalue
+					if ((Double) o < 1) {
+						if ((Double) o < 0.0001)
+							f = new DecimalFormat("0.0000E00"); //$NON-NLS-1$
+						else
+							f = new DecimalFormat("0.0000"); //$NON-NLS-1$
+					} else {
+						f = new DecimalFormat("##########0.0000"); //$NON-NLS-1$
+					}
+					// FIXME: printf syntax tests
+					//return String.format("%.4f", o);
+					return f.format(o);
+				case 2: // percent
+				case 3: // cumul
+					return percentValuesNumberFormat.format(o);
+				default:
+					return ""; //$NON-NLS-1$
+			}
+		}
+	}
+
+
+
+	
+	/**
+	 * Gets the CA.
 	 *
-	 * @return the cA
+	 * @return the CA
 	 */
 	public CA getCA() {
 		return this.ca;
@@ -377,4 +737,39 @@
 	public EditorPart getMainEditorPart() {
 		return this.mainEditor;
 	}
+	
+	/**
+	 * 
+	 * @param partName
+	 */
+	public void changePartName(String partName)	{
+		this.setPartName(partName);
+	}
+	
+//	/**
+//	 * Gets the content provider.
+//	 *
+//	 * @return the content provider
+//	 */
+//	public IStructuredContentProvider getContentProvider() {
+//		return new FrequencyListContentProvider();
+//	}
+//	/**
+//	 * Gets the label provider.
+//	 *
+//	 * @return the label provider
+//	 */
+//	public LabelProvider getLabelProvider() {
+//		return new FrequencyListLabelProvider();
+//	}
+//
+//	/**
+//	 * Gets the column titles.
+//	 *
+//	 * @return the column titles
+//	 */
+//	public String[] getColumnTitles() {
+//		return new String[] { Messages.FrequencyListEditorInput_9,
+//				Messages.FrequencyListEditorInput_4 };
+//	}
 }
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 281)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 282)
@@ -118,10 +118,10 @@
 		plansCombo.setItems(items);
 
 		// Preselect the plan from the CA data
-		if(this.getResultData().getFirstDimension() == 2)	{
+		if(TXMPreferences.getInt(CAPreferences.PREFERENCES_NODE, this.getResultData(), CAPreferences.FIRST_DIMENSION) == 2)	{
 			plansCombo.select(2);
 		}
-		else if(this.getResultData().getSecondDimension() == 3)	{
+		else if(TXMPreferences.getInt(CAPreferences.PREFERENCES_NODE, this.getResultData(), CAPreferences.SECOND_DIMENSION) == 3)	{
 			plansCombo.select(1);
 		}
 		else	{
@@ -195,6 +195,8 @@
 					resetView = true;
 				}
 				computeChart(true, resetView, false);
+				// synchronize the part names
+				((CAEditor)getParentMultiPagesEditor()).changePartName(getResultData().getName());
 				forceFocus();
 			}
 			
Index: tmp/org.txm.ca.rcp/plugin.xml
===================================================================
--- tmp/org.txm.ca.rcp/plugin.xml	(revision 281)
+++ tmp/org.txm.ca.rcp/plugin.xml	(revision 282)
@@ -124,5 +124,34 @@
             name="%page.name">
       </page>
    </extension>
+   <extension
+         point="org.eclipse.core.expressions.definitions">
+      <definition
+            id="OneICAComputableSelected">
+         <with
+               variable="selection">
+            <iterate
+                  ifEmpty="false"
+                  operator="and">
+               <instanceof
+                     value="org.txm.ca.core.functions.ICAComputable">
+               </instanceof>
+            </iterate>
+         </with>
+      </definition>
+      <definition
+            id="OneCASelected">
+         <with
+               variable="selection">
+            <iterate
+                  ifEmpty="false"
+                  operator="and">
+               <instanceof
+                     value="org.txm.ca.core.functions.CA">
+               </instanceof>
+            </iterate>
+         </with>
+      </definition>
+   </extension>
 
 </plugin>
Index: tmp/org.txm.ca.rcp/META-INF/MANIFEST.MF
===================================================================
--- tmp/org.txm.ca.rcp/META-INF/MANIFEST.MF	(revision 281)
+++ tmp/org.txm.ca.rcp/META-INF/MANIFEST.MF	(revision 282)
@@ -11,10 +11,12 @@
  org.txm.rcp,
  org.eclipse.ui;bundle-version="3.106.1",
  org.eclipse.core.runtime;bundle-version="3.10.0",
- org.txm.lexicaltable.core;bundle-version="1.0.0"
+ org.txm.lexicaltable.core;bundle-version="1.0.0",
+ org.eclipse.core.expressions;bundle-version="3.4.600"
 Export-Package: org.txm.ca.rcp.adapters,
  org.txm.ca.rcp.chartsengine.events,
  org.txm.ca.rcp.editors,
  org.txm.ca.rcp.handlers,
  org.txm.ca.rcp.messages,
  org.txm.ca.rcp.preferences
+Bundle-Vendor: Textometrie.org
