Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java	(revision 3733)
@@ -147,40 +147,40 @@
 		setVisible(TXMEditor.COMPUTING_PARAMETERS_GROUP_ID, visible);
 	}
 	
+	//FIXME: SJ: moved to TXMParameterCopntrol class (see if we keep this or validate the class)
+//	/**
+//	 * Adds the specified Control to this tool bar.
+//	 * Convenience method to add non-ToolItem Control to the tool bar using the SWT.SEPARATOR trick, plus to pack and to set the right width.
+//	 * 
+//	 * @param control
+//	 */
+//	public void addControl(final Control control) {
+//		final ToolItem itemSeparator = new ToolItem(this, SWT.SEPARATOR);
+//		control.pack();
+//		itemSeparator.setWidth(control.getBounds().width);
+//		itemSeparator.setControl(control);
+//		Listener listener = new Listener() {
+//			
+//			@Override
+//			public void handleEvent(Event event) {
+//				control.pack();
+//				itemSeparator.setWidth(control.getBounds().width);
+//				//System.err.println("TXMEditorToolBar.addControl(...).new Listener() {...}.handleEvent()");
+//			}
+//		};
+//
+//		//control.addListener(SWT.RESIZE, listener);
+//		//control.addListener(SWT.Resize, listener);
+//		control.addListener(SWT.Modify, listener);
+//		
+//		//control.addListener(SWT.CHANGED, listener);
+//		
+//		//this.addListener(SWT.Resize, listener);
+//		
+//	}
 	
-	/**
-	 * Adds the specified Control to this tool bar.
-	 * Convenience method to add non-ToolItem Control to the tool bar using the SWT.SEPARATOR trick, plus to pack and to set the right width.
-	 * 
-	 * @param control
-	 */
-	public void addControl(final Control control) {
-		final ToolItem itemSeparator = new ToolItem(this, SWT.SEPARATOR);
-		control.pack();
-		itemSeparator.setWidth(control.getBounds().width);
-		itemSeparator.setControl(control);
-		Listener listener = new Listener() {
-			
-			@Override
-			public void handleEvent(Event event) {
-				control.pack();
-				itemSeparator.setWidth(control.getBounds().width);
-				//System.err.println("TXMEditorToolBar.addControl(...).new Listener() {...}.handleEvent()");
-			}
-		};
-
-		//control.addListener(SWT.RESIZE, listener);
-		//control.addListener(SWT.Resize, listener);
-		control.addListener(SWT.Modify, listener);
-		
-		//control.addListener(SWT.CHANGED, listener);
-		
-		//this.addListener(SWT.Resize, listener);
-		
-	}
 	
 	
-	
 	/**
 	 * Creates a <code>GLComposite</code> in the toolbar subwidgets container.
 	 * 
Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledCombo.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledCombo.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledCombo.java	(revision 3733)
@@ -1,68 +0,0 @@
-/**
- * 
- */
-package org.txm.rcp.swt.widget;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.txm.rcp.editors.TXMEditor;
-
-/**
- * Convenience class to create a labeled combo dedicated to editor parameters areas.
- * This class also adds all the needed computing listeners.
- * 
- * @author sjacquot
- *
- */
-public class LabeledCombo extends LabeledControl {
-	
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 * @param controlTooltip
-	 * @param autoCompute
-	 */
-	public LabeledCombo(Composite parent, TXMEditor editor, String labelText, String controlTooltip, boolean autoCompute) {
-		super(parent, editor, new Label(parent, SWT.NONE), new Combo(parent, SWT.READ_ONLY), labelText, controlTooltip, autoCompute);
-		
-		// add computing listener
-		this.getCombo().addModifyListener(this.computingListener);
-	}
-
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 */
-	public LabeledCombo(Composite parent, TXMEditor editor, String labelText) {
-		this(parent, editor, labelText, null, false);
-	}
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 * @param controlTooltip
-	 */
-	public LabeledCombo(Composite parent, TXMEditor editor, String labelText, String controlTooltip) {
-		this(parent, editor, labelText, controlTooltip, false);
-	}
-
-	
-	/**
-	 * Gets the combo composite.
-	 * 
-	 * @return the combo
-	 */
-	public Combo getCombo() {
-		return (Combo) super.getControl();
-	}
-	
-}
Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledSpinner.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledSpinner.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledSpinner.java	(revision 3733)
@@ -1,104 +0,0 @@
-/**
- * 
- */
-package org.txm.rcp.swt.widget;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Spinner;
-import org.txm.rcp.editors.TXMEditor;
-
-/**
- * Convenience class to create a labeled Spinner dedicated to editor parameters areas.
- * This class also adds all the needed computing listeners.
- * 
- * @author sjacquot
- *
- */
-public class LabeledSpinner extends LabeledControl {
-	
-	
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param control
-	 * @param labelText
-	 * @param controlTooltip
-	 * @param autoCompute
-	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, Control control, String labelText, String controlTooltip, boolean autoCompute) {
-		super(parent, editor, null, control, labelText, controlTooltip, autoCompute);
-		
-		// default parameters and range
-		this.getSpinner().setMinimum(0);
-		this.getSpinner().setMaximum(Integer.MAX_VALUE);
-		this.getSpinner().setIncrement(1);
-		this.getSpinner().setPageIncrement(100);
-		
-		// add computing listener
-		this.getSpinner().addModifyListener(this.computingListener);
-
-	}
-
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 * @param controlTooltip
-	 * @param autoCompute
-	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, String labelText, String controlTooltip, boolean autoCompute) {
-		this(parent, editor, new Spinner(parent, SWT.BORDER), labelText, controlTooltip, autoCompute);
-	}
-
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param control
-	 * @param labelText
-	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, Control control, String labelText) {
-		this(parent, editor, control, labelText, null, false);
-	}
-	
-	 
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 * @param controlTooltip
-	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, String labelText, String controlTooltip) {
-		this(parent, editor, labelText, controlTooltip, false);
-	}
-
-	
-
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, String labelText) {
-		this(parent, editor, labelText, null, false);
-	}
-	
-	
-
-	/**
-	 * Gets the spinner composite.
-	 * 
-	 * @return the spinner
-	 */
-	public Spinner getSpinner() {
-		return (Spinner) super.getControl();
-	}
-	
-}
Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledControl.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledControl.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledControl.java	(revision 3733)
@@ -1,134 +0,0 @@
-/**
- * 
- */
-package org.txm.rcp.swt.widget;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Spinner;
-import org.txm.rcp.editors.TXMEditor;
-import org.txm.rcp.editors.listeners.ComputeKeyListener;
-import org.txm.rcp.swt.GLComposite;
-
-/**
- * Convenience class to create a labeled control dedicated to editor parameters areas.
- * If the parent is a GLComposite then the number of columns of its GridLayout will be adjusted to receive the label and the control.
- * This class also adds all the needed computing listeners.
- * 
- * @author sjacquot
- *
- */
-public class LabeledControl {
-	
-	/**
-	 * The label.
-	 */
-	protected Label label;
-	
-	
-	/**
-	 * The control.
-	 */
-	protected Control control;
-	
-	
-	/**
-	 * The computing listener.
-	 */
-	protected ComputeKeyListener computingListener;
-	
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param label
-	 * @param control
-	 * @param labelText
-	 * @param controlTooltip
-	 * @param autoCompute
-	 */
-	public LabeledControl(Composite parent, TXMEditor editor, Label label, Control control, String labelText, String controlTooltip, boolean autoCompute) {
-		
-		this.label = label;
-		this.control = control;
-		
-		if (this.label == null) {
-			this.label = new Label(parent, SWT.NONE);
-		}
-		
-		this.label.setText(labelText);
-		
-		if (controlTooltip != null) {
-			this.control.setToolTipText(controlTooltip);
-		}
-		
-		// add computing listeners
-		this.computingListener = new ComputeKeyListener(editor, autoCompute);
-		this.control.addKeyListener(this.computingListener);
-
-		// adjust the parent GridLayout number of columns
-		if(parent instanceof GLComposite) {
-			((GLComposite) parent).getLayout().numColumns += 2;
-		}
-		
-		this.label.moveAbove(this.control);
-	}
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param label
-	 * @param spinner
-	 * @param labelText
-	 */
-	public LabeledControl(Composite parent, TXMEditor editor, Label label, Spinner spinner, String labelText) {
-		this(parent, editor, label, spinner, labelText, null, false);
-	}
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 * @param spinnerTooltip
-	 */
-	public LabeledControl(Composite parent, TXMEditor editor, String labelText, String spinnerTooltip) {
-		this(parent, editor, null, null, labelText, spinnerTooltip, false);
-	}
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param editor
-	 * @param labelText
-	 */
-	public LabeledControl(Composite parent, TXMEditor editor, String labelText) {
-		this(parent, editor, labelText, null);
-	}
-	
-	
-	
-	/**
-	 * Gets the label.
-	 * 
-	 * @return the label
-	 */
-	public Label getLabel() {
-		return label;
-	}
-	
-	
-	/**
-	 * Gets the control.
-	 * 
-	 * @return the control
-	 */
-	public Control getControl() {
-		return control;
-	}
-	
-}
Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterCombo.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterCombo.java	(revision 0)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterCombo.java	(revision 3733)
@@ -0,0 +1,82 @@
+/**
+ * 
+ */
+package org.txm.rcp.swt.widget;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.txm.rcp.editors.TXMEditor;
+
+/**
+ * Convenience class to add a SWT Combo to some editor parameters areas.
+ * 
+ * If the parent is a GLComposite then the number of columns of its GridLayout will be adjusted to receive the control.
+ * If the parent is a TXMEditorToolbar, use the SWT.SEPARATOR trick, plus the packing and the right width setting to add non-ToolItem Control to a tool bar.
+ * 
+ * This class also adds all the needed computing listeners.
+ * 
+ * @author sjacquot
+ *
+ */
+public class TXMParameterCombo extends TXMParameterControl {
+	
+
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param labelText
+	 * @param controlTooltip
+	 * @param autoCompute
+	 */
+	public TXMParameterCombo(Composite parent, TXMEditor<?> editor, String labelText, String[] items, String controlTooltip, boolean autoCompute) {
+		super(parent, editor, new Combo(parent, SWT.READ_ONLY), controlTooltip, autoCompute);
+
+		this.getControl().setItems(items);
+		
+		// add computing listener
+		this.getControl().addModifyListener(this.computingListener);
+
+	}
+
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param labelText
+	 * @param items
+	 */
+	public TXMParameterCombo(Composite parent, TXMEditor<?> editor, String labelText, String[] items) {
+		this(parent, editor, labelText, items, null, false);
+	}
+	
+	/***
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param items
+	 * @param controlTooltip
+	 * @param autoCompute
+	 */
+	public TXMParameterCombo(Composite parent, TXMEditor<?> editor, String[] items, String controlTooltip, boolean autoCompute) {
+		this(parent, editor, null, items, controlTooltip, autoCompute);
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param items
+	 */
+	public TXMParameterCombo(Composite parent, TXMEditor<?> editor, String[] items) {
+		this(parent, editor, items, null, false);
+	}
+
+
+	@Override
+	public Combo getControl() {
+		return (Combo) super.getControl();
+	}
+	
+}

Property changes on: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterCombo.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java	(revision 3733)
@@ -113,21 +113,21 @@
 		fieldsGridData.minimumWidth = 100;
 		
 		// Fmin
-		LabeledSpinner fMin = new LabeledSpinner(this, editor, TXMCoreMessages.common_fMin);
+		TXMParameterSpinner fMin = new TXMParameterSpinner(this, editor, TXMCoreMessages.common_fMin);
 		this.fMinLabel = fMin.getLabel();
-		this.fMinSpinner = fMin.getSpinner();
+		this.fMinSpinner = fMin.getControl();
 		
 		// Fmax
 		if(displayFMax)	{
-			LabeledSpinner fMax = new LabeledSpinner(this, editor, TXMCoreMessages.common_fMax);
+			TXMParameterSpinner fMax = new TXMParameterSpinner(this, editor, TXMCoreMessages.common_fMax);
 			this.fMaxLabel = fMax.getLabel();
-			this.fMaxSpinner = fMax.getSpinner();
+			this.fMaxSpinner = fMax.getControl();
 		}
 		
 		// Vmax
-		LabeledSpinner vMax = new LabeledSpinner(this, editor, TXMCoreMessages.common_vMax);
+		TXMParameterSpinner vMax = new TXMParameterSpinner(this, editor, TXMCoreMessages.common_vMax);
 		this.vMaxLabel = vMax.getLabel();
-		this.vMaxSpinner = vMax.getSpinner();
+		this.vMaxSpinner = vMax.getControl();
 		
 	}
 
Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/FloatSpinner.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/FloatSpinner.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/FloatSpinner.java	(revision 3733)
@@ -16,6 +16,7 @@
 
 	/**
 	 * Creates a FloatSpinner.
+	 * 
 	 * @param parent
 	 * @param style
 	 */
@@ -28,6 +29,7 @@
 
 	/**
 	 * Sets the selection as float.
+	 * 
 	 * @param value
 	 */
 	public void setSelection(double value) {
@@ -36,6 +38,7 @@
 	
 	/**
 	 * Gets the selection as a float number.
+	 * 
 	 * @return
 	 */
 	public float getSelectionAsFloat() {
@@ -44,6 +47,7 @@
 	
 	/**
 	 * Sets the maximum that the receiver will allow.
+	 * 
 	 * @param value
 	 */
 	public void setMaximumAsFloat(double value){
Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterSpinner.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterSpinner.java	(revision 0)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterSpinner.java	(revision 3733)
@@ -0,0 +1,124 @@
+/**
+ * 
+ */
+package org.txm.rcp.swt.widget;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Spinner;
+import org.txm.rcp.editors.TXMEditor;
+
+/**
+ * Convenience class to add a SWT Spinner to some editor parameters areas.
+ * 
+ * If the parent is a GLComposite then the number of columns of its GridLayout will be adjusted to receive the control.
+ * If the parent is a TXMEditorToolbar, use the SWT.SEPARATOR trick, plus the packing and the right width setting to add non-ToolItem Control to a tool bar.
+ * 
+ * This class also adds all the needed computing listeners.
+ * 
+ * @author sjacquot
+ *
+ */
+public class TXMParameterSpinner extends TXMParameterControl {
+	
+
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param labelText
+	 * @param controlTooltip
+	 * @param autoCompute
+	 */
+	public TXMParameterSpinner(Composite parent, TXMEditor<?> editor, Control control, String labelText, String controlTooltip, boolean autoCompute) {
+		super(parent, editor, control, labelText, controlTooltip, autoCompute);
+
+		// default parameters and range
+		this.getControl().setMinimum(0);
+		this.getControl().setMaximum(Integer.MAX_VALUE);
+		this.getControl().setIncrement(1);
+		this.getControl().setPageIncrement(100);
+		
+		// add computing listener
+		this.getControl().addModifyListener(this.computingListener);
+
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param labelText
+	 * @param controlTooltip
+	 * @param autoCompute
+	 */
+	public TXMParameterSpinner(Composite parent, TXMEditor<?> editor, String labelText, String controlTooltip, boolean autoCompute) {
+		this(parent, editor, new Spinner(parent, SWT.BORDER),  labelText, controlTooltip, autoCompute);
+	}
+	
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param labelText
+	 * @param controlTooltip
+	 */
+	public TXMParameterSpinner(Composite parent, TXMEditor<?> editor, String labelText, String controlTooltip) {
+		this(parent, editor, labelText, controlTooltip, false);
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param control
+	 * @param labelText
+	 */
+	public TXMParameterSpinner(Composite parent, TXMEditor<?> editor, Control control, String labelText) {
+		this(parent, editor, control, labelText, null, false);
+	}
+	
+
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param labelText
+	 * @param items
+	 */
+	public TXMParameterSpinner(Composite parent, TXMEditor<?> editor, String labelText) {
+		this(parent, editor, labelText, null, false);
+	}
+	
+	/***
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param items
+	 * @param controlTooltip
+	 * @param autoCompute
+	 */
+	public TXMParameterSpinner(Composite parent, TXMEditor<?> editor, String controlTooltip, boolean autoCompute) {
+		this(parent, editor, null, controlTooltip, autoCompute);
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param items
+	 */
+	public TXMParameterSpinner(Composite parent, TXMEditor<?> editor) {
+		this(parent, editor, null, false);
+	}
+
+
+	@Override
+	public Spinner getControl() {
+		return (Spinner) super.getControl();
+	}
+	
+}

Property changes on: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterSpinner.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterControl.java
===================================================================
--- TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterControl.java	(revision 0)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterControl.java	(revision 3733)
@@ -0,0 +1,160 @@
+/**
+ * 
+ */
+package org.txm.rcp.swt.widget;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.txm.rcp.editors.TXMEditor;
+import org.txm.rcp.editors.TXMEditorToolBar;
+import org.txm.rcp.editors.listeners.ComputeKeyListener;
+import org.txm.rcp.swt.GLComposite;
+
+/**
+ * Convenience class to add a SWT Control, labeled or not, to some editor parameters areas.
+ * 
+ * If the parent is a GLComposite then the number of columns of its GridLayout will be adjusted to receive the control.
+ * If the parent is a TXMEditorToolbar, use the SWT.SEPARATOR trick, plus the packing and the right width setting to add non-ToolItem Control to a tool bar.
+ * 
+ * This class also adds all the needed computing listeners.
+ * 
+ * @author sjacquot
+ *
+ */
+public class TXMParameterControl {
+	
+	
+	/**
+	 * The label.
+	 */
+	protected Label label;
+	
+	/**
+	 * The control.
+	 */
+	protected Control control;
+	
+	
+	/**
+	 * The computing listener.
+	 */
+	protected ComputeKeyListener computingListener;
+	
+	
+	
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param control
+	 * @param labelText
+	 * @param controlTooltip
+	 * @param autoCompute
+	 */
+	protected TXMParameterControl(Composite parent, TXMEditor editor, Control control, String labelText, String controlTooltip, boolean autoCompute) {
+		
+		if(labelText != null) {
+			this.label = new Label(parent, SWT.NONE);
+			this.label.setText(labelText);
+		}
+
+		this.control = control;
+		
+		if (controlTooltip != null) {
+			this.control.setToolTipText(controlTooltip);
+		}
+		
+		// add computing listeners
+		this.computingListener = new ComputeKeyListener(editor, autoCompute);
+		this.control.addKeyListener(this.computingListener);
+
+		// adjust the parent GridLayout number of columns
+		if(parent instanceof GLComposite) {
+			((GLComposite) parent).getLayout().numColumns++;
+		}
+		// fix the non-ToolItem Control addition to the tool bar using the SWT.SEPARATOR trick, plus the packing and the right width setting.
+		else if(parent instanceof TXMEditorToolBar) {
+			final ToolItem itemSeparator = new ToolItem((ToolBar) parent, SWT.SEPARATOR);
+			this.control.pack();
+			itemSeparator.setWidth(control.getBounds().width);
+			itemSeparator.setControl(control);
+			Listener listener = new Listener() {
+				
+				@Override
+				public void handleEvent(Event event) {
+					control.pack();
+					itemSeparator.setWidth(control.getBounds().width);
+				}
+			};
+			this.control.addListener(SWT.Modify, listener);
+		}
+
+		// force the label to be on the left of the control
+		if(this.label != null) {
+			this.label.moveAbove(this.control);	
+		}
+		
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param control
+	 * @param controlTooltip
+	 * @param autoCompute
+	 */
+	public TXMParameterControl(Composite parent, TXMEditor editor, Control control, String controlTooltip, boolean autoCompute) {
+		this(parent, editor, control, null, controlTooltip, autoCompute);
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param control
+	 * @param controlTooltip
+	 */
+	public TXMParameterControl(Composite parent, TXMEditor editor, Control control, String controlTooltip) {
+		this(parent, editor, control, controlTooltip, false);
+	}
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 * @param control
+	 */
+	public TXMParameterControl(Composite parent, TXMEditor editor, Control control) {
+		this(parent, editor, control, null, false);
+	}
+	
+
+	
+	/**
+	 * Gets the label.
+	 * 
+	 * @return the label
+	 */
+	public Label getLabel() {
+		return label;
+	}
+
+	
+	/**
+	 * Gets the control.
+	 * 
+	 * @return the control
+	 */
+	public Control getControl() {
+		return control;
+	}
+	
+}

Property changes on: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/TXMParameterControl.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: TXM/trunk/bundles/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 3733)
@@ -26,7 +26,7 @@
 import org.txm.rcp.editors.TXMEditor;
 import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 import org.txm.rcp.swt.GLComposite;
-import org.txm.rcp.swt.widget.LabeledCombo;
+import org.txm.rcp.swt.widget.TXMParameterCombo;
 import org.txm.rcp.swt.widget.ThresholdsGroup;
 import org.txm.rcp.swt.widget.structures.PropertiesComboViewer;
 import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
@@ -259,10 +259,7 @@
 		//FIXME: SJ: other version
 		new ToolItem(this.chartToolBar, SWT.SEPARATOR);
 		
-		LabeledCombo plansSelectionCombo = new LabeledCombo(this.getFirstLineComposite(), this, CAUIMessages.axesColon);
-		Combo plansCombo = plansSelectionCombo.getCombo();
 		
-		
 		// FIXME: commented because the infos panel is not ready to manage more axes
 //		 ArrayList<String> planes = null;
 //		 try {
@@ -291,8 +288,10 @@
 		// if(couples != null && couples.size() > 3) {
 		// items = couples.toArray(new String[couples.size()]);
 		// }
+
 		
-		plansCombo.setItems(items);
+		TXMParameterCombo plansSelectionCombo = new TXMParameterCombo(this.getFirstLineComposite(), this, CAUIMessages.axesColon, items);
+		Combo plansCombo = plansSelectionCombo.getControl();
 		
 		// Preselect the plan from the CA data
 		if (this.getIntParameterValue(CAPreferences.FIRST_DIMENSION) == 2) {
Index: TXM/trunk/bundles/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java
===================================================================
--- TXM/trunk/bundles/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java	(revision 3733)
@@ -3,6 +3,7 @@
 import java.awt.Font;
 import java.awt.GraphicsEnvironment;
 import java.util.ArrayList;
+import java.util.Arrays;
 
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.swt.SWT;
@@ -10,7 +11,6 @@
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.ToolItem;
 import org.txm.Toolbox;
 import org.txm.chartsengine.core.ChartCreator;
@@ -25,6 +25,7 @@
 import org.txm.rcp.IImageKeys;
 import org.txm.rcp.preferences.RCPPreferences;
 import org.txm.rcp.swt.GLComposite;
+import org.txm.rcp.swt.widget.TXMParameterCombo;
 
 /**
  * The default advanced chart editor tool bar shared by every <code>ChartEditor</code>.
@@ -38,9 +39,19 @@
 	
 	public final static String ID = "AdvancedChartEditorToolBar";
 
+	/**
+	 * Chart type selection combo (expert mode only).
+	 */
+	protected Combo chartTypeCombo; 
 	
 
 	/**
+	 * Font selection by physical font name (expert mode only)
+	 */
+	protected Combo advancedFontCombo;
+				
+	
+	/**
 	 * Creates a new chart editor tool bar dedicated to advanced parameters.
 	 * @param parent
 	 * @param style
@@ -98,17 +109,13 @@
 
 
 		// Rendering colors mode selection
-		new ToolItem(this, SWT.SEPARATOR);
-		final Combo renderingModeCombo = new Combo(this, SWT.READ_ONLY);
-		String colorsModes[] = new String[] { ChartsUIMessages.colors,
+		TXMParameterCombo renderingModeParameterCombo = new TXMParameterCombo(this, chartEditor, new String[] { ChartsUIMessages.colors,
 				ChartsUIMessages.grayscale,
 				ChartsUIMessages.blackAndWhite,
 				ChartsUIMessages.monochrome
-		};
-		renderingModeCombo.setItems(colorsModes);
+		});
+		final Combo renderingModeCombo = renderingModeParameterCombo.getControl();
 		
-		this.addControl(renderingModeCombo);
-		
 		if (!chartEditor.getResult().isEmptyPreference(ChartsEnginePreferences.RENDERING_COLORS_MODE)) {
 			renderingModeCombo.select(chartEditor.getResult().getRenderingColorsMode());
 		}
@@ -118,31 +125,20 @@
 		}
 
 		
-		// Logical user-friendly font selection
+		// Font selection (user-friendly font names)
 		final Font currentFont = ChartsEngine.createFont(chartEditor.getResult().getFont());
-
-		final Combo fontCombo = new Combo(this, SWT.READ_ONLY);
-
-		// transpose logical font name to user-friendly name
-		String fonts[] = new String[] {"Arial", "Courier", "Times"}; // SansSerif,Monospaced,Serif
+		TXMParameterCombo fontParameterCombo = new TXMParameterCombo(this, chartEditor, ChartsEngine.FONTS_USER_FRIENDLY_NAMES);
+		final Combo fontCombo = fontParameterCombo.getControl();
 		
-		fontCombo.setItems(fonts);
-		
-		this.addControl(fontCombo);
-
-		int currentFontIndex = 0;
-		if(currentFont.getName().equals("Monospaced")) {
-			currentFontIndex = 1;
+		int currentFontIndex = Arrays.asList(ChartsEngine.FONTS_LOGICAL_NAMES).indexOf(currentFont.getName());
+		// force "Arial" if name is not found
+		if(currentFontIndex < 0) {
+			currentFontIndex = 0; 
 		}
-		else if(currentFont.getName().equals("Times")) {
-			currentFontIndex = 2;
-		}
-
 		fontCombo.select(currentFontIndex);
 
 
 		// Font size
-		final Combo fontSizeCombo = new Combo(this, SWT.READ_ONLY);
 		String fontSizes[] = new String[30];
 		int currentFontSizeIndex = 0;
 		for (int i = 0; i < fontSizes.length; i++) {
@@ -152,17 +148,16 @@
 			}
 			
 		}
-		fontSizeCombo.setItems(fontSizes);
-		
-		this.addControl(fontSizeCombo);
-		
+		TXMParameterCombo fontSizeParameterCombo = new TXMParameterCombo(this, chartEditor, fontSizes);
+		final Combo fontSizeCombo = fontSizeParameterCombo.getControl();
 		fontSizeCombo.select(currentFontSizeIndex);
 		
 
 		// Font style
-		final Combo fontStyleCombo = new Combo(this, SWT.READ_ONLY);
+		TXMParameterCombo fontStyleParameterCombo = new TXMParameterCombo(this, chartEditor, ChartsEngine.FONT_STYLES);
+		final Combo fontStyleCombo = fontStyleParameterCombo.getControl();
 
-		//FIXME: SJ: the styles list should be builded from the available styles of the current selected font.
+		//FIXME: SJ: the styles list may be builded from the available styles of the current selected font.
 		// Here are some tests to try to get the available styles
 		
 		// AWT
@@ -185,21 +180,15 @@
 //		    System.out.println("AdvancedChartEditorToolBar.AdvancedChartEditorToolBar() " + StringConverter.asString(fontsData[i]));
 //		  }
 		
+		fontStyleCombo.select(currentFont.getStyle());
 		
-		String fontStyles[] = new String[] {"Regular", "Bold", "Italic", "Bold italic"};
-		int currentFontStyleIndex = currentFont.getStyle();
-		fontStyleCombo.setItems(fontStyles);
 		
-		this.addControl(fontStyleCombo);
-		
-		fontStyleCombo.select(currentFontStyleIndex);
-		
-		
 		// FIXME: SJ: this Combo may not be created if is not in expert mode. At this moment, it's created and hidden
-		// Chart types from installed chart creators in all installed charts engines
-		final Combo chartTypeCombo = new Combo(this, SWT.READ_ONLY);
+		
+		// Export mode
 		if (TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER)) {
-			
+
+			// Chart types from installed chart creators in all installed charts engines
 			ArrayList<String> chartsEngineNames = new ArrayList<>();
 			ArrayList<ChartCreator<?,?>> allChartCreators = new ArrayList<>();
 			
@@ -230,33 +219,18 @@
 				chartTypes[i] = chartsEngineNames.get(i) + " / " + chartTypes[i]; //$NON-NLS-1$
 				
 			}
-			chartTypeCombo.setItems(chartTypes);
 			
-			this.addControl(chartTypeCombo);
+			TXMParameterCombo chartTypeParameterCombo = new TXMParameterCombo(this, chartEditor, chartTypes);
+			this.chartTypeCombo = chartTypeParameterCombo.getControl();
+			this.chartTypeCombo.select(currentChartCreatorIndex);
 			
 			
-			chartTypeCombo.select(currentChartCreatorIndex);
-			
-			
-			if (allChartCreators.size() < 2) {
-				chartTypeCombo.setVisible(false);
-			}
-		}
-		else  {
-			chartTypeCombo.setVisible(false);
-		}
-		
-		
 
-		// Advanced font selection
-		final Combo advancedFontCombo = new Combo(this, SWT.READ_ONLY);
-		if (TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER)) {
-			
+			// Advanced font selection (by physical font name)
 			String advancedFonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
+			TXMParameterCombo advancedFontParameterCombo = new TXMParameterCombo(this, chartEditor, advancedFonts);
+			this.advancedFontCombo = advancedFontParameterCombo.getControl();
 
-			advancedFontCombo.setItems(advancedFonts);
-			this.addControl(advancedFontCombo);
-
 			int currentAllFontIndex = 0;
 			for (int i = 0; i < advancedFonts.length; i++) {
 				if (advancedFonts[i].equals(currentFont.getName())) {
@@ -266,7 +240,7 @@
 			}
 			
 			advancedFontCombo.select(currentAllFontIndex);
-
+			
 		}
 		
 					
@@ -303,23 +277,18 @@
 					}
 					// transpose user-friendly name to logical font name
 					else {
-						if(fontCombo.getSelectionIndex() == 0) {
-							fontName = "SansSerif";
-						}
-						else if(fontCombo.getSelectionIndex() == 1) {
-							fontName = "Monospaced";
-						}
-						else {
-							fontName = "Serif";
-						}
+						fontName = fontCombo.getItem(fontCombo.getSelectionIndex());
 					}
 					
-					getEditorPart().getResult().setFont("1|" + fontName + "|" + fontSizeCombo.getItem(fontSizeCombo.getSelectionIndex()) + "|" + fontStyleCombo.getSelectionIndex()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					getEditorPart().getResult().setFont(fontName, 
+							fontSizeCombo.getItem(fontSizeCombo.getSelectionIndex()),
+							fontStyleCombo.getItem(fontStyleCombo.getSelectionIndex()),
+							(e.getSource() == fontCombo));
 					
 				}
 				// Chart type / chart creators
 				else if (e.getSource() == chartTypeCombo) {
-					String[] data = StringUtils.split(chartTypeCombo.getItem(chartTypeCombo.getSelectionIndex()), '/');
+					String[] data = StringUtils.split(chartTypeCombo.getItem(chartTypeCombo.getSelectionIndex()), '/');//$NON-NLS-1$
 					data[0] = StringUtils.trim(data[0]);
 					data[1] = StringUtils.trim(data[1]);
 					getEditorPart().getResult().setChartType(data[1]); // reset the chart
@@ -356,7 +325,7 @@
 		};
 		
 		
-		// Add listener
+		// Add listeners
 		if (showTitleButton.isEnabled()) {
 			showTitleButton.addSelectionListener(listener);
 		}
@@ -373,10 +342,13 @@
 		fontCombo.addSelectionListener(listener);
 		fontSizeCombo.addSelectionListener(listener);
 		fontStyleCombo.addSelectionListener(listener);
-//		if (chartTypeCombo.isVisible()) {
-			chartTypeCombo.addSelectionListener(listener);
-	//	}
-		advancedFontCombo.addSelectionListener(listener);
+		
+		if (this.chartTypeCombo != null) {
+			this.chartTypeCombo.addSelectionListener(listener);
+		}
+		if (this.advancedFontCombo != null) {
+			this.advancedFontCombo.addSelectionListener(listener);
+		}
 	}
 	
 	
Index: TXM/trunk/bundles/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/preferences/ChartsEnginePreferencePage.java
===================================================================
--- TXM/trunk/bundles/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/preferences/ChartsEnginePreferencePage.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/preferences/ChartsEnginePreferencePage.java	(revision 3733)
@@ -109,21 +109,19 @@
 
 		
 //		FontFieldEditor font = new FontFieldEditor(ChartsEnginePreferences.FONT, "Font", "Specificities / Spécificités / Специфичность", this.getFieldEditorParent()); //$NON-NLS-2$
-//		//FontFieldEditor font = new FontFieldEditor(ChartsEnginePreferences.FONT, "Font", "Specificities / Spécificités / Специфичность / 仕様 / 特別說明 / विशिष्टता", this.getFieldEditorParent()); //$NON-NLS-2$
+//		//FontFieldEditor font = new FontFieldEditor(ChartsEnginePreferences.FONT, "Font", "Specificities / Spécificités / Специфичность / 仕様 / 特別說明 / विशिष्टता / التصميم مثل الفوتوشوب و", this.getFieldEditorParent()); //$NON-NLS-2$
 //		this.addField(font);
 //		// FIXME: SJ: preview area tests
 //		 //font.fillIntoGrid(this.getFieldEditorParent(), 4);
 //		// ((Text)font.getPreviewControl()).setLayoutData(new GridData(GridData.FILL_BOTH));
 //		// System.out.println("ChartsEnginePreferencePage.createFieldEditors() " + font.getPreviewControl());
 
-		// transpose logical font name to user-friendly name
-		String logicalFonts[][] = new String[3][2];
-		logicalFonts[0][0] = "Arial";
-		logicalFonts[0][1] = "1|SansSerif|14|0"; //$NON-NLS-1$
-		logicalFonts[1][0] = "Courier";
-		logicalFonts[1][1] = "1|Monospaced|14|0"; //$NON-NLS-1$
-		logicalFonts[2][0] = "Times";
-		logicalFonts[2][1] = "1|Serif|14|0"; //$NON-NLS-1$
+		// default font preference (user-friendly name)
+		String logicalFonts[][] = new String[ChartsEngine.FONTS_USER_FRIENDLY_NAMES.length][2];
+		for (int j = 0; j < ChartsEngine.FONTS_USER_FRIENDLY_NAMES.length; j++) {
+			logicalFonts[j][0] = ChartsEngine.FONTS_USER_FRIENDLY_NAMES[j];
+			logicalFonts[j][1] = "1|" + ChartsEngine.FONTS_LOGICAL_NAMES[j] +"|14|0"; //$NON-NLS-1$ //$NON-NLS-2$
+		}
 		ComboFieldEditor fontComboField = new ComboFieldEditor(ChartsEnginePreferences.FONT, TXMCoreMessages.common_defaultFont, logicalFonts, this.getFieldEditorParent());
 		this.addField(fontComboField);
 
Index: TXM/trunk/bundles/org.txm.chartsengine.jfreechart.core/src/org/txm/chartsengine/jfreechart/core/themes/highcharts/defaulttheme/HighchartsDefaultTheme.java
===================================================================
--- TXM/trunk/bundles/org.txm.chartsengine.jfreechart.core/src/org/txm/chartsengine/jfreechart/core/themes/highcharts/defaulttheme/HighchartsDefaultTheme.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.chartsengine.jfreechart.core/src/org/txm/chartsengine/jfreechart/core/themes/highcharts/defaulttheme/HighchartsDefaultTheme.java	(revision 3733)
@@ -173,8 +173,8 @@
 		
 		// Antialiasing
 		// chart.setRenderingHints( new RenderingHints( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ) );
-		chart.setAntiAlias(antialiasing);
-		chart.setTextAntiAlias(antialiasing);
+		chart.setAntiAlias(this.antialiasing);
+		chart.setTextAntiAlias(this.antialiasing);
 		
 		chart.getPlot().setNoDataMessage("Loading chart...");
 		chart.getPlot().setInsets(new RectangleInsets(10, 10, 10, 10));
@@ -194,7 +194,6 @@
 		// XY Line chart / CA Factorial Map / XY Bar chart
 		if (tmpPlot instanceof XYPlot) {
 			
-			
 			XYPlot plot = (XYPlot) tmpPlot;
 			AbstractRenderer renderer = (AbstractRenderer) plot.getRenderer();
 			
@@ -283,34 +282,34 @@
 			plot.getRangeAxis().setAxisLineVisible(false);
 			plot.getRangeAxis().setTickMarksVisible(false);
 			
-			plot.getRangeAxis().setAxisLinePaint(Color.decode("#C0D0E0"));
-			plot.getRangeAxis().setTickMarkPaint(Color.decode("#C0D0E0"));
+			plot.getRangeAxis().setAxisLinePaint(Color.decode("#C0D0E0")); //$NON-NLS-1$
+			plot.getRangeAxis().setTickMarkPaint(Color.decode("#C0D0E0")); //$NON-NLS-1$
 			plot.getRangeAxis().setTickMarkOutsideLength(5);
 			plot.getRangeAxis().setTickLabelFont(regularFont.deriveFont(Font.BOLD));
 			
 
-			// SJ: to fix a bug with unbreakable space thousand separator that is displayed as a white square glyph with some fonts
+			// SJ: to fix a bug with unbreakable space thousands separator that is displayed as a white square glyph with some fonts (#3369)
 			NumberAxis range = (NumberAxis) plot.getRangeAxis();
 			DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance();
 			DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
 			
 			if((int)symbols.getGroupingSeparator() == 8239) { //unbreakable space char code
-				symbols.setGroupingSeparator(' ');
+				symbols.setGroupingSeparator(' '); //$NON-NLS-1$
 				formatter.setDecimalFormatSymbols(symbols);
 				range.setNumberFormatOverride(formatter);
 			}
 
 			
-			plot.getDomainAxis().setAxisLinePaint(Color.decode("#C0D0E0"));
-			plot.getDomainAxis().setTickMarkPaint(Color.decode("#C0D0E0"));
+			plot.getDomainAxis().setAxisLinePaint(Color.decode("#C0D0E0")); //$NON-NLS-1$
+			plot.getDomainAxis().setTickMarkPaint(Color.decode("#C0D0E0")); //$NON-NLS-1$
 			plot.getDomainAxis().setTickMarkOutsideLength(5);
 			plot.getDomainAxis().setTickLabelFont(regularFont.deriveFont(Font.BOLD));
 			
 			plot.setRangeZeroBaselineVisible(true);
 			
 			// Zero base lines colors
-			plot.setDomainZeroBaselinePaint(Color.decode("#C0D0E0").darker());
-			plot.setRangeZeroBaselinePaint(Color.decode("#C0D0E0").darker());
+			plot.setDomainZeroBaselinePaint(Color.decode("#C0D0E0").darker()); //$NON-NLS-1$
+			plot.setRangeZeroBaselinePaint(Color.decode("#C0D0E0").darker()); //$NON-NLS-1$
 			
 			
 			// NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
@@ -355,21 +354,21 @@
 			
 			// Zero base line
 			plot.setRangeZeroBaselineVisible(true);
-			plot.setRangeZeroBaselinePaint(Color.decode("#000000"));
+			plot.setRangeZeroBaselinePaint(Color.decode("#000000")); //$NON-NLS-1$
 			
 			
 			// Axis
 			plot.getRangeAxis().setAxisLineVisible(false);
 			plot.getRangeAxis().setTickMarksVisible(false);
-			plot.getRangeAxis().setTickLabelPaint(Color.decode("#666666"));
+			plot.getRangeAxis().setTickLabelPaint(Color.decode("#666666")); //$NON-NLS-1$
 			plot.getRangeAxis().setTickLabelFont(regularFont.deriveFont(Font.BOLD));
 			
 			
 			// For drawing tick marks between categories and not in theirs middle
 			plot.setDomainAxis(new CategoryAxisBetweenTicks(plot.getDomainAxis()));
 			
-			plot.getDomainAxis().setAxisLinePaint(Color.decode("#C0D0E0"));
-			plot.getDomainAxis().setTickMarkPaint(Color.decode("#C0D0E0"));
+			plot.getDomainAxis().setAxisLinePaint(Color.decode("#C0D0E0")); //$NON-NLS-1$
+			plot.getDomainAxis().setTickMarkPaint(Color.decode("#C0D0E0")); //$NON-NLS-1$
 			plot.getDomainAxis().setTickMarkOutsideLength(5);
 			plot.getDomainAxis().setTickLabelFont(regularFont.deriveFont(Font.BOLD));
 			// plot.getDomainAxis().setCategoryMargin(0.3); // TODO : incompatible with CategoryAxisBetween ? need to check again
Index: TXM/trunk/bundles/org.txm.properties.rcp/src/org/txm/properties/rcp/editors/PropertiesEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.properties.rcp/src/org/txm/properties/rcp/editors/PropertiesEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.properties.rcp/src/org/txm/properties/rcp/editors/PropertiesEditor.java	(revision 3733)
@@ -1,37 +1,25 @@
 package org.txm.properties.rcp.editors;
 
 import java.io.File;
-import java.net.MalformedURLException;
 
-import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.browser.Browser;
 import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseWheelListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Spinner;
 import org.eclipse.swt.widgets.Text;
-import org.txm.core.messages.TXMCoreMessages;
 import org.txm.core.results.Parameter;
 import org.txm.properties.core.functions.Properties;
 import org.txm.properties.core.preferences.PropertiesPreferences;
 import org.txm.properties.rcp.messages.PropertiesUIMessages;
-import org.txm.rcp.IImageKeys;
 import org.txm.rcp.editors.TXMBrowserEditor;
 import org.txm.rcp.editors.TXMEditor;
-import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 import org.txm.rcp.swt.GLComposite;
-import org.txm.rcp.swt.widget.LabeledSpinner;
-import org.txm.rcp.views.corpora.CorporaView;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 import org.txm.utils.logger.Log;
 
 /**
@@ -71,8 +59,8 @@
 
 		
 		
-		LabeledSpinner fMax = new LabeledSpinner(extendedParametersArea, this, PropertiesUIMessages.vMax);
-		this.maxPropertiesToDisplay = fMax.getSpinner();
+		TXMParameterSpinner fMax = new TXMParameterSpinner(extendedParametersArea, this, PropertiesUIMessages.vMax);
+		this.maxPropertiesToDisplay = fMax.getControl();
 		this.maxPropertiesToDisplay.setToolTipText(PropertiesUIMessages.theMaximumNumberOfWordPropertyValuesToShow);
 		this.maxPropertiesToDisplay.setMinimum(0);
 		this.maxPropertiesToDisplay.setMaximum(1000);
Index: TXM/trunk/bundles/org.txm.properties.rcp/src/org/txm/properties/rcp/editors/PropertiesPagedEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.properties.rcp/src/org/txm/properties/rcp/editors/PropertiesPagedEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.properties.rcp/src/org/txm/properties/rcp/editors/PropertiesPagedEditor.java	(revision 3733)
@@ -1,6 +1,5 @@
 package org.txm.properties.rcp.editors;
 
-import java.io.File;
 import java.util.ArrayList;
 
 import org.eclipse.swt.SWT;
@@ -8,17 +7,14 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Spinner;
 import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
+import org.txm.core.results.Parameter;
+import org.txm.objects.Project;
 import org.txm.properties.core.functions.Properties;
 import org.txm.properties.core.preferences.PropertiesPreferences;
 import org.txm.properties.rcp.messages.PropertiesUIMessages;
 import org.txm.rcp.editors.TXMEditor;
 import org.txm.rcp.swt.GLComposite;
-import org.txm.rcp.swt.widget.LabeledSpinner;
-import org.txm.searchengine.cqp.corpus.CQPCorpus;
-import org.txm.core.results.Parameter;
-import org.txm.core.results.TXMResult;
-import org.txm.objects.Project;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 
 public class PropertiesPagedEditor extends TXMEditor<Properties> {
 	
@@ -36,8 +32,8 @@
 	public void _createPartControl() throws Exception {
 		
 		Composite extendedParametersArea = this.getExtendedParametersGroup();
-		LabeledSpinner fMax = new LabeledSpinner(extendedParametersArea, this, PropertiesUIMessages.vMax);
-		this.maxPropertiesToDisplay = fMax.getSpinner();
+		TXMParameterSpinner fMax = new TXMParameterSpinner(extendedParametersArea, this, PropertiesUIMessages.vMax);
+		this.maxPropertiesToDisplay = fMax.getControl();
 		this.maxPropertiesToDisplay.setToolTipText(PropertiesUIMessages.theMaximumNumberOfWordPropertyValuesToShow);
 		this.maxPropertiesToDisplay.setMinimum(0);
 		this.maxPropertiesToDisplay.setMaximum(1000);
Index: TXM/trunk/bundles/org.txm.internalview.rcp/src/org/txm/internalview/rcp/editors/InternalViewEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.internalview.rcp/src/org/txm/internalview/rcp/editors/InternalViewEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.internalview.rcp/src/org/txm/internalview/rcp/editors/InternalViewEditor.java	(revision 3733)
@@ -35,9 +35,9 @@
 import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 import org.txm.rcp.messages.TXMUIMessages;
 import org.txm.rcp.swt.GLComposite;
-import org.txm.rcp.swt.widget.LabeledSpinner;
 import org.txm.rcp.swt.widget.NewNavigationWidget;
 import org.txm.rcp.swt.widget.PropertiesSelector;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 import org.txm.rcp.swt.widget.structures.StructuralUnitsComboViewer;
 import org.txm.searchengine.core.Query;
 import org.txm.searchengine.cqp.CQPSearchEngine;
@@ -163,8 +163,8 @@
 		
 		
 		// Number of lines per page
-		LabeledSpinner nLinesPerPagesLabeledSpinner= new LabeledSpinner(this.getExtendedParametersGroup(), this, TXMUIMessages.numberOfLines);
-		nLinesPerPagesSpinner = nLinesPerPagesLabeledSpinner.getSpinner();
+		TXMParameterSpinner nLinesPerPagesLabeledSpinner= new TXMParameterSpinner(this.getExtendedParametersGroup(), this, TXMUIMessages.numberOfLines);
+		nLinesPerPagesSpinner = nLinesPerPagesLabeledSpinner.getControl();
 		nLinesPerPagesSpinner.setMinimum(1);
 		nLinesPerPagesSpinner.setMaximum(Integer.MAX_VALUE);
 
Index: TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/preferences/ChartsEnginePreferences.java
===================================================================
--- TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/preferences/ChartsEnginePreferences.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/preferences/ChartsEnginePreferences.java	(revision 3733)
@@ -136,6 +136,7 @@
 //			defaultFont = "1|Lucida Sans Unicode|11.0|1|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|34|Lucida Sans Unicode;"; //$NON-NLS-1$
 //		}
 		
+		// FIXME: SJ: new version, but actually the should not be based on JFace format
 		String defaultFont = "1|SansSerif|14|0"; 
 		
 		
Index: TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java
===================================================================
--- TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java	(revision 3733)
@@ -4,6 +4,7 @@
 package org.txm.chartsengine.core.results;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 
 import org.eclipse.osgi.util.NLS;
@@ -682,8 +683,50 @@
 		this.font = font;
 	}
 	
+
+	/**
+	 * Sets the font.
+	 * Internally build an encoded String in JFace StringConverter format (e.g.: "1|Lucida Sans Unicode|12.0|0|WINDOWS|1|-16|0|0|0|400|0|0|0|0|3|2|1|34|Lucida Sans Unicode;") from the specified parameters.
+	 * Also, is convertUserFriendlyName is set to true, then the font name will be converted to it's real logical font name. 
+	 * 
+	 * @param fontName
+	 * @param size
+	 * @param style
+	 */
+	public void setFont(String fontName, String size, String style, boolean convertUserFriendlyName) {
+		
+		int styleAsInt = Arrays.asList(ChartsEngine.FONT_STYLES).indexOf(style);
+		
+		// force regular if style is not found
+		if(styleAsInt < 0) {
+			styleAsInt = 0; 
+		}
+		
+		// convert user-friendly name to real logical font name
+		if(convertUserFriendlyName) {
+			int fontNameIndex = Arrays.asList(ChartsEngine.FONTS_USER_FRIENDLY_NAMES).indexOf(fontName);
+			// force "SansSerif" if name is not found
+			if(fontNameIndex < 0) {
+				fontNameIndex = 0; 
+			}
+			fontName = ChartsEngine.FONTS_LOGICAL_NAMES[fontNameIndex];
+		}
+		
+		this.setFont("1|" + fontName + "|" + size + "|" + String.valueOf(styleAsInt));
+	}
+
 	
+	/**
+	 * 
+	 * @param fontName
+	 * @param size
+	 * @param style
+	 */
+	public void setFont(String fontName, String size, String style) {
+		this.setFont(fontName, size, style, true);
+	}
 	
+	
 	/**
 	 * Gets the multiple line strokes state.
 	 * 
Index: TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/ChartsEngine.java
===================================================================
--- TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/ChartsEngine.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.chartsengine.core/src/org/txm/chartsengine/core/ChartsEngine.java	(revision 3733)
@@ -49,7 +49,28 @@
 	 */
 	public final static int RENDERING_COLORS_MODE = 0, RENDERING_GRAYSCALE_MODE = 1, RENDERING_BLACK_AND_WHITE_MODE = 2, RENDERING_MONOCHROME_MODE = 3;
 	
+	
 	/**
+	 * Font styles definition.
+	 */
+	//FIXME: SJ: see if we move this in another class to share it
+	public final static String[] FONT_STYLES = {"Regular", "Bold", "Italic", "Bold italic"};
+	
+	/**
+	 * Logical font names definition.
+	 */
+	//FIXME: SJ: see if we move this in another class to share it
+	public final static String[] FONTS_LOGICAL_NAMES = {"SansSerif", "Monospaced", "Serif"};//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	
+	/**
+	 * User-friendly font names definition.
+	 */
+	//FIXME: SJ: see if we move this in another class to share it
+	public final static String[] FONTS_USER_FRIENDLY_NAMES = {"Arial", "Courier", "Times"};//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	
+	
+	
+	/**
 	 * The engine description.
 	 */
 	protected String description;
@@ -76,6 +97,7 @@
 	protected boolean directComputing;
 	
 	
+	
 	// add the preference node qualifier to the preferences so the command use some preferences if they do not define themselves
 	static {
 		TXMPreferences.alternativeNodesQualifiers.add(ChartsEnginePreferences.getInstance().getPreferencesNodeQualifier());
@@ -338,12 +360,8 @@
 	 * @return the decoded font
 	 */
 	public static Font createFont(String encodedStr) {
-		String[] data = encodedStr.split("\\|");
-		Font font = new Font(data[1], // font name
-				//3, // font style
-				Integer.valueOf(data[3]), // font style
-					
-					Integer.parseInt(data[2].split("\\.")[0])); // font size
+		String[] data = encodedStr.split("\\|");///$NON-NLS-1$
+		Font font = new Font(data[1], Integer.valueOf(data[3]), Integer.parseInt(data[2].split("\\.")[0])); // font name, font style, font size
 		return font;
 	}
 	
Index: TXM/trunk/bundles/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/editors/CooccurrencesEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/editors/CooccurrencesEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/editors/CooccurrencesEditor.java	(revision 3733)
@@ -34,10 +34,8 @@
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
@@ -76,7 +74,6 @@
 import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMParameters;
-import org.txm.index.core.functions.Line;
 import org.txm.rcp.editors.TXMEditor;
 import org.txm.rcp.editors.TXMResultEditorInput;
 import org.txm.rcp.editors.TableKeyListener;
@@ -84,8 +81,8 @@
 import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 import org.txm.rcp.swt.widget.AssistedQueryWidget;
 import org.txm.rcp.swt.widget.FloatSpinner;
-import org.txm.rcp.swt.widget.LabeledSpinner;
 import org.txm.rcp.swt.widget.PropertiesSelector;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 import org.txm.rcp.views.QueriesView;
 import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
 import org.txm.searchengine.cqp.corpus.CQPCorpus;
@@ -300,16 +297,16 @@
 		
 		// Thresholds
 		// Fmin
-		LabeledSpinner fMin = new LabeledSpinner(filtercontrols, this, CooccurrenceUIMessages.thresholdsColonFmin);
-		this.fMin = fMin.getSpinner();
+		TXMParameterSpinner fMin = new TXMParameterSpinner(filtercontrols, this, CooccurrenceUIMessages.thresholdsColonFmin);
+		this.fMin = fMin.getControl();
 		
 		// Cmin
-		LabeledSpinner cMin = new LabeledSpinner(filtercontrols, this, CooccurrenceUIMessages.cmin);
-		this.cMin = cMin.getSpinner();
+		TXMParameterSpinner cMin = new TXMParameterSpinner(filtercontrols, this, CooccurrenceUIMessages.cmin);
+		this.cMin = cMin.getControl();
 		
 		// Minimum score
-		LabeledSpinner minimumScore = new LabeledSpinner(filtercontrols, this, new FloatSpinner(filtercontrols, SWT.BORDER), CooccurrenceUIMessages.score_2);
-		this.minScore = (FloatSpinner) minimumScore.getSpinner();
+		TXMParameterSpinner minimumScore = new TXMParameterSpinner(filtercontrols, this, new FloatSpinner(filtercontrols, SWT.BORDER), CooccurrenceUIMessages.score_2);
+		this.minScore = (FloatSpinner) minimumScore.getControl();
 		
 		// empant
 		empantPanel = new EmpantWidget(paramArea, SWT.NONE, this.getCorpus());
Index: TXM/trunk/bundles/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesSelectionEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesSelectionEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesSelectionEditor.java	(revision 3733)
@@ -2,15 +2,13 @@
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.ToolItem;
 import org.txm.chartsengine.rcp.editors.ChartEditor;
 import org.txm.core.results.Parameter;
 import org.txm.rcp.IImageKeys;
-import org.txm.rcp.editors.listeners.ComputeListener;
 import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 import org.txm.rcp.swt.widget.FloatSpinner;
-import org.txm.rcp.swt.widget.LabeledSpinner;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 import org.txm.specificities.core.functions.SpecificitiesSelection;
 import org.txm.specificities.core.preferences.SpecificitiesPreferences;
 import org.txm.specificities.rcp.handlers.ComputeSpecifities;
@@ -54,8 +52,8 @@
 		// Banality
 		Composite extendedParametersArea = this.getExtendedParametersGroup();
 
-		LabeledSpinner banality = new LabeledSpinner(extendedParametersArea, this, new FloatSpinner(extendedParametersArea, SWT.BORDER), SpecificitiesUIMessages.banality, SpecificitiesUIMessages.banalityThreshold, true);
-		this.banalitySpinner = (FloatSpinner) banality.getSpinner();
+		TXMParameterSpinner banality = new TXMParameterSpinner(extendedParametersArea, this, new FloatSpinner(extendedParametersArea, SWT.BORDER), SpecificitiesUIMessages.banality, SpecificitiesUIMessages.banalityThreshold, true);
+		this.banalitySpinner = (FloatSpinner) banality.getControl();
 		this.banalitySpinner.setMaximumAsFloat(200);
 		
 		this.groupBarsByLines.addSelectionListener(computeSelectionListener);
Index: TXM/trunk/bundles/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesEditor.java	(revision 3733)
@@ -37,7 +37,6 @@
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.ScrollBar;
@@ -50,11 +49,9 @@
 import org.txm.core.results.Parameter;
 import org.txm.rcp.editors.TXMEditor;
 import org.txm.rcp.editors.TableKeyListener;
-import org.txm.rcp.editors.listeners.ComputeKeyListener;
-import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 import org.txm.rcp.preferences.RCPPreferences;
 import org.txm.rcp.swt.GLComposite;
-import org.txm.rcp.swt.widget.LabeledSpinner;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 import org.txm.rcp.swt.widget.ThresholdsGroup;
 import org.txm.rcp.swt.widget.structures.PropertiesComboViewer;
 import org.txm.searchengine.cqp.corpus.CQPCorpus;
@@ -65,7 +62,6 @@
 import org.txm.specificities.core.preferences.SpecificitiesPreferences;
 import org.txm.specificities.rcp.handlers.ComputeSpecifictiesSelectionChart;
 import org.txm.specificities.rcp.messages.SpecificitiesUIMessages;
-import org.txm.statsengine.core.StatException;
 import org.txm.statsengine.r.core.messages.RCoreMessages;
 import org.txm.utils.logger.Log;
 
@@ -150,8 +146,8 @@
 			Composite extendedParametersArea = this.getExtendedParametersGroup();
 			
 			// max score
-			LabeledSpinner maxScore = new LabeledSpinner(extendedParametersArea, this, SpecificitiesUIMessages.maximumScore, SpecificitiesUIMessages.maximumScoreToDisplay);
-			this.maxScoreFilter = maxScore.getSpinner();
+			TXMParameterSpinner maxScore = new TXMParameterSpinner(extendedParametersArea, this, SpecificitiesUIMessages.maximumScore, SpecificitiesUIMessages.maximumScoreToDisplay);
+			this.maxScoreFilter = maxScore.getControl();
 			this.maxScoreFilter.setMinimum(0);
 			this.maxScoreFilter.setMaximum(100000);
 			
Index: TXM/trunk/bundles/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.ahc.rcp/src/org/txm/ahc/rcp/editors/AHCEditor.java	(revision 3733)
@@ -1,8 +1,6 @@
 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;
@@ -18,13 +16,11 @@
 import org.txm.index.core.functions.PartitionIndex;
 import org.txm.lexicaltable.core.functions.LexicalTable;
 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.LabeledSpinner;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 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;
 import org.txm.searchengine.cqp.corpus.MainCorpus;
 import org.txm.searchengine.cqp.corpus.Partition;
@@ -141,10 +137,17 @@
 		// ComputeKeyListener computeKeyListener = new ComputeKeyListener(this);
 		
 		// Number of clusters
-		LabeledSpinner clusters = new LabeledSpinner(mainParametersArea, this, AHCUIMessages.numberOfClustersColon);
-		this.numberOfClusters = clusters.getSpinner();
+//		LabeledSpinner clusters = new LabeledSpinner(mainParametersArea, this, AHCUIMessages.numberOfClustersColon);
+//		this.numberOfClusters = clusters.getSpinner();
+//		this.numberOfClusters.setMinimum(2);
+		
+		
+		TXMParameterSpinner clusters = new TXMParameterSpinner(mainParametersArea, this, AHCUIMessages.numberOfClustersColon);
+		this.numberOfClusters = clusters.getControl();
 		this.numberOfClusters.setMinimum(2);
+
 		
+		
 		// Columns
 		this.columnsComputing = new ToolItem(this.chartToolBar, SWT.RADIO);
 		this.columnsComputing.setToolTipText(AHCUIMessages.computeColumns);
@@ -162,11 +165,14 @@
 		this.rendering2D.setText("2D -> 3D"); //$NON-NLS-1$
 		this.rendering2D.addSelectionListener(computeSelectionListener);
 		
+		
+		
+		
 		// FIXME: SJ: 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);
 		
-		if (!this.getResult().getParent().isVisible() // CA parent parent is not visible
+		if (!this.getResult().getParent().isVisible() // if CA parent parent is not visible
 				&& !(this.getResult().getParent().getParent().getParent() instanceof PartitionIndex)) { // and its 2x parent is not a PartitionIndex
 			ThresholdsGroup thresholdsGroup = new ThresholdsGroup(this.getExtendedParametersGroup(), SWT.NONE, this, true, true);
 			this.fMinSpinner = thresholdsGroup.getFMinSpinner();
Index: TXM/trunk/bundles/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java
===================================================================
--- TXM/trunk/bundles/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java	(revision 3732)
+++ TXM/trunk/bundles/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java	(revision 3733)
@@ -61,10 +61,9 @@
 import org.txm.rcp.messages.TXMUIMessages;
 import org.txm.rcp.swt.GLComposite;
 import org.txm.rcp.swt.widget.AssistedChoiceQueryWidget;
-import org.txm.rcp.swt.widget.CustomThresholdsGroup;
-import org.txm.rcp.swt.widget.LabeledSpinner;
 import org.txm.rcp.swt.widget.NavigationWidget;
 import org.txm.rcp.swt.widget.PropertiesSelector;
+import org.txm.rcp.swt.widget.TXMParameterSpinner;
 import org.txm.rcp.swt.widget.ThresholdsGroup;
 import org.txm.rcp.views.QueriesView;
 import org.txm.searchengine.core.IQuery;
@@ -244,8 +243,8 @@
 
 		// FIXME: SJ: we should create a widget class for the number of results per page
 		// Number of results per page
-		LabeledSpinner numberOfResultsPerPage = new LabeledSpinner(this.getExtendedParametersGroup(), this, IndexUIMessages.pageSize);
-		this.nLinesPerPageSpinner = numberOfResultsPerPage.getSpinner();
+		TXMParameterSpinner numberOfResultsPerPage = new TXMParameterSpinner(this.getExtendedParametersGroup(), this, IndexUIMessages.pageSize);
+		this.nLinesPerPageSpinner = numberOfResultsPerPage.getControl();
 		this.nLinesPerPageSpinner.setMinimum(0);
 		this.nLinesPerPageSpinner.setMaximum(99999);
 		this.nLinesPerPageSpinner.setIncrement(1);
