Index: tmp/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java
===================================================================
--- tmp/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java	(revision 507)
+++ tmp/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java	(revision 508)
@@ -376,30 +376,13 @@
 	public void createPartControl(Composite parent) {
 		super.createPartControl(parent);
 		
-		//TODO: hack until the parameter area is fully designed
-		parent = new Composite(parent, SWT.NONE);
-		FormLayout parentLayout = new FormLayout();
-		parent.setLayout(parentLayout);
-		parent.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
-		
 		Composite paramArea = this.getCommandParametersGroup();
 		paramArea.setLayout(new FormLayout());
 		
 		// info&navigation panel
-		final Composite infosArea = new Composite(parent, SWT.NONE);
-		FormData infosLayoutData = new FormData();
-		infosLayoutData.top = new FormAttachment(paramArea, 0);
-		infosLayoutData.left = new FormAttachment(0);
-		infosLayoutData.right = new FormAttachment(100);
-		infosArea.setLayoutData(infosLayoutData);
+		final Composite infosArea = this.topToolBar.installGroup("Infos", "Informations and Navigation", null);
 
-		Composite resultArea = new Composite(parent, SWT.NONE);
-		FormData resultLayoutData = new FormData();
-		resultLayoutData.top = new FormAttachment(infosArea, 0);
-		resultLayoutData.left = new FormAttachment(0);
-		resultLayoutData.right = new FormAttachment(100);
-		resultLayoutData.bottom = new FormAttachment(100);
-		resultArea.setLayoutData(resultLayoutData);
+		Composite resultArea = this.getDisplayArea();
 
 		// on créé une Query, ici le pivot de la concordance est "[]"
 		// Query Area: query itself + view properties
Index: tmp/org.txm.annotation.rcp/src/org/txm/annoation/rcp/concordance/AnnotationButton.java
===================================================================
--- tmp/org.txm.annotation.rcp/src/org/txm/annoation/rcp/concordance/AnnotationButton.java	(revision 0)
+++ tmp/org.txm.annotation.rcp/src/org/txm/annoation/rcp/concordance/AnnotationButton.java	(revision 508)
@@ -0,0 +1,22 @@
+package org.txm.annoation.rcp.concordance;
+
+import org.txm.concordance.rcp.editors.ConcordanceEditor;
+import org.txm.concordance.rcp.editors.ConcordanceEditorButton;
+
+public class AnnotationButton extends ConcordanceEditorButton {
+
+	public AnnotationButton(ConcordanceEditor editor) {
+		super(editor);
+	}
+
+	@Override
+	public String getName() {
+		return "Annotation";
+	}
+
+	@Override
+	public boolean install() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+}

Property changes on: tmp/org.txm.annotation.rcp/src/org/txm/annoation/rcp/concordance/AnnotationButton.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.annotation.rcp/plugin.xml
===================================================================
--- tmp/org.txm.annotation.rcp/plugin.xml	(revision 507)
+++ tmp/org.txm.annotation.rcp/plugin.xml	(revision 508)
@@ -308,4 +308,11 @@
                </with>
             </definition>
   </extension>
+  <extension
+        point="org.txm.concordance.rcp.concordanceeditor.button">
+     <button
+           class="org.txm.annoation.rcp.concordance.AnnotationButton"
+           name="Annotation">
+     </button>
+  </extension>
 </plugin>
Index: tmp/org.txm.annotation.rcp/META-INF/MANIFEST.MF
===================================================================
--- tmp/org.txm.annotation.rcp/META-INF/MANIFEST.MF	(revision 507)
+++ tmp/org.txm.annotation.rcp/META-INF/MANIFEST.MF	(revision 508)
@@ -9,8 +9,13 @@
  org.eclipse.core.commands,
  org.eclipse.jface,
  org.eclipse.ui.workbench;visibility:=reexport,
- org.txm.rcp;bundle-version="0.8.0";visibility:=reexport
-Export-Package: org.txm.annotation.rcp.commands,
+ org.txm.rcp;bundle-version="0.8.0";visibility:=reexport,
+ org.txm.concordance.core;bundle-version="1.0.0",
+ org.txm.concordance.rcp;bundle-version="1.0.0"
+Export-Package: org.txm.annoation.rcp.concordance,
+ org.txm.annotation.rcp.commands,
  org.txm.annotation.rcp.commands.krview,
+ org.txm.annotation.rcp.editors.imports.sections,
+ org.txm.annotation.rcp.preferences,
  org.txm.annotation.rcp.views.knowledgerepositories,
  org.txm.rcp.tests
Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java	(revision 507)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/SWTChartsComponentsProvider.java	(revision 508)
@@ -31,6 +31,7 @@
 import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.ToolBar;
 import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.swt.widgets.Widget;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
@@ -813,12 +814,16 @@
 	public static ChartEditorPart getActiveChartEditor(ExecutionEvent event)	{
 		ChartEditorPart chartEditor = null;
 
+		Event eevent = (Event)event.getTrigger();
+		Widget widget = eevent.widget;
 		// Toolbars
-		if(event != null && ((Event)event.getTrigger()).widget instanceof ToolItem)	{
-			if(((ToolItem)((Event)event.getTrigger()).widget).getParent() instanceof ChartEditorToolBar)	{
+		if(event != null && widget instanceof ToolItem)	{
+			ToolItem to = (ToolItem) widget;
+			ToolBar parent = to.getParent();
+			if(to.getParent() instanceof ChartEditorToolBar)	{
 				chartEditor = ((ChartEditorToolBar)((ToolItem)((Event)event.getTrigger()).widget).getParent()).getEditorPart();	
 			}
-			if(((ToolItem)((Event)event.getTrigger()).widget).getParent() instanceof AdvancedChartEditorToolBar)	{
+			if(to.getParent() instanceof AdvancedChartEditorToolBar)	{
 				chartEditor = ((AdvancedChartEditorToolBar)((ToolItem)((Event)event.getTrigger()).widget).getParent()).getEditorPart();
 			}
 		}
Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditorPart.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditorPart.java	(revision 507)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/editors/ChartEditorPart.java	(revision 508)
@@ -129,29 +129,30 @@
 	
 	@Override
 	public void createPartControl(Composite parent) {
-
-		// to hide and display the command and rendering parameters composite
-		this.initParentLayout(parent, 2);
+		super.createPartControl(parent);
 		
-		this.toolBar = new TXMEditorToolBar(parent, SWT.FLAT, this);
+//		// to hide and display the command and rendering parameters composite
+//		this.initParentLayout(parent, 2);
+//		
+//		this.topToolBar = new TXMEditorToolBar(parent, SWT.FLAT, "top", this);
+//		
+//		
+//		GridData gd2 = new GridData();
+//		gd2.grabExcessHorizontalSpace = false;
+//		this.topToolBar.setLayoutData(gd2);
+//		//this.toolBar.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
+//		
 		
-		
-		GridData gd2 = new GridData();
-		gd2.grabExcessHorizontalSpace = false;
-		this.toolBar.setLayoutData(gd2);
-		//this.toolBar.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
-		
-		
 		// Toolbar
-		this.chartToolBar = new ChartEditorToolBar(parent, SWT.FLAT, this);
+		this.chartToolBar = new ChartEditorToolBar(this.getTopToolBarContainer(), SWT.FLAT | SWT.RIGHT, this);
 		//this.chartToolBar.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_RED));
 
 		
 		// Tests with groups instead of tabs 
 		// FIXME: command parameters composite
-		this.commandParametersComposite = new Composite(parent, SWT.NONE);
-		this.commandParametersGroup = this.initCommandParametersGroup(2);
-		this.commandParametersGroup.pack();
+//		this.computingParametersGroup = new Composite(parent, SWT.NONE);
+//		this.commandParametersGroup = this.initCommandParametersGroup(2);
+//		this.commandParametersGroup.pack();
 
 		
 //		// FIXME: Tab folder tests
@@ -220,23 +221,19 @@
 
 		//new ToolItem(this.chartToolBar, SWT.SEPARATOR);
 		
-		
 		// Advanced tool bar
-		this.advancedToolBarComposite = new Composite(parent, SWT.NONE);
-		Group group = this.initGroup(this.advancedToolBarComposite, 2, this.chartToolBar, "Rendering parameters", "Show/Hide rendering parameters", "icons/show_rendering_parameters.png");
+		//this.advancedToolBarComposite = new Composite(parent, SWT.NONE);
+		Group group = this.topToolBar.installGroup("Rendering parameters", "Show/Hide rendering parameters", "platform:/plugin/org.txm.chartsengine.rcp/icons/show_rendering_parameters.png");
 		this.advancedChartToolBar = new AdvancedChartEditorToolBar(group, SWT.FLAT, this);
 //		this.advancedToolBar.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
-		this.advancedToolBarComposite.pack(true);
-		group.pack(true);
-		this.advancedChartToolBar.pack(true);
+//		this.advancedToolBarComposite.pack(true);
 		
-		
 		// Chart composite
 		ChartComposite chartComposite = this.getSWTChartsComponentsProvider().createComposite(this, parent);
 		GridData gd = new GridData(GridData.FILL_BOTH);
-		gd.grabExcessVerticalSpace = true;
-		gd.grabExcessHorizontalSpace = true;
-		gd.horizontalSpan = 2; // 2 for match the command parameters toolbar AND the chart toolbar
+//		gd.grabExcessVerticalSpace = true;
+//		gd.grabExcessHorizontalSpace = true;
+//		gd.horizontalSpan = 2; // 2 for match the command parameters toolbar AND the chart toolbar
 		chartComposite.setLayoutData(gd);
 		
 		// FIXME: open dialog box message if the composite doesn't contain any chart (typically when the charts engine doesn't contain chart creator for the specified result data type)
Index: tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java
===================================================================
--- tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java	(revision 507)
+++ tmp/org.txm.chartsengine.rcp/src/org/txm/chartsengine/rcp/swt/AdvancedChartEditorToolBar.java	(revision 508)
@@ -8,6 +8,7 @@
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ToolBar;
 import org.eclipse.swt.widgets.ToolItem;
 import org.txm.chartsengine.core.ChartsEngine;
 import org.txm.chartsengine.core.preferences.ChartsEnginePreferences;
@@ -23,17 +24,26 @@
  * @author sjacquot
  *
  */
-public class AdvancedChartEditorToolBar extends ChartEditorToolBar {
+public class AdvancedChartEditorToolBar extends ToolBar {
 
+	private ChartEditorPart chartEditorPart;
+
+	public ChartEditorPart getEditorPart() {
+		return chartEditorPart;
+	}
 	
+	@Override
+	protected void checkSubclass() { } // if this method is not defined then te ToolBar cannot be subclassed
+	
 	/**
 	 *
 	 * @param parent
 	 * @param style
 	 */
 	public AdvancedChartEditorToolBar(Composite parent, int style, final ChartEditorPart chartEditorPart) {
-		super(parent, style, "AdvancedChartEditorToolBar", chartEditorPart); //$NON-NLS-1$
-
+		super(parent, style); //$NON-NLS-1$
+		
+		this.chartEditorPart = chartEditorPart;
 		// FIXME: tests
 		//this.setLayout(new FormLayout());
 		//this.setLayout(new GridLayout());
Index: tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java
===================================================================
--- tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 507)
+++ tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 508)
@@ -155,8 +155,8 @@
 				this.parameters.put(ConcordancePreferences.VIEW_REFERENCEPATTERN, ref);
 				this.parameters.put(ConcordancePreferences.ANALYSIS_REFERENCEPATTERN, ref);
 			} else {
-				this.parameters.put(ConcordancePreferences.VIEW_REFERENCEPATTERN, "text");
-				this.parameters.put(ConcordancePreferences.ANALYSIS_REFERENCEPATTERN, "text");
+				this.parameters.put(ConcordancePreferences.VIEW_REFERENCEPATTERN, "text_id");
+				this.parameters.put(ConcordancePreferences.ANALYSIS_REFERENCEPATTERN, "text_id");
 			}
 			
 			this.setParameters(this.parameters);
Index: tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RWorkspace.java
===================================================================
--- tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RWorkspace.java	(revision 507)
+++ tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RWorkspace.java	(revision 508)
@@ -1343,7 +1343,6 @@
 				rPackagesPath = rPackagesPath.replace("\\", "/"); //$NON-NLS-1$ //$NON-NLS-2$
 			}
 
-
 			// set proxy configuration using detected system proxy if exists
 			SystemProxyDetector conf = new SystemProxyDetector();
 			this.initializeRWorkspaceConnectionConfiguration(conf);
Index: tmp/org.txm.concordance.rcp/plugin.xml
===================================================================
--- tmp/org.txm.concordance.rcp/plugin.xml	(revision 507)
+++ tmp/org.txm.concordance.rcp/plugin.xml	(revision 508)
@@ -2,6 +2,7 @@
 <?eclipse version="3.4"?>
 <plugin>
   <extension-point id="org.txm.rcp.extensionpoint.backtotext" name="Back to text" schema="schema/org.txm.rcp.extensionpoint.backtotext.exsd"/>
+  <extension-point id="org.txm.concordance.rcp.concordanceeditor.button" name="concordance column" schema="schema/org.txm.concordance.rcp.concordanceeditor.button.exsd"/>
 
    <extension
          point="org.eclipse.core.runtime.adapters">
Index: tmp/org.txm.concordance.rcp/schema/org.txm.concordance.rcp.concordanceeditor.button.exsd
===================================================================
--- tmp/org.txm.concordance.rcp/schema/org.txm.concordance.rcp.concordanceeditor.button.exsd	(revision 0)
+++ tmp/org.txm.concordance.rcp/schema/org.txm.concordance.rcp.concordanceeditor.button.exsd	(revision 508)
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.txm.concordance.rcp" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.txm.concordance.rcp" id="org.txm.concordance.rcp.concordanceeditor.button" name="concordance column"/>
+      </appinfo>
+      <documentation>
+         Supplementary concordance bottom toolbar button
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <choice minOccurs="1" maxOccurs="unbounded">
+            <element ref="button"/>
+         </choice>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="button">
+      <complexType>
+         <attribute name="class" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn="org.txm.concordance.rcp.editors.ConcordanceEditorButton:"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>

Property changes on: tmp/org.txm.concordance.rcp/schema/org.txm.concordance.rcp.concordanceeditor.button.exsd
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/LineLabelProvider.java
===================================================================
--- tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/LineLabelProvider.java	(revision 507)
+++ tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/LineLabelProvider.java	(revision 508)
@@ -67,13 +67,13 @@
 		case 0:
 		case 6:
 			return ""; //this is the fake column used to work around the fact that MS windows refuses to right align the 1st column  //$NON-NLS-1$
+//		case 1: // moved to the left table
+//			return line.getViewRef().toString();
 		case 1:
-			return line.getViewRef().toString();
+			return line.leftContextToString();
 		case 2:
-			return line.leftContextToString();
+			return line.keywordToString();
 		case 3:
-			return line.keywordToString();
-		case 4:
 			if (line.getAnnotation()!=null) {
 				String value = line.getAnnotationValue().getStandardName();
 				Annotation a = line.getAnnotation();
@@ -90,7 +90,7 @@
 			} else {
 				return "";
 			}
-		case 5:
+		case 4:
 			return line.rightContextToString();
 		default:
 			throw new RuntimeException(Messages.LineLabelProvider_1);
Index: tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java
===================================================================
--- tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 507)
+++ tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 508)
@@ -65,6 +65,7 @@
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Font;
@@ -85,7 +86,9 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Sash;
 import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IEditorInput;
@@ -168,14 +171,14 @@
 import org.txm.utils.logger.Log;
 
 /**
- * display the concordances parameters and results in the same editor
+ * Displays the concordances parameters and results in the same editor
  * 
  * @author mdecorde.
  */
 public class ConcordanceEditor extends TXMEditorPart {
 
 	public static final String ID = ConcordanceEditor.class.getName();
-	
+
 	/**
 	 * the limit number of annotation when a confirm dialog box is shown
 	 */
@@ -212,7 +215,6 @@
 
 	/** The available sort properties. */
 	private List<Property> availableKeywordSortProperties;
-
 	/** The selected keyword sort property. */
 	private List<Property> selectedKeywordSortProperties;
 	/** The selected left sort property. */
@@ -267,7 +269,7 @@
 	private AssistedQueryWidget queryWidget;
 
 	/** The line table viewer. */
-	private TableViewer viewer;
+	private TableViewer viewer, viewer2;
 
 	/** The reference column. */
 	private TableColumn referenceColumn;
@@ -343,10 +345,6 @@
 	/** The annot btn. */
 	private Button annotationButton;
 
-	//	/** The selected typed value for new annotations **/
-	//	private TypedValue annotSelectedTypedValue;
-	//	private AnnotationType annotSelectedType;
-
 	private Text annotationValuesText;
 	private ComboViewer annotationTypesCombo;
 
@@ -363,35 +361,25 @@
 
 	private TableColumn annotationColumn;
 
-	//	private Button addAnnotationButton;
-	//	private Button deleteAnnotationButton;
 	private Combo addRemoveCombo;
 	private Combo affectCombo;
 	private Button affectAnnotationButton;
-	//	private Button affectAnnotationToSelectionButton;
-	//	private Button affectAnnotationToConcordanceButton;
-	//	private Button affectAnnotationToPageButton;
 
-	private Label aLabel;
-
 	private Button infosAnnotTypeSelectedLink;
 
-	//	private TableColumnLayout tableLayout;
+	private Sash sash;
 
-
 	/* (non-Javadoc)
 	 * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
 	 */
 	@Override
-	public void doSave(IProgressMonitor monitor) {
-	}
+	public void doSave(IProgressMonitor monitor) { }
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.ui.part.EditorPart#doSaveAs()
 	 */
 	@Override
-	public void doSaveAs() {
-	}
+	public void doSaveAs() { }
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.ui.part.EditorPart#isDirty()
@@ -430,7 +418,7 @@
 	}
 
 	private void initializeEditor() throws PartInitException {
-		
+
 		TXMResultEditorInput input = getEditorInput();
 		TXMResult result = input.getResult();
 		if (!(result instanceof Concordance)) {
@@ -484,36 +472,21 @@
 	 */
 	@Override
 	public void createPartControl(Composite parent) {
-		this.parent = parent;
-		//		GridLayout layout = new GridLayout(1, false);
-		//		layout.horizontalSpacing = 0;
-		//		layout.verticalSpacing = 0;
-		//		parent.setLayout(layout);
+		super.createPartControl(parent); // create the top toolbar, display area and bottom toolbar
+		
+//		this.parent = parent;
+//
+//		parent.setLayout(new FormLayout());
 
-		parent.setLayout(new FormLayout());
+		Composite controlArea = getCommandParametersGroup();
 
-		Composite controlArea = new Composite(parent, SWT.NONE); // the form
-		FormData formdata1 = new FormData();
-		formdata1.top = new FormAttachment(0);
-		//formdata1.bottom = new FormAttachment(100);
-		formdata1.left = new FormAttachment(0);
-		formdata1.right = new FormAttachment(100);
-		controlArea.setLayoutData(formdata1);
-
-
-		Composite displayArea = new Composite(parent, SWT.NONE); // the lines
-		FormData formdata2 = new FormData();
-		formdata2.top = new FormAttachment(controlArea);
-		formdata2.bottom = new FormAttachment(100);
-		formdata2.left = new FormAttachment(0);
-		formdata2.right = new FormAttachment(100);
-		displayArea.setLayoutData(formdata2);
-
-		composeControlArea(controlArea);
-		composeDisplayArea(displayArea);
-
-		//if (concordance != null)
-		//	fillDisplayArea(0, nLinePerPage);
+		try {
+			composeControlArea(controlArea);
+			composeDisplayArea(getDisplayArea());
+		} catch(Exception e) {
+			System.out.println("Error while building interface: "+e.getLocalizedMessage());
+			Log.printStackTrace(e);
+		}
 	}
 
 	/**
@@ -521,21 +494,84 @@
 	 *
 	 * @param displayArea the display area
 	 */
-	private void composeDisplayArea(final Composite displayArea) {
+	private void composeDisplayArea(final Composite displayArea) throws Exception {
 		//		tableLayout = new TableColumnLayout();
-		displayArea.setLayout(new GridLayout(1, true));
+		displayArea.setLayout(new FormLayout());
 
-		viewer = new TableViewer(displayArea, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
+		viewer2 = new TableViewer(displayArea, SWT.MULTI | SWT.BORDER | SWT.VIRTUAL);
+		viewer2.getTable().addKeyListener(new TableKeyListener(viewer2));
+		viewer2.setLabelProvider(new LineLabelProvider(this) {
+			@Override
+			public String getColumnText(Object element, int columnIndex) {
+				if (columnIndex == 1) {
+					Line line = (Line) element;
+					return line.getViewRef().toString();
+				} else {
+					return "";
+				}
+			}
+		});
+		viewer2.setContentProvider(new ConcordancesProvider());
+		viewer2.getTable().setLinesVisible(true);
+		viewer2.getTable().setHeaderVisible(true);
+
+		firstColumn = new TableColumn(viewer2.getTable(), SWT.LEFT);
+		firstColumn.setWidth(0);
+
+		referenceColumn = new TableColumn(viewer2.getTable(), SWT.LEFT);
+		refreshReferenceColumnTitle();
+		referenceColumn.setToolTipText(Messages.ConcordancesEditor_1);
+		referenceColumn.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				StatusLine.setMessage(Messages.ConcordancesEditor_37);
+				LineComparator comparator = new PropertiesReferenceComparator();
+				if (viewer2.getTable().getSortColumn() != referenceColumn) {
+					viewer2.getTable().setSortColumn(null);
+					viewer2.getTable().setSortColumn(referenceColumn);
+					viewer2.getTable().setSortDirection(SWT.UP);
+				} else if (viewer2.getTable().getSortDirection() == SWT.UP) {
+					viewer2.getTable().setSortDirection(SWT.DOWN);
+					comparator = new ReverseComparator(comparator);
+				} else {
+					viewer2.getTable().setSortDirection(SWT.UP);
+				}
+				comparator.initialize(corpus);
+				currentComparator = comparator;
+				complexsorter.setKey(4);//set ref key
+				sort();
+				StatusLine.setMessage(""); //$NON-NLS-1$
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+		});
+		referenceColumn.setWidth(100);
+		
+		firstColumn = new TableColumn(viewer2.getTable(), SWT.LEFT);
+		firstColumn.setWidth(0);
+		
+		sash = new Sash(displayArea, SWT.VERTICAL);
+		sash.addSelectionListener(new SelectionAdapter() {
+		      public void widgetSelected(SelectionEvent event) {
+		        ((FormData) sash.getLayoutData()).left = new FormAttachment(0, event.x);
+		        sash.getParent().layout();
+		      }
+		    });
+		viewer = new TableViewer(displayArea, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
 		viewer.getTable().addKeyListener(new TableKeyListener(viewer));
 		viewer.setLabelProvider(new LineLabelProvider(this));
 		viewer.setContentProvider(new ConcordancesProvider());
-		viewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+		viewer.getTable().setLinesVisible(true);
+		viewer.getTable().setHeaderVisible(true);
 
 		if (corpus != null && corpus.getFont() != null && corpus.getFont().length() > 0) {
 			Font old = viewer.getTable().getFont();
 			FontData fD = old.getFontData()[0];
 			Font font = new Font(Display.getCurrent(), corpus.getFont(), fD.getHeight(), fD.getStyle()); 
 			viewer.getTable().setFont(font);
+			viewer2.getTable().setFont(font);
 		}
 
 		viewer.getTable().addListener(SWT.Resize, new Listener() {
@@ -554,54 +590,21 @@
 		});
 
 		//TODO: to enable line deletion, Concordance code must updated -> replace with key binding
-		viewer.getTable().addKeyListener(new KeyListener() {
-
+		KeyListener kldelete = new KeyListener() {
 			@Override
 			public void keyReleased(KeyEvent e) {	}
-
 			@Override
 			public void keyPressed(KeyEvent e) {
 				if (e.keyCode != SWT.DEL ) { return; }
-
 				DeleteLines.deleteConcordanceLines(ConcordanceEditor.this);
 			}
-		});
+		};
+		viewer.getTable().addKeyListener(kldelete);
+		viewer2.getTable().addKeyListener(kldelete);
 
-
 		firstColumn = new TableColumn(viewer.getTable(), SWT.LEFT);
 		firstColumn.setWidth(0);
 
-		referenceColumn = new TableColumn(viewer.getTable(), SWT.V_SCROLL | SWT.H_SCROLL);
-		refreshReferenceColumnTitle();
-		referenceColumn.setToolTipText(Messages.ConcordancesEditor_1);
-		referenceColumn.setAlignment(SWT.LEFT);
-		referenceColumn.addSelectionListener(new SelectionListener() {
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				StatusLine.setMessage(Messages.ConcordancesEditor_37);
-				LineComparator comparator = new PropertiesReferenceComparator();
-				if (viewer.getTable().getSortColumn() != referenceColumn) {
-					viewer.getTable().setSortColumn(null);
-					viewer.getTable().setSortColumn(referenceColumn);
-					viewer.getTable().setSortDirection(SWT.UP);
-				} else if (viewer.getTable().getSortDirection() == SWT.UP) {
-					viewer.getTable().setSortDirection(SWT.DOWN);
-					comparator = new ReverseComparator(comparator);
-				} else {
-					viewer.getTable().setSortDirection(SWT.UP);
-				}
-				comparator.initialize(corpus);
-				currentComparator = comparator;
-				complexsorter.setKey(4);//set ref key
-				sort();
-				StatusLine.setMessage(""); //$NON-NLS-1$
-			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-		});
-
 		leftContextColumn = new TableColumn(viewer.getTable(), SWT.RIGHT);
 		leftContextColumn.setText(Messages.ConcordancesEditor_2);
 		leftContextColumn.setToolTipText(Messages.ConcordancesEditor_2);
@@ -697,9 +700,6 @@
 
 		resetColumnWidths(); // set column widths
 
-		viewer.getTable().setLinesVisible(true);
-		viewer.getTable().setHeaderVisible(true);
-
 		createContextMenu();
 
 		// And now, a sweet piece of code :)
@@ -754,7 +754,7 @@
 			}
 		};
 
-		// Listeners to avoid 0 width clumns
+		// Listeners to avoid 0 width columns
 		referenceColumn.addControlListener(new ControlListener() {
 			@Override
 			public void controlMoved(ControlEvent e) { }
@@ -802,13 +802,60 @@
 		});
 
 		viewer.getTable().addListener(SWT.EraseItem, eraseListener);
+		
+		leftTable = viewer2.getTable();
+		rightTable = viewer.getTable();
+		viewer2.getTable().addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				rightTable.setSelection(leftTable.getSelectionIndex());
+			}
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+		vBarLeft = viewer2.getTable().getVerticalBar();
+		vBarLeft.addListener(SWT.Selection, new Listener() {
+			@Override
+			public void handleEvent(Event event) {
+				vBarRight.setSelection(vBarLeft.getSelection());
+			}
+		});
+		viewer.getTable().addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				leftTable.setSelection(rightTable.getSelectionIndex());
+			}
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+		vBarRight = viewer.getTable().getVerticalBar();
+		vBarRight.addListener(SWT.Selection, new Listener() {
+			@Override
+			public void handleEvent(Event event) {
+				vBarLeft.setSelection(vBarRight.getSelection());
+			}
+		});
 
-		//		tableLayout.setColumnData(firstColumn, new ColumnWeightData(0, false));
-		//		tableLayout.setColumnData(referenceColumn, new ColumnWeightData(1, true)); 
-		//		tableLayout.setColumnData(keywordColumn, new ColumnWeightData(1, true));
-		//		tableLayout.setColumnData(leftContextColumn, new ColumnWeightData(1, true));
-		//		tableLayout.setColumnData(annotationColumn, new ColumnWeightData(0, true));
-		//		tableLayout.setColumnData(rightContextColumn, new ColumnWeightData(1, true));
+		// set Layout datas
+		FormData data = new FormData();
+	    data.top = new FormAttachment(0); 
+	    data.bottom = new FormAttachment(100); 
+	    data.left = new FormAttachment(0);
+	    data.right = new FormAttachment(sash,0);
+	    viewer2.getTable().setLayoutData(data);
+	    
+		FormData data2 = new FormData();
+	    data2.top = new FormAttachment(0, 0); 
+	    data2.bottom = new FormAttachment(100, 0); 
+	    data2.left = new FormAttachment(10);
+	    sash.setLayoutData(data2);
+		
+		FormData data3 = new FormData();
+	    data3.top = new FormAttachment(0); 
+	    data3.bottom = new FormAttachment(100); 
+	    data3.left = new FormAttachment(sash,0);
+	    data3.right = new FormAttachment(100);
+	    viewer.getTable().setLayoutData(data3);
 	}
 
 	/**
@@ -879,6 +926,7 @@
 			return;
 
 		viewer.getControl().setRedraw(false);
+		viewer2.getControl().setRedraw(false);
 
 		from = Math.max(from, 0);
 		to = Math.min(to, concordance.getNLines() - 1);
@@ -894,12 +942,15 @@
 			lines = new ArrayList<Line>();
 
 		viewer.setInput(lines);
-		referenceColumn.pack();
+		viewer2.setInput(lines);
+//		referenceColumn.pack();
 		leftContextColumn.pack();
 		keywordColumn.pack();
 		rightContextColumn.pack();
 		viewer.getTable().pack(true);
 		viewer.getTable().getParent().layout();
+//		viewer2.getTable().pack(true);
+		viewer2.getTable().getParent().layout();
 
 		topLine = from;
 		bottomLine = to;
@@ -917,6 +968,7 @@
 		refreshReferenceColumnTitle();
 
 		viewer.getControl().setRedraw(true);
+		viewer2.getControl().setRedraw(true);
 	}
 
 	HashMap<AnnotationType, ArrayList<TypedValue>> history = new HashMap<AnnotationType, ArrayList<TypedValue>>();
@@ -935,6 +987,14 @@
 	private Label equalLabel;
 	Boolean advanced_annotation_mode = false;
 
+	private Table leftTable;
+
+	private Table rightTable;
+
+	private ScrollBar vBarLeft;
+
+	private ScrollBar vBarRight;
+
 	private void composeAnnotationArea(final Composite parent){ 
 		advanced_annotation_mode = "advanced".equals(TXMPreferences.getString(AnnotationPreferences.ANNOTATION_MODE, RCPPreferences.PREFERENCES_NODE));
 
@@ -1328,6 +1388,8 @@
 
 
 		updateAnnotationWidgetStates();
+		
+		
 
 		parent.layout();
 	}
@@ -1924,9 +1986,9 @@
 					concordance.setAnnotationOverlap(true);
 				}
 			}
-			
+
 			concordance.compute(null);
-			
+
 			StatusLine.setMessage(NLS.bind(Messages.ConcordancesEditor_19, concordance.getNLines()));
 			if (concordance.getNLines() == 1)
 				System.out.println(Messages.ConcordancesEditor_52);
@@ -1935,8 +1997,8 @@
 			else
 				System.out.println(TXMCoreMessages.COMPUTE_DONE_NO_RESULT);
 
-			
-			
+
+
 			if (oldConcordance != null) {
 				corpus.removeResult(oldConcordance);
 				oldConcordance.clean(); // drop the CQP corpus
@@ -1946,7 +2008,7 @@
 			CorporaView.refresh();
 			CorporaView.expand(corpus);
 			QueriesView.refresh();
-			
+
 			if (fillDisplay) {
 				fillDisplayArea(top, bottom);
 			}
@@ -2238,9 +2300,7 @@
 	 */
 	public int getPointedColumn() {
 		int x = getMousePosition().x; // + lineTableViewer.getTable().get;
-		int sumWidthColumn = this.referenceColumn.getWidth();
-		if (x < sumWidthColumn)
-			return 0;
+		int sumWidthColumn = 0;
 
 		sumWidthColumn += this.leftContextColumn.getWidth();
 		if (x < sumWidthColumn)
@@ -2819,12 +2879,12 @@
 			annotationColumn.setWidth(0);
 			//			tableLayout.setColumnData(annotationColumn, new ColumnWeightData(0, false));
 		}
+//
+//		referenceColumn.pack();
+//		leftContextColumn.pack();
+//		keywordColumn.pack();
+//		rightContextColumn.pack();
 
-		referenceColumn.pack();
-		leftContextColumn.pack();
-		keywordColumn.pack();
-		rightContextColumn.pack();
-
 		//viewer.getTable().layout(true, true);
 	}
 
@@ -2926,6 +2986,10 @@
 			this.refViewPattern = concordance.getRefViewPattern();
 			this.refSortPattern = concordance.getRefAnalysePattern();
 		}
+	}
 
+	public Composite getExtensionButtonComposite() {
+		// TODO Auto-generated method stub
+		return null;
 	}
 }
Index: tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditorButton.java
===================================================================
--- tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditorButton.java	(revision 0)
+++ tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditorButton.java	(revision 508)
@@ -0,0 +1,32 @@
+package org.txm.concordance.rcp.editors;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+
+/**
+ * Extension point class to add a column to the concordance result.
+ * 
+ * You need to :
+ * - define the ColumnLabelProvider methods
+ * - set a Comparator called by the ColumnSorter
+ * 
+ * @author mdecorde
+ *
+ */
+public abstract class ConcordanceEditorButton extends Button {
+	
+	protected ConcordanceEditor editor;
+	
+	public ConcordanceEditorButton(ConcordanceEditor editor) {
+		super(editor.getExtensionButtonComposite(), SWT.PUSH);
+		this.editor = editor;
+	}
+
+	/**
+	 * 
+	 * @return the column name displayed in the concordance table widget
+	 */
+	public abstract String getName();
+	
+	public abstract boolean install();
+}

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

Index: tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java
===================================================================
--- tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 507)
+++ tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java	(revision 508)
@@ -47,11 +47,11 @@
 		super.createPartControl(parent);
 
 		// Extend the chart editor tool bar
-		ToolItem separator = new ToolItem(this.toolBar, SWT.SEPARATOR);
+		ToolItem separator = new ToolItem(this.topToolBar, SWT.SEPARATOR);
 
 		
 		// Show/hide columns
-		final ToolItem showColumns = new ToolItem(this.toolBar, SWT.CHECK);
+		final ToolItem showColumns = new ToolItem(this.topToolBar, 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);
 		showColumns.setToolTipText(CAUIMessages.CHART_TOOLBAR_BUTTON_SHOW_COLUMS_TOOLTIP);
@@ -59,7 +59,7 @@
 		showColumns.setSelection(this.getBooleanParameterValue(CAPreferences.SHOW_INDIVIDUALS));
 
 		// Show/hide rows
-		final ToolItem showRows = new ToolItem(this.toolBar, SWT.CHECK);
+		final ToolItem showRows = new ToolItem(this.topToolBar, 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);
 		showRows.setToolTipText(CAUIMessages.CHART_TOOLBAR_BUTTON_SHOW_ROWS_TOOLTIP);
@@ -67,7 +67,7 @@
 		showRows.setSelection(this.getBooleanParameterValue(CAPreferences.SHOW_VARIABLES));
 
 		// Show/hide point shapes
-		final ToolItem showPointShapes = new ToolItem(this.toolBar, SWT.CHECK);
+		final ToolItem showPointShapes = new ToolItem(this.topToolBar, SWT.CHECK);
 		// FIXME: keep this for offering an option "large icons" with text in buttons ?
 		//showPointShapes.setText(CAUIMessages.SHOW_HIDE_POINT_SHAPES);
 		showPointShapes.setToolTipText(CAUIMessages.CHART_TOOLBAR_BUTTON_SHOW_HIDE_POINT_SHAPES);
@@ -78,14 +78,14 @@
 		
 
 		// Factors plane selection
-		ToolItem itemSeparator = new ToolItem(this.toolBar, SWT.SEPARATOR);
-		CLabel factorsLabel = new CLabel(this.toolBar, SWT.CENTER);
+		ToolItem itemSeparator = new ToolItem(this.topToolBar, SWT.SEPARATOR);
+		CLabel factorsLabel = new CLabel(this.topToolBar, SWT.CENTER);
 		factorsLabel.setText(CAUIMessages.CHART_TOOLBAR_AXES_SELECTION_COMBO_BOX_LABEL);
 		factorsLabel.pack();
 		itemSeparator.setWidth(factorsLabel.getBounds().width);
 	    itemSeparator.setControl(factorsLabel);
 
-	    final Combo plansCombo = new Combo(this.toolBar, SWT.READ_ONLY);
+	    final Combo plansCombo = new Combo(this.topToolBar, SWT.READ_ONLY);
 
 		// FIXME: commented because the infos panel is not ready to manage more axes
 //		ArrayList<String> planes = null;
@@ -128,7 +128,7 @@
 		}
 
 
-		ToolItem comboItem = new ToolItem(this.toolBar, SWT.SEPARATOR);
+		ToolItem comboItem = new ToolItem(this.topToolBar, SWT.SEPARATOR);
 		comboItem.setControl(plansCombo);
 		plansCombo.pack();
 		comboItem.setWidth(plansCombo.getBounds().width);
Index: tmp/org.txm.lexicaltable.rcp/src/org/txm/lexicaltable/rcp/editors/LexicalTableEditor2.java
===================================================================
--- tmp/org.txm.lexicaltable.rcp/src/org/txm/lexicaltable/rcp/editors/LexicalTableEditor2.java	(revision 507)
+++ tmp/org.txm.lexicaltable.rcp/src/org/txm/lexicaltable/rcp/editors/LexicalTableEditor2.java	(revision 508)
@@ -190,7 +190,7 @@
 		
 		super.createPartControl(parent);
 		
-		Composite paramArea = new Composite(this.commandParametersGroup, SWT.NONE);
+		Composite paramArea = new Composite(this.getCommandParametersGroup(), SWT.NONE);
 
 		GridLayout paramLayout = new GridLayout(5, false);
 		paramArea.setLayout(paramLayout);
@@ -455,7 +455,7 @@
 		
 		createContextMenu(viewer);
 		
-		this.commandParametersGroup.pack();
+		//this.commandParametersGroup.pack();
 	}
 
 	private void refreshColNames() throws StatException, CqiClientException {
Index: tmp/org.txm.cah.rcp/src/org/txm/cah/rcp/editors/CAHChartEditor.java
===================================================================
--- tmp/org.txm.cah.rcp/src/org/txm/cah/rcp/editors/CAHChartEditor.java	(revision 507)
+++ tmp/org.txm.cah.rcp/src/org/txm/cah/rcp/editors/CAHChartEditor.java	(revision 508)
@@ -49,18 +49,18 @@
 		super.createPartControl(parent);
 
 		// Extend the chart editor tool bar
-		ToolItem separator = new ToolItem(this.toolBar, SWT.SEPARATOR);
+		ToolItem separator = new ToolItem(this.topToolBar, SWT.SEPARATOR);
 
 		// Number of clusters
-		ToolItem itemSeparator = new ToolItem(this.toolBar, SWT.SEPARATOR);
-	    CLabel clustersLabel = new CLabel(this.toolBar, SWT.CENTER);
+		ToolItem itemSeparator = new ToolItem(this.topToolBar, SWT.SEPARATOR);
+	    CLabel clustersLabel = new CLabel(this.topToolBar, SWT.CENTER);
 		clustersLabel.setText(CAHUIMessages.CHART_TOOLBAR_BUTTON_NUMBER_OF_CLUSTERS);
 		clustersLabel.pack();
 		itemSeparator.setWidth(clustersLabel.getBounds().width);
 	    itemSeparator.setControl(clustersLabel);
 
-	    itemSeparator = new ToolItem(this.toolBar, SWT.SEPARATOR);
-	    this.numbersOfClusters = new Spinner(this.toolBar, SWT.BORDER);
+	    itemSeparator = new ToolItem(this.topToolBar, SWT.SEPARATOR);
+	    this.numbersOfClusters = new Spinner(this.topToolBar, SWT.BORDER);
 	    this.numbersOfClusters.setMinimum(2);
 	    this.numbersOfClusters.setIncrement(1);
 
@@ -70,7 +70,7 @@
 
 
 		// Columns
-		final ToolItem computeColumns = new ToolItem(this.toolBar, SWT.RADIO);
+		final ToolItem computeColumns = new ToolItem(this.topToolBar, SWT.RADIO);
 		computeColumns.setToolTipText(CAHUIMessages.COMPUTE_COLUMNS);
 		computeColumns.setImage(IImageKeys.getImage(CAHChartEditor.class, "icons/compute_columns.png")); //$NON-NLS-1$
 		// FIXME: keep this for offering an option "large icons" with text in buttons ?
@@ -78,7 +78,7 @@
 		computeColumns.setSelection(this.getBooleanParameterValue(CAHPreferences.COLUMNS_COMPUTING));
 
 		// Rows
-		final ToolItem computeRows = new ToolItem(this.toolBar, SWT.RADIO);
+		final ToolItem computeRows = new ToolItem(this.topToolBar, SWT.RADIO);
 		computeRows.setToolTipText(CAHUIMessages.COMPUTE_ROWS);
 		computeRows.setImage(IImageKeys.getImage(CAHChartEditor.class, "icons/compute_rows.png")); //$NON-NLS-1$
 		// FIXME: keep this for offering an option "large icons" with text in buttons ?
@@ -87,7 +87,7 @@
 
 		
 		// 2D/3D
-		final Combo displayCombo = new Combo(this.toolBar, SWT.READ_ONLY);
+		final Combo displayCombo = new Combo(this.topToolBar, SWT.READ_ONLY);
 		String items[] = { "2D", "3D" }; //$NON-NLS-1$ //$NON-NLS-2$
 		displayCombo.setItems(items);
 		if(this.getBooleanParameterValue(CAHPreferences.DISPLAY_2D))	{
@@ -97,7 +97,7 @@
 			displayCombo.select(1);
 		}
 		
-		ToolItem comboItem = new ToolItem(this.toolBar, SWT.SEPARATOR);
+		ToolItem comboItem = new ToolItem(this.topToolBar, SWT.SEPARATOR);
 		comboItem.setControl(displayCombo);
 		displayCombo.pack();
 		comboItem.setWidth(displayCombo.getBounds().width);
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java	(revision 507)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java	(revision 508)
@@ -1,47 +1,52 @@
 package org.txm.rcp.editors;
 
+import java.util.HashMap;
+
 import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.swt.SWT;
+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.RowLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
 import org.eclipse.ui.menus.IMenuService;
+import org.txm.rcp.IImageKeys;
 
 /**
  * 
- * The default TXM result editor tool bar shared by every <code>TXMEditorPart</code>.
- * The tool bar is accessible and usable in plugin.xml with the 'toolbar:TXMEditorToolBar' URI.
+ * The default TXM result editor tool bar shared by every <code>TXMEditorPart</code> used to open/close a parameter panel.
  * 
+ * The tool bar is accessible and usable in plugin.xml with the 'toolbar:toolbar_local_id' URI specified in the constructor.
+ * 
  * @author sjacquot
  *
  */
 public class TXMEditorToolBar extends ToolBar {
 
-	
 	/**
 	 * The linked <code>TXMEditorPart</code>.
 	 */
 	protected TXMEditorPart editorPart;
+	
+	private HashMap<String, Group> groups = new HashMap<String, Group>();
 
+	private Composite parametersGroupsComposite;
 
-	
-	/**
-	 * 
-	 * @param parent
-	 * @param style
-	 * @param resultEditorPart
-	 */
-	public TXMEditorToolBar(Composite parent, int style, TXMEditorPart resultEditorPart) {
-		this(parent, style, "TXMEditorToolBar", resultEditorPart); //$NON-NLS-1$
-	}
-	
 
 	/**
 	 * 
+	 * the parent layout must be a GridLayout
+	 * 
 	 * @param parent
 	 * @param style
-	 * @param toolBarId
+	 * @param toolbar_local_id
 	 * @param resultEditorPart
 	 */
-	protected TXMEditorToolBar(Composite parent, int style, String toolBarId, TXMEditorPart resultEditorPart) {
+	public TXMEditorToolBar(Composite parent, int style, String toolbar_local_id, TXMEditorPart resultEditorPart) {
 		super(parent, style);
 
 		this.editorPart = resultEditorPart;
@@ -49,10 +54,17 @@
 		// permit to contribute via plugin.xml menu extension
 		ToolBarManager manager = new ToolBarManager(this);
 		IMenuService menuService = (IMenuService) this.editorPart.getSite().getService(IMenuService.class);
-		menuService.populateContributionManager(manager, "toolbar:" + toolBarId); //$NON-NLS-1$
+		menuService.populateContributionManager(manager, "toolbar:" + toolbar_local_id); //$NON-NLS-1$
+		
+		parametersGroupsComposite = new Composite(parent, SWT.NONE);
+		GridLayout gl = new GridLayout(1, true);
+		gl.marginBottom = gl.marginHeight = gl.marginWidth = gl.marginTop = 0;
+		parametersGroupsComposite.setLayout(gl);
+		if (parent.getLayout() instanceof GridLayout)
+		parametersGroupsComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
+		
 	}
 
-
 	@Override
 	protected void checkSubclass() {
 	}
@@ -65,4 +77,81 @@
 		return editorPart;
 	}
 
+	/**
+	 * Sets the visibility state of the specified composite.
+	 * The mechanism is based on GridData.exclude to hide the composite therefore the composite must have a GridData as layout data.
+	 * 
+	 * @param composite
+	 * 
+	 */
+	public void setVisible(Composite composite, boolean visible)	{
+		((GridData)composite.getLayoutData()).exclude = !visible;
+		composite.setVisible(visible);
+		composite.layout(true);
+		editorPart.parent.layout(true);
+	}
+	
+	/**
+	 * Creates a <code>Group</code> with some configuration to make it visible/invisible and a <code>ToolItem</code> attached to the specified tool bar to show/hide this group.
+	 * 
+	 * @param composite
+	 * @param colSpan
+	 * @param toolBar
+	 * @param groupTitle
+	 * @param buttonToolTip
+	 * @param iconFilePath
+	 * @return
+	 */
+	public Group installGroup(String groupTitle, String buttonToolTip, String iconFilePath)	{
+		
+		
+		
+		if (groups.containsKey(groupTitle)) {
+			return groups.get(groupTitle);
+		}
+		
+		final Group group = new Group(parametersGroupsComposite, SWT.NONE);
+		group.setText(groupTitle);
+		
+		RowLayout layout = new RowLayout();
+		layout.wrap = true;
+		layout.center = true;
+		layout.marginWidth = layout.marginBottom = layout.marginHeight = layout.marginTop = 0;
+		group.setLayout(layout);
+		
+		GridData gd2 = new GridData(GridData.FILL_BOTH);
+		gd2.grabExcessVerticalSpace = false;
+		gd2.grabExcessHorizontalSpace = true;
+		gd2.exclude = true;
+		group.setLayoutData(gd2);
+		group.setVisible(false);
+		
+		
+		// add finally a button to the toolbar to show/hide the Group
+		final ToolItem showParameters = new ToolItem(this, SWT.CHECK | SWT.LEFT);
+		
+		if (iconFilePath != null)
+			showParameters.setImage(IImageKeys.getImage(iconFilePath));
+		else // if no icon specified, show the group title in the toolitem
+			showParameters.setText(groupTitle);
+		
+		if (buttonToolTip != null)
+			showParameters.setToolTipText(buttonToolTip);
+		
+		showParameters.setSelection(false);
+		
+		showParameters.addSelectionListener(new SelectionListener() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				setVisible(group, showParameters.getSelection());
+			}
+			
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+		
+		groups.put(groupTitle, group);
+		return group;
+	}
 }
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorPart.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorPart.java	(revision 507)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorPart.java	(revision 508)
@@ -3,6 +3,8 @@
  */
 package org.txm.rcp.editors;
 
+import java.util.HashMap;
+
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -33,7 +35,10 @@
 import org.txm.utils.logger.Log;
 
 /**
- * Base TXM result <code>EditorPart</code>.
+ * Base TXM result <code>EditorPart</code> composed of 
+ * - a main toolbar at the top
+ * - display area
+ * - a bottom toolbar at the bottom of the ditor
  * 
  * @author sjacquot
  *
@@ -41,20 +46,31 @@
 public abstract class TXMEditorPart extends EditorPart {
 
 	/**
-	 * The editor tool bar.
+	 * The editor main tool bar, positioned at the top of the editor.
 	 */
-	protected TXMEditorToolBar toolBar;
+	protected TXMEditorToolBar topToolBar;
 	
+	protected Composite displayArea;
+	
 	/**
-	 * The command parameters composite that can be hidden.
+	 * The editor bottom tool bar, positioned at the bottom of the editor.
 	 */
-	protected Composite commandParametersComposite;
-
+	protected TXMEditorToolBar bottomToolBar;
+	
 	/**
-	 * The command parameters group.
+	 * the parameters groups are added to this composite
 	 */
-	protected Group commandParametersGroup;
+	private Composite parametersGroupsComposite;
 	
+	/**
+	 * The command parameters composite that can be hidden. To add main parameters.
+	 */
+	protected Composite computingParametersGroup;
+
+	Composite parent;
+
+	private Composite topToolBarContainer;
+	
 	@Override
 	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
 		this.setSite(site);
@@ -72,98 +88,54 @@
 	@Override
 	public void createPartControl(Composite parent) {
 		
+		this.parent = parent;
+		
 		// to hide and display the command parameters composite
 		this.initParentLayout(parent, 1);
 
-		// tool bar
-		this.toolBar = new TXMEditorToolBar(parent, SWT.FLAT, this);
+		// create the top tool bar
+		topToolBarContainer = new Composite(parent, SWT.NONE);
+		topToolBarContainer.setLayoutData(new GridData(GridData.FILL,GridData.FILL,true, false));
 		
-		// command parameters composite
-		this.commandParametersComposite = new Composite(parent, SWT.NONE);
-		this.commandParametersGroup = this.initCommandParametersGroup(1);
+		RowLayout rl = new RowLayout(SWT.HORIZONTAL);
+		rl.marginTop = rl.marginHeight = rl.marginWidth = rl.marginBottom = 0;
+		topToolBarContainer.setLayout(rl);
 		
-		// show the command parameters if the result is not yet computed
-		this.setVisible(this.commandParametersComposite, this.getEditorInput().getResult().isDirty());
+		this.topToolBar = new TXMEditorToolBar(topToolBarContainer, SWT.FLAT | SWT.RIGHT, "top", this);
 		
-		this.commandParametersGroup.pack();
+		computingParametersGroup = topToolBar.installGroup("Computing parameters", "Show/Hide command parameters", "icons/show_computing_parameters.png");
+		
+		displayArea = new Composite(parent, SWT.NONE);
+		displayArea.setLayoutData(new GridData(GridData.FILL_BOTH));
+		
+		// bottom tool bar
+		this.bottomToolBar = new TXMEditorToolBar(parent, SWT.FLAT, "bottom", this);
 	}
-
-	/**
-	 * Creates the command parameters group with some configuration to make it visible/invisible.
-	 * 
-	 * @param colSpan
-	 * @return
-	 */
-	public Group initCommandParametersGroup(int colSpan)	{
-		return this.initGroup(this.commandParametersComposite, colSpan, this.toolBar, "Computing parameters", "Show/Hide command parameters", "icons/show_computing_parameters.png");
+	
+	public Composite getTopToolBarContainer() {
+		return topToolBarContainer;
 	}
 	
-	/**
-	 * Creates a <code>Group</code> with some configuration to make it visible/invisible and a <code>ToolItem</code> attached to the specified tool bar to show/hide this group.
-	 * 
-	 * @param composite
-	 * @param colSpan
-	 * @param toolBar
-	 * @param groupTitle
-	 * @param buttonToolTip
-	 * @param iconFilePath
-	 * @return
-	 */
-	public Group initGroup(final Composite composite, int colSpan, TXMEditorToolBar toolBar, String groupTitle, String buttonToolTip, String iconFilePath)	{
+	public void getComputingParametersGroup() {
 		
-		final Group group = new Group(composite, SWT.NONE);
-		group.setText(groupTitle);
-		
-		RowLayout layout = new RowLayout();
-		layout.wrap = true;
-		layout.center = true;
-		group.setLayout(layout);
-		
-		composite.setLayout(new GridLayout(1, true));
-		group.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
-		
-		GridData gd2 = new GridData(GridData.FILL_BOTH);;
-		gd2.grabExcessVerticalSpace = false;
-		gd2.grabExcessHorizontalSpace = true;
-		gd2.horizontalSpan = colSpan;
-		gd2.exclude = true;
-		composite.setLayoutData(gd2);
-		composite.setVisible(false);
-		
-		// add button to the tool bar to show/hide parameters
-		final ToolItem showParameters = new ToolItem(toolBar, SWT.CHECK);
-		showParameters.setImage(IImageKeys.getImage(toolBar.getClass(), iconFilePath));
-		showParameters.setToolTipText(buttonToolTip);
-		showParameters.setSelection(false);
-		
-		showParameters.addSelectionListener(new SelectionListener() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				setVisible(composite, showParameters.getSelection());
-			}
-			
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-				// TODO Auto-generated method stub
-			}
-		});
-		
-		return group;
 	}
 	
+	public TXMEditorToolBar getTopToolbar() {
+		return topToolBar;
+	}
+
 	/**
-	 * Sets the visibility state of the specified composite.
-	 * The mechanism is based on GridData.exclude to hide the composite therefore the composite must have a GridData as layout data.
-	 * 
-	 * @param composite
+	 * The user must configure its layout
+	 * @return
 	 */
-	public void setVisible(Composite composite, boolean visible)	{
-		((GridData)composite.getLayoutData()).exclude = !visible;
-		composite.setVisible(visible);
-		composite.getParent().layout(true);
+	public Composite getDisplayArea() {
+		return displayArea;
 	}
-	
+
+	public TXMEditorToolBar getBottomToolbar() {
+		return bottomToolBar;
+	}
+
 	/**
 	 * Crates the parent layout with some configuration to make children composite visible/invisible.
 	 * 
@@ -171,25 +143,19 @@
 	 */
 	public void initParentLayout(Composite parent, int colSpan)	{
 		GridLayout gl = new GridLayout();
-		gl.marginTop = 5;
+		gl.marginTop = 0;
 		gl.marginHeight = 0;
 		gl.marginWidth = 0;
+		gl.marginBottom = 0;
 		gl.numColumns = colSpan;
 		parent.setLayout(gl);
 	}
 
 	/**
-	 * @return the commandParametersGroup
-	 */
-	public Group getCommandParametersGroup() {
-		return commandParametersGroup;
-	}
-
-	/**
 	 * @return the commandParametersComposite
 	 */
-	public Composite getCommandParametersComposite() {
-		return commandParametersComposite;
+	public Composite getCommandParametersGroup() {
+		return computingParametersGroup;
 	}
 	
 	@Override
@@ -308,7 +274,7 @@
 		final TXMParameters parameters = null;//this.getParameters();
 		final String title = result.getName()+"...";
 		try {
-			JobHandler jobhandler = new JobHandler(title, toolBar) {
+			JobHandler jobhandler = new JobHandler(title, topToolBar) {
 				@Override
 				protected IStatus run(IProgressMonitor monitor) {
 					this.runInit(monitor);
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/base/DeleteObject.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/base/DeleteObject.java	(revision 507)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/base/DeleteObject.java	(revision 508)
@@ -141,6 +141,8 @@
 
 	/**
 	 * Delete.
+	 * 
+	 * TODO: select the parent object of the deleted object
 	 *
 	 * @param objects the objects to delete
 	 * @return 
