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 3727)
+++ TXM/trunk/bundles/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java	(revision 3728)
@@ -10,6 +10,7 @@
 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;
@@ -50,7 +51,7 @@
 		
 		// Show/hide chart title button
 		final ToolItem showTitleButton = new ToolItem(this, SWT.CHECK);
-		// showTitleButton.setText(SWTComponentsProviderMessages.showhideTitle);
+		//showTitleButton.setText(ChartsUIMessages.showhideTitle);
 		showTitleButton.setImage(IImageKeys.getImage(getClass(), "icons/show_title.png")); //$NON-NLS-1$
 		showTitleButton.setDisabledImage(IImageKeys.getImage(getClass(), "icons/show_title_disabled.png")); //$NON-NLS-1$
 		showTitleButton.setToolTipText(ChartsUIMessages.showhideTitle);
@@ -66,7 +67,7 @@
 		
 		// Show/hide chart legend button
 		final ToolItem showLegendButton = new ToolItem(this, SWT.CHECK);
-		// showLegendButton.setText(SWTComponentsProviderMessages.showhideLegend);
+		//showLegendButton.setText(ChartsUIMessages.showhideLegend);
 		showLegendButton.setImage(IImageKeys.getImage(getClass(), "icons/show_legend.png")); //$NON-NLS-1$
 		showLegendButton.setDisabledImage(IImageKeys.getImage(getClass(), "icons/show_legend_disabled.png")); //$NON-NLS-1$
 		showLegendButton.setToolTipText(ChartsUIMessages.showhideLegend);
@@ -82,7 +83,7 @@
 		
 		// Show/hide chart background grid button
 		final ToolItem showGridButton = new ToolItem(this, SWT.CHECK);
-		// showGridButton.setText(SWTComponentsProviderMessages.showhideGrid);
+		//showGridButton.setText(ChartsUIMessages.showhideGrid);
 		showGridButton.setImage(IImageKeys.getImage(getClass(), "icons/show_grid.png")); //$NON-NLS-1$
 		showGridButton.setDisabledImage(IImageKeys.getImage(getClass(), "icons/show_grid_disabled.png")); //$NON-NLS-1$
 		showGridButton.setToolTipText(ChartsUIMessages.showhideGrid);
@@ -106,7 +107,7 @@
 		};
 		renderingModeCombo.setItems(colorsModes);
 		
-		this.addCombo(renderingModeCombo);
+		this.addControl(renderingModeCombo);
 		
 		if (!chartEditor.getResult().isEmptyPreference(ChartsEnginePreferences.RENDERING_COLORS_MODE)) {
 			renderingModeCombo.select(chartEditor.getResult().getRenderingColorsMode());
@@ -120,12 +121,12 @@
 		// Font selection
 		final Font currentFont = ChartsEngine.createFont(chartEditor.getResult().getFont());
 
-		 // FIXME: SJ: may be better here to get the fonts from SWT rather than from Java, see  java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
+		 // FIXME: SJ: may be better here to get the fonts from SWT rather than from Java, see java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
 		final Combo fontCombo = new Combo(this, SWT.READ_ONLY);
 		String fonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
 		fontCombo.setItems(fonts);
 		
-		this.addCombo(fontCombo);
+		this.addControl(fontCombo);
 		
 		int currentFontIndex = 0;
 		for (int i = 0; i < fonts.length; i++) {
@@ -150,7 +151,7 @@
 		}
 		fontSizeCombo.setItems(fontSizes);
 		
-		this.addCombo(fontSizeCombo);
+		this.addControl(fontSizeCombo);
 		
 		fontSizeCombo.select(currentFontSizeIndex);
 		
@@ -186,7 +187,7 @@
 		int currentFontStyleIndex = currentFont.getStyle();
 		fontStyleCombo.setItems(fontStyles);
 		
-		this.addCombo(fontStyleCombo);
+		this.addControl(fontStyleCombo);
 		
 		fontStyleCombo.select(currentFontStyleIndex);
 		
@@ -228,7 +229,7 @@
 			}
 			chartTypeCombo.setItems(chartTypes);
 			
-			this.addCombo(chartTypeCombo);
+			this.addControl(chartTypeCombo);
 			
 			
 			chartTypeCombo.select(currentChartCreatorIndex);
@@ -243,6 +244,8 @@
 		}
 		
 		
+					
+		
 		// Listeners
 		SelectionListener listener = new SelectionListener() {
 			
@@ -272,7 +275,6 @@
 				}
 				// Chart type / chart creators
 				else if (e.getSource() == chartTypeCombo) {
-					
 					String[] data = StringUtils.split(chartTypeCombo.getItem(chartTypeCombo.getSelectionIndex()), '/');
 					data[0] = StringUtils.trim(data[0]);
 					data[1] = StringUtils.trim(data[1]);
@@ -290,6 +292,7 @@
 						|| e.getSource() == showGridButton
 						|| e.getSource() == renderingModeCombo
 						|| e.getSource() == fontSizeCombo
+						|| e.getSource() == fontStyleCombo
 						|| e.getSource() == chartTypeCombo) {
 					// updates or creates chart
 					getEditorPart().compute(update);
@@ -312,22 +315,22 @@
 		if (showTitleButton.isEnabled()) {
 			showTitleButton.addSelectionListener(listener);
 		}
-		if (showLegendButton != null) {
+		if (showLegendButton.isEnabled()) {
 			showLegendButton.addSelectionListener(listener);
 		}
-		if (showGridButton != null) {
+		if (showGridButton.isEnabled()) {
 			showGridButton.addSelectionListener(listener);
 		}
-		if (renderingModeCombo != null) {
+		if (renderingModeCombo.isEnabled()) {
 			renderingModeCombo.addSelectionListener(listener);
 		}
 		
 		fontCombo.addSelectionListener(listener);
 		fontSizeCombo.addSelectionListener(listener);
 		fontStyleCombo.addSelectionListener(listener);
-		if (chartTypeCombo.isVisible()) {
+//		if (chartTypeCombo.isVisible()) {
 			chartTypeCombo.addSelectionListener(listener);
-		}
+	//	}
 	}
 	
 	
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 3727)
+++ TXM/trunk/bundles/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/editors/CooccurrencesEditor.java	(revision 3728)
@@ -308,7 +308,7 @@
 		this.cMin = cMin.getSpinner();
 		
 		// Minimum score
-		LabeledSpinner minimumScore = new LabeledSpinner(filtercontrols, this, new Label(filtercontrols, SWT.NONE), new FloatSpinner(filtercontrols, SWT.BORDER), CooccurrenceUIMessages.score_2);
+		LabeledSpinner minimumScore = new LabeledSpinner(filtercontrols, this, new FloatSpinner(filtercontrols, SWT.BORDER), CooccurrenceUIMessages.score_2);
 		this.minScore = (FloatSpinner) minimumScore.getSpinner();
 		
 		// empant
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 3727)
+++ TXM/trunk/bundles/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 3728)
@@ -5,15 +5,10 @@
 import java.awt.event.ComponentListener;
 
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.Spinner;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.ToolItem;
@@ -31,6 +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.ThresholdsGroup;
 import org.txm.rcp.swt.widget.structures.PropertiesComboViewer;
 import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
@@ -160,16 +156,16 @@
 		
 		// Show/hide columns
 		showIndividuals = new ToolItem(this.chartToolBar, SWT.CHECK);
-		// FIXME: keep this for offering an option "large icons" with text in buttons ?
-		// showColumns.setText(SWTComponentsProviderMessages.SWTChartsComponentProvider_CA_TOOLBAR_BUTTON_SHOW_COLUMS_LABEL);
+		// FIXME: SJ: keep this for offering an option "large icons" with text in buttons?
+		//showIndividuals.setText(CAUIMessages.showTheColumns);
 		showIndividuals.setToolTipText(CAUIMessages.showhideTheColumnPoints);
 		showIndividuals.setImage(IImageKeys.getImage(CAFactorialMapChartEditor.class, "icons/show_columns.png")); //$NON-NLS-1$
 		showIndividuals.addSelectionListener(computeSelectionListener);
 		
 		// Show/hide rows
 		showVariables = new ToolItem(this.chartToolBar, SWT.CHECK);
-		// FIXME: keep this for offering an option "large icons" with text in buttons ?
-		// this.showRows.setText(SWTComponentsProviderMessages.SWTChartsComponentProvider_CA_TOOLBAR_BUTTON_SHOW_ROWS_LABEL);
+		// FIXME: SJ: keep this for offering an option "large icons" with text in buttons?
+		//showVariables.setText(CAUIMessages.showTheRows);
 		showVariables.setToolTipText(CAUIMessages.showhideTheRowPoints);
 		showVariables.setImage(IImageKeys.getImage(CAFactorialMapChartEditor.class, "icons/show_rows.png")); //$NON-NLS-1$
 		showVariables.addSelectionListener(computeSelectionListener);
@@ -177,176 +173,184 @@
 		
 		// Show/hide point shapes
 		showPointShapes = new ToolItem(this.chartToolBar, SWT.CHECK);
-		// FIXME: keep this for offering an option "large icons" with text in buttons ?
-		// showPointShapes.setText(CAUIMessages.SHOW_HIDE_POINT_SHAPES);
+		// FIXME: SJ: keep this for offering an option "large icons" with text in buttons?
+		//showPointShapes.setText(CAUIMessages.showPointShapes);
 		showPointShapes.setToolTipText(CAUIMessages.showhidePointShapes);
 		showPointShapes.setImage(IImageKeys.getImage(CAFactorialMapChartEditor.class, "icons/show_point_shapes.png")); //$NON-NLS-1$
 		showPointShapes.addSelectionListener(computeSelectionListener);
 		
 		
-		final ToolItem item = new ToolItem (this.chartToolBar, SWT.PUSH);
-		final Menu menu = new Menu (this.chartToolBar.getShell(), SWT.POP_UP);
-		MenuItem item12 = new MenuItem (menu, SWT.PUSH);
-		item12.setText ("(1,2)"); // , "(1,3)", "(2,3)"
-		item12.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				getResult().setFirstDimension(1);
-				getResult().setSecondDimension(2);
-				getResult().setChartDirty();
-				getResult().setNeedsToResetView(true);
-				item.setText(CAUIMessages.axesColon+" (1,2)");
-				compute(true);
-			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) { }
-		});
-		MenuItem item13 = new MenuItem (menu, SWT.PUSH);
-		item13.setText ("(1,3)"); // "(1,2)", "(1,3)", "(2,3)"
-		item13.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				getResult().setFirstDimension(1);
-				getResult().setSecondDimension(3);
-				getResult().setChartDirty();
-				getResult().setNeedsToResetView(true);
-				item.setText(CAUIMessages.axesColon+" (1,3)");
-				compute(true);
-			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) { }
-		});
-		MenuItem item23 = new MenuItem (menu, SWT.PUSH);
-		item23.setText ("(2,3)"); // "(1,2)", "(1,3)", "(2,3)"
-		item23.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				getResult().setFirstDimension(2);
-				getResult().setSecondDimension(3);
-				getResult().setChartDirty();
-				getResult().setNeedsToResetView(true);
-				item.setText(CAUIMessages.axesColon+" (2,3)");
-				compute(true);
-			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) { }
-		});
 		
-		item.setText(CAUIMessages.axesColon+" (1,2)");
-		item.addListener (SWT.Selection, event -> {
-//			if (event.detail == SWT.PUSH) {
-				Rectangle rect = item.getBounds ();
-				Point pt = new Point (rect.x, rect.y + rect.height);
-				pt = this.chartToolBar.toDisplay (pt);
-				menu.setLocation (pt.x, pt.y);
-				menu.setVisible (true);
+		// Factors plane selection
+		//FIXME: SJ: other version with a DropDown item
+//		final ToolItem item = new ToolItem (this.chartToolBar, SWT.PUSH);
+//		final Menu menu = new Menu (this.chartToolBar.getShell(), SWT.POP_UP);
+//		MenuItem item12 = new MenuItem (menu, SWT.PUSH);
+//		item12.setText ("(1,2)"); // , "(1,3)", "(2,3)"
+//		item12.addSelectionListener(new SelectionListener() {
+//			
+//			@Override
+//			public void widgetSelected(SelectionEvent e) {
+//				getResult().setFirstDimension(1);
+//				getResult().setSecondDimension(2);
+//				getResult().setChartDirty();
+//				getResult().setNeedsToResetView(true);
+//				item.setText(CAUIMessages.axesColon+" (1,2)");
+//				compute(true);
 //			}
-		});
-		
-//		// Factors plane selection
-//		ToolItem factorsLabelItem = new ToolItem(this.chartToolBar, SWT.SEPARATOR);
-//		
-//		CLabel factorsLabel = new CLabel(this.chartToolBar, SWT.CENTER);
-//		factorsLabel.setText(CAUIMessages.axesColon);
-//		
-//		ToolItem plansComboItem = new ToolItem(this.chartToolBar, SWT.SEPARATOR);
-//		final Combo plansCombo = new Combo(this.chartToolBar, SWT.READ_ONLY);
-//		
-//		// FIXME: commented because the infos panel is not ready to manage more axes
-//		// ArrayList<String> planes = null;
-//		// try {
-//		// int nbsv = ((CA) editorPart.getResultData()).getSingularValues().length;
-//		// planes = new ArrayList<String>();
-//		// for(int i = 1 ; i < nbsv ; i ++) {
-//		// for(int j = i ; j < nbsv ; j++) {
-//		// if(i != j) {
-//		// planes.add("("+i+","+j+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-//		// }
-//		// }
-//		// }
-//		// }
-//		// catch (StatException e1) {
-//		// // TODO Auto-generated catch block
-//		// org.txm.utils.logger.Log.printStackTrace(e1);
-//		// }
-//		// String [] items = planes.toArray(new String[planes.size()]);
-//		
-//		String items[] = { "(1,2)", "(1,3)", "(2,3)" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-//		
-//		// TODO : commented because the infos panel is not ready to manage more axes
-//		// if(couples != null && couples.size() > 3) {
-//		// items = couples.toArray(new String[couples.size()]);
-//		// }
-//		
-//		plansCombo.setItems(items);
-//		
-//		// Preselect the plan from the CA data
-//		if (this.getIntParameterValue(CAPreferences.FIRST_DIMENSION) == 2) {
-//			plansCombo.select(2);
-//		}
-//		else if (this.getIntParameterValue(CAPreferences.SECOND_DIMENSION) == 3) {
-//			plansCombo.select(1);
-//		}
-//		else {
-//			plansCombo.select(0);
-//		}
-//		
-//		//this.chartToolBar.addControl(plansCombo);
-//		
-//		// Listeners
-//		SelectionListener listener = new SelectionListener() {
+//
+//			@Override
+//			public void widgetDefaultSelected(SelectionEvent e) { }
+//		});
+//		MenuItem item13 = new MenuItem (menu, SWT.PUSH);
+//		item13.setText ("(1,3)"); // "(1,2)", "(1,3)", "(2,3)"
+//		item13.addSelectionListener(new SelectionListener() {
 //			
 //			@Override
 //			public void widgetSelected(SelectionEvent e) {
-//				
-//				boolean resetView = false;
-//				
-//				// Change factors
-//				if (e.getSource() == plansCombo) {
-//					
-//					Combo plans = (Combo) e.getSource();
-//					
-//					int dimension1 = 1;
-//					int dimension2 = 2;
-//					
-//					String str = plans.getItem(plans.getSelectionIndex());
-//					str = str.substring(1, str.length() - 1); // remove ( and )
-//					String[] split = str.split(","); // 2 items //$NON-NLS-1$
-//					dimension1 = Integer.parseInt(split[0]);
-//					dimension2 = Integer.parseInt(split[1]);
-//					
-//					getResult().setFirstDimension(dimension1);
-//					getResult().setSecondDimension(dimension2);
-//					
-//					resetView = true;
-//				}
+//				getResult().setFirstDimension(1);
+//				getResult().setSecondDimension(3);
 //				getResult().setChartDirty();
-//				getResult().setNeedsToResetView(resetView);
+//				getResult().setNeedsToResetView(true);
+//				item.setText(CAUIMessages.axesColon+" (1,3)");
 //				compute(true);
-//				// forceFocus();
 //			}
+//
+//			@Override
+//			public void widgetDefaultSelected(SelectionEvent e) { }
+//		});
+//		MenuItem item23 = new MenuItem (menu, SWT.PUSH);
+//		item23.setText ("(2,3)"); // "(1,2)", "(1,3)", "(2,3)"
+//		item23.addSelectionListener(new SelectionListener() {
 //			
 //			@Override
-//			public void widgetDefaultSelected(SelectionEvent e) {
-//				// TODO Auto-generated method stub
+//			public void widgetSelected(SelectionEvent e) {
+//				getResult().setFirstDimension(2);
+//				getResult().setSecondDimension(3);
+//				getResult().setChartDirty();
+//				getResult().setNeedsToResetView(true);
+//				item.setText(CAUIMessages.axesColon+" (2,3)");
+//				compute(true);
 //			}
-//		};
-//		plansCombo.addSelectionListener(listener);
-//		factorsLabel.pack();
 //
-//		factorsLabelItem.setControl(factorsLabel);
-//		factorsLabelItem.setWidth(factorsLabel.getSize().x);
-//		plansCombo.pack();
+//			@Override
+//			public void widgetDefaultSelected(SelectionEvent e) { }
+//		});
 //		
-//		plansComboItem.setControl(plansCombo);
-//		plansComboItem.setWidth(plansCombo.getSize().x);
+//		item.setText(CAUIMessages.axesColon+" (1,2)");
+//		item.addListener (SWT.Selection, event -> {
+////			if (event.detail == SWT.PUSH) {
+//				Rectangle rect = item.getBounds ();
+//				Point pt = new Point (rect.x, rect.y + rect.height);
+//				pt = this.chartToolBar.toDisplay (pt);
+//				menu.setLocation (pt.x, pt.y);
+//				menu.setVisible (true);
+////			}
+//		});
 		
+
+		
+		
+		
+		
+		
+		
+		// Factors plane selection
+		//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 {
+//		 int nbsv = this.getResult().getSingularValues().length;
+//		 planes = new ArrayList<String>();
+//		 for(int i = 1 ; i < nbsv ; i ++) {
+//		 for(int j = i ; j < nbsv ; j++) {
+//		 if(i != j) {
+//		 planes.add("("+i+","+j+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+//		 }
+//		 }
+//		 }
+//		 }
+//		 catch (StatException e1) {
+//		 // TODO Auto-generated catch block
+//		 org.txm.utils.logger.Log.printStackTrace(e1);
+//		 } catch (REXPMismatchException e1) {
+//			// TODO Auto-generated catch block
+//			e1.printStackTrace();
+//		}
+//		 String [] items = planes.toArray(new String[planes.size()]);
+		
+		String items[] = { "(1,2)", "(1,3)", "(2,3)" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		
+		// TODO : commented because the infos panel is not ready to manage more axes
+		// if(couples != null && couples.size() > 3) {
+		// items = couples.toArray(new String[couples.size()]);
+		// }
+		
+		plansCombo.setItems(items);
+		
+		// Preselect the plan from the CA data
+		if (this.getIntParameterValue(CAPreferences.FIRST_DIMENSION) == 2) {
+			plansCombo.select(2);
+		}
+		else if (this.getIntParameterValue(CAPreferences.SECOND_DIMENSION) == 3) {
+			plansCombo.select(1);
+		}
+		else {
+			plansCombo.select(0);
+		}
+		
+		// Listeners
+		SelectionListener listener = new SelectionListener() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				
+				boolean resetView = false;
+				
+				// Change factors
+				if (e.getSource() == plansCombo) {
+					
+					Combo plans = (Combo) e.getSource();
+					
+					int dimension1 = 1;
+					int dimension2 = 2;
+					
+					String str = plans.getItem(plans.getSelectionIndex());
+					str = str.substring(1, str.length() - 1); // remove ( and )
+					String[] split = str.split(","); // 2 items //$NON-NLS-1$
+					dimension1 = Integer.parseInt(split[0]);
+					dimension2 = Integer.parseInt(split[1]);
+					
+					getResult().setFirstDimension(dimension1);
+					getResult().setSecondDimension(dimension2);
+					
+					resetView = true;
+				}
+				getResult().setChartDirty();
+				getResult().setNeedsToResetView(resetView);
+				compute(true);
+				// forceFocus();
+			}
+			
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// TODO Auto-generated method stub
+			}
+		};
+		plansCombo.addSelectionListener(listener);
+		
+		
+		
+
+		
+		
+		
 		// parent parameters
 		// thresholds
 		if (!this.getResult().getParent().isVisible()  // the LT parent is not visible
@@ -375,6 +379,7 @@
 		supColNamesText = new Text(this.getExtendedParametersGroup(), SWT.BORDER);
 		
 		this.chartToolBar.pack();
+		
 	}
 	
 	@Override
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 3727)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java	(revision 3728)
@@ -11,11 +11,11 @@
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.widgets.ToolBar;
@@ -149,29 +149,38 @@
 	
 	
 	/**
-	 * Adds the specified Combo to this tool bar.
-	 * Convenience method to add non-ToolItem Combo to the tool bar using the SWT.SEPARATOR trick, plus to pack and to set the right width.
+	 * 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 combo
+	 * @param control
 	 */
-	public void addCombo(final Combo combo) {
+	public void addControl(final Control control) {
 		final ToolItem itemSeparator = new ToolItem(this, SWT.SEPARATOR);
-		combo.pack();
-		itemSeparator.setWidth(combo.getBounds().width);
-		itemSeparator.setControl(combo);
+		control.pack();
+		itemSeparator.setWidth(control.getBounds().width);
+		itemSeparator.setControl(control);
 		Listener listener = new Listener() {
 			
 			@Override
 			public void handleEvent(Event event) {
-				combo.pack();
-				itemSeparator.setWidth(combo.getBounds().width);
+				control.pack();
+				itemSeparator.setWidth(control.getBounds().width);
+				//System.err.println("TXMEditorToolBar.addControl(...).new Listener() {...}.handleEvent()");
 			}
 		};
 
-		combo.addListener(SWT.RESIZE, listener);
-		combo.addListener(SWT.Modify, listener);
+		//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 0)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledCombo.java	(revision 3728)
@@ -0,0 +1,68 @@
+/**
+ * 
+ */
+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();
+	}
+	
+}

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

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 3727)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledSpinner.java	(revision 3728)
@@ -5,10 +5,9 @@
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Spinner;
 import org.txm.rcp.editors.TXMEditor;
-import org.txm.rcp.editors.listeners.ComputeKeyListener;
 
 /**
  * Convenience class to create a labeled Spinner dedicated to editor parameters areas.
@@ -17,112 +16,89 @@
  * @author sjacquot
  *
  */
-public class LabeledSpinner {
+public class LabeledSpinner extends LabeledControl {
 	
-	/**
-	 * The label.
-	 */
-	protected Label label;
 	
 	
 	/**
-	 * The spinner.
-	 */
-	protected Spinner spinner;
-	
-	
-	
-	/**
 	 * 
 	 * @param parent
 	 * @param editor
-	 * @param label
-	 * @param spinner
+	 * @param control
 	 * @param labelText
-	 * @param spinnerTooltip
+	 * @param controlTooltip
 	 * @param autoCompute
 	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, Label label, Spinner spinner, String labelText, String spinnerTooltip, boolean autoCompute) {
-		this.label = label;
-		this.spinner = spinner;
+	public LabeledSpinner(Composite parent, TXMEditor editor, Control control, String labelText, String controlTooltip, boolean autoCompute) {
+		super(parent, editor, null, control, labelText, controlTooltip, autoCompute);
 		
-		
-		if (this.label == null) {
-			this.label = new Label(parent, SWT.NONE);
-		}
-		
-		if (this.spinner == null) {
-			this.spinner = new Spinner(parent, SWT.BORDER);
-		}
-		
-		this.label.setText(labelText);
-		
-		if (spinnerTooltip != null) {
-			this.spinner.setToolTipText(spinnerTooltip);
-		}
-		
 		// default parameters and range
-		this.spinner.setMinimum(0);
-		this.spinner.setMaximum(Integer.MAX_VALUE);
-		this.spinner.setIncrement(1);
-		this.spinner.setPageIncrement(100);
+		this.getSpinner().setMinimum(0);
+		this.getSpinner().setMaximum(Integer.MAX_VALUE);
+		this.getSpinner().setIncrement(1);
+		this.getSpinner().setPageIncrement(100);
 		
-		// add computing listeners
-		ComputeKeyListener listener = new ComputeKeyListener(editor, autoCompute);
-		this.spinner.addKeyListener(listener);
-		this.spinner.addModifyListener(listener);
+		// add computing listener
+		this.getSpinner().addModifyListener(this.computingListener);
+
 	}
-	
+
 	/**
 	 * 
 	 * @param parent
 	 * @param editor
-	 * @param label
-	 * @param spinner
 	 * @param labelText
+	 * @param controlTooltip
+	 * @param autoCompute
 	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, Label label, Spinner spinner, String labelText) {
-		this(parent, editor, label, spinner, labelText, null, false);
+	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
-	 * @param spinnerTooltip
 	 */
-	public LabeledSpinner(Composite parent, TXMEditor editor, String labelText, String spinnerTooltip) {
-		this(parent, editor, null, null, labelText, spinnerTooltip, false);
+	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) {
-		this(parent, editor, labelText, null);
+	public LabeledSpinner(Composite parent, TXMEditor editor, String labelText, String controlTooltip) {
+		this(parent, editor, labelText, controlTooltip, false);
 	}
+
 	
+
 	/**
-	 * Gets the label composite.
 	 * 
-	 * @return the label
+	 * @param parent
+	 * @param editor
+	 * @param labelText
 	 */
-	public Label getLabel() {
-		return label;
+	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;
+		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 0)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledControl.java	(revision 3728)
@@ -0,0 +1,134 @@
+/**
+ * 
+ */
+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;
+	}
+	
+}

Property changes on: TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/LabeledControl.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 3727)
+++ TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java	(revision 3728)
@@ -12,8 +12,6 @@
 import org.eclipse.swt.widgets.Spinner;
 import org.txm.core.messages.TXMCoreMessages;
 import org.txm.rcp.editors.TXMEditor;
-import org.txm.rcp.editors.listeners.ComputeKeyListener;
-import org.txm.rcp.editors.listeners.ComputeSelectionListener;
 
 /**
  * Widget to manage shared threshold filters : fmin, fmax and vmax.
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 3727)
+++ TXM/trunk/bundles/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesSelectionEditor.java	(revision 3728)
@@ -54,7 +54,7 @@
 		// Banality
 		Composite extendedParametersArea = this.getExtendedParametersGroup();
 
-		LabeledSpinner banality = new LabeledSpinner(extendedParametersArea, this, new Label(extendedParametersArea, SWT.NONE), new FloatSpinner(extendedParametersArea, SWT.BORDER), SpecificitiesUIMessages.banality, SpecificitiesUIMessages.banalityThreshold, true);
+		LabeledSpinner banality = new LabeledSpinner(extendedParametersArea, this, new FloatSpinner(extendedParametersArea, SWT.BORDER), SpecificitiesUIMessages.banality, SpecificitiesUIMessages.banalityThreshold, true);
 		this.banalitySpinner = (FloatSpinner) banality.getSpinner();
 		this.banalitySpinner.setMaximumAsFloat(200);
 		
