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 1420)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 1421)
@@ -451,8 +451,9 @@
 	 * Subclasses manual creation method called after TXMEditor.createPartControl is called.
 	 * 
 	 * Use this method to set your own widgets in the minimal parameters area, the top toolbar, parameters group, the result area and the bottom toolbar
+	 * @throws Exception 
 	 */
-	public abstract void _createPartControl();
+	public abstract void _createPartControl() throws Exception;
 
 	/**
 	 * Use this method to add widget next to the default Bottom toolbar
Index: tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 1420)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 1421)
@@ -392,29 +392,22 @@
 	/**
 	 * Gets a current parameter specified by its annotation "key" attribute and its annotation "type" attribute.
 	 * @param key
-	 * @bubble if true ask the first parent
+	 * @param propagateToParent if true ask the parents
 	 * @param parameterType
 	 * @return
 	 */
 	public Object getParameter(String key, boolean propagateToParent) {
 		try {
 			Field field = this.getField(key); 
-			if(field != null)	{
+			if (field != null)	{
 				field.setAccessible(true);
 				return field.get(this);	
+			} else if (propagateToParent && this.parent != null) {
+				return this.parent.getParameter(key, propagateToParent);
 			}
-			else if (propagateToParent) {
-				return this.parent.getParameter(key);
-			}
-		}
-		catch (IllegalArgumentException e) {
-			// TODO Auto-generated catch block
+		} catch (Exception e) {
 			e.printStackTrace();
 		}
-		catch (IllegalAccessException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
 		return null;
 	}
 
@@ -1187,7 +1180,7 @@
 			targetField.set(this, value);
 		}
 		else if (this.parent != null && propagateToParent) {
-			this.parent.setParameter(key, value);
+			this.parent.setParameter(key, value, propagateToParent);
 		}
 
 		return true;
Index: tmp/org.txm.ahc.rcp/plugin.xml
===================================================================
--- tmp/org.txm.ahc.rcp/plugin.xml	(revision 1420)
+++ tmp/org.txm.ahc.rcp/plugin.xml	(revision 1421)
@@ -97,7 +97,7 @@
    <extension
          point="org.eclipse.ui.editors">
       <editor
-            class="org.txm.ahc.rcp.editors.AHCChartEditor"
+            class="org.txm.ahc.rcp.editors.AHCEditor"
             default="false"
             icon="icons/cah.png"
             id="org.txm.ahc.core.functions.AHC"
Index: tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/handlers/ComputeAHC.java
===================================================================
--- tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/handlers/ComputeAHC.java	(revision 1420)
+++ tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/handlers/ComputeAHC.java	(revision 1421)
@@ -65,9 +65,9 @@
 
 
 	@Override
-	public Object execute(ExecutionEvent event) throws ExecutionException {
+	public AHC execute(ExecutionEvent event) throws ExecutionException {
 
-		if(!this.checkStatsEngine()) {
+		if (!this.checkStatsEngine()) {
 			return null;
 		}
 
@@ -75,38 +75,30 @@
 		AHC ahc = null;
 
 		final IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
-		
-		// reopening an existing result
-		if (selection instanceof AHC) {
-			ahc = (AHC) selection;
-		}
-		// Creating
-		else {
+		try {
+			// reopening an existing result
+			if (selection instanceof AHC) {
+				ahc = (AHC) selection;
+			} else if (selection instanceof CA) { // Creating
 
-			LexicalTable lexicalTable = null;
-			CA ca = null;
-			
-			// Creating from CA
-			if (selection instanceof CA) {
-				ca = (CA) selection;
-				lexicalTable = ca.getLexicalTable();
+				CA ca = (CA) selection;
 				ahc = new AHC(ca);
-			}
-			// Creating from Partition Index
-			else if (selection instanceof PartitionIndex) {
+			} else if (selection instanceof PartitionIndex) { // Creating from Partition Index
+
 				PartitionIndex index = (PartitionIndex)selection;
-				lexicalTable = new LexicalTable(index);
-				ca = new CA(lexicalTable);
+				LexicalTable lexicalTable = new LexicalTable(index);
+				lexicalTable.setVisible(false);
+				CA ca = new CA(lexicalTable);
+				ca.setVisible(false);
 				ahc = new AHC(ca);
-			}
-			// Creating from Lexical Table
-			else if (selection instanceof LexicalTable) {
-				lexicalTable = (LexicalTable) selection;
-				ca = new CA(lexicalTable);
+			} else if (selection instanceof LexicalTable) { // Creating from Lexical Table
+
+				LexicalTable lexicalTable = (LexicalTable) selection;
+				CA ca = new CA(lexicalTable);
+				ca.setVisible(false);
 				ahc = new AHC(ca);
-			}
-			// Creating from Partition
-			else if (selection instanceof Partition) {
+			} else if (selection instanceof Partition) { // Creating from Partition
+
 				Partition partition = (Partition)selection;
 				if (partition.getPartsCount() < 4) {
 					MessageDialog d = new MessageDialog(window.getShell(), TXMCoreMessages.error_error2, null,
@@ -114,51 +106,22 @@
 					d.open();
 					return null;
 				}
-				try {
-					String title = AHCUIMessages.bind(AHCUIMessages.computingClassificationWithP0, partition.getName());
-					int vMax = CAPreferences.getInstance().getInt(TXMPreferences.V_MAX);
-					int fMin =  CAPreferences.getInstance().getInt(TXMPreferences.F_MIN);
-					Shell shell = Display.getCurrent().getActiveShell();
-					CAParametersDialog d = new CAParametersDialog(shell, partition.getParent(), title);
-					d.setFminAndVMax(fMin, vMax);
-					
-					if (d.open() == Window.OK) {
-						WordProperty property = d.getProperty();
-						fMin = d.getFmin();
-						vMax = d.getMaxLines();
-						
-						lexicalTable = new LexicalTable(partition); // use the CAPreferencePage Fmin
-						lexicalTable.setParameters(property, fMin, vMax, null);
-						ca = new CA(lexicalTable);
-						ahc = new AHC(ca);
-					}
-					// canceled
-					else {
-						return null;
-					}
-				} catch (Exception e) {
-					Log.severe("Failed to build the lexical table of " + partition + ": " + e);
-					Log.printStackTrace(e);
-					return null;
-				} 
-			}
-			
-			// show the lexical table only if the command was called from a lexical table
-			if(!(selection instanceof LexicalTable))	{
+
+
+				LexicalTable lexicalTable = new LexicalTable(partition); // use the CAPreferencePage Fmin
 				lexicalTable.setVisible(false);
-			}
-			
-			// show the CA only if the command was called from a CA
-			if(!(selection instanceof CA))	{
+				CA ca = new CA(lexicalTable);
 				ca.setVisible(false);
+				ahc = new AHC(ca);
+
 			}
-			
-		}
-		
-		
-		ChartEditor.openEditor(ahc);
-		return null;
-	}
 
-
+			ChartEditor.openEditor(ahc);
+		} catch (Exception e) {
+			Log.severe("Failed to build the AHC for selection " + selection + ": " + e);
+			Log.printStackTrace(e);
+			return null;
+		} 
+		return ahc;
+	}
 }
\ No newline at end of file
Index: tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCChartEditor.java
===================================================================
--- tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCChartEditor.java	(revision 1420)
+++ tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCChartEditor.java	(revision 1421)
@@ -1,131 +0,0 @@
-package org.txm.ahc.rcp.editors;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Spinner;
-import org.eclipse.swt.widgets.ToolItem;
-import org.txm.ahc.core.functions.AHC;
-import org.txm.ahc.core.preferences.AHCPreferences;
-import org.txm.ahc.rcp.messages.AHCUIMessages;
-import org.txm.chartsengine.rcp.editors.ChartEditor;
-import org.txm.core.results.Parameter;
-import org.txm.rcp.IImageKeys;
-import org.txm.rcp.editors.listeners.ComputeKeyListener;
-import org.txm.rcp.editors.listeners.ComputeSelectionListener;
-
-/**
- * AHC chart editor.
- * 
- * @author mdecorde
- * @author sjacquot
- *
- */
-public class AHCChartEditor extends ChartEditor<AHC> {
-
-	
-	/**
-	 * Rows computing button.
-	 */
-	protected ToolItem rowsComputing;
-	
-	
-
-	/**
-	 * The metric (euclidean, manhattan).
-	 */
-	@Parameter(key=AHCPreferences.METRIC)
-	protected String metric;
-
-	/**
-	 * The method (METHODS <- c("average", "single", "complete", "ward", "weighted", "flexible")).
-	 */
-	@Parameter(key=AHCPreferences.METHOD)
-	protected String method;
-
-	/**
-	 * The number of clusters.
-	 */
-	@Parameter(key=AHCPreferences.N_CLUSTERS)
-	protected Spinner numberOfClusters;
-
-	/**
-	 * To compute the columns or the rows.
-	 */
-	@Parameter(key=AHCPreferences.COLUMNS_COMPUTING)
-	protected ToolItem columnsComputing;
-	
-	/**
-	 * To render in 2D or 3D.
-	 */
-	@Parameter(key=AHCPreferences.RENDERING_2D)
-	protected Button rendering2D;
-
-	
-	
-
-	@Override
-	public void __createPartControl() {
-
-		// Extend the chart editor tool bar
-		new ToolItem(this.chartToolBar, SWT.SEPARATOR);
-
-		
-		// Computing listeners
-		ComputeSelectionListener computeSelectionListener = new ComputeSelectionListener(this, true);
-		ComputeKeyListener computeKeyListener = new ComputeKeyListener(this);
-		
-		// Number of clusters
-	    CLabel clustersLabel = new CLabel(this.chartToolBar, SWT.CENTER);
-		clustersLabel.setText(AHCUIMessages.numberOfClustersColon);
-		this.chartToolBar.addControl(clustersLabel);
-
-	    this.numberOfClusters = new Spinner(this.chartToolBar, SWT.BORDER);
-	    this.numberOfClusters.setMinimum(2);
-	    this.numberOfClusters.setIncrement(1);
-	    this.chartToolBar.addControl(this.numberOfClusters);
-	    this.numberOfClusters.addSelectionListener(computeSelectionListener);
-	    this.numberOfClusters.addKeyListener(computeKeyListener);
-
-
-		// Columns
-		this.columnsComputing = new ToolItem(this.chartToolBar, SWT.RADIO);
-		this.columnsComputing.setToolTipText(AHCUIMessages.computeColumns);
-		this.columnsComputing.setImage(IImageKeys.getImage(AHCChartEditor.class, "icons/compute_columns.png")); //$NON-NLS-1$
-		this.columnsComputing.addSelectionListener(computeSelectionListener);
-
-		// Rows
-		this.rowsComputing = new ToolItem(this.chartToolBar, SWT.RADIO);
-		this.rowsComputing.setToolTipText(AHCUIMessages.computeRows);
-		this.rowsComputing.setImage(IImageKeys.getImage(AHCChartEditor.class, "icons/compute_rows.png")); //$NON-NLS-1$
-
-		
-		// 2D/3D rendering
-		this.rendering2D = new Button(this.chartToolBar, SWT.CHECK);
-		this.rendering2D.setText("2D");//$NON-NLS-1$
-		this.chartToolBar.addControl(this.rendering2D);
-		this.rendering2D.addSelectionListener(computeSelectionListener);
-		
-		
-		// FIXME: temporary fix, later must enable the font, rendering mode, etc. in R calls
-		// disable all component of the rendering tool bar
-		this.advancedChartToolBar.setEnabled(false);
-
-
-	}
-
-
-	@Override
-	public void updateEditorFromChart(boolean update) {
-		AHC ahc = this.getResult();
-
-		// Update the maximum value of the number of clusters spinner according to the new AHC configuration 
-		this.numberOfClusters.setMaximum(ahc.getMaxClustersCount());
-
-		// Updates the current value of the number of clusters spinner
-		this.numberOfClusters.setSelection(ahc.getNumberOfClusters());
-		
-		this.rowsComputing.setSelection(!ahc.isColumnsComputing());
-	}
-
-}
\ No newline at end of file
Index: tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCEditor.java
===================================================================
--- tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCEditor.java	(revision 0)
+++ tmp/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCEditor.java	(revision 1421)
@@ -0,0 +1,175 @@
+package org.txm.ahc.rcp.editors;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.ToolItem;
+import org.txm.ahc.core.functions.AHC;
+import org.txm.ahc.core.preferences.AHCPreferences;
+import org.txm.ahc.rcp.messages.AHCUIMessages;
+import org.txm.chartsengine.rcp.editors.ChartEditor;
+import org.txm.core.messages.TXMCoreMessages;
+import org.txm.core.preferences.TXMPreferences;
+import org.txm.core.results.Parameter;
+import org.txm.rcp.IImageKeys;
+import org.txm.rcp.editors.listeners.ComputeKeyListener;
+import org.txm.rcp.editors.listeners.ComputeSelectionListener;
+import org.txm.rcp.swt.GLComposite;
+import org.txm.rcp.swt.widget.ThresholdsGroup;
+import org.txm.rcp.swt.widget.structures.PropertiesComboViewer;
+import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
+import org.txm.searchengine.cqp.corpus.CQPCorpus;
+
+/**
+ * AHC chart editor.
+ * 
+ * @author mdecorde
+ * @author sjacquot
+ *
+ */
+public class AHCEditor extends ChartEditor<AHC> {
+
+
+	/**
+	 * Rows computing button.
+	 */
+	protected ToolItem rowsComputing;
+
+	/**
+	 * Unit property.
+	 */
+	@Parameter(key=TXMPreferences.UNIT_PROPERTY)
+	protected PropertiesComboViewer unitPropertyComboViewer;
+
+	/**
+	 * Minimum frequency filtering spinner.
+	 */
+	@Parameter(key=TXMPreferences.F_MIN)
+	protected Spinner fMinSpinner;
+
+	/**
+	 * Maximum frequency filtering spinner.
+	 */
+	@Parameter(key=TXMPreferences.F_MAX)
+	protected Spinner fMaxSpinner;
+
+	/**
+	 * Maximum number of lines filtering.
+	 */
+	@Parameter(key=TXMPreferences.V_MAX)
+	protected Spinner vMaxSpinner;
+	
+	
+	/**
+	 * The metric (euclidean, manhattan).
+	 */
+	@Parameter(key=AHCPreferences.METRIC)
+	protected String metric;
+
+	/**
+	 * The method (METHODS <- c("average", "single", "complete", "ward", "weighted", "flexible")).
+	 */
+	@Parameter(key=AHCPreferences.METHOD)
+	protected String method;
+
+	/**
+	 * The number of clusters.
+	 */
+	@Parameter(key=AHCPreferences.N_CLUSTERS)
+	protected Spinner numberOfClusters;
+
+	/**
+	 * To compute the columns or the rows.
+	 */
+	@Parameter(key=AHCPreferences.COLUMNS_COMPUTING)
+	protected ToolItem columnsComputing;
+
+	/**
+	 * To render in 2D or 3D.
+	 */
+	@Parameter(key=AHCPreferences.RENDERING_2D)
+	protected Button rendering2D;
+
+
+	@Override
+	public void __createPartControl() throws Exception {
+
+		GLComposite mainParametersArea = this.getMainParametersComposite();
+		mainParametersArea.getLayout().numColumns = 2;
+		// parent parameters
+		if (!this.getResult().getParent().isVisible())	{
+			// unit property
+			new Label(mainParametersArea, SWT.NONE).setText(TXMCoreMessages.common_property);
+			this.unitPropertyComboViewer = new PropertiesComboViewer(mainParametersArea, this, false,
+					CQPCorpus.getFirstParentCorpus(this.getResult()).getOrderedProperties(),
+					this.getResult().getUnitProperty(), false);
+		}
+
+		// Extend the chart editor tool bar
+		new ToolItem(this.chartToolBar, SWT.SEPARATOR);
+
+
+		// Computing listeners
+		ComputeSelectionListener computeSelectionListener = new ComputeSelectionListener(this, true);
+		ComputeKeyListener computeKeyListener = new ComputeKeyListener(this);
+
+		// Number of clusters
+		CLabel clustersLabel = new CLabel(this.chartToolBar, SWT.CENTER);
+		clustersLabel.setText(AHCUIMessages.numberOfClustersColon);
+		this.chartToolBar.addControl(clustersLabel);
+
+		this.numberOfClusters = new Spinner(this.chartToolBar, SWT.BORDER);
+		this.numberOfClusters.setMinimum(2);
+		this.numberOfClusters.setIncrement(1);
+		this.chartToolBar.addControl(this.numberOfClusters);
+		this.numberOfClusters.addSelectionListener(computeSelectionListener);
+		this.numberOfClusters.addKeyListener(computeKeyListener);
+
+
+		// Columns
+		this.columnsComputing = new ToolItem(this.chartToolBar, SWT.RADIO);
+		this.columnsComputing.setToolTipText(AHCUIMessages.computeColumns);
+		this.columnsComputing.setImage(IImageKeys.getImage(AHCEditor.class, "icons/compute_columns.png")); //$NON-NLS-1$
+		this.columnsComputing.addSelectionListener(computeSelectionListener);
+
+		// Rows
+		this.rowsComputing = new ToolItem(this.chartToolBar, SWT.RADIO);
+		this.rowsComputing.setToolTipText(AHCUIMessages.computeRows);
+		this.rowsComputing.setImage(IImageKeys.getImage(AHCEditor.class, "icons/compute_rows.png")); //$NON-NLS-1$
+
+
+		// 2D/3D rendering
+		this.rendering2D = new Button(this.chartToolBar, SWT.CHECK);
+		this.rendering2D.setText("2D");//$NON-NLS-1$
+		this.chartToolBar.addControl(this.rendering2D);
+		this.rendering2D.addSelectionListener(computeSelectionListener);
+
+		// FIXME: temporary fix, later must enable the font, rendering mode, etc. in R calls
+		// disable all component of the rendering tool bar
+		this.advancedChartToolBar.setEnabled(false);
+
+		ThresholdsGroup thresholdsGroup = new ThresholdsGroup(this.getExtendedParametersGroup(), SWT.NONE, this, true, false);
+		this.fMinSpinner = thresholdsGroup.getFMinSpinner();
+		this.fMaxSpinner = thresholdsGroup.getFMaxSpinner();
+		this.vMaxSpinner = thresholdsGroup.getVMaxSpinner();
+		this.vMaxSpinner.setMinimum(1);
+
+	}
+
+
+	@Override
+	public void updateEditorFromChart(boolean update) {
+		AHC ahc = this.getResult();
+
+		// Update the maximum value of the number of clusters spinner according to the new AHC configuration 
+		this.numberOfClusters.setMaximum(ahc.getMaxClustersCount());
+
+		// Updates the current value of the number of clusters spinner
+		this.numberOfClusters.setSelection(ahc.getNumberOfClusters());
+
+		this.rowsComputing.setSelection(!ahc.isColumnsComputing());
+	}
+
+}
\ No newline at end of file

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

Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java	(revision 1420)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditor.java	(revision 1421)
@@ -104,12 +104,13 @@
 	
 	/**
 	 * Subclasses manual creation.
+	 * @throws Exception 
 	 */
-	public abstract void __createPartControl();
+	public abstract void __createPartControl() throws Exception;
 	
 	
 	@Override
-	public final void _createPartControl() {
+	public final void _createPartControl() throws Exception {
 		
 		// Toolbar
 		this.chartToolBar = new ChartEditorToolBar(this, this.getFirstLineComposite(), null, SWT.FLAT | SWT.RIGHT);
Index: tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java
===================================================================
--- tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java	(revision 1420)
+++ tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java	(revision 1421)
@@ -30,6 +30,7 @@
 import java.io.File;
 import java.util.Arrays;
 
+import org.eclipse.osgi.util.NLS;
 import org.rosuda.REngine.REXP;
 import org.txm.ahc.core.messages.AHCCoreMessages;
 import org.txm.ahc.core.preferences.AHCPreferences;
@@ -38,6 +39,7 @@
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMParameters;
 import org.txm.lexicaltable.core.functions.LexicalTable;
+import org.txm.searchengine.cqp.corpus.Property;
 import org.txm.statsengine.r.core.RWorkspace;
 import org.txm.statsengine.r.core.exceptions.RWorkspaceException;
 import org.txm.utils.logger.Log;
@@ -679,13 +681,12 @@
 
 	@Override
 	public String getDetails() {
-		// FIXME: to define
-		return this.getName();
+		return NLS.bind(this.getName()+"\ncomputed with the {0} method and the {1} metric.", method, metric);
 	}
 
 	@Override
 	public String getName() {
-		return ""+this.getNumberOfClusters()+" "+(this.columnsComputing?"columns":"rows");
+		return NLS.bind("{0} clusters of  ", this.getNumberOfClusters(), this.columnsComputing?"columns":"rows");
 	}
 
 
@@ -713,6 +714,10 @@
 		return AHCCoreMessages.RESULT_TYPE;
 	}
 
-
-
+	public Property getUnitProperty() {
+		if (getLexicalTable() != null) {
+			return getLexicalTable().getProperty();
+		}
+		return null;
+	}
 }
