Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 1526)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 1527)
@@ -6,7 +6,6 @@
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 
@@ -18,6 +17,8 @@
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem;
+import org.eclipse.jface.action.ContributionManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelectionProvider;
@@ -45,11 +46,9 @@
 import org.eclipse.swt.widgets.ToolItem;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.IPartListener;
 import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.ISaveablePart2;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchPartReference;
@@ -57,13 +56,12 @@
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.internal.browser.SWTUtil;
 import org.eclipse.ui.menus.IMenuService;
 import org.eclipse.ui.part.EditorPart;
 import org.txm.core.messages.TXMCoreMessages;
+import org.txm.core.preferences.TBXPreferences;
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMResult;
-import org.txm.core.results.TXMResultListener;
 import org.txm.rcp.JobsTimer;
 import org.txm.rcp.StatusLine;
 import org.txm.rcp.TXMWindows;
@@ -207,11 +205,19 @@
 	 * @param result
 	 */
 	public TXMEditor(TXMResult result) {
-		this();
-		this.setInput(new TXMResultEditorInput<TXMResult>(result)); // FIXME: SJ: the input is defined twice, on time here and one time in init(), need to see if we still the assignation here in the constructor
+		this(new TXMResultEditorInput<TXMResult>(result));
 	}
 
 
+	/**
+	 * Creates an editor with the specified editor input.
+	 * @param editorInput
+	 */
+	public TXMEditor(TXMResultEditorInput<TXMResult> editorInput) {
+		this.setInput(editorInput); // FIXME: SJ: the input is defined twice, on time here and one time in init(), need to see if we still need the assignment here in the constructor		
+	}
+	
+
 	@Override
 	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
 		this.setSite(site);
@@ -368,7 +374,7 @@
 			this.firstLineComposite.getLayout().numColumns = 2;
 			this.firstLineComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
 
-			this.mainParametersComposite = new GLComposite(firstLineComposite, SWT.NONE, "Main parameters area"); //$NON-NLS-1$
+			this.mainParametersComposite = new GLComposite(this.firstLineComposite, SWT.NONE, "Main parameters area"); //$NON-NLS-1$
 			this.mainParametersComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
 			this.mainParametersComposite.getLayout().marginLeft = 5;
 			this.mainParametersComposite.getLayout().horizontalSpacing = 5;
@@ -384,7 +390,7 @@
 			// computing parameters components
 			boolean showExtendedParameters = false;
 			// only show the area if the result can not compute and is dirty
-			// FIXME: to discuss if when hiding or showing the extended parameters 
+			// FIXME: to discuss about when hiding or showing the extended parameters 
 			//			if(!this.getResult().canCompute() && this.getResult().isDirty())	{
 			//				showExtendedParameters = true;
 			//			}
@@ -419,10 +425,10 @@
 			this._createPartControl(); // child editor creates its parameters and displays widgets
 			this.notifyExtensions("notifyEndOfCreatePartControl"); //$NON-NLS-1$
 
-			
 			this.firstLineComposite.pack();
 			this.extendedParametersGroup.pack();
 			
+			
 			// remove empty toolbar
 			//TODO SJ: Hack? MD: yeah -> need to find a way to not display the bottom toolbar on Windows instead
 			if (this.bottomToolBar.getItems().length == 0) {
@@ -440,6 +446,14 @@
 				this.topToolBar.unInstallGroup(COMPUTING_PARAMETERS_GROUP_ID);
 			}
 
+			// FIXME: SJ: this code doesn't work even if we call removeComputeButton()
+			// remove empty first line composite
+//			if(this.mainParametersComposite.getChildren().length == 0 && this.topToolBar.isDisposed())	{
+//				this.firstLineComposite.dispose();
+//			}
+			
+
+			
 			if (this.getResult().isLocked()) {
 				this.setLocked(true);
 			}
@@ -767,17 +781,7 @@
 		return this.getEditorInput().getResult().getStringParameterValue(key);
 	}
 
-
 	/**
-	 * Opens a popup to inform that the result has been manually edited.
-	 * @return
-	 */
-	public boolean promptResultEditedAlert()	{
-		return MessageDialog.openQuestion(this.getShell(), "Warning", "The result have been edited. Changes will be lost. Do you want to continue?");
-	}
-	
-
-	/**
 	 * Computes the TXMResult if all necessary parameters are set then refreshes the editor UI.
 	 * Also loads and savesd some parameters from result to Widgets fields and from Widgets fields to result.
 	 * 
@@ -816,10 +820,18 @@
 						public void run() {
 							if(update)	{
 
-								if (TXMEditor.this.getResult().isAltered() && !promptResultEditedAlert()) {
+								// popup alert to inform user that the result has been manually edited
+								if (TXMEditor.this.getResult().isAltered() && !MessageDialog.openQuestion(getShell(), "Warning", "The result have been edited. Changes will be lost. Do you want to continue?")) {
 										setCanceled(true);
 								}
 								else	{
+									
+									// popup alert to inform user that children results will be recomputed
+									if(!TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER)
+											&& TXMEditor.this.getResult().hasChildren() && !MessageDialog.openQuestion(getShell(), "Warning", "All children results based on this one will be recomputed. Do you want to continue?"))	{
+										setCanceled(true);
+									}
+									
 
 									// subclasses manual result updating from editor fields
 									Log.finest("TXMEditor.compute(): " + TXMEditor.this.getClass().getSimpleName() + ": manually updating result from editor."); //$NON-NLS-1$
@@ -1539,19 +1551,6 @@
 		return -1;
 	}
 
-//	/**
-//	 * @return the lastComputingParameters
-//	 */
-//	public HashMap<String, Object> getLastComputingParameters() {
-//		return lastComputingParameters;
-//	}
-//
-//	/**
-//	 * @param lastComputingParameters the lastComputingParameters to set
-//	 */
-//	public void setLastComputingParameters(HashMap<String, Object> lastComputingParameters) {
-//		this.lastComputingParameters = lastComputingParameters;
-//	}
 
 	public Composite getContainer() {
 		return parent;
@@ -1687,10 +1686,15 @@
 	}
 
 	/**
-	 * Remove the Compute Tool item button.
+	 * Removes the Compute Tool item button.
 	 */
 	protected void removeComputeButton()	{
 		if (this.computeButton != null && !this.computeButton.isDisposed()) {
+			
+			// FIXME: SJ: the contribution should be released before the dispose but this code doesn't seem to work. And without the release the code in createPartControl() that disposes the first line composite  if empty doesn't work
+//			IMenuService menuService = (IMenuService) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getService(IMenuService.class);
+//			menuService.releaseContributions((ContributionManager) ((HandledContributionItem) this.computeButton.getData()).getParent());
+			
 			this.computeButton.dispose();
 		}
 	}
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 1526)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/handlers/ComputeCA.java	(revision 1527)
@@ -143,12 +143,12 @@
 
 					Log.info(NLS.bind(CAUIMessages.computingCorrespondenceAnalysisOnP0WithPropertyP1, lexicalTable, property));
 
-					if (lexicalTable.getNColumns() < 4) {
+					if (lexicalTable.hasBeenComputedOnce() && lexicalTable.getNColumns() < 4) {
 						// FIXME: remove this swing code that freeze the UI, need to use SWT in main thread
 						MessageBox.error(CAUIMessages.canNotComputeCAOnLexicalTableWithLessThan4Columns);
 						return null;
 					}
-					if (lexicalTable.getNRows() < 4) {
+					if (lexicalTable.hasBeenComputedOnce() && lexicalTable.getNRows() < 4) {
 						// FIXME: remove this swing code that freeze the UI, need to use SWT in main thread
 						MessageBox.error(CAUIMessages.canNotComputeCAWithLessThan4RowsInTheTable);
 						return null;
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/messages_fr.properties	(revision 1526)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/messages_fr.properties	(revision 1527)
@@ -1,4 +1,4 @@
-#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
+#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
 #TXM messages generated by the PluginMessagesManager class
 #Thu Dec 06 15:02:43 CET 2018
 
@@ -15,7 +15,7 @@
 
 chi = χ²
 
-colsInfos = Informations sur les colonnes
+colsInfos = Informations colonnes
 
 computingCorrespondenceAnalysisOnP0WithPropertyP1 = Calcul de l''analyse factorielle des correspondances de {0} avec la propriété {1}
 
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/messages.properties
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/messages.properties	(revision 1526)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/messages.properties	(revision 1527)
@@ -1,4 +1,4 @@
-#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
+#Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
 #TXM messages generated by the PluginMessagesManager class
 #Thu Dec 06 15:02:43 CET 2018
 
@@ -57,7 +57,7 @@
 
 qualityColumnFormat = Quality column format
 
-rowsInfos = Rows informations
+rowsInfos = Rows information
 
 showPointShapes = Show points
 
Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/ColsRowsInfosEditor.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/ColsRowsInfosEditor.java	(revision 1526)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/ColsRowsInfosEditor.java	(revision 1527)
@@ -59,6 +59,7 @@
 import org.txm.rcp.StatusLine;
 import org.txm.rcp.editors.ITablableEditorInput;
 import org.txm.rcp.editors.TXMEditor;
+import org.txm.rcp.editors.TXMResultEditorInput;
 import org.txm.rcp.editors.TableKeyListener;
 import org.txm.rcp.editors.TableLinesViewerComparator;
 import org.txm.rcp.editors.TableSorter;
@@ -67,10 +68,10 @@
 import org.txm.rcp.swt.GLComposite;
 
 /**
- * Used to display rows and cols informations such as contribution, inertia,
- * mass, coord...
+ * Used to display rows and columns information such as contribution, inertia, mass, coord...
  * 
  * @author mdecorde
+ * @author sjacquot
  * 
  */
 public abstract class ColsRowsInfosEditor extends TXMEditor {
@@ -85,8 +86,13 @@
 	 * 
 	 * @param result
 	 */
-	public ColsRowsInfosEditor(TXMResult result) {
-		super(result);
+	public ColsRowsInfosEditor(TXMResult result, final String tabTooltip) {
+		super(new TXMResultEditorInput<TXMResult>(result) {
+			@Override
+			public String getToolTipText() {
+				return tabTooltip;
+			}
+		});
 	}
 
 	
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 1526)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAEditor.java	(revision 1527)
@@ -55,6 +55,7 @@
 import org.txm.ca.core.chartsengine.base.CAChartCreator;
 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.rcp.messages.CAUIMessages;
 import org.txm.chartsengine.rcp.editors.ChartEditor;
 import org.txm.chartsengine.rcp.editors.ChartEditorInput;
@@ -87,7 +88,7 @@
 	protected void createPages() {
 		
 		// Tabs titles
-		this.names = Arrays.asList(new String[] {CAUIMessages.factPlan, CAUIMessages.rowsInfos, CAUIMessages.colsInfos, CAUIMessages.eigenvaluesBarChat, CAUIMessages.eigenvalues});
+		this.names = Arrays.asList(new String[] {CAUIMessages.factPlan, CACoreMessages.rows, CACoreMessages.columns, CAUIMessages.eigenvaluesBarChat, CAUIMessages.eigenvalues});
 		
 		Composite container = this.getContainer();
 		final Composite parentContainer = container.getParent();
@@ -142,8 +143,8 @@
 		this.initCAFactorialMapEditor();
 		this.initRowsTableEditor();
 		this.initColumnsTableEditor();
-		this.initCASingularValuesBarChartEditor();
-		this.initCASingularValuesTableEditor();
+		this.initCAEigenvaluesBarChartEditor();
+		this.initCAEigenvaluesTableEditor();
 
 
 		if (editors.size() != inputs.size()) {
@@ -263,9 +264,9 @@
 	}
 
 	/**
-	 * Initializes CA singular values bar chart editor.
+	 * Initializes CA Eigenvalues bar chart editor.
 	 */
-	public void initCASingularValuesBarChartEditor()	{
+	public void initCAEigenvaluesBarChartEditor()	{
 		Eigenvalues eigenvalues = (Eigenvalues) ca.getFirstChild(Eigenvalues.class);
 		EigenvaluesChartEditor editor = new EigenvaluesChartEditor(new ChartEditorInput<Eigenvalues>(eigenvalues));
 		editors.add(editor);
@@ -273,9 +274,9 @@
 	}
 
 	/**
-	 * Initializes CA singular values table editor.
+	 * Initializes CA Eigenvalues table editor.
 	 */
-	public void initCASingularValuesTableEditor()	{
+	public void initCAEigenvaluesTableEditor()	{
 		EigenvaluesTableEditor editor = new EigenvaluesTableEditor(ca); 
 		editors.add(editor);
 		inputs.add(editor.getEditorInput());
@@ -285,7 +286,7 @@
 	 * Initializes rows data table editor.
 	 */
 	public void initRowsTableEditor()	{
-		ColsRowsInfosEditor editor = new ColsRowsInfosEditor(ca) {
+		ColsRowsInfosEditor editor = new ColsRowsInfosEditor(ca, CAUIMessages.rowsInfos) {
 			
 			@Override
 			public String[] getTableTitles() {
@@ -300,6 +301,7 @@
 		
 		editors.add(editor);
 		inputs.add(editor.getEditorInput());
+		
 	}
 
 	/**
@@ -307,7 +309,7 @@
 	 */
 	public void initColumnsTableEditor()	{
 
-		ColsRowsInfosEditor editor = new ColsRowsInfosEditor(ca) {
+		ColsRowsInfosEditor editor = new ColsRowsInfosEditor(ca, CAUIMessages.colsInfos) {
 			
 			@Override
 			public String[] getTableTitles() {
Index: tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SynopticEditionEditor.java
===================================================================
--- tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SynopticEditionEditor.java	(revision 1526)
+++ tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/SynopticEditionEditor.java	(revision 1527)
@@ -312,12 +312,12 @@
 		return controlsArea;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.internal.browser.WebBrowserEditor#createPartControl(org.eclipse.swt.widgets.Composite)
-	 */
 	@Override
 	public void _createPartControl() {
 
+		// remove the compute button
+		this.removeComputeButton();
+		
 		editionsArea = getResultArea();
 
 		controlsArea = getBottomToolbar().installGLComposite(EditionUIMessages.controls, 15, false);
