Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/ComputeTXMResult.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/ComputeTXMResult.java	(revision 1169)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/ComputeTXMResult.java	(revision 1170)
@@ -6,6 +6,7 @@
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.txm.rcp.editors.TXMEditor;
+import org.txm.rcp.editors.TXMMultiPageEditor;
 
 /**
  * Calls TXMEditor.ompute() on the current active editor.
@@ -19,6 +20,12 @@
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 		IWorkbenchPart part = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActivePart();
+		
+		// gets the main editor if the active editor is a multipages editor
+		if(part instanceof TXMMultiPageEditor)	{
+			part = (IWorkbenchPart) ((TXMMultiPageEditor)part).getEditors().get(0);
+		}
+		
 		if (!(part instanceof TXMEditor)) {
 			System.out.println("Active editor is not a TXMEditor. Aborting.");
 			return null;
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties	(revision 1169)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties	(revision 1170)
@@ -266,6 +266,10 @@
 ExecuteGroovyScript_1         = Erreur lors de l'initialisation des paramètres
 ExecuteGroovyScript_2         = L'utilisateur a intérompu l'exécution du script
 
+ExecuteRScript_11 = Exécution de {0}
+ExecuteRScript_12 = Terminé : 
+ExecuteRScript_13 = \ ms
+
 ExecuteScriptImport_0 = Début de l'importation
 ExecuteScriptImport_1 = ** Le fichier de script {0} n''existe pas
 ExecuteScriptImport_2 = ** Erreur: le dossier 'corpora' n'existe pas : 
@@ -274,19 +278,16 @@
 ExecuteScriptImport_6 = L'import n'a pas abouti.
 ExecuteScriptImport_7 = Importation terminée : 
 ExecuteScriptImport_8 = ** Erreur lors du chargement du corpus
-
-ExecuteScript_0       = Exécution de {0} ...
-ExecuteScript_1       = Sauver le fichier avant d'exécuter ?
-ExecuteScript_2       = Sauver et lancer
-ExecuteScript_3       = ** Aucun interpréteur trouvé pour l'extension du fichier de script 
-ExecuteScript_4       = Annuler
-ExecuteScript_5       = Ne pas sauver et lancer
-ExecuteScript_6       = Toujours sauvegarder avant de lancer
-ExecuteScript_7       = Exécution annulée.
-ExecuteRScript_11 = Exécution de {0}
-ExecuteRScript_12 = Terminé : 
-ExecuteRScript_13 = \\ ms
 
+ExecuteScript_0       = Exécution de {0} ...
+ExecuteScript_1       = Sauver le fichier avant d'exécuter ?
+ExecuteScript_2       = Sauver et lancer
+ExecuteScript_3       = ** Aucun interpréteur trouvé pour l'extension du fichier de script 
+ExecuteScript_4       = Annuler
+ExecuteScript_5       = Ne pas sauver et lancer
+ExecuteScript_6       = Toujours sauvegarder avant de lancer
+ExecuteScript_7       = Exécution annulée.
+
 Exit_Menu_Label = Quitter
 
 Explorer_0 = Le dossier {0} ne devrait pas être supprimé
@@ -620,7 +621,7 @@
 
 UIParameterException_0 = Erreur  
 
-UserPreferencePage_1 = 
+UserPreferencePage_1 = Recalcul automatique lors du changement d'un paramètre
 UserPreferencePage_3 = Pas de confirmation pour supprimer un objet
 
 common_areYouSure                         = Sûr(e) ?
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties	(revision 1169)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties	(revision 1170)
@@ -302,6 +302,10 @@
 ExecuteLastGroovyScript_1 = Executing last script: 
 ExecuteLastGroovyScript_3 = Error: Current Groovy script directory does not exist: 
 
+ExecuteRScript_11 = Running {0}
+ExecuteRScript_12 = Done:
+ExecuteRScript_13 = \ ms
+
 ExecuteScriptImport_0 = Import started
 ExecuteScriptImport_1 = ** {0} script file doesn''t exist
 ExecuteScriptImport_2 = ** Error: 'corpora' directory doesn't exist:
@@ -310,9 +314,6 @@
 ExecuteScriptImport_6 = The import process failed.
 ExecuteScriptImport_7 = Import done:
 ExecuteScriptImport_8 = ** Error while loading corpus
-ExecuteRScript_11 = Running {0}
-ExecuteRScript_12 = Done:
-ExecuteRScript_13 = \ ms
 
 ExecuteScript_0       = Execution of {0}
 ExecuteScript_1       = Save file before execution ?
@@ -681,7 +682,7 @@
 
 UIParameterException_0 = Error
 
-UserPreferencePage_1 = Recompute automatically
+UserPreferencePage_1 = Automatic recomputing when changing a parameter
 UserPreferencePage_3 = Do not confirm to delete an object
 
 common_areYouSure                         = Are you sure ?
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/listeners/ComputeSelectionListener.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/listeners/ComputeSelectionListener.java	(revision 1169)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/listeners/ComputeSelectionListener.java	(revision 1170)
@@ -27,7 +27,7 @@
 	@Override
 	public void widgetSelected(SelectionEvent e) {
 		// this method is called on a Spinner even when a key is pressed, that's not what we want, so this test breaks the behavior
-		if(!(e.getSource() instanceof Spinner) || e.stateMask != 0)	{
+		if(RCPPreferences.getInstance().getBoolean(RCPPreferences.AUTO_UPDATE_EDITOR) && (!(e.getSource() instanceof Spinner) || e.stateMask != 0))	{
 			this.editor.compute(true);	
 		}
 	}
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java	(revision 1169)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java	(revision 1170)
@@ -68,8 +68,19 @@
 	 * @param parent
 	 * @param style
 	 * @param editor
+	 * @param autoCompute
 	 */
 	public ThresholdsGroup(Composite parent, int style, TXMEditor editor, boolean autoCompute) {
+		this(parent, style, editor, autoCompute, true);
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param style
+	 * @param editor
+	 */
+	public ThresholdsGroup(Composite parent, int style, TXMEditor editor, boolean autoCompute, boolean displayFMax) {
 		super(parent, style);
 		
 		//this.setLayout(new RowLayout());
@@ -80,7 +91,14 @@
 		ComputeKeyListener computeKeyListener = new ComputeKeyListener(editor);
 
 		GridLayout gridLayout = new GridLayout();
-		gridLayout.numColumns = 6;
+		
+		if(displayFMax)	{
+			gridLayout.numColumns = 6;
+		}
+		else	{
+			gridLayout.numColumns = 4;
+		}
+		
 		gridLayout.makeColumnsEqualWidth = false;
 		this.setLayout(gridLayout);
 
@@ -100,17 +118,19 @@
 		fMinSpinner.setLayoutData(fieldsGridData);
 
 		// Fmax
-		Label lFmax = new Label(this, SWT.NONE);
-		lFmax.setText(TXMCoreMessages.common_fMax);
-		lFmax.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
-
-		fMaxSpinner = new Spinner(this, SWT.BORDER);
-		fMaxSpinner.setMinimum(0);
-		fMaxSpinner.setMaximum(9999999);
-		fMaxSpinner.setIncrement(1);
-		fMaxSpinner.setPageIncrement(100);
-		fMaxSpinner.setLayoutData(fieldsGridData);
-
+		if(displayFMax)	{
+			Label lFmax = new Label(this, SWT.NONE);
+			lFmax.setText(TXMCoreMessages.common_fMax);
+			lFmax.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+	
+			fMaxSpinner = new Spinner(this, SWT.BORDER);
+			fMaxSpinner.setMinimum(0);
+			fMaxSpinner.setMaximum(9999999);
+			fMaxSpinner.setIncrement(1);
+			fMaxSpinner.setPageIncrement(100);
+			fMaxSpinner.setLayoutData(fieldsGridData);
+		}
+		
 		// Vmax
 		Label lVmax = new Label(this, SWT.NONE);
 		lVmax.setText(TXMCoreMessages.VMAX_1);
@@ -126,8 +146,12 @@
 		if(autoCompute)	{
 			fMinSpinner.addKeyListener(computeKeyListener);
 			fMinSpinner.addSelectionListener(computeSelectionListener);
-			fMaxSpinner.addKeyListener(computeKeyListener);
-			fMaxSpinner.addSelectionListener(computeSelectionListener);
+			
+			if(displayFMax)	{
+				fMaxSpinner.addKeyListener(computeKeyListener);
+				fMaxSpinner.addSelectionListener(computeSelectionListener);
+			}
+			
 			vMaxSpinner.addKeyListener(computeKeyListener);
 			vMaxSpinner.addSelectionListener(computeSelectionListener);
 		}
Index: tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RWorkspace.java
===================================================================
--- tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RWorkspace.java	(revision 1169)
+++ tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RWorkspace.java	(revision 1170)
@@ -732,8 +732,11 @@
 				throw new RWorkspaceException(e);
 			}
 			try {
-				connection .voidEval(variableName
-						+ "<- matrix(" + variableName + ", nrow=" + nrow + ", ncol=" + ncol + ", byrow=T)"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+				String command = variableName + "<- matrix(" + variableName + ", nrow=" + nrow + ", ncol=" + ncol + ", byrow=T)"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+				
+				Log.finest("MATRIX_ADDED_TO_WORKSPACE: " + command); //$NON-NLS-1$
+				
+				connection.voidEval(command); 
 			} catch (RserveException e) {
 				throw new RWorkspaceException(e);
 			}
@@ -863,8 +866,7 @@
 	 * @param colNames the col names
 	 * @throws RWorkspaceException the r workspace exception
 	 */
-	public void assignColNamesToMatrix(String matrix, String colNames)
-			throws RWorkspaceException {
+	public void assignColNamesToMatrix(String matrix, String colNames) throws RWorkspaceException {
 		voidEval("colnames(" + matrix + ") <- " + colNames); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
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 1169)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 1170)
@@ -247,7 +247,7 @@
 			
 			
 			// advanced parameters
-			ThresholdsGroup thresholdsGroup = new ThresholdsGroup(this.getExtendedParametersComposite(), this);
+			ThresholdsGroup thresholdsGroup = new ThresholdsGroup(this.getExtendedParametersComposite(), SWT.NONE, this, true, false);
 			this.fMinSpinner = thresholdsGroup.getFMinSpinner();
 			this.fMaxSpinner = thresholdsGroup.getFMaxSpinner();
 			this.vMaxSpinner = thresholdsGroup.getVMaxSpinner();
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 1169)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditor.java	(revision 1170)
@@ -330,6 +330,7 @@
 
 		// Editor part
 		ChartEditor caFactorialMapEditorPart = new CAFactorialMapChartEditor(new ChartEditorInput<CA>(ca));
+		//caFactorialMapEditorPart.compute(false);
 		editors.add(caFactorialMapEditorPart);
 
 		// Editor input
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 1169)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/handlers/ComputeCA.java	(revision 1170)
@@ -31,6 +31,7 @@
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
@@ -77,17 +78,26 @@
 			System.out.println(CAUIMessages.ComputeCorrespondanceAnalysis_15);
 			CA ca = null;
 
-			// Creates from Partition -> need a LexicalTable
+			// Creating from Partition
 			if (selection instanceof Partition) {
 
-				Partition partition = (Partition) selection;
+				final Partition partition = (Partition) selection;
 
-				if (partition.getPartsCount() < 4) { // error to few parts
-					MessageDialog d = new MessageDialog(window.getShell(), "", null, //$NON-NLS-1$
-							NLS.bind(CAUIMessages.ComputeCorrespondanceAnalysis_4, partition.getPartsCount()), 0, new String[] { ""}, 0); //$NON-NLS-1$
-					d.open();
+				// not enough parts error
+				if (partition.getPartsCount() < 4) {
+					Display.getDefault().syncExec(new Runnable() {
+						
+						@Override
+						public void run() {
+							MessageDialog d = new MessageDialog(window.getShell(), TXMCoreMessages.error_error2, null,
+									NLS.bind(CAUIMessages.ComputeCorrespondanceAnalysis_4, partition.getPartsCount()), 0, new String[] { TXMCoreMessages.common_ok}, 0);
+							d.open();
+						}
+					});
 					return null;
 				}
+				
+				// FIXME: old version using dialog box for parameters
 				// ask property and Fmins and Vmax
 				String title = TXMUIMessages.bind(CAUIMessages.ComputeCorrespondanceAnalysisDialog_0, partition.getName());
 				CAParametersDialog d = new CAParametersDialog(window.getShell(), partition.getParent(), title);
@@ -106,9 +116,11 @@
 					return null;
 				}
 				
+				// FIXME: SJ: new version, creating a, empty LT and an empty CA
+				// does not work at this time because of some problem in CAEditor (refreshing and component creation + eigenvalues computing)
 //				ca = new CA(new LexicalTable(partition));
 			}
-			// Creates from Lexical Table
+			// Creating from Lexical Table
 			else if (selection instanceof LexicalTable) {
 				LexicalTable lexicalTable = (LexicalTable) selection;
 				Property property = lexicalTable.getProperty();
@@ -116,17 +128,19 @@
 				Log.info(NLS.bind(CAUIMessages.ComputeCorrespondanceAnalysis_0, lexicalTable, property));
 
 				if (lexicalTable.getNColumns() < 4) {
+					// FIXME: remove this swing code that freeze the UI
 					MessageBox.error(CAUIMessages.ComputeCorrespondanceAnalysis_13);
 					return null;
 				}
 				if (lexicalTable.getNRows() < 4) {
+					// FIXME: remove this swing code that freeze the UI
 					MessageBox.error(CAUIMessages.ComputeCorrespondanceAnalysis_1);
 					return null;
 				}
 
 				ca = new CA(lexicalTable);
 			}
-			// Reopens an existing editor
+			// Reopening an existing result
 			else if (selection instanceof CA) {
 				ca = (CA) selection;
 			}
@@ -134,11 +148,12 @@
 				Log.severe(CAUIMessages.bind(CAUIMessages.error_cannot_compute_with_selection, selection));
 				return null;
 			}
+			// FIXME: should be done in the CAEditor
 			// compute the CA
 			ca.compute();
 
 			try {
-				System.out.println(CAUIMessages.ComputeCorrespondanceAnalysis_8);
+				Log.info(CAUIMessages.ComputeCorrespondanceAnalysis_8);
 
 				TXMResultEditorInput<CA> editorInput = new TXMResultEditorInput(ca);
 				IWorkbenchPage page = TXMWindows.getActivePage();
@@ -147,7 +162,7 @@
 				
 			}
 			catch (Throwable e) {
-				System.out.println(CAUIMessages.bind(CAUIMessages.error_opening, ca));
+				Log.severe(CAUIMessages.bind(CAUIMessages.error_opening, ca));
 				Log.printStackTrace(e);
 			}
 		}
Index: tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/utils/VectorizeArray.java
===================================================================
--- tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/utils/VectorizeArray.java	(revision 1169)
+++ tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/utils/VectorizeArray.java	(revision 1170)
@@ -127,8 +127,7 @@
 			if (inner_length != matrix[i].length) {
 				throw new IllegalArgumentException(StatsEngineCoreMessages.VectorizeArray_7);
 			}
-			System.arraycopy(matrix[i], 0, vector, i * inner_length,
-					inner_length);
+			System.arraycopy(matrix[i], 0, vector, i * inner_length, inner_length);
 		}
 		return vector;
 	}
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 1169)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 1170)
@@ -72,12 +72,9 @@
 		// nothing to do
 	}
 
-	/* (non-Javadoc)
-	 * @see org.txm.core.results.TXMResult#canCompute()
-	 */
 	@Override
 	public boolean canCompute() throws Exception {
-		return this.parent != null;
+		return this.parent != null && this.parent.hasBeenComputedOnce();
 	}
 	
 	@Override
