Index: tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java
===================================================================
--- tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 2418)
+++ tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 2419)
@@ -274,7 +274,7 @@
 			}
 		}
 		
-		List<String> colnames = partIndex.getPartnames();
+		List<String> colnames = partIndex.getPartNames();
 		
 		Collection<Line> lines = alllines.values();
 		List<String> rownames = new ArrayList<String>(lines.size());
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 2418)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 2419)
@@ -420,11 +420,24 @@
 		return this.getParts().size();
 	}
 	
+	
 	/**
+	 * Gets a part specified by its index.
+	 * 
+	 * @param index
+	 * @return
+	 */
+	public Part getPart(int index) {
+		return this.getParts().get(index);
+	}
+	
+	
+	/**
 	 * Gets the name of the parts.
 	 * 
 	 * @return the part names
 	 */
+	// FIXME: SJ: later, do not cache the names => the names may have been modified by the user
 	public List<String> getPartNames() {
 		if (this.hasBeenComputedOnce()) {
 			List<Part> parts = this.getParts();
Index: tmp/org.txm.index.core/src/org/txm/index/core/messages/messages.properties
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/messages/messages.properties	(revision 2418)
+++ tmp/org.txm.index.core/src/org/txm/index/core/messages/messages.properties	(revision 2419)
@@ -20,6 +20,8 @@
 
 indexOfP0PropertiesP1InTheP2Corpus = Index of <{0}>, properties [{1}], in the {2} corpus...
 
+indexOfP0PropertiesP1OnP2Partition = Index of <{0}>, properties [{1}], on {2} partition...
+
 lexicon = Lexicon
 
 lexiconColonP0 = Lexicon: {0}
Index: tmp/org.txm.index.core/src/org/txm/index/core/messages/IndexCoreMessages.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/messages/IndexCoreMessages.java	(revision 2418)
+++ tmp/org.txm.index.core/src/org/txm/index/core/messages/IndexCoreMessages.java	(revision 2419)
@@ -37,6 +37,7 @@
 	
 	public static String indexOfP0PropertiesP1InTheP2Corpus;
 	
+	public static String indexOfP0PropertiesP1OnP2Partition;
 	
 	
 	static {
Index: tmp/org.txm.index.core/src/org/txm/index/core/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/messages/messages_fr.properties	(revision 2418)
+++ tmp/org.txm.index.core/src/org/txm/index/core/messages/messages_fr.properties	(revision 2419)
@@ -20,6 +20,8 @@
 
 indexOfP0PropertiesP1InTheP2Corpus = Index de <{0}>, propriété(s) [{1}], dans le corpus {2}...
 
+indexOfP0PropertiesP1OnP2Partition = Index de <{0}>, propriété(s) [{1}], de la partition {2}...
+
 lexicon = Lexique
 
 lexiconColonP0 = Lexique : {0}
Index: tmp/org.txm.index.core/src/org/txm/index/core/functions/PartitionIndex.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/functions/PartitionIndex.java	(revision 2418)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/PartitionIndex.java	(revision 2419)
@@ -73,6 +73,7 @@
  * @author mdecorde
  * @author sjacquot
  */
+// FIXME: SJ: chzeck that all works well then remove the partnamtes usage
 public class PartitionIndex extends Index {
 	
 	
@@ -83,13 +84,13 @@
 	@Deprecated
 	protected boolean lexiconMode = false;
 	
-	/**
-	 * Partition part names.
-	 */
-	protected List<String> partNames = new ArrayList<>();
+	// /**
+	// * Partition part names.
+	// */
+	// protected List<String> partNames = new ArrayList<>();
 	
-
 	
+	
 	/**
 	 * 
 	 * @param parent
@@ -112,12 +113,12 @@
 	 */
 	public PartitionIndex(String parametersNodePath, Partition parent) {
 		super(parametersNodePath, parent);
-		
-		Partition partition = getParent();
-		partNames.clear();
-		for (Part part : partition.getParts()) {
-			partNames.add(part.getName());
-		}
+		//
+		// Partition partition = getParent();
+		// partNames.clear();
+		// for (Part part : partition.getParts()) {
+		// partNames.add(part.getName());
+		// }
 	}
 	
 	@Override
@@ -125,30 +126,31 @@
 		return (Partition) parent;
 	}
 	
+	
+	
 	@Override
-	public String getComputingDoneMessage() {
-		if (this.lines.isEmpty()) {
-			return TXMCoreMessages.common_noResults;
-		}
-		else {
-			return TXMCoreMessages.bind(TXMCoreMessages.common_P0ItemsForP1Occurrences, this.lines.size(), this.nTotalTokens);
-		}
+	public String getComputingStartMessage() {
+		return TXMCoreMessages.bind(IndexCoreMessages.indexOfP0PropertiesP1OnP2Partition, this.pQuery, WordProperty.propertiesToString(this.pProperties).replaceAll(TXMPreferences.LIST_SEPARATOR,
+				", "), this.getCorpus().getName()); //$NON-NLS-1$
 	}
 	
+	
+	
+	
 	@Override
 	protected boolean _compute() throws Exception {
 		lines.clear();
 		counts.clear();
-		partNames.clear();
+		// partNames.clear();
 		currentpartid = 0;
 		nTotalTokens = 0;
 		
 		Partition partition = getParent();
-		partNames.clear();
+		// partNames.clear();
 		for (Part part : partition.getParts()) {
 			scanCorpus(part);
 			currentpartid++;
-			partNames.add(part.getName());
+			// partNames.add(part.getName());
 		}
 		
 		setLineCounts();
@@ -213,18 +215,18 @@
 			Log.fine("Partition not set."); //$NON-NLS-1$
 			return false;
 		}
-		
-		if (pProperties == null || pProperties.size() == 0) {
-			Log.fine("No property set."); //$NON-NLS-1$
-			return false;
+		return super.canCompute();
+	}
+	
+	
+	@Override
+	public CQPCorpus getCorpus() {
+		try {
+			return ((Partition) this.parent).getParent();
 		}
-		
-		if (pQuery == null || pQuery.getQueryString().length() == 0) {
-			Log.fine("No query set."); //$NON-NLS-1$
-			return false;
+		catch (Exception e) {
 		}
-		
-		return true;
+		return null;
 	}
 	
 	
@@ -247,28 +249,7 @@
 	}
 	
 	
-
 	
-	/**
-	 * Gets the corpus.
-	 *
-	 * @return the corpus
-	 */
-	@Override
-	public CQPCorpus getCorpus() {
-		if (this.parent instanceof CQPCorpus) {
-			return (CQPCorpus) this.parent;
-		}
-		else if (this.parent instanceof Partition) {
-			return ((Partition) this.parent).getParent();
-		}
-		else if (this.lexicon != null) {
-			return this.lexicon.getParent();
-		}
-		else {
-			return null;
-		}
-	}
 	
 	@Override
 	public String getDetails() {
@@ -294,8 +275,8 @@
 		}
 	}
 	
-
 	
+	
 	/**
 	 * If the index has been build with corpus + property, the method returns the lexicon used.
 	 *
@@ -309,16 +290,17 @@
 		return this.lexiconMode;
 	}
 	
-
 	
+	
 	/**
 	 * update the lines counts.
 	 */
 	@Override
 	protected void setLineCounts() {
-		for (Line line : lines) {// for each Line set its count
-			int[] c = new int[partNames.size()];
-			for (int i = 0; i < partNames.size(); i++) {
+		// for each Line set its count
+		for (Line line : lines) {
+			int[] c = new int[this.getPartition().getPartsCount()];
+			for (int i = 0; i < this.getPartition().getPartsCount(); i++) {
 				if (counts.get(line.getSignature()).size() <= i) {
 					c[i] = 0;
 				}
@@ -373,17 +355,19 @@
 		return null;
 	}
 	
+	
+	
 	/**
 	 * Gets the part names.
 	 *
 	 * @return the part names
 	 */
-	public List<String> getPartnames() {
-		return partNames;
+	public List<String> getPartNames() {
+		return this.getPartition().getPartNames();
 	}
 	
-
 	
+	
 	@Override
 	public String getSimpleName() {
 		if (lexicon != null) {
@@ -409,8 +393,8 @@
 		}
 	}
 	
-
 	
+	
 	/**
 	 * Tell if the index has been computed with a partition or not.
 	 *
@@ -421,10 +405,10 @@
 	}
 	
 	/**
-
-	
-	/**
 	 * 
+	 * 
+	 * /**
+	 * 
 	 * @param props
 	 */
 	@Override
@@ -436,10 +420,10 @@
 	
 	
 	
-
 	
-
-
+	
+	
+	
 	/**
 	 * dump a part of the index.
 	 *
@@ -451,15 +435,17 @@
 	@Override
 	public void toConsole(int from, int to) throws CqiClientException, IOException {
 		
+		List<Part> parts = this.getPartition().getParts();
+		
 		String header = ""; //$NON-NLS-1$
 		for (Property p : pProperties) {
 			header += (p + pPropertiesSeparator);
 		}
 		header = header.substring(0, header.length() - 1);
 		header += "\tF"; //$NON-NLS-1$
-		if (partNames.size() > 1) {
-			for (int j = 0; j < partNames.size(); j++) {
-				header += "\t" + partNames.get(j); //$NON-NLS-1$
+		if (parts.size() > 1) {
+			for (int j = 0; j < parts.size(); j++) {
+				header += "\t" + parts.get(j).getName(); //$NON-NLS-1$
 			}
 		}
 		
@@ -467,8 +453,8 @@
 		for (int i = from; i < to; i++) {
 			Line ligne = lines.get(i);
 			System.out.print(ligne + "\t" + ligne.getFrequency()); //$NON-NLS-1$
-			if (partNames.size() > 1) {
-				for (int j = 0; j < partNames.size(); j++) {
+			if (parts.size() > 1) {
+				for (int j = 0; j < parts.size(); j++) {
 					System.out.print("\t" + ligne.getFrequency(j)); //$NON-NLS-1$
 				}
 			}
@@ -495,6 +481,10 @@
 	@Deprecated
 	public void toTxt(File outfile, int from, int to, String encoding, String colseparator, String txtseparator)
 			throws CqiClientException, IOException {
+		
+		
+		List<Part> parts = this.getPartition().getParts();
+		
 		// NK: writer declared as class attribute to perform a clean if the operation is interrupted
 		this.writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfile), encoding));
 		// if ("UTF-8".equals(encoding)) writer.write('\ufeff'); // UTF-8 BOM
@@ -504,9 +494,9 @@
 		}
 		header = txtseparator + header.substring(0, header.length() - 1) + txtseparator;
 		header += colseparator + txtseparator + "F" + txtseparator; //$NON-NLS-1$
-		if (partNames.size() > 1) {
-			for (int j = 0; j < partNames.size(); j++) {
-				header += colseparator + txtseparator + partNames.get(j).replace(txtseparator, txtseparator + txtseparator) + txtseparator;
+		if (parts.size() > 1) {
+			for (int j = 0; j < parts.size(); j++) {
+				header += colseparator + txtseparator + parts.get(j).getName().replace(txtseparator, txtseparator + txtseparator) + txtseparator;
 			}
 		}
 		header += "\n"; //$NON-NLS-1$
@@ -516,8 +506,8 @@
 		for (int i = from; i < to; i++) {
 			Line ligne = lines.get(i);
 			writer.write(txtseparator + ligne.toString().replace(txtseparator, txtseparator + txtseparator) + txtseparator + colseparator + ligne.getFrequency());
-			if (partNames.size() > 1) {
-				for (int j = 0; j < partNames.size(); j++) {
+			if (parts.size() > 1) {
+				for (int j = 0; j < parts.size(); j++) {
 					writer.write(colseparator + ligne.getFrequency(j));
 				}
 			}
@@ -527,8 +517,8 @@
 		writer.close();
 	}
 	
-
 	
+	
 	@Override
 	public String getResultType() {
 		return PartitionIndex.class.getSimpleName();
Index: tmp/org.txm.index.core/src/org/txm/index/core/r/ParitionIndexRTransformer.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/r/ParitionIndexRTransformer.java	(revision 2418)
+++ tmp/org.txm.index.core/src/org/txm/index/core/r/ParitionIndexRTransformer.java	(revision 2419)
@@ -43,7 +43,7 @@
 		String symbol = prefixR + novoc;
 		
 		ArrayList<String> colnames = new ArrayList<String>();
-		List<String> partnames = index.getPartnames();
+		List<String> partnames = index.getPartNames();
 		
 		colnames.add("F"); //$NON-NLS-1$
 		colnames.addAll(partnames);
Index: tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java
===================================================================
--- tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 2418)
+++ tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 2419)
@@ -27,7 +27,7 @@
  *
  */
 public class PartitionDimensions extends ChartResult {
-
+	
 	/**
 	 * Parent partition parts caching.
 	 */
@@ -36,37 +36,37 @@
 	/**
 	 * Parent partition parts sorted by size caching.
 	 */
-	// FIXME: SJ: became useless since the parent Parts are now real TXMResult children
+	// FIXME: SJ: became useless? since the parent Parts are now real TXMResult children
 	@Deprecated
 	protected List<Part> partsSortedBySize = null;
 	
-	
-	
 	/**
 	 * To display or not the parts count in chart title.
 	 */
-	@Parameter(key=PartitionDimensionsPreferences.CHART_DIMENSIONS_DISPLAY_PARTS_COUNT_IN_TITLE, type=Parameter.RENDERING)
+	@Parameter(key = PartitionDimensionsPreferences.CHART_DIMENSIONS_DISPLAY_PARTS_COUNT_IN_TITLE, type = Parameter.RENDERING)
 	protected boolean displayPartsCountInTitle;
-
+	
 	/**
 	 * To sort or not the parts by size.
 	 */
-	@Parameter(key=PartitionDimensionsPreferences.CHART_DIMENSIONS_SORT_BY_SIZE, type=Parameter.RENDERING)
+	@Parameter(key = PartitionDimensionsPreferences.CHART_DIMENSIONS_SORT_BY_SIZE, type = Parameter.RENDERING)
 	protected boolean sortBySize;
-
 	
 	
 	
+	
 	/**
 	 * Creates a not computed partition dimensions.
+	 * 
 	 * @param partition
 	 */
 	public PartitionDimensions(Partition partition) {
 		this(null, partition);
 	}
-
+	
 	/**
 	 * Creates a not computed partition dimensions.
+	 * 
 	 * @param parametersNodePath
 	 */
 	public PartitionDimensions(String parametersNodePath) {
@@ -75,6 +75,7 @@
 	
 	/**
 	 * Creates a not computed partition dimensions.
+	 * 
 	 * @param parametersNodePath
 	 * @param partition
 	 */
@@ -84,34 +85,36 @@
 		this.domainGridLinesVisible = false;
 	}
 	
-
+	
 	@Override
 	public boolean loadParameters() {
 		// nothing to do
 		return true;
 	}
-
+	
 	@Override
 	public boolean saveParameters() {
 		// nothing to do
 		return true;
 	}
-
 	
 	
+	
 	@Override
 	protected boolean __compute() throws Exception {
 		// retrieve the parts
 		this.parts = this.getPartition().getParts();
 		
-		// store a copy of parts sorted by size 
-		List<Part> sortedParts = new ArrayList<Part>(this.parts);
+		// store a copy of parts sorted by size
+		List<Part> sortedParts = new ArrayList<>(this.parts);
 		Collections.sort(sortedParts, new Comparator<Part>() {
+			
 			@Override
 			public int compare(Part arg0, Part arg1) {
 				try {
 					return arg1.getSize() - arg0.getSize();
-				} catch (CqiClientException e) {
+				}
+				catch (CqiClientException e) {
 					return 0;
 				}
 			}
@@ -120,65 +123,67 @@
 		
 		return true;
 	}
-
+	
 	@Override
 	public void clean() {
 		// does nothing
 	}
-
+	
 	@Override
 	public boolean canCompute() {
 		return this.getPartition() != null;
 	}
-
+	
 	@Override
 	public boolean setParameters(TXMParameters parameters) {
 		try {
-			this.setSortBySize((boolean)parameters.get(PartitionDimensionsPreferences.CHART_DIMENSIONS_SORT_BY_SIZE));
+			this.setSortBySize((boolean) parameters.get(PartitionDimensionsPreferences.CHART_DIMENSIONS_SORT_BY_SIZE));
 			return true;
 		}
-		catch(Exception e) {
+		catch (Exception e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 		return false;
 	}
-
-
 	
+	
+	
 	/**
 	 * Convenience method.
 	 */
-	public Partition getPartition()	{
+	public Partition getPartition() {
 		try {
 			return (Partition) this.parent;
 		}
-		catch(Exception e) {
+		catch (Exception e) {
 			e.printStackTrace();
 			return null;
 		}
 	}
 	
 	
-
+	
 	/**
 	 * Gets the number of parts in the linked partition.
+	 * 
 	 * @return
 	 */
-	public int getPartsCount()	{
+	public int getPartsCount() {
 		return this.parts.size();
 	}
 	
 	/**
 	 * Gets the parts of the linked partition sorted by size or not.
+	 * 
 	 * @param sortedBySize
 	 * @return
 	 */
 	public List<Part> getParts(boolean sortedBySize) {
-		if(sortedBySize)	{
+		if (sortedBySize) {
 			return this.partsSortedBySize;
 		}
-		else	{
+		else {
 			return this.parts;
 		}
 	}
@@ -186,13 +191,14 @@
 	
 	/**
 	 * Gets the corpus of the linked partition.
+	 * 
 	 * @return
 	 */
-	public CQPCorpus getCorpus()	{
+	public CQPCorpus getCorpus() {
 		return this.getPartition().getParent();
 	}
-
-
+	
+	
 	@Override
 	public String getSimpleName() {
 		return PartitionCoreMessages.RESULT_TYPE;
@@ -200,58 +206,58 @@
 	
 	
 	@Override
-	public String getName()	{
+	public String getName() {
 		try {
 			return PartitionCoreMessages.bind(PartitionCoreMessages.dimensionsColonP0, this.getParent().getName());
 		}
-		catch(Exception e) {
-		}	
+		catch (Exception e) {
+		}
 		return ""; //$NON-NLS-1$
 	}
-
-
+	
+	
 	@Override
 	public String getDetails() {
 		return this.getName();
 	}
-
-
+	
+	
 	@Override
 	public boolean toTxt(File arg0, String arg1, String arg2, String arg3) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
-
-
-
+	
+	
+	
 	/**
 	 * @return the sortBySize
 	 */
 	public boolean isSortingBySize() {
 		return sortBySize;
 	}
-
-
-
+	
+	
+	
 	/**
 	 * @param sortBySize the sortBySize to set
 	 */
 	public void setSortBySize(boolean sortBySize) {
 		this.sortBySize = sortBySize;
 	}
-
-
-
+	
+	
+	
 	/**
 	 * @return the displayPartCountInTitle
 	 */
 	public boolean isDisplayingPartCountInTitle() {
 		return displayPartsCountInTitle;
 	}
-
+	
 	@Override
 	public String getResultType() {
 		return PartitionCoreMessages.RESULT_TYPE;
 	}
-
-}
\ No newline at end of file
+	
+}
Index: tmp/org.txm.index.rcp/src/org/txm/index/rcp/adapters/IndexRAdaptor.java
===================================================================
--- tmp/org.txm.index.rcp/src/org/txm/index/rcp/adapters/IndexRAdaptor.java	(revision 2418)
+++ tmp/org.txm.index.rcp/src/org/txm/index/rcp/adapters/IndexRAdaptor.java	(revision 2419)
@@ -43,7 +43,7 @@
 		ArrayList<String> colnames = new ArrayList<String>();
 		
 		colnames.add("F"); //$NON-NLS-1$
-		List<String> partnames = index.getPartnames();
+		List<String> partnames = index.getPartNames();
 		if (partnames.size() > 1)
 			for (int j = 0; j < partnames.size(); j++)
 			colnames.add(partnames.get(j));
