Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/CustomThresholdsGroup.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/CustomThresholdsGroup.java	(revision 0)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/CustomThresholdsGroup.java	(revision 3571)
@@ -0,0 +1,220 @@
+/**
+ * 
+ */
+package org.txm.rcp.swt.widget;
+
+import java.util.LinkedHashMap;
+
+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.RowLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Spinner;
+import org.txm.core.messages.TXMCoreMessages;
+import org.txm.core.results.TXMResult;
+import org.txm.rcp.editors.TXMEditor;
+import org.txm.rcp.swt.GLComposite;
+
+/**
+ * Widget to manage shared threshold filters : fmin, fmax and vmax.
+ * 
+ * @author sjacquot
+ *
+ */
+public class CustomThresholdsGroup extends Group {
+	
+	public static final String F = "F";
+	public static final String V = "V";
+	public static final String S = "S";
+	
+	TXMEditor<? extends TXMResult> editor;
+	LinkedHashMap<String, ThresholdField> fields;
+	Configuration[] configurations;
+	
+	/**
+	 * 
+	 * @param parent
+	 * @param editor
+	 */
+	public CustomThresholdsGroup(Composite parent, TXMEditor<? extends TXMResult> editor, Configuration... configurations) {
+		super(parent, SWT.NONE);
+		
+		this.setText(TXMCoreMessages.common_thresholds);
+		
+		this.setLayout(new RowLayout());
+		this.editor = editor;
+		this.configurations = configurations;
+
+		this.fields = new LinkedHashMap<>();
+		for (int i = 0 ; i < configurations.length ; i++) {
+			Configuration c = configurations[i];
+			
+			//if (i > 0) new Label(this, SWT.NONE).setText("|");
+			
+			ThresholdField tf = new ThresholdField(this, c);
+			fields.put(c.name, tf);
+			
+			
+		}
+	}
+	
+	@Override
+	protected void checkSubclass() { // mandatory to avoid subclass exception
+	}
+	
+	public Spinner getMinField(String key) {
+		ThresholdField f = this.fields.get(key);
+		if (f != null) {
+			return f.getMinField();
+		}
+		return null;
+	}
+	
+	public Spinner getMaxField(String key) {
+		ThresholdField f = this.fields.get(key);
+		if (f != null) {
+			return f.getMaxField();
+		}
+		return null;
+	}
+	
+	/**
+	 * @return the fMinSpinner
+	 */
+	public Spinner getFMinSpinner() {
+		return fields.get(F).getMinField();
+	}
+
+	/**
+	 * @return the fMaxSpinner
+	 */
+	public Spinner getFMaxSpinner() {
+		return fields.get(F).getMaxField();
+	}
+	
+	/**
+	 * @return the vMaxSpinner
+	 */
+	public Spinner getVMinSpinner() {
+		return fields.get(V).getMinField();
+	}
+
+	/**
+	 * @return the vMaxSpinner
+	 */
+	public Spinner getVMaxSpinner() {
+		return fields.get(V).getMaxField();
+	}
+	
+	/**
+	 * @return the vMaxSpinner
+	 */
+	public Spinner getSMinSpinner() {
+		return fields.get(S).getMinField();
+	}
+
+	/**
+	 * @return the vMaxSpinner
+	 */
+	public Spinner getSMaxSpinner() {
+		return fields.get(S).getMaxField();
+	}
+	
+	public static class Configuration {
+		public String name;
+		public int min;
+		public int max;
+		public int digits;
+		public boolean showMin;
+		public boolean showMax;
+		public Configuration(String name, int min, int max, int digits, boolean showMin, boolean showMax) {
+			this.name = name;
+			this.min = min;
+			this.max = max;
+			this.digits = digits;
+			this.showMin = showMin;
+			this.showMax = showMax;
+		}
+	}
+	
+	public static class ThresholdField extends GLComposite {
+		
+		Spinner minField;
+		Spinner maxField;
+		
+		public ThresholdField(Composite parent, Configuration c) {
+			
+			super(parent, SWT.NONE, c.name);
+			this.getLayout().numColumns = 3;
+			this.getLayout().horizontalSpacing = 2;
+			
+			if (c.showMin && !c.showMax) {
+				Label l = new Label(this, SWT.NONE);
+				l.setLayoutData(new GridData());
+				l.setText(c.name+" ≤ ");
+			}
+			
+			if (c.showMin) {
+				minField = new Spinner(this, SWT.BORDER);
+				minField.setLayoutData(new GridData());
+				minField.setMinimum(c.min);
+				minField.setMaximum(c.max);
+				minField.setDigits(c.digits);
+				minField.addSelectionListener(new SelectionListener() {
+					
+					@Override
+					public void widgetSelected(SelectionEvent e) {
+						if (minField != null) maxField.setMinimum(minField.getSelection());
+					}
+					
+					@Override
+					public void widgetDefaultSelected(SelectionEvent e) { }
+				});
+			}
+			
+			if (c.showMin && c.showMax) {
+				Label l = new Label(this, SWT.NONE);
+				l.setLayoutData(new GridData());
+				l.setText(" ≤ "+c.name+" ≤ ");
+			}
+			
+			if (!c.showMin && c.showMax) {
+				Label l = new Label(this, SWT.NONE);
+				l.setLayoutData(new GridData());
+				l.setText(c.name+" ≤ ");
+			}
+			
+			if (c.showMax) {
+				maxField = new Spinner(this, SWT.BORDER);
+				maxField.setLayoutData(new GridData());
+				maxField.setMinimum(c.min);
+				maxField.setMaximum(c.max);
+				maxField.setDigits(c.digits);
+				maxField.addSelectionListener(new SelectionListener() {
+					
+					@Override
+					public void widgetSelected(SelectionEvent e) {
+						if (maxField != null) minField.setMaximum(maxField.getSelection());
+					}
+					
+					@Override
+					public void widgetDefaultSelected(SelectionEvent e) { }
+				});
+			}
+		}
+		
+		public Spinner getMinField() {
+			
+			return minField;
+		}
+		
+		public Spinner getMaxField() {
+			
+			return maxField;
+		}		
+	}
+}

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

Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java	(revision 3570)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/ThresholdsGroup.java	(revision 3571)
@@ -111,7 +111,6 @@
 		gridLayout.makeColumnsEqualWidth = false;
 		this.setLayout(gridLayout);
 
-		
 		GridData fieldsGridData = new GridData(SWT.LEFT, SWT.CENTER, false, false);
 		fieldsGridData.minimumWidth = 100;
 		
Index: TXM/trunk/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java
===================================================================
--- TXM/trunk/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 3570)
+++ TXM/trunk/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 3571)
@@ -248,7 +248,20 @@
 		writer.println("id"+colseparator+"F");
 		
 		for (Part b : this.parts) {
-			writer.println(txtseparator+b.getName().replaceAll(txtseparator, txtseparator+txtseparator)+txtseparator+colseparator+txtseparator+b.getSize()+txtseparator);
+			String name = b.getName();
+			if (name.contains(" ∩ ")) {
+				
+				String[] split = name.split(" ∩ ");
+				name = "";
+				for (int i = 0 ; i < split.length ; i++) {
+					String s  = split[i];
+					System.out.println("s="+s);
+					if (i > 0) name += colseparator;
+					name += txtseparator + s.replaceAll(txtseparator, txtseparator+txtseparator) + txtseparator;
+				}
+			}
+			
+			writer.println(name+colseparator+txtseparator+b.getSize()+txtseparator);
 		}
 		
 		writer.close();
Index: TXM/trunk/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java
===================================================================
--- TXM/trunk/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java	(revision 3570)
+++ TXM/trunk/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java	(revision 3571)
@@ -59,6 +59,7 @@
 import org.txm.rcp.messages.TXMUIMessages;
 import org.txm.rcp.swt.GLComposite;
 import org.txm.rcp.swt.widget.AssistedChoiceQueryWidget;
+import org.txm.rcp.swt.widget.CustomThresholdsGroup;
 import org.txm.rcp.swt.widget.LabeledSpinner;
 import org.txm.rcp.swt.widget.NavigationWidget;
 import org.txm.rcp.swt.widget.PropertiesSelector;
@@ -225,7 +226,9 @@
 		// Extended parameters
 		
 		// Filters
-		ThresholdsGroup thresholdsGroup = new ThresholdsGroup(this.getExtendedParametersGroup(), this);
+		//CustomThresholdsGroup thresholdsGroup = new CustomThresholdsGroup(this.getExtendedParametersGroup(), this, new CustomThresholdsGroup.Configuration("F", 0, 100, 0, true, true), new CustomThresholdsGroup.Configuration("V", 0, 100, 0, false, true));
+		ThresholdsGroup thresholdsGroup = new ThresholdsGroup(this.getExtendedParametersGroup(), this, true);
+		
 		this.fMinSpinner = thresholdsGroup.getFMinSpinner();
 		this.fMaxSpinner = thresholdsGroup.getFMaxSpinner();
 		this.vMaxSpinner = thresholdsGroup.getVMaxSpinner();
