Index: tmp/org.txm.core/src/java/org/txm/objects/CorpusBuild.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/CorpusBuild.java	(revision 2950)
+++ tmp/org.txm.core/src/java/org/txm/objects/CorpusBuild.java	(revision 2951)
@@ -28,17 +28,12 @@
 package org.txm.objects;
 
 import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.osgi.util.NLS;
-import org.txm.core.messages.TXMCoreMessages;
 import org.txm.core.preferences.TBXPreferences;
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMResult;
@@ -47,7 +42,6 @@
 import org.txm.metadatas.MetadataGroup;
 import org.txm.metadatas.MinMaxDateGroup;
 import org.txm.utils.logger.Log;
-import org.txm.utils.zip.Zip;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
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 2950)
+++ tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 2951)
@@ -83,6 +83,7 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.IWorkbenchPartSite;
@@ -127,6 +128,7 @@
 import org.txm.rcp.swt.widget.AssistedQueryWidget;
 import org.txm.rcp.swt.widget.NavigationWidget;
 import org.txm.rcp.swt.widget.PropertiesSelector;
+import org.txm.rcp.swt.widget.ReferencePatternSelector;
 import org.txm.rcp.utils.JobHandler;
 import org.txm.rcp.views.QueriesView;
 import org.txm.searchengine.cqp.CQPSearchEngine;
@@ -306,7 +308,7 @@
 	private PropertiesSelector<WordProperty> leftViewProperties;
 	
 	@Parameter(key = ConcordancePreferences.VIEW_REFERENCE_PATTERN)
-	private PropertiesSelector<Property> refViewProperties;
+	private ReferencePatternSelector refViewProperties;
 	
 	@Parameter(key = ConcordancePreferences.RIGHT_ANALYSIS_PROPERTIES)
 	private PropertiesSelector<WordProperty> rightSortProperties;
@@ -378,7 +380,7 @@
 			public String getColumnText(Object element, int columnIndex) {
 				
 				Line line = (Line) element;
-				return line.getViewRef().toString();
+				return line.getViewRef().format();
 			}
 		});
 		viewerLeft.setContentProvider(new ConcordancesProvider());
@@ -396,9 +398,6 @@
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				
-				
-				
-				
 				StatusLine.setMessage(ConcordanceUIMessages.sortingReferenceColumn);
 				LineComparator comparator = new PropertiesReferenceComparator();
 				comparator.initialize(concordance.getCorpus());
@@ -420,7 +419,7 @@
 				}
 				
 				currentComparator = cComparator;
-
+				
 				complexsorter.setKey(4);// set ref key
 				sort();
 				StatusLine.setMessage(""); //$NON-NLS-1$
@@ -1094,20 +1093,30 @@
 			l = new Label(propertiesPanel, SWT.NONE);
 			l.setText(ConcordanceUIMessages.view);
 			l.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false));
-			refViewProperties = new PropertiesSelector<>(propertiesPanel, SWT.NONE);
+			refViewProperties = new ReferencePatternSelector(propertiesPanel, SWT.NONE);
 			refViewProperties.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false));
 			refViewProperties.setTitle(ConcordanceUIMessages.editor_21);
 			refViewProperties.setButtonText(ConcordanceUIMessages.editor_19);
 			refViewProperties.setProperties(ReferencePattern.getPossibleValues(getCorpus()));
+			refViewProperties.setPattern(null);
 			refViewProperties.addSelectionListener(new ComputeSelectionListener(this) {
 				
 				@Override
 				public void widgetSelected(SelectionEvent e) {
 					
-					concordance.setRefViewPattern(new ReferencePattern(refViewProperties.getSelectedProperties()));
+					concordance.setRefViewPattern(new ReferencePattern(refViewProperties.getSelectedProperties(), refViewProperties.getPattern()));
 					super.widgetSelected(e);
 				}
 			});
+			refViewProperties.addSelectionListener(new ComputeSelectionListener(this) {
+				
+				@Override
+				public void widgetSelected(SelectionEvent e) {
+					
+					concordance.setRefViewPattern(new ReferencePattern(refViewProperties.getSelectedProperties(), refViewProperties.getPattern()));
+					super.widgetSelected(e);
+				}
+			});
 			leftViewProperties = new PropertiesSelector<>(propertiesPanel, SWT.NONE);
 			leftViewProperties.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, false));
 			leftViewProperties.setTitle(ConcordanceUIMessages.editor_21);
@@ -2203,6 +2212,7 @@
 	}
 	
 	public static int MAX_CHARS_LENGTH_TO_SHOW = 75;
+	
 	public void resetLeftTableColumnWidths() {
 		
 		int refMax = referenceColumn.getText().length();
Index: tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ReferenceLabelProvider.java
===================================================================
--- tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ReferenceLabelProvider.java	(revision 2950)
+++ tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ReferenceLabelProvider.java	(revision 2951)
@@ -43,16 +43,18 @@
 @Deprecated
 public class ReferenceLabelProvider extends LabelProvider implements
 		ITableLabelProvider {
-
-	/* (non-Javadoc)
+	
+	/*
+	 * (non-Javadoc)
 	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
 	 */
 	@Override
 	public Image getColumnImage(Object element, int columnIndex) {
 		return null;
 	}
-
-	/* (non-Javadoc)
+	
+	/*
+	 * (non-Javadoc)
 	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
 	 */
 	@Override
@@ -60,28 +62,31 @@
 		if (columnIndex != 0)
 			throw new RuntimeException(TXMUIMessages.shouldNotHappen);
 		Line line = (Line) element;
-		return line.getViewRef().toString();
+		return line.getViewRef().format();
 	}
-
-	/* (non-Javadoc)
+	
+	/*
+	 * (non-Javadoc)
 	 * @see org.eclipse.jface.viewers.BaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
 	 */
 	@Override
 	public void addListener(ILabelProviderListener listener) {
 		// TODO Auto-generated method stub
-
+		
 	}
-
-	/* (non-Javadoc)
+	
+	/*
+	 * (non-Javadoc)
 	 * @see org.eclipse.jface.viewers.BaseLabelProvider#dispose()
 	 */
 	@Override
 	public void dispose() {
 		// TODO Auto-generated method stub
-
+		
 	}
-
-	/* (non-Javadoc)
+	
+	/*
+	 * (non-Javadoc)
 	 * @see org.eclipse.jface.viewers.BaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
 	 */
 	@Override
@@ -89,14 +94,15 @@
 		// TODO Auto-generated method stub
 		return false;
 	}
-
-	/* (non-Javadoc)
+	
+	/*
+	 * (non-Javadoc)
 	 * @see org.eclipse.jface.viewers.BaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
 	 */
 	@Override
 	public void removeListener(ILabelProviderListener listener) {
 		// TODO Auto-generated method stub
-
+		
 	}
-
-}
\ No newline at end of file
+	
+}
Index: tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/actions/DefineViewReferencePattern.java
===================================================================
--- tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/actions/DefineViewReferencePattern.java	(revision 2950)
+++ tmp/org.txm.concordance.rcp/src/org/txm/concordance/rcp/actions/DefineViewReferencePattern.java	(revision 2951)
@@ -48,6 +48,7 @@
 import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
 import org.txm.concordance.rcp.editors.ConcordanceEditor;
 import org.txm.rcp.messages.TXMUIMessages;
+import org.txm.rcp.swt.dialog.ReferencePatternSelectionDialog;
 import org.txm.searchengine.cqp.ReferencePattern;
 import org.txm.searchengine.cqp.corpus.Property;
 import org.txm.searchengine.cqp.corpus.StructuralUnit;
@@ -119,240 +120,14 @@
 		availableReferenceItems.removeAll(concordanceEditor.getSelectedViewReferences());
 		
 		// System.out.println("after avail"+availableReferenceItems);
-		DefineReferencePatternDialog d = null;
-		d = new DefineReferencePatternDialog(window.getShell(),
+		ReferencePatternSelectionDialog d = null;
+		d = new ReferencePatternSelectionDialog(window.getShell(),
 				availableReferenceItems, concordanceEditor
-						.getSelectedViewReferences());
+						.getSelectedViewReferences(), concordanceEditor.getConcordance().getRefViewPattern().getPattern());
 		
 		if (d.open() == Window.OK) {
-			concordanceEditor.setRefViewPattern(new ReferencePattern(d
-					.getSelectesdReferenceItems()));
+			concordanceEditor.setRefViewPattern(new ReferencePattern(d.getSelectedProperties(), d.getPattern()));
 			// System.out.println(concordanceEditor.getViewReferencePattern());
-			
 		}
 	}
-	
-	/**
-	 * The Class DefineReferencePatternDialog.
-	 */
-	private class DefineReferencePatternDialog extends Dialog {
-		
-		/** The available reference items. */
-		private List<Property> availableReferenceItems;
-		
-		/** The selected reference items. */
-		private List<Property> selectedReferenceItems;
-		
-		/**
-		 * Instantiates a new define reference pattern dialog.
-		 *
-		 * @param parentShell the parent shell
-		 * @param availableReferenceItems the available reference items
-		 * @param selectedReferences the selected references
-		 */
-		protected DefineReferencePatternDialog(Shell parentShell,
-				List<Property> availableReferenceItems,
-				List<Property> selectedReferences) {
-			super(parentShell);
-			
-			this.availableReferenceItems = availableReferenceItems;
-			this.selectedReferenceItems = selectedReferences;
-			this.availableReferenceItems.removeAll(selectedReferences);
-			this.setShellStyle(this.getShellStyle() | SWT.RESIZE);
-		}
-		
-		/**
-		 * Gets the selectesd reference items.
-		 *
-		 * @return the selectesd reference items
-		 */
-		public List<Property> getSelectesdReferenceItems() {
-			return selectedReferenceItems;
-		}
-		
-		/*
-		 * (non-Javadoc)
-		 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
-		 */
-		@Override
-		protected void configureShell(Shell shell) {
-			super.configureShell(shell);
-			shell.setText(TXMUIMessages.referencesDisplayOptions);
-			
-			shell.setSize(400, 500);
-			shell.setLocation(shell.getParent().getLocation());
-		}
-		
-		/*
-		 * (non-Javadoc)
-		 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
-		 */
-		@Override
-		protected Control createDialogArea(Composite parent) {
-			
-			Composite mainArea = new Composite(parent, SWT.NONE);
-			mainArea.setLayoutData(new GridData(GridData.FILL, GridData.FILL,
-					true, true));
-			mainArea.setLayout(new GridLayout(4, false));
-			
-			final org.eclipse.swt.widgets.List availbleItems = new org.eclipse.swt.widgets.List(
-					mainArea, SWT.BORDER | SWT.V_SCROLL);
-			for (Property property : availableReferenceItems) {
-				if (property instanceof VirtualProperty) {
-					VirtualProperty sProperty = (VirtualProperty) property;
-					availbleItems.add(sProperty.getFullName());
-				}
-				else if (property instanceof StructuralUnitProperty) {
-					StructuralUnitProperty sProperty = (StructuralUnitProperty) property;
-					availbleItems.add(sProperty.getStructuralUnit().getName()
-							+ ": " + property.getName()); //$NON-NLS-1$
-				}
-				else {
-					availbleItems.add(property.getName());
-				}
-			}
-			
-			GridData gridData = new GridData(GridData.FILL, GridData.FILL,
-					true, true);
-			// Point size = availbleItems.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-			// gridData.widthHint = size.x;
-			availbleItems.setLayoutData(gridData);
-			
-			Composite selectionButtons = new Composite(mainArea, SWT.NONE);
-			selectionButtons.setLayout(new GridLayout(1, false));
-			Button select = new Button(selectionButtons, SWT.ARROW | SWT.RIGHT);
-			Button unselect = new Button(selectionButtons, SWT.ARROW | SWT.LEFT);
-			
-			final org.eclipse.swt.widgets.List selectedItems = new org.eclipse.swt.widgets.List(
-					mainArea, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
-			selectedItems.setLayoutData(gridData);
-			for (Property property : selectedReferenceItems) {
-				if (property instanceof VirtualProperty) {
-					VirtualProperty sProperty = (VirtualProperty) property;
-					selectedItems.add(sProperty.getFullName());
-				}
-				else if (property instanceof StructuralUnitProperty) {
-					StructuralUnitProperty sProperty = (StructuralUnitProperty) property;
-					selectedItems.add(sProperty.getStructuralUnit().getName()
-							+ ": " + property.getName()); //$NON-NLS-1$
-				}
-				else {
-					selectedItems.add(property.getName());
-				}
-			}
-			
-			// DBL CLICK Listeners
-			selectedItems.addMouseListener(new MouseListener() {
-				
-				@Override
-				public void mouseUp(MouseEvent e) {}
-				
-				@Override
-				public void mouseDown(MouseEvent e) {}
-				
-				@Override
-				public void mouseDoubleClick(MouseEvent e) {
-					int ind = selectedItems.getSelectionIndex();
-					availbleItems.add(selectedItems.getItem(ind));
-					selectedItems.remove(ind);
-					availableReferenceItems
-							.add(selectedReferenceItems.get(ind));
-					selectedReferenceItems.remove(ind);
-					selectedItems.setSelection(ind);
-				}
-			});
-			availbleItems.addMouseListener(new MouseListener() {
-				
-				@Override
-				public void mouseUp(MouseEvent e) {}
-				
-				@Override
-				public void mouseDown(MouseEvent e) {}
-				
-				@Override
-				public void mouseDoubleClick(MouseEvent e) {
-					int ind = availbleItems.getSelectionIndex();
-					selectedItems.add(availbleItems.getItem(ind));
-					availbleItems.remove(ind);
-					selectedReferenceItems
-							.add(availableReferenceItems.get(ind));
-					availableReferenceItems.remove(ind);
-					availbleItems.setSelection(ind);
-				}
-			});
-			
-			Composite orderButtons = new Composite(mainArea, SWT.NONE);
-			orderButtons.setLayout(new GridLayout(1, false));
-			Button up = new Button(orderButtons, SWT.ARROW | SWT.UP);
-			Button down = new Button(orderButtons, SWT.ARROW | SWT.DOWN);
-			
-			select.addSelectionListener(new SelectionAdapter() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					int ind = availbleItems.getSelectionIndex();
-					selectedItems.add(availbleItems.getItem(ind));
-					availbleItems.remove(ind);
-					selectedReferenceItems
-							.add(availableReferenceItems.get(ind));
-					availableReferenceItems.remove(ind);
-					availbleItems.setSelection(ind);
-				}
-			});
-			
-			unselect.addSelectionListener(new SelectionAdapter() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					int ind = selectedItems.getSelectionIndex();
-					availbleItems.add(selectedItems.getItem(ind));
-					selectedItems.remove(ind);
-					availableReferenceItems
-							.add(selectedReferenceItems.get(ind));
-					selectedReferenceItems.remove(ind);
-					selectedItems.setSelection(ind);
-				}
-			});
-			
-			up.addSelectionListener(new SelectionAdapter() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					int ind = selectedItems.getSelectionIndex();
-					if (ind > 0) {
-						String value = selectedItems.getItem(ind);
-						selectedItems.remove(ind);
-						selectedItems.add(value, ind - 1);
-						
-						Property prop = selectedReferenceItems.get(ind);
-						selectedReferenceItems.remove(ind);
-						selectedReferenceItems.add(ind - 1, prop);
-						
-						selectedItems.setSelection(ind - 1);
-					}
-				}
-			});
-			
-			down.addSelectionListener(new SelectionAdapter() {
-				
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					int ind = selectedItems.getSelectionIndex();
-					if (ind < selectedItems.getItemCount() - 1) {
-						String value = selectedItems.getItem(ind);
-						selectedItems.remove(ind);
-						selectedItems.add(value, ind + 1);
-						
-						Property prop = selectedReferenceItems.get(ind);
-						selectedReferenceItems.remove(ind);
-						selectedReferenceItems.add(ind + 1, prop);
-						
-						selectedItems.setSelection(ind + 1);
-					}
-				}
-			});
-			
-			return mainArea;
-		}
-	}
 }
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/Reference.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/Reference.java	(revision 2950)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/Reference.java	(revision 2951)
@@ -28,6 +28,7 @@
 package org.txm.searchengine.cqp;
 
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -37,30 +38,30 @@
 
 // TODO: Auto-generated Javadoc
 /**
- * The Class Reference: 
+ * The Class Reference:
  * defines a pattern of word and/or structure properties
  *
  * @author mdecorde
  */
 public class Reference {
-
+	
 	/** The values. */
-	Map<Property, String> values;
+	LinkedHashMap<Property, String> values;
 	
 	/** The reference pattern. */
 	private ReferencePattern referencePattern = new ReferencePattern();
-
+	
 	/**
 	 * Instantiates a new reference.
 	 *
 	 * @param values the values
 	 * @param referencePattern the reference pattern
 	 */
-	public Reference(Map<Property, String> values, ReferencePattern referencePattern) {
+	public Reference(LinkedHashMap<Property, String> values, ReferencePattern referencePattern) {
 		this.values = values;
 		this.referencePattern = referencePattern;
 	}
-
+	
 	/**
 	 * Instantiates a new reference.
 	 *
@@ -71,11 +72,12 @@
 	public Reference(Match match, ReferencePattern referencePattern)
 			throws CqiClientException {
 		this.referencePattern = referencePattern;
-		this.values = new HashMap<Property, String>();
-		for (Property property : referencePattern)
+		this.values = new LinkedHashMap<>();
+		for (Property property : referencePattern) {
 			values.put(property, match.getValueForProperty(property));
+		}
 	}
-
+	
 	/**
 	 * Gets the reference pattern.
 	 *
@@ -84,7 +86,7 @@
 	public ReferencePattern getReferencePattern() {
 		return referencePattern;
 	}
-
+	
 	/**
 	 * Gets the properties.
 	 *
@@ -93,8 +95,22 @@
 	public List<Property> getProperties() {
 		return referencePattern.getProperties();
 	}
-
+	
 	/**
+	 * Gets the properties.
+	 *
+	 * @return the properties
+	 */
+	public String format() {
+		if (referencePattern.getPattern() != null && referencePattern.getPattern().length() > 0) {
+			return referencePattern.format(values.values());
+		}
+		else {
+			return toString();
+		}
+	}
+	
+	/**
 	 * Gets the value.
 	 *
 	 * @param property the property
@@ -103,7 +119,7 @@
 	public String getValue(Property property) {
 		return values.get(property);
 	}
-
+	
 	/**
 	 * Checks if is oK.
 	 *
@@ -112,45 +128,44 @@
 	public boolean isOK() {
 		return (referencePattern != null && !values.isEmpty());
 	}
-
-	/* (non-Javadoc)
+	
+	/*
+	 * (non-Javadoc)
 	 * @see java.lang.Object#toString()
 	 */
 	@Override
 	public String toString() {
 		if (values.isEmpty())
 			return ""; //$NON-NLS-1$
-		//Iterator<Entry<Property, String>> iter = values.entrySet().iterator();
-		//Entry<Property, String> entry = iter.next();
+		// Iterator<Entry<Property, String>> iter = values.entrySet().iterator();
+		// Entry<Property, String> entry = iter.next();
 		StringBuffer buffer = new StringBuffer(""); //$NON-NLS-1$
 		/*
-		 * 
-		 if (StructuralUnitProperty.class.isInstance(entry.getKey())) {
-			StructuralUnitProperty sProperty = (StructuralUnitProperty) entry.getKey();
-			//buffer.append(sProperty.getStructuralUnit() + "(" + entry.getKey().toString() + "):" + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
-			buffer.append(entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
-		} else {
-			//buffer.append(entry.getKey().toString() + ":" + entry.getValue()); //$NON-NLS-1$
-			buffer.append(entry.getValue()); //$NON-NLS-1$
+		 * if (StructuralUnitProperty.class.isInstance(entry.getKey())) {
+		 * StructuralUnitProperty sProperty = (StructuralUnitProperty) entry.getKey();
+		 * //buffer.append(sProperty.getStructuralUnit() + "(" + entry.getKey().toString() + "):" + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
+		 * buffer.append(entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
+		 * } else {
+		 * //buffer.append(entry.getKey().toString() + ":" + entry.getValue()); //$NON-NLS-1$
+		 * buffer.append(entry.getValue()); //$NON-NLS-1$
+		 * }
+		 * while (iter.hasNext()) {
+		 * entry = iter.next();
+		 * if (StructuralUnitProperty.class.isInstance(entry.getKey())) {
+		 * StructuralUnitProperty sProperty = (StructuralUnitProperty) entry.getKey();
+		 * //buffer.append(", " + sProperty.getStructuralUnit() + "(" + entry.getKey().toString() + "):" + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		 * buffer.append(", " +entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		 * } else {
+		 * //buffer.append(", " + entry.getKey().toString() + ":" + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
+		 * buffer.append(", " + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
+		 * }
+		 * }
+		 */
+		for (Property p : this.getProperties()) {
+			buffer.append(values.get(p) + ", "); //$NON-NLS-1$
 		}
-
-		while (iter.hasNext()) {
-			entry = iter.next();
-			if (StructuralUnitProperty.class.isInstance(entry.getKey())) {
-				StructuralUnitProperty sProperty = (StructuralUnitProperty) entry.getKey();
-				//buffer.append(", " + sProperty.getStructuralUnit() + "(" + entry.getKey().toString() + "):" + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				buffer.append(", " +entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			} else {
-				//buffer.append(", " + entry.getKey().toString() + ":" + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
-				buffer.append(", " + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}*/
-		for(Property p : this.getProperties())
-		{
-			buffer.append(values.get(p)+", "); //$NON-NLS-1$
-		}
 		if (buffer.length() > 0)
-			return buffer.substring(0, buffer.length()-2); 
+			return buffer.substring(0, buffer.length() - 2);
 		else
 			return ""; //$NON-NLS-1$
 	}
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java	(revision 2950)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java	(revision 2951)
@@ -317,7 +317,7 @@
 	protected StructuralUnit textStructuralUnit;
 	
 	protected WordProperty wordProperty = null;
-
+	
 	private List<VirtualProperty> virtualProperties;
 	
 	/**
@@ -993,7 +993,7 @@
 	public List<Partition> getPartitions() {
 		return getChildren(Partition.class);
 	}
-		
+	
 	/**
 	 * Gets the virtual properties of this corpus.
 	 * 
@@ -1008,7 +1008,7 @@
 		if (virtualProperties == null) {
 			virtualProperties = new ArrayList<>();
 			virtualProperties.add(new PositionProperty(this));
-			virtualProperties.add(new LengthProperty(this));
+			// virtualProperties.add(new LengthProperty(this));
 		}
 		return virtualProperties;
 	}
@@ -1066,7 +1066,8 @@
 					return property;
 				}
 			}
-		} else {
+		}
+		else {
 			for (WordProperty property : getProperties()) {
 				if (property.getName().equals(name)) {
 					return property;
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/ReferencePattern.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/ReferencePattern.java	(revision 2950)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/ReferencePattern.java	(revision 2951)
@@ -28,6 +28,7 @@
 package org.txm.searchengine.cqp;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
@@ -40,9 +41,8 @@
 import org.txm.searchengine.cqp.corpus.VirtualProperty;
 import org.txm.utils.logger.Log;
 
-// TODO: Auto-generated Javadoc
 /**
- * how to display the references.
+ * References configuration : a list of properties and optionally a sprintf like pattern
  *
  * @author mdecorde
  */
@@ -51,6 +51,8 @@
 	/** The properties. */
 	private List<Property> properties = new ArrayList<>();
 	
+	private String pattern;
+	
 	/**
 	 * 
 	 * @param corpus
@@ -59,7 +61,14 @@
 	 */
 	public static ReferencePattern stringToReferencePattern(CQPCorpus corpus, String v) {
 		try {
-			ReferencePattern props = new ReferencePattern();
+			
+			String pattern = null;
+			if (v.contains("\t\t")) {
+				pattern = v.substring(v.indexOf("\t\t") + 2);
+				v = v.substring(0, v.indexOf("\t\t"));
+			}
+			
+			ReferencePattern props = new ReferencePattern(pattern);
 			if (v == null) return props;
 			if (v.length() == 0) return props;
 			
@@ -82,6 +91,9 @@
 					}
 				}
 			}
+			
+			
+			
 			return props;
 		}
 		catch (Exception e) {
@@ -103,7 +115,6 @@
 	 * @param parameters the properties
 	 */
 	public ReferencePattern(Property prop) {
-		List<Property> properties = new ArrayList<>();
 		properties.add(prop);
 		this.properties = properties;
 	}
@@ -114,9 +125,8 @@
 	 * @param parameters the properties
 	 */
 	public ReferencePattern(StructuralUnitProperty prop) {
-		List<Property> properties = new ArrayList<>();
 		properties.add(prop);
-		this.properties = properties;
+		this.pattern = null;
 	}
 	
 	/**
@@ -126,9 +136,34 @@
 	 */
 	public ReferencePattern(List<Property> properties) {
 		this.properties = properties;
+		this.pattern = null;
 	}
 	
 	/**
+	 * Instantiates a new reference pattern.
+	 *
+	 * @param properties the properties
+	 */
+	public ReferencePattern(List<Property> properties, String pattern) {
+		this.properties = properties;
+		this.pattern = pattern;
+	}
+	
+	public ReferencePattern(Property property, String pattern) {
+		this.properties.add(property);
+		this.pattern = pattern;
+	}
+	
+	/**
+	 * Don't forget to set the properties latter
+	 * 
+	 * @param pattern the sprintf pattern
+	 */
+	public ReferencePattern(String pattern) {
+		this.pattern = pattern;
+	}
+	
+	/**
 	 * Adds the property.
 	 *
 	 * @param property the property
@@ -139,6 +174,14 @@
 		return this;
 	}
 	
+	public String format(Collection<String> collection) {
+		return String.format(pattern, collection.toArray()).toString();
+	}
+	
+	public String format(String[] values) {
+		return String.format(pattern, values).toString();
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * @see java.lang.Iterable#iterator()
@@ -157,6 +200,14 @@
 		return properties;
 	}
 	
+	public String getPattern() {
+		return pattern;
+	}
+	
+	public void setPattern(String pattern) {
+		this.pattern = pattern;
+	}
+	
 	/*
 	 * (non-Javadoc)
 	 * @see java.lang.Object#toString()
Index: tmp/org.txm.concordance.core/src/org/txm/concordance/core/preferences/ConcordancePreferences.java
===================================================================
--- tmp/org.txm.concordance.core/src/org/txm/concordance/core/preferences/ConcordancePreferences.java	(revision 2950)
+++ tmp/org.txm.concordance.core/src/org/txm/concordance/core/preferences/ConcordancePreferences.java	(revision 2951)
@@ -12,32 +12,43 @@
  *
  */
 public class ConcordancePreferences extends TXMPreferences {
-
+	
 	// FIXME; Should be stored at an higher level, eg. "Pagination"
 	@Deprecated
 	public static final String N_LINES_PER_PAGE = "n_lines_per_page"; //$NON-NLS-1$
 	
 	public static final String LEFT_CONTEXT_SIZE = "left_context_size"; //$NON-NLS-1$
+	
 	public static final String RIGHT_CONTEXT_SIZE = "right_context_size"; //$NON-NLS-1$
-
+	
 	public static final String LEFT_ANALYSIS_PROPERTIES = "left_analysis_properties"; //$NON-NLS-1$
+	
 	public static final String KEYWORD_ANALYSIS_PROPERTIES = "keyword_analysis_properties"; //$NON-NLS-1$
+	
 	public static final String RIGHT_ANALYSIS_PROPERTIES = "right_analysis_properties"; //$NON-NLS-1$
+	
 	public static final String LEFT_VIEW_PROPERTIES = "left_view_properties"; //$NON-NLS-1$
+	
 	public static final String KEYWORD_VIEW_PROPERTIES = "keyword_view_properties"; //$NON-NLS-1$
+	
 	public static final String RIGHT_VIEW_PROPERTIES = "right_view_properties"; //$NON-NLS-1$
+	
 	/** The default value is "*" -> The concordance will use ref or text_id */
 	public static final String ANALYSIS_REFERENCE_PATTERN = "analysis_pattern"; //$NON-NLS-1$
+	
 	/** The default value is "*" -> The concordance will use ref or text_id */
 	public static final String VIEW_REFERENCE_PATTERN = "view_pattern"; //$NON-NLS-1$
+	
 	public static final String LIMIT_CQL = "limit_cql"; //$NON-NLS-1$
+	
 	public static final String TOP_INDEX = "top_index"; //$NON-NLS-1$
 	
 	/**
 	 * Gets the instance.
+	 * 
 	 * @return the instance
 	 */
-	public static TXMPreferences getInstance()	{
+	public static TXMPreferences getInstance() {
 		if (!TXMPreferences.instances.containsKey(ConcordancePreferences.class)) {
 			new ConcordancePreferences();
 		}
Index: tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Line.java
===================================================================
--- tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Line.java	(revision 2950)
+++ tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Line.java	(revision 2951)
@@ -49,10 +49,10 @@
  * @author jmague
  */
 public class Line {
-
+	
 	/** The concordance. */
 	private Concordance concordance;
-
+	
 	/** The left ctx view properties. */
 	private Map<Property, List<String>> leftCtxViewPropertiesValues;
 	
@@ -61,7 +61,7 @@
 	
 	/** The right ctx view properties. */
 	private Map<Property, List<String>> rightCtxViewValues;
-
+	
 	/** The left ctx analysis property. */
 	private HashMap<Property, List<String>> leftCtxAnalysisValues;
 	
@@ -72,21 +72,22 @@
 	private HashMap<Property, List<String>> rightCtxAnalysisValues;
 	
 	/** The proerty values separator. */
-	public static String PROP_SEPARTOR ="_"; //$NON-NLS-1$
-
+	public static String PROP_SEPARTOR = "_"; //$NON-NLS-1$
+	
 	/** The references : view and sort */
 	private Reference refView;
+	
 	private Reference refAna;
 	
 	/** The match. */
 	private Match match;
-
+	
 	/** the line's text. */
 	private String textId;
-
+	
 	/** the ids of the keywords. */
 	private List<String> keywordsIdValues;
-
+	
 	/** The keywordpos. */
 	private int keywordpos;
 	
@@ -94,7 +95,7 @@
 	 * the @target corpus position of the query
 	 */
 	private int targetpos;
-
+	
 	/**
 	 * Instantiates a new line.
 	 *
@@ -117,8 +118,9 @@
 			Map<Property, List<String>> rightCtxViewValues,
 			HashMap<Property, List<String>> leftCtxAnalysisValues,
 			HashMap<Property, List<String>> keywordsAnalysisValues,
-			HashMap<Property, List<String>> rightCtxAnalysisValues, Reference refView,
-			Reference refAna, Match match, int targetpos) {
+			HashMap<Property, List<String>> rightCtxAnalysisValues,
+			Reference refView, Reference refAna,
+			Match match, int targetpos) {
 		this.textId = textId;
 		this.targetpos = targetpos;
 		this.keywordsIdValues = keywordsIdValues;
@@ -132,8 +134,9 @@
 		this.refView = refView;
 		this.refAna = refAna;
 		this.match = match;
-		this.keywordpos = match.getStart();	}
-
+		this.keywordpos = match.getStart();
+	}
+	
 	/**
 	 * Gets the keywords analysis property.
 	 * 
@@ -151,7 +154,7 @@
 	public HashMap<Property, List<String>> getLeftAnalysisProperty() {
 		return leftCtxAnalysisValues;
 	}
-
+	
 	/**
 	 * Gets the right ctx analysis property.
 	 * 
@@ -160,7 +163,7 @@
 	public HashMap<Property, List<String>> getRightAnalysisProperty() {
 		return rightCtxAnalysisValues;
 	}
-
+	
 	/**
 	 * Gets the keywords view properties.
 	 * 
@@ -169,7 +172,7 @@
 	public Map<Property, List<String>> getKeywordsViewProperties() {
 		return keywordsViewValues;
 	}
-
+	
 	/**
 	 * Gets the left context view properties.
 	 * 
@@ -178,7 +181,7 @@
 	public Map<Property, List<String>> getLeftCtxViewProperties() {
 		return leftCtxViewPropertiesValues;
 	}
-
+	
 	/**
 	 * Gets the right context view properties.
 	 * 
@@ -187,7 +190,7 @@
 	public Map<Property, List<String>> getRightCtxViewProperties() {
 		return rightCtxViewValues;
 	}
-
+	
 	/**
 	 * Gets the reference.
 	 * 
@@ -206,7 +209,7 @@
 		return refAna;
 	}
 	
-
+	
 	/**
 	 * Gets the Line left context size.
 	 * 
@@ -216,7 +219,7 @@
 		if (leftCtxViewPropertiesValues.values().size() == 0) return 0;
 		return leftCtxViewPropertiesValues.values().iterator().next().size();
 	}
-
+	
 	/**
 	 * Gets the Line keywords size.
 	 * 
@@ -226,7 +229,7 @@
 		if (keywordsViewValues.values().size() == 0) return 0;
 		return keywordsViewValues.values().iterator().next().size();
 	}
-
+	
 	/**
 	 * Gets the Line right context size.
 	 * 
@@ -236,7 +239,7 @@
 		if (rightCtxViewValues.values().size() == 0) return 0;
 		return rightCtxViewValues.values().iterator().next().size();
 	}
-
+	
 	/**
 	 * Gets the match.
 	 * 
@@ -250,7 +253,7 @@
 	 * Returns a string representing the left context.
 	 *
 	 * @param propertySeparator The string used to separate the dif ferent view properties for
-	 * each word
+	 *            each word
 	 * @param wordSeparator The string used to separate the dif ferent words
 	 * @param limit the limit
 	 * @return The string representation
@@ -261,14 +264,16 @@
 	}
 	
 	
+	@Override
 	public String toString() {
-		return match.toString()+"="+keywordsViewValues;
+		return match.toString() + "=" + keywordsViewValues;
 	}
+	
 	/**
 	 * Returns a string representing the left context.
 	 *
 	 * @param propertySeparator The string used to separate the dif ferent view properties for
-	 * each word
+	 *            each word
 	 * @param wordSeparator The string used to separate the dif ferent words
 	 * @param limit the limit
 	 * @return The string representation
@@ -280,18 +285,19 @@
 		
 		int currentPos = keywordpos - getLeftContextSize();
 		
-		List<String> words = new ArrayList<String>();
+		List<String> words = new ArrayList<>();
 		Map<Property, List<String>> values = getLeftCtxViewProperties();
 		int max = (limit == -1) ? (values.get(concordance
 				.getLeftViewProperties().get(0)).size()) : (limit);
 		int start = this.getLeftContextSize() - max;
 		for (int i = start; i < this.getLeftContextSize(); i++) {
-			List<String> word = new ArrayList<String>();
+			List<String> word = new ArrayList<>();
 			for (Property property : concordance.getLeftViewProperties()) {
 				List<String> ivalues = values.get(property);
 				if (ivalues == null) {
-					System.out.println("ERROR: null ivalues in "+values+" for property "+property);
-				} else {
+					System.out.println("ERROR: null ivalues in " + values + " for property " + property);
+				}
+				else {
 					word.add(ivalues.get(i));
 				}
 			}
@@ -303,16 +309,16 @@
 			
 			currentPos++; // next position
 		}
-
+		
 		return LangFormater.format(StringUtils.join(words, wordSeparator),
-				concordance.getCorpus().getLang()); //$NON-NLS-1$
+				concordance.getCorpus().getLang());
 	}
-
+	
 	/**
 	 * Returns a string representing the keywords.
 	 *
 	 * @param propertySeparator The string used to separate the dif ferent view properties for
-	 * each word
+	 *            each word
 	 * @param wordSeparator The string used to separate the dif ferent words
 	 * @return The string representation
 	 */
@@ -324,7 +330,7 @@
 	 * Returns a string representing the keywords.
 	 *
 	 * @param propertySeparator The string used to separate the dif ferent view properties for
-	 * each word
+	 *            each word
 	 * @param wordSeparator The string used to separate the dif ferent words
 	 * @return The string representation
 	 */
@@ -332,19 +338,20 @@
 		
 		int currentPos = keywordpos;
 		
-		List<String> words = new ArrayList<String>();
+		List<String> words = new ArrayList<>();
 		Map<Property, List<String>> values = getKeywordsViewProperties();
 		int s = values.get(concordance.getKeywordViewProperties().get(0)).size();
 		int keywordEndPos = keywordpos + s - 1;
-		//System.out.println("Build STR of currentpos="+currentPos+" length="+s);
+		// System.out.println("Build STR of currentpos="+currentPos+" length="+s);
 		for (int i = 0; i < s; i++) {
-			List<String> word = new ArrayList<String>();
+			List<String> word = new ArrayList<>();
 			for (Property property : concordance.getKeywordViewProperties())
 				word.add(values.get(property).get(i));
 			
-			if (currentPos == targetpos) { // highlight the @ target 
-				words.add("["+StringUtils.join(word, propertySeparator)+"]");
-			} else {
+			if (currentPos == targetpos) { // highlight the @ target
+				words.add("[" + StringUtils.join(word, propertySeparator) + "]");
+			}
+			else {
 				words.add(StringUtils.join(word, propertySeparator));
 			}
 			
@@ -355,14 +362,14 @@
 			currentPos++; // next position
 		}
 		return LangFormater.format(StringUtils.join(words, wordSeparator),
-				concordance.getCorpus().getLang()); //$NON-NLS-1$
+				concordance.getCorpus().getLang());
 	}
-
+	
 	/**
 	 * Returns a string representing the right context.
 	 *
 	 * @param propertySeparator The string used to separate the dif ferent view properties for
-	 * each word
+	 *            each word
 	 * @param wordSeparator The string used to separate the dif ferent words
 	 * @param limit the limit
 	 * @return The string representation
@@ -376,7 +383,7 @@
 	 * Returns a string representing the right context.
 	 *
 	 * @param propertySeparator The string used to separate the dif ferent view properties for
-	 * each word
+	 *            each word
 	 * @param wordSeparator The string used to separate the dif ferent words
 	 * @param limit the limit
 	 * @return The string representation
@@ -386,14 +393,14 @@
 		int s = getKeywordsSize();
 		if (s == 0) return "";
 		
-		List<String> words = new ArrayList<String>();
+		List<String> words = new ArrayList<>();
 		Map<Property, List<String>> values = getRightCtxViewProperties();
 		int max = (limit == -1) ? (values.get(concordance.getRightViewProperties().get(0)).size()) : (limit);
 		
 		int currentPos = keywordpos + s;
-		//System.out.println("Line "+keywordToString()+" right context, currentpos="+currentPos+" keywordpos="+keywordpos+" keywordlength="+s);
+		// System.out.println("Line "+keywordToString()+" right context, currentpos="+currentPos+" keywordpos="+keywordpos+" keywordlength="+s);
 		for (int i = 0; i < max; i++) {
-			List<String> word = new ArrayList<String>();
+			List<String> word = new ArrayList<>();
 			for (Property property : concordance.getRightViewProperties())
 				word.add(values.get(property).get(i));
 			words.add(StringUtils.join(word, propertySeparator));
@@ -404,7 +411,7 @@
 			currentPos++;
 		}
 		return LangFormater.format(StringUtils.join(words, wordSeparator),
-				concordance.getCorpus().getLang()); 
+				concordance.getCorpus().getLang());
 	}
 	
 	/** The properties to process. */
@@ -416,29 +423,26 @@
 	 * @param limit the limit
 	 * @return the string
 	 */
-	public String rightContextRender(int limit)
-	{
-//		if(propertiesToProcess == null)
-//			propertiesToProcess = TxmRenderer.getPropertyToRender(concordance, "jsesh"); //$NON-NLS-1$
+	public String rightContextRender(int limit) {
+		// if(propertiesToProcess == null)
+		// propertiesToProcess = TxmRenderer.getPropertyToRender(concordance, "jsesh"); //$NON-NLS-1$
 		
-		List<String> words = new ArrayList<String>();
+		List<String> words = new ArrayList<>();
 		Map<Property, List<String>> values = getRightCtxViewProperties();
 		int max = (limit == -1) ? (values.get(concordance.getRightViewProperties().get(0)).size()) : (limit);
 		
-		for (int i = 0; i < max; i++) 
-		{
-			List<String> word = new ArrayList<String>();
-			for (Property property : concordance.getRightViewProperties())
-			{
-//				if(propertiesToProcess.contains(property.getName()))
-//					word.add(TxmRenderer.jseshrenderer.render(values.get(property).get(i)));
-//				else
-					word.add(values.get(property).get(i));
+		for (int i = 0; i < max; i++) {
+			List<String> word = new ArrayList<>();
+			for (Property property : concordance.getRightViewProperties()) {
+				// if(propertiesToProcess.contains(property.getName()))
+				// word.add(TxmRenderer.jseshrenderer.render(values.get(property).get(i)));
+				// else
+				word.add(values.get(property).get(i));
 			}
 			words.add(StringUtils.join(word, "_")); //$NON-NLS-1$
 		}
 		return LangFormater.format(StringUtils.join(words, " "), //$NON-NLS-1$
-				concordance.getCorpus().getLang()); //$NON-NLS-1$
+				concordance.getCorpus().getLang());
 	}
 	
 	/**
@@ -448,25 +452,24 @@
 	 * @return the string
 	 */
 	public String keywordRender(String wordSeparator) {
-//		if(propertiesToProcess == null)
-//			propertiesToProcess = TxmRenderer.getPropertyToRender(concordance, "jsesh"); //$NON-NLS-1$
+		// if(propertiesToProcess == null)
+		// propertiesToProcess = TxmRenderer.getPropertyToRender(concordance, "jsesh"); //$NON-NLS-1$
 		
-		List<String> words = new ArrayList<String>();
+		List<String> words = new ArrayList<>();
 		Map<Property, List<String>> values = getKeywordsViewProperties();
 		for (int i = 0; i < values.get(
 				concordance.getKeywordViewProperties().get(0)).size(); i++) {
-			List<String> word = new ArrayList<String>();
-			for (Property property : concordance.getKeywordViewProperties())
-			{
-//				if(propertiesToProcess.contains(property.getName()))
-//					word.add(TxmRenderer.jseshrenderer.render(values.get(property).get(i)));
-//				else
-					word.add(values.get(property).get(i));
+			List<String> word = new ArrayList<>();
+			for (Property property : concordance.getKeywordViewProperties()) {
+				// if(propertiesToProcess.contains(property.getName()))
+				// word.add(TxmRenderer.jseshrenderer.render(values.get(property).get(i)));
+				// else
+				word.add(values.get(property).get(i));
 			}
 			words.add(StringUtils.join(word, wordSeparator));
 		}
 		return LangFormater.format(StringUtils.join(words, wordSeparator),
-				concordance.getCorpus().getLang()); //$NON-NLS-1$
+				concordance.getCorpus().getLang());
 	}
 	
 	/**
@@ -476,26 +479,26 @@
 	 * @return the string
 	 */
 	public String leftContextRender(int limit) {
-		List<String> words = new ArrayList<String>();
+		List<String> words = new ArrayList<>();
 		Map<Property, List<String>> values = getLeftCtxViewProperties();
 		int max = (limit == -1) ? (values.get(concordance
 				.getLeftViewProperties().get(0)).size()) : (limit);
 		int start = this.getLeftContextSize() - max;
 		for (int i = start; i < this.getLeftContextSize(); i++) {
-			List<String> word = new ArrayList<String>();
+			List<String> word = new ArrayList<>();
 			for (Property property : concordance.getLeftViewProperties()) {
-//				if(propertiesToProcess.contains(property.getName()))
-//					word.add(TxmRenderer.jseshrenderer.render(values.get(property).get(i)));
-//				else
-					word.add(values.get(property).get(i));
+				// if(propertiesToProcess.contains(property.getName()))
+				// word.add(TxmRenderer.jseshrenderer.render(values.get(property).get(i)));
+				// else
+				word.add(values.get(property).get(i));
 			}
 			words.add(StringUtils.join(word, "_")); //$NON-NLS-1$
 		}
-
+		
 		return LangFormater.format(StringUtils.join(words, " "), //$NON-NLS-1$
-				concordance.getCorpus().getLang()); //$NON-NLS-1$
+				concordance.getCorpus().getLang());
 	}
-
+	
 	/**
 	 * Returns a string representing the left context. Equivalent to
 	 * leftContextToString("/"," ")
@@ -503,9 +506,9 @@
 	 * @return The string representation
 	 */
 	public String leftContextToString() {
-		return leftContextToString(PROP_SEPARTOR, " ", -1); //$NON-NLS-1$ 
+		return leftContextToString(PROP_SEPARTOR, " ", -1); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Left context to string.
 	 *
@@ -513,9 +516,9 @@
 	 * @return the string
 	 */
 	public String leftContextToString(int limit) {
-		return leftContextToString(PROP_SEPARTOR, " ", limit); //$NON-NLS-1$ 
+		return leftContextToString(PROP_SEPARTOR, " ", limit); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Returns a string representing the keywords. Equivalent to
 	 * keywordToString("/"," ")
@@ -523,9 +526,9 @@
 	 * @return The string representation
 	 */
 	public String keywordToString() {
-		return keywordToString(PROP_SEPARTOR, " "); //$NON-NLS-1$ 
+		return keywordToString(PROP_SEPARTOR, " "); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Returns a string representing the right context. Equivalent to
 	 * rightContextToString("/"," ")
@@ -533,9 +536,9 @@
 	 * @return The string representation
 	 */
 	public String rightContextToString() {
-		return rightContextToString(PROP_SEPARTOR, " ", -1); //$NON-NLS-1$ 
+		return rightContextToString(PROP_SEPARTOR, " ", -1); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Right context to string.
 	 *
@@ -543,9 +546,9 @@
 	 * @return the string
 	 */
 	public String rightContextToString(int limit) {
-		return rightContextToString(PROP_SEPARTOR, " ", limit); //$NON-NLS-1$ 
+		return rightContextToString(PROP_SEPARTOR, " ", limit); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Match get start.
 	 *
@@ -554,7 +557,7 @@
 	public Integer matchGetStart() {
 		return match.getStart();
 	}
-
+	
 	/**
 	 * Match get end.
 	 *
@@ -563,7 +566,7 @@
 	public Integer matchGetEnd() {
 		return match.getEnd();
 	}
-
+	
 	/**
 	 * Match get col.
 	 *
@@ -574,7 +577,7 @@
 	public String matchGetCol(CQPCorpus corpus) throws CqiClientException {
 		return org.txm.searchengine.cqp.corpus.query.Match.getValueForProperty(corpus.getProperty("col"), match.getStart()); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Match get id.
 	 *
@@ -585,7 +588,7 @@
 	public List<String> matchGetId(CQPCorpus corpus) throws CqiClientException {
 		return org.txm.searchengine.cqp.corpus.query.Match.getValuesForProperty(corpus.getProperty("id"), match); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Match get id.
 	 *
@@ -598,7 +601,7 @@
 			throws CqiClientException {
 		return org.txm.searchengine.cqp.corpus.query.Match.getValuesForProperty(corpus.getProperty("id"), positions); //$NON-NLS-1$
 	}
-
+	
 	/**
 	 * Match get propertie.
 	 *
@@ -610,9 +613,9 @@
 	 */
 	public List<String> matchGetPropertie(CQPCorpus corpus, String property,
 			int[] positions) throws CqiClientException {
-		return org.txm.searchengine.cqp.corpus.query.Match.getValuesForProperty(corpus.getProperty(property), positions); //$NON-NLS-1$
+		return org.txm.searchengine.cqp.corpus.query.Match.getValuesForProperty(corpus.getProperty(property), positions);
 	}
-
+	
 	/**
 	 * Match get properties.
 	 *
@@ -624,9 +627,9 @@
 	 */
 	public List<String> matchGetProperties(CQPCorpus corpus, Property property,
 			int[] positions) throws CqiClientException {
-		return org.txm.searchengine.cqp.corpus.query.Match.getValuesForProperty(property, positions); //$NON-NLS-1$
+		return org.txm.searchengine.cqp.corpus.query.Match.getValuesForProperty(property, positions);
 	}
-
+	
 	/**
 	 * Gets the text id.
 	 *
@@ -635,7 +638,7 @@
 	public String getTextId() {
 		return this.textId;
 	}
-
+	
 	/**
 	 * Gets the concordance.
 	 *
@@ -644,7 +647,7 @@
 	public Concordance getConcordance() {
 		return concordance;
 	}
-
+	
 	/**
 	 * Gets the keyword ids.
 	 *
@@ -653,7 +656,7 @@
 	public Collection<? extends String> getKeywordIds() {
 		return this.keywordsIdValues;
 	}
-
+	
 	/**
 	 * Gets the keyword position.
 	 *
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 2950)
+++ tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 2951)
@@ -39,6 +39,7 @@
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -249,6 +250,10 @@
 			this.availableRightSortProperties.removeAll(pAnalysisRightProperties);
 			
 			String refPropertyNames = this.getStringParameterValue(ConcordancePreferences.VIEW_REFERENCE_PATTERN);
+			String refPropertyNames2 = this.getCorpus().getProject().getCommandPreferences("concordance").get(ConcordancePreferences.VIEW_REFERENCE_PATTERN);
+			if (refPropertyNames2 != null && refPropertyNames2.length() > 0) {
+				refPropertyNames = refPropertyNames2;
+			}
 			if ("*".equals(refPropertyNames)) {
 				Property refProperty = this.getCorpus().getProperty("ref");//$NON-NLS-1$
 				if (refProperty == null) {
@@ -801,13 +806,13 @@
 					}
 					
 					// get the kth line reference values
-					Map<Property, String> ref = new HashMap<>();
+					LinkedHashMap<Property, String> ref = new LinkedHashMap<>();
 					for (Property property : pViewRefPattern) {
 						ref.put(property, refValues.get(property).get(k).get(0));
 					}
 					
 					// get the kth line reference values
-					Map<Property, String> refAna = new HashMap<>();
+					LinkedHashMap<Property, String> refAna = new LinkedHashMap<>();
 					for (Property property : pAnalysisRefPattern) {
 						refAna.put(property, refSortValues.get(property).get(k).get(0));
 					}
@@ -1820,5 +1825,4 @@
 	public String getResultType() {
 		return ConcordanceCoreMessages.RESULT_TYPE;
 	}
-	
 }
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/antract/FixINATRSMacro.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/antract/FixINATRSMacro.groovy	(revision 2950)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/macro/projects/antract/FixINATRSMacro.groovy	(revision 2951)
@@ -19,14 +19,14 @@
 	if (!trsFile.getName().endsWith(".trs")) {
 		continue;
 	}
-	String content = trsFile.getText("UTF-8")
+	String content = trsFile.getText("ISO-8859-1")
 	content = content.replaceAll("punct=\"([^\"]+)\"\">", "punct=\"\$1\">")
 	content = content.replaceAll("<unk>", "???")
 	content = content.replaceAll(" Time=\"", " time=\"")
 	content = content.replaceAll("<w startTime=\"0.00\" endTime=\"0\" conf=\"\" pos=\"\" punct=\"\" case=\"\" ne=\"\"></w>\n", "")
 	content = content.replaceAll("<Turn startTime=\"<o,o,o>\" endTime=\"\" speaker=\"0\">\n<Sync time=\"<o,o,o>\"/>\n</Turn>\n", "")
 	content = content.replaceAll("<Section type=\"report\" startTime=\"<o,o,o>\" endTime=\"\">", "<Section type=\"report\" startTime=\"0.0\" endTime=\"\">")
-	trsFile.setText(content, "UTF-8")
+	trsFile.setText(content, "ISO-8859-1")
 }
 cpb.done()
 println "Done"
\ No newline at end of file
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/alceste/compiler.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/alceste/compiler.groovy	(revision 2950)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/alceste/compiler.groovy	(revision 2951)
@@ -164,7 +164,7 @@
 			corpus.setID(project.getName());
 			corpus.setName(project.getName());
 		}
-		corpus.setDescription("Build the Alceste import module");
+		corpus.setDescription("Built by the Alceste import module");
 
 		File cqpFile = new File(binDir,"cqp/"+corpusname+".cqp");
 cqpFile.delete()
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/corpuswizard/ImportWizard.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/corpuswizard/ImportWizard.java	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/corpuswizard/ImportWizard.java	(revision 2951)
@@ -24,6 +24,7 @@
 import org.txm.objects.Project;
 import org.txm.rcp.messages.TXMUIMessages;
 import org.txm.utils.LogMonitor;
+import org.txm.utils.io.FileCopy;
 import org.txm.utils.logger.Log;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
@@ -77,6 +78,13 @@
 				}
 				boolean newProject = (project == null);
 				if (newProject) { // it's a new project configuration
+					File settingsDirectory = new File(path, ".settings");
+					if (settingsDirectory.exists()) {
+						File settingsCopy = new File(Toolbox.workspace.getLocation(), name + "/.settings");
+						settingsCopy.getParentFile().mkdirs();
+						FileCopy.copyFiles(settingsDirectory, settingsCopy);
+					}
+					
 					project = Toolbox.workspace.getProject(name);
 					if (project == null) {
 						project = new Project(Toolbox.workspace, name);
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/ParametersView.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/ParametersView.java	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/ParametersView.java	(revision 2951)
@@ -63,6 +63,7 @@
 import org.txm.rcp.editors.TXMEditor;
 import org.txm.rcp.swt.widget.PropertiesSelector;
 import org.txm.rcp.swt.widget.QueryWidget;
+import org.txm.rcp.swt.widget.ReferencePatternSelector;
 import org.txm.searchengine.core.IQuery;
 import org.txm.searchengine.cqp.ReferencePattern;
 import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
@@ -135,7 +136,7 @@
 		final TXMResult result = reditor.getResult();
 		
 		List<Field> allfields = result.getAllFields();
-		List<Field> fields = new ArrayList<Field>();
+		List<Field> fields = new ArrayList<>();
 		for (Field f : allfields) {
 			Parameter parameter = f.getAnnotation(Parameter.class);
 			if (parameter == null) {
@@ -316,7 +317,9 @@
 					@Override
 					public void keyReleased(org.eclipse.swt.events.KeyEvent e) {
 						
-						if (e.keyCode != SWT.KEYPAD_CR && e.keyCode != SWT.CR) { return; }
+						if (e.keyCode != SWT.KEYPAD_CR && e.keyCode != SWT.CR) {
+							return;
+						}
 						try {
 							f.set(result, qw.getQuery());
 							if (activated != null && !activated.getParametersGroupsComposite().isDisposed()) {
@@ -418,7 +421,7 @@
 				// } else if (value instanceof StructuralUnit) {
 			}
 			else if (clazz.equals(WordProperty.class)) {
-				ArrayList<WordProperty> selected = new ArrayList<WordProperty>();
+				ArrayList<WordProperty> selected = new ArrayList<>();
 				selected.add((WordProperty) value);
 				c = createWordPropertyField(f, result, selected);
 				// } else if (value instanceof StructuralUnit) {
@@ -426,7 +429,7 @@
 				// SWT.NONE).setText("="+value.toString());
 			}
 			else if (clazz.equals(StructuralUnitProperty.class)) {
-				ArrayList<StructuralUnitProperty> selected = new ArrayList<StructuralUnitProperty>();
+				ArrayList<StructuralUnitProperty> selected = new ArrayList<>();
 				selected.add((StructuralUnitProperty) value);
 				c = createStructuralUnitPropertyField(f, result, selected);
 				// } else if (value instanceof ReferencePattern) {
@@ -462,16 +465,16 @@
 	
 	private Control createReferencePatternField(final Field f, final TXMResult result, ReferencePattern value) throws Exception {
 		
-		final List<Property> selected = new ArrayList<Property>();
+		final List<Property> selected = new ArrayList<>();
 		selected.addAll(value.getProperties());
 		CQPCorpus corpus = value.getCorpus();
-		PropertiesSelector<Property> selector = new PropertiesSelector<Property>(panel, SWT.NONE);
+		ReferencePatternSelector selector = new ReferencePatternSelector(panel, SWT.NONE);
 		if (corpus != null) {
-			List<Property> availables = new ArrayList<Property>();
+			List<Property> availables = new ArrayList<>();
 			availables.addAll(corpus.getOrderedProperties());
 			availables.addAll(corpus.getOrderedStructuralUnitProperties());
 			availables.removeAll(selected);
-			
+			selector.setPattern(value.getPattern());
 			selector.setProperties(availables, selected);
 		}
 		selector.addSelectionListener(new SelectionListener() {
@@ -506,13 +509,13 @@
 	protected PropertiesSelector<WordProperty> createWordPropertyField(final Field f, final TXMResult result, final List<WordProperty> selected) throws CqiClientException {
 		
 		WordProperty value = selected.get(0);
-		CQPCorpus corpus = ((WordProperty) value).getCorpus();
+		CQPCorpus corpus = value.getCorpus();
 		
 		ArrayList<WordProperty> availables = new ArrayList<>(corpus.getOrderedProperties());
 		availables.addAll(corpus.getVirtualProperties());
 		availables.remove(value);
 		
-		PropertiesSelector<WordProperty> selector = new PropertiesSelector<WordProperty>(panel, SWT.NONE);
+		PropertiesSelector<WordProperty> selector = new PropertiesSelector<>(panel, SWT.NONE);
 		selector.setProperties(availables, selected);
 		selector.addSelectionListener(new SelectionListener() {
 			
@@ -541,11 +544,11 @@
 	private PropertiesSelector<StructuralUnitProperty> createStructuralUnitPropertyField(final Field f, final TXMResult result, final List<StructuralUnitProperty> selected) throws CqiClientException {
 		
 		StructuralUnitProperty value = selected.get(0);
-		CQPCorpus corpus = ((StructuralUnitProperty) value).getCorpus();
-		ArrayList<StructuralUnitProperty> availables = new ArrayList<StructuralUnitProperty>();
+		CQPCorpus corpus = value.getCorpus();
+		ArrayList<StructuralUnitProperty> availables = new ArrayList<>();
 		availables.addAll(corpus.getOrderedStructuralUnitProperties());
 		availables.remove(value);
-		PropertiesSelector<StructuralUnitProperty> selector = new PropertiesSelector<StructuralUnitProperty>(panel, SWT.NONE);
+		PropertiesSelector<StructuralUnitProperty> selector = new PropertiesSelector<>(panel, SWT.NONE);
 		selector.setProperties(availables, selected);
 		selector.addSelectionListener(new SelectionListener() {
 			
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/TXMResultPreferencesView.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/TXMResultPreferencesView.java	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/TXMResultPreferencesView.java	(revision 2951)
@@ -27,21 +27,18 @@
 //
 package org.txm.rcp.views.cmdparameters;
 
-import java.util.ArrayList;
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.internal.resources.ProjectPreferences;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.CellLabelProvider;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.TreeViewerColumn;
-import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.KeyListener;
@@ -53,16 +50,15 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TreeItem;
 import org.eclipse.ui.IPartService;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.part.ViewPart;
 import org.osgi.service.prefs.BackingStoreException;
 import org.osgi.service.prefs.Preferences;
-import org.txm.core.preferences.TXMPreferences;
+import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMResult;
-import org.txm.objects.Project;
 import org.txm.rcp.views.corpora.CorporaView;
+import org.txm.utils.logger.Log;
 
 /**
  * Alternative display of the TXMEditor form fields
@@ -70,81 +66,97 @@
  * @author mdecorde.
  */
 public class TXMResultPreferencesView extends ViewPart {
-
+	
 	/** The ID. */
-	public static String ID = TXMResultPreferencesView.class.getName(); //$NON-NLS-1$
-
+	public static String ID = TXMResultPreferencesView.class.getName();
+	
 	private Text refs;
-	private ParametersComposite parametersComposite;	
+	
+	private ParametersComposite parametersComposite;
+	
+	static HashSet<String> txmResultEntries = new HashSet<>();
+	static {
+		txmResultEntries.add("class");
+		txmResultEntries.add("bundle_id");
+		for (Field f : TXMResult.class.getDeclaredFields()) {
+			
+			Parameter parameter = f.getAnnotation(Parameter.class);
+			if (parameter != null) {
+				txmResultEntries.add(parameter.key());
+			}
+		}
+	}
+	
 	/**
 	 * Instantiates a new queries view.
 	 */
 	public TXMResultPreferencesView() {
 		IPartService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService();
 	}
-
+	
 	@Override
 	public void dispose() {
 		IPartService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService();
 	}
-
+	
 	/**
 	 * Refresh.
 	 */
 	public static void refresh() {
-
+		
 	}
 	
 	/*
 	 * (non-Javadoc)
-	 * 
 	 * @see
 	 * org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets
 	 * .Composite)
 	 */
 	@Override
 	public void createPartControl(Composite parent) {
-
-		parent.setLayout(new GridLayout(4, false));
-
+		
+		parent.setLayout(new GridLayout(10, false));
+		
 		Button refresh = new Button(parent, SWT.PUSH);
 		refresh.setText("Refresh");
 		refresh.addSelectionListener(new SelectionListener() {
-
+			
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				Object obj = CorporaView.getFirstSelectedObject();
 				if (obj instanceof TXMResult) {
 					parametersComposite.updateEditorParameters(obj);
-				} else {
-					System.out.println("Select an object in the corpora view (current="+obj+")");
 				}
+				else {
+					System.out.println("Select an object in the corpora view (current=" + obj + ")");
+				}
 			}
-
+			
 			@Override
-			public void widgetDefaultSelected(SelectionEvent e) { }
+			public void widgetDefaultSelected(SelectionEvent e) {}
 		});
 		refresh.setLayoutData(GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.BEGINNING).grab(false, false).create());
 		
 		Button upButton = new Button(parent, SWT.PUSH);
 		upButton.setText("⇧");
 		upButton.addSelectionListener(new SelectionListener() {
-
+			
 			@Override
 			public void widgetSelected(SelectionEvent e) {
 				Object obj = parametersComposite.getInput();
 				if (obj instanceof TXMResult) {
-					TXMResult p = ((TXMResult)obj).getParent();
+					TXMResult p = ((TXMResult) obj).getParent();
 					if (p != null) {
 						parametersComposite.updateEditorParameters(p);
 					}
-				} else {
-					System.out.println("Select an object in the corpora view (current="+obj+")");
 				}
+				else {
+					System.out.println("Select an object in the corpora view (current=" + obj + ")");
+				}
 			}
-
+			
 			@Override
-			public void widgetDefaultSelected(SelectionEvent e) { }
+			public void widgetDefaultSelected(SelectionEvent e) {}
 		});
 		upButton.setLayoutData(GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.BEGINNING).grab(false, false).create());
 		
@@ -163,15 +175,194 @@
 			}
 			
 			@Override
-			public void keyPressed(KeyEvent e) { }
+			public void keyPressed(KeyEvent e) {}
 		});
 		
+		Button addNodeButton = new Button(parent, SWT.PUSH);
+		addNodeButton.setText("+ node");
+		addNodeButton.addSelectionListener(new SelectionListener() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				try {
+					onAddNodeSelected(e);
+					parametersComposite.getTreeViewer().refresh();
+				}
+				catch (BackingStoreException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
+			}
+			
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {}
+		});
+		addNodeButton.setLayoutData(GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.BEGINNING).grab(false, false).create());
+		
+		Button addEntryButton = new Button(parent, SWT.PUSH);
+		addEntryButton.setText("+ entry");
+		addEntryButton.addSelectionListener(new SelectionListener() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				try {
+					onAddEntrySelected(e);
+					parametersComposite.getTreeViewer().refresh();
+				}
+				catch (BackingStoreException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
+			}
+			
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {}
+		});
+		addEntryButton.setLayoutData(GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.BEGINNING).grab(false, false).create());
+		
+		Button removeEntryButton = new Button(parent, SWT.PUSH);
+		removeEntryButton.setText("-");
+		removeEntryButton.addSelectionListener(new SelectionListener() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				try {
+					onRemoveEntrySelected(e);
+					parametersComposite.getTreeViewer().refresh();
+				}
+				catch (BackingStoreException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
+			}
+			
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {}
+		});
+		removeEntryButton.setLayoutData(GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.BEGINNING).grab(false, false).create());
+		
 		refresh.setLayoutData(GridDataFactory.fillDefaults().align(GridData.BEGINNING, GridData.BEGINNING).grab(false, false).create());
-
+		
 		parametersComposite = new ParametersComposite(parent, SWT.NONE);
-		parametersComposite.setLayoutData(GridDataFactory.fillDefaults().align(GridData.FILL, GridData.FILL).grab(true, true).span(4, 1).create());
+		parametersComposite.setLayoutData(GridDataFactory.fillDefaults().align(GridData.FILL, GridData.FILL).grab(true, true).span(8, 1).create());
 	}
-
+	
+	protected void onAddEntrySelected(SelectionEvent e) throws BackingStoreException {
+		ISelection isel = parametersComposite.getTreeViewer().getSelection();
+		if (isel.isEmpty()) return;
+		
+		if (isel instanceof StructuredSelection) {
+			StructuredSelection sel = (StructuredSelection) isel;
+			Object obj = sel.getFirstElement();
+			
+			ProjectPreferences pref = null;
+			if (obj instanceof ProjectPreferences) {
+				pref = (ProjectPreferences) obj;
+			}
+			else if (obj instanceof Object[]) {
+				Object[] objs = (Object[]) obj;
+				if (!(objs[0] instanceof ProjectPreferences)) {
+					return;
+				}
+				pref = (ProjectPreferences) objs[0];
+			}
+			else {
+				return;
+			}
+			
+			InputDialog d = new InputDialog(e.display.getActiveShell(), "new entry", "new entry key", "", null);
+			if (d.open() == InputDialog.OK) {
+				if (java.util.Arrays.asList(pref.keys()).contains(d.getValue())) {
+					Log.warning(NLS.bind("Could not create the {0} entry: The {0} entry already exists", d.getValue()));
+				}
+				else {
+					pref.put(d.getValue(), "");
+				}
+			}
+		}
+	}
+	
+	protected void onRemoveEntrySelected(SelectionEvent e) throws BackingStoreException {
+		ISelection isel = parametersComposite.getTreeViewer().getSelection();
+		if (isel.isEmpty()) return;
+		
+		if (isel instanceof StructuredSelection) {
+			StructuredSelection sel = (StructuredSelection) isel;
+			Object obj = sel.getFirstElement();
+			
+			ProjectPreferences pref = null;
+			String entry = null;
+			if (obj instanceof ProjectPreferences) {
+				pref = (ProjectPreferences) obj;
+			}
+			else if (obj instanceof Object[]) {
+				Object[] objs = (Object[]) obj;
+				if (!(objs[0] instanceof ProjectPreferences)) {
+					return;
+				}
+				pref = (ProjectPreferences) objs[0];
+				entry = objs[1].toString();
+			}
+			else {
+				return;
+			}
+			
+			if (entry != null) {
+				if (pref.get("class", null) != null && txmResultEntries.contains(entry)) {
+					return;
+				}
+				if (MessageDialog.openQuestion(e.display.getActiveShell(), "Removing entry: " + entry, "Continue ?")) {
+					pref.remove(entry);
+				}
+			}
+			else {
+				if (pref.get("class", null) != null) {
+					return;
+				}
+				
+				if (MessageDialog.openQuestion(e.display.getActiveShell(), "Removing node: " + pref.name(), "Continue ?")) {
+					pref.removeNode();
+				}
+			}
+		}
+	}
+	
+	protected void onAddNodeSelected(SelectionEvent e) throws BackingStoreException {
+		ISelection isel = parametersComposite.getTreeViewer().getSelection();
+		if (isel.isEmpty()) return;
+		
+		if (isel instanceof StructuredSelection) {
+			StructuredSelection sel = (StructuredSelection) isel;
+			Object obj = sel.getFirstElement();
+			
+			ProjectPreferences pref = null;
+			if (obj instanceof ProjectPreferences) {
+				pref = (ProjectPreferences) obj;
+			}
+			else if (obj instanceof Object[]) {
+				Object[] objs = (Object[]) obj;
+				if (!(objs[0] instanceof ProjectPreferences)) {
+					return;
+				}
+				pref = (ProjectPreferences) objs[0];
+			}
+			else {
+				return;
+			}
+			
+			
+			InputDialog d = new InputDialog(e.display.getActiveShell(), "new node", "new node name", "", null);
+			if (d.open() == InputDialog.OK) {
+				if (pref.nodeExists(d.getValue())) {
+					Log.warning(NLS.bind("Could not create the {0} entry: The {0} node already exists", d.getValue()));
+				}
+				else {
+					pref.node(d.getValue());
+				}
+			}
+		}
+	}
+	
 	@Override
 	public void setFocus() {
 		// TODO Auto-generated method stub
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/ParametersComposite.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/ParametersComposite.java	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/cmdparameters/ParametersComposite.java	(revision 2951)
@@ -23,6 +23,7 @@
 import org.txm.core.preferences.TXMPreferences;
 import org.txm.core.results.TXMResult;
 import org.txm.objects.Project;
+import org.txm.rcp.IImageKeys;
 import org.txm.rcp.preferences.RCPPreferences;
 import org.txm.rcp.swt.GLComposite;
 
@@ -157,6 +158,10 @@
 					else {
 						cell.setText(c.name());
 					}
+					
+					if (c.get("class", null) != null && c.get("class", null).startsWith("org.txm")) {
+						cell.setImage(IImageKeys.getImage(IImageKeys.PROJECT));
+					}
 				}
 				else if (element instanceof Object[]) {
 					Object[] c = (Object[]) element;
@@ -250,6 +255,10 @@
 		references = split;
 	}
 	
+	public TreeViewer getTreeViewer() {
+		return tv;
+	}
+	
 	public Object getInput() {
 		return tv.getInput();
 	}
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties	(revision 2951)
@@ -1,6 +1,8 @@
 #Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
 #TXM messages generated by the PluginMessagesManager class
 #Tue Dec 18 10:24:08 CET 2018
+
+pattern=motif
 
 EMPTY = \	\n
 
@@ -161,7 +163,8 @@
 
 common_areYouSure                         = Êtes-vous sûr(e) ?
 common_beginning                          = Début
-common_displayOptions                     = Options d'affichage
+common_displayOptions                     = Options d'affichage
+common_displayOptionsOfP0                     = {0} - Options d'affichage
 common_end                                = Fin
 common_enterRegularExpressionOfYourSearch = Saisissez l'expression régulière de votre recherche
 common_refresh                            = Mettre à jour
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/TXMUIMessages.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/TXMUIMessages.java	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/TXMUIMessages.java	(revision 2951)
@@ -7,9 +7,9 @@
 public class TXMUIMessages extends NLS {
 	
 	private static final String BUNDLE_NAME = "org.txm.rcp.messages.messages"; //$NON-NLS-1$
-
+	
 	public static String theP0FileAlreadyExistsWouldYouLikeToReplaceIt;
-
+	
 	public static String theP0directoryNotABinaryCorpus;
 	
 	public static String P0CorpusLoaded;
@@ -176,6 +176,8 @@
 	
 	public static String common_displayOptions;
 	
+	public static String common_displayOptionsOfP0;
+	
 	public static String common_end;
 	
 	public static String common_enterRegularExpressionOfYourSearch;
@@ -1149,9 +1151,13 @@
 	public static String SourceDirectoryPage_6;
 	
 	public static String SourceDirectoryPage_8;
-
+	
 	public static String updateWarning;
+	
 	public static String abortingWindowsUpdate;
+	
+	public static String pattern;
+	
 	static {
 		// initialize resource bundle
 		Utf8NLS.initializeMessages(BUNDLE_NAME, TXMUIMessages.class);
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties	(revision 2951)
@@ -1,6 +1,8 @@
 #Generated by ResourceBundle Editor (http://essiembre.github.io/eclipse-rbe/)
 #TXM messages generated by the PluginMessagesManager class
 #Tue Dec 18 10:24:08 CET 2018
+
+pattern=pattern
 
 EMPTY = \	\n
 
@@ -202,7 +204,8 @@
 
 common_areYouSure                         = Are you sure ?
 common_beginning                          = Beginning
-common_displayOptions                     = Display options
+common_displayOptions                     = Display options
+common_displayOptionsOfP0                     = {0} display options
 common_end                                = End
 common_enterRegularExpressionOfYourSearch = Enter the regular expression of your search
 common_refresh                            = Update
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 2951)
@@ -79,6 +79,7 @@
 import org.txm.rcp.swt.widget.NewNavigationWidget;
 import org.txm.rcp.swt.widget.PropertiesSelector;
 import org.txm.rcp.swt.widget.QueryWidget;
+import org.txm.rcp.swt.widget.ReferencePatternSelector;
 import org.txm.rcp.utils.JobHandler;
 import org.txm.rcp.utils.SWTEditorsUtils;
 import org.txm.rcp.views.corpora.CorporaView;
@@ -1352,6 +1353,14 @@
 						((Viewer) object).setData(BaseAbstractComputeListener.IGNORE_EVENT, false);
 					}
 				}
+				else if (object instanceof ReferencePatternSelector) {
+					if (value instanceof ReferencePattern) {
+						ReferencePattern ref = (ReferencePattern) value;
+						ReferencePatternSelector selector = (ReferencePatternSelector) object;
+						selector.setSelectedProperties(ref.getProperties());
+						selector.setPattern(ref.getPattern());
+					}
+				}
 				else if (object instanceof PropertiesSelector) {
 					// multiple
 					if (value instanceof List || value instanceof ArrayList) {
@@ -1429,6 +1438,7 @@
 	 * Updates the result parameters from the editor declared parameters annotations in both TXMEditor and TXMResult.
 	 * Manages these widgets at this moment: ToolItem, FloatSpinner, Spinner, Text, Button, Viewer, PropertiesSelector, NewNavigationWidget, AssistedQueryWidget, QueryWidget.
 	 */
+	@SuppressWarnings("unchecked")
 	public void autoUpdateResultFromEditorParameters() {
 		
 		List<Field> fields = this.getAllParameterFields();
@@ -1478,21 +1488,30 @@
 						value = selection.getFirstElement();
 					}
 				}
+				else if (object instanceof ReferencePatternSelector) {
+					Field resultField = this.getResult().getField(parameter.key());
+					if (resultField != null) {
+						if (resultField.getType().isAssignableFrom(ReferencePattern.class)) {
+							ReferencePatternSelector selector = (ReferencePatternSelector) object;
+							ReferencePattern ref = new ReferencePattern(selector.getSelectedProperties(), selector.getPattern());
+							value = ref;
+						}
+					}
+				}
 				else if (object instanceof PropertiesSelector) {
 					Field resultField = this.getResult().getField(parameter.key());
 					if (resultField != null) {
 						// multiple
 						if (resultField.getType().isAssignableFrom(List.class)) {
-							value = new ArrayList(((PropertiesSelector) object).getSelectedProperties()); // need to copy the list otherwise the properties selector modify the result itself through
-																											 // reference
+							value = new ArrayList<>(((PropertiesSelector<Property>) object).getSelectedProperties());
+							// need to copy the list otherwise the properties selector modify the result itself through reference
 						}
 						else if (resultField.getType().isAssignableFrom(ReferencePattern.class)) {
-							value = new ReferencePattern(((PropertiesSelector) object).getSelectedProperties()); // need to copy the list otherwise the properties selector modify the result itself
-																												 // through reference
+							value = new ReferencePattern(((PropertiesSelector<Property>) object).getSelectedProperties());
 						}
 						// single
 						else {
-							value = ((PropertiesSelector) object).getSelectedProperties().get(0);
+							value = ((PropertiesSelector<Property>) object).getSelectedProperties().get(0);
 						}
 					}
 				}
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/ReferencePatternSelectionDialog.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/ReferencePatternSelectionDialog.java	(revision 0)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/ReferencePatternSelectionDialog.java	(revision 2951)
@@ -0,0 +1,169 @@
+// Copyright © 2010-2020 ENS de Lyon., University of Franche-Comté
+// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of
+// Lyon 2, University of Franche-Comté, University of Nice
+// Sophia Antipolis, University of Paris 3.
+// 
+// The TXM platform is free software: you can redistribute it
+// and/or modify it under the terms of the GNU General Public
+// License as published by the Free Software Foundation,
+// either version 2 of the License, or (at your option) any
+// later version.
+// 
+// The TXM platform is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied
+// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+// PURPOSE. See the GNU General Public License for more
+// details.
+// 
+// You should have received a copy of the GNU General
+// Public License along with the TXM platform. If not, see
+// http://www.gnu.org/licenses.
+// 
+// 
+// 
+// $LastChangedDate:$
+// $LastChangedRevision:$
+// $LastChangedBy:$ 
+//
+package org.txm.rcp.swt.dialog;
+
+import java.util.List;
+
+import org.apache.commons.lang.StringUtils;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.txm.rcp.messages.TXMUIMessages;
+import org.txm.rcp.swt.GLComposite;
+import org.txm.searchengine.cqp.corpus.Property;
+
+/**
+ * The dialog box called to select the reference pattern properties and sprintf pattern.
+ * 
+ * @ author mdecorde
+ */
+public class ReferencePatternSelectionDialog extends MultiplePropertySelectionDialog<Property> {
+	
+	Text patternText;
+	
+	Label patternLabel;
+	
+	String pattern;
+	
+	public ReferencePatternSelectionDialog(Shell shell, List<Property> availableProperties, List<Property> selectedProperties, String pattern) {
+		super(shell, availableProperties, selectedProperties, 20);
+		this.pattern = pattern;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+	 */
+	@Override
+	protected Control createDialogArea(Composite parent) {
+		Composite mainArea = (Composite) super.createDialogArea(parent);
+		
+		GLComposite line = new GLComposite(mainArea, SWT.NONE, "motif line");
+		line.setLayoutData(new GridData(SWT.WRAP, SWT.WRAP, true, true, 4, 1));
+		line.getLayout().numColumns = 2;
+		line.getLayout().horizontalSpacing = 3;
+		
+		// "properties"
+		patternLabel = new Label(line, SWT.NONE);
+		patternLabel.setText(TXMUIMessages.pattern);
+		patternLabel.setToolTipText("you need to set as many %s printf marks as selected properties.");
+		patternLabel.setLayoutData(new GridData(SWT.WRAP, SWT.CENTER, true, true));
+		
+		// "properties"
+		patternText = new Text(line, SWT.BORDER);
+		if (pattern != null) {
+			patternText.setText(pattern);
+		}
+		patternText.setToolTipText("sprintf pattern");
+		GridData gdata = new GridData(SWT.WRAP, SWT.WRAP, true, true);
+		gdata.widthHint = 200;
+		gdata.minimumWidth = 50;
+		patternText.setLayoutData(gdata);
+		patternText.addModifyListener(new ModifyListener() {
+			
+			@Override
+			public void modifyText(ModifyEvent e) {
+				if (validatePattern(patternText.getText())) {
+					pattern = patternText.getText();
+				}
+			}
+		});
+		
+		validatePattern(this.pattern);
+		
+		return mainArea;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+	 */
+	@Override
+	protected void configureShell(Shell newShell) {
+		super.configureShell(newShell);
+		newShell.setText(TXMUIMessages.referencesDisplayOptions);
+	}
+	
+	/**
+	 * Reload.
+	 */
+	@Override
+	public void reload() {
+		super.reload();
+		if (patternText != null) {
+			validatePattern(this.pattern);
+		}
+	}
+	
+	public boolean validatePattern(String pattern) {
+		if (pattern == null) return true;
+		if (pattern.length() == 0) return true;
+		
+		String s = pattern;
+		int nPercents = 0;
+		int index = s.indexOf("%");
+		while (index >= 0) {
+			s = s.substring(index + 1);
+			index = s.indexOf("%");
+			nPercents++;
+		}
+		
+		if (nPercents < this.getSelectedProperties().size()) {
+			Color a = new Color(patternText.getDisplay(), 255, 0, 0);
+			patternText.setBackground(a);
+			String s2 = StringUtils.join(getSelectedProperties(), ", ");
+			patternText.setToolTipText(NLS.bind("not enough ''%'' pattern in ''{0}'' for the ''{1}'' properties.", pattern, s2));
+			return false;
+		}
+		else {
+			if (patternText.getParent() != null && patternText.getParent().getBackground() != null) {
+				patternText.setBackground(patternText.getParent().getBackground());
+			}
+			return true;
+		}
+	}
+	
+	public String getPattern() {
+		return pattern;
+	}
+	
+	public void setPattern(String pattern) {
+		if (!patternText.isDisposed()) {
+			patternText.setText(pattern);
+			this.pattern = pattern;
+		}
+	}
+}

Property changes on: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/ReferencePatternSelectionDialog.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/MultiplePropertySelectionDialog.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/MultiplePropertySelectionDialog.java	(revision 2950)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/dialog/MultiplePropertySelectionDialog.java	(revision 2951)
@@ -159,6 +159,7 @@
 		
 		availablePropertiesView = new org.eclipse.swt.widgets.List(mainArea, SWT.BORDER | SWT.V_SCROLL);
 		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+		gridData.heightHint = 500;
 		availablePropertiesView.setLayoutData(gridData);
 		
 		Composite selectionButtons = new Composite(mainArea, SWT.NONE);
@@ -168,6 +169,7 @@
 		
 		selectedPropertiesView = new org.eclipse.swt.widgets.List(mainArea, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
 		gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+		gridData.heightHint = 500;
 		selectedPropertiesView.setLayoutData(gridData);
 		
 		Composite orderButtons = new Composite(mainArea, SWT.NONE);
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ReferencePatternSelector.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ReferencePatternSelector.java	(revision 0)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ReferencePatternSelector.java	(revision 2951)
@@ -0,0 +1,91 @@
+package org.txm.rcp.swt.widget;
+
+import java.util.ArrayList;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.txm.rcp.swt.dialog.ReferencePatternSelectionDialog;
+import org.txm.searchengine.cqp.corpus.Property;
+
+public class ReferencePatternSelector extends PropertiesSelector<Property> {
+	
+	Text patternText;
+	
+	Label patternLabel;
+	
+	private String pattern;
+	
+	public ReferencePatternSelector(Composite parent, int style) {
+		super(parent, style);
+		
+		this.setLayout(new GridLayout(4, false));
+		
+		// "properties"
+		patternLabel = new Label(this, SWT.NONE);
+		patternLabel.setText("");
+		patternLabel.setToolTipText("");
+		patternLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, true));
+	}
+	
+	/**
+	 * Show editor dialog.
+	 */
+	@Override
+	public void showEditorDialog() {
+		if (availableProperties == null) {
+			return;
+		}
+		
+		ArrayList<Property> previousAvailable = new ArrayList<>(availableProperties);
+		ArrayList<Property> previousSelectedProperties = new ArrayList<>(selectedProperties);
+		
+		ReferencePatternSelectionDialog dialog = new ReferencePatternSelectionDialog(this.getShell(), availableProperties, selectedProperties, pattern);
+		if (dialog.open() == ReferencePatternSelectionDialog.OK) {
+			this.pattern = dialog.getPattern();
+		}
+		else {
+			availableProperties.clear();
+			availableProperties.addAll(previousAvailable);
+			selectedProperties.clear();
+			selectedProperties.addAll(previousSelectedProperties);
+		}
+	}
+	
+	@Override
+	public void refresh() {
+		super.refresh();
+		refreshLabel();
+		
+	}
+	
+	protected void refreshLabel() {
+		if (pattern != null && pattern.length() > 0) {
+			this.patternLabel.setText("(" + pattern + ")");
+		}
+		else {
+			this.patternLabel.setText("");
+		}
+	}
+	
+	@Override
+	public void addSelectionListener(SelectionListener listener) {
+		openEditDialog.addSelectionListener(listener);
+	}
+	
+	public String getPattern() {
+		return pattern;
+	}
+	
+	public void setPattern(String pattern) {
+		this.pattern = pattern;
+		
+		refreshLabel();
+		
+		this.layout(true);
+	}
+}

Property changes on: tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ReferencePatternSelector.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.rcp/plugin.xml
===================================================================
--- tmp/org.txm.rcp/plugin.xml	(revision 2950)
+++ tmp/org.txm.rcp/plugin.xml	(revision 2951)
@@ -145,13 +145,13 @@
             class="org.txm.rcp.views.cmdparameters.ParametersView"
             icon="icons/functions/Properties.png"
             id="org.txm.rcp.views.cmdparameters.ParametersView"
-            name="%view.name.11"
+            name="Parameters panel"
             restorable="true">
       </view>
       <view
             category="org.txm.rcp.debug"
             class="org.txm.rcp.views.debug.TXMResultDebugView"
-            icon="icons/functions/Properties.png"
+            icon="icons/debug.png"
             id="org.txm.rcp.views.debug.TXMResultDebugView"
             name="%view.name.12"
             restorable="true">
@@ -179,21 +179,13 @@
             parentCategory="org.txm.rcp">
       </category>
       <view
-            category="org.txm.rcp.debug"
+            category="org.txm.rcp"
             class="org.txm.rcp.views.cmdparameters.TXMResultPreferencesView"
             icon="icons/functions/Properties.png"
             id="org.txm.rcp.views.cmdparameters.TXMResultPreferencesView"
-            name="Properties"
+            name="Selection preferences"
             restorable="true">
       </view>
-      <view
-            category="org.txm.rcp.debug"
-            class="org.txm.rcp.views.cmdparameters.TXMResultPreferencesView"
-            icon="icons/functions/Properties.png"
-            id="org.txm.rcp.views.cmdparameters.TXMResultPreferencesView"
-            name="%view.name.11"
-            restorable="true">
-      </view>
    </extension>
    <extension
          point="org.eclipse.core.runtime.adapters">
Index: tmp/org.txm.rcp/icons/debug.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.rcp/icons/debug.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

