Index: TXM/trunk/org.txm.libs.cqp.linux/res/linux64/libcqpjni.so
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: TXM/trunk/org.txm.searchengine.core/src/org/txm/searchengine/core/Query.java
===================================================================
--- TXM/trunk/org.txm.searchengine.core/src/org/txm/searchengine/core/Query.java	(revision 3359)
+++ TXM/trunk/org.txm.searchengine.core/src/org/txm/searchengine/core/Query.java	(revision 3360)
@@ -253,7 +253,7 @@
 			}
 			Query q = queries.get(i);
 			str.append(q.getQueryString());
-			str.append(TXMPreferences.LIST_SEPARATOR + q.getSearchEngine().getName());
+			//str.append(TXMPreferences.LIST_SEPARATOR + q.getSearchEngine().getName());
 		}
 		return str.toString();
 	}
Index: TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPLexicon.java
===================================================================
--- TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPLexicon.java	(revision 3359)
+++ TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPLexicon.java	(revision 3360)
@@ -673,7 +673,7 @@
 	public static CQPLexicon getLexicon(CQPCorpus corpus, WordProperty property, TXMProgressMonitor monitor, boolean visible) throws Exception {
 		CQPLexicon lexicon = null;
 
-		property = corpus.getProperty(property.getName()); // ensure to use the subcorpus property
+		property = corpus.getProperty(property.getFullName()); // ensure to use the subcorpus property
 		
 		// recycling Lexicon if exists
 		ArrayList<CQPLexicon> cachedLexicons = (ArrayList<CQPLexicon>) corpus.getObjectCacheForClass(CQPLexicon.class);
Index: TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java
===================================================================
--- TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java	(revision 3359)
+++ TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java	(revision 3360)
@@ -752,7 +752,11 @@
 	@Override
 	public String getDetails() {
 		try {
-			return "T " + this.getSize();
+			if (hasBeenComputedOnce()) {
+				return "T " + this.getSize();
+			} else {
+				return this.getName();
+			}
 		}
 		catch (CqiClientException e) {
 			return this.getName() + " (" + this.getQualifiedCqpId() + ")";
Index: TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/query/Match.java
===================================================================
--- TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/query/Match.java	(revision 3359)
+++ TXM/trunk/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/query/Match.java	(revision 3360)
@@ -36,6 +36,7 @@
 import org.txm.searchengine.cqp.corpus.CorpusManager;
 import org.txm.searchengine.cqp.corpus.Property;
 import org.txm.searchengine.cqp.corpus.StructuralUnitProperty;
+import org.txm.searchengine.cqp.corpus.WordProperty;
 
 /**
  * A Match of a query on a corpus = [start -> end]
@@ -204,19 +205,16 @@
 	 * @throws CqiClientException
 	 *             the cqi client exception
 	 */
-	public static List<String> getValuesForProperty(Property property,
-			int[] positions) throws CqiClientException {
+	public static List<String> getValuesForProperty(Property property, int[] positions) throws CqiClientException {
+		
 		AbstractCqiClient cqiClient = CorpusManager.getCorpusManager().getCqiClient();
 		try {
 			if (property instanceof StructuralUnitProperty) {
-				int[] struc = cqiClient.cpos2Struc(property.getQualifiedName(),
-						positions);
-				return Arrays.asList(cqiClient.struc2Str(property
-						.getQualifiedName(), struc));
+				int[] struc = cqiClient.cpos2Struc(property.getQualifiedName(), positions);
+				return Arrays.asList(cqiClient.struc2Str(property.getQualifiedName(), struc));
 			}
 			else {
-				return Arrays.asList(cqiClient.cpos2Str(property
-						.getQualifiedName(), positions));
+				return Arrays.asList(property.id2Str(property.cpos2Id(positions)));
 			}
 		}
 		catch (Exception e) {
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchWindowAdvisor.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchWindowAdvisor.java	(revision 3359)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchWindowAdvisor.java	(revision 3360)
@@ -39,6 +39,7 @@
 import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
@@ -119,6 +120,9 @@
 	 */
 	@Override
 	public void postWindowOpen() {
+		
+		//getWindowConfigurer().getWindow().getShell().setMaximized( true );
+		
 		Log.fine(TXMUIMessages.settingStatusLineAndConfiguringActionSets);
 		StatusLine.set(getWindowConfigurer().getActionBarConfigurer().getStatusLineManager());
 		IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchAdvisor.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchAdvisor.java	(revision 3359)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchAdvisor.java	(revision 3360)
@@ -56,10 +56,12 @@
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.preference.IPreferenceNode;
 import org.eclipse.jface.preference.PreferenceManager;
+import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.util.Util;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.DirectoryDialog;
 import org.eclipse.swt.widgets.Display;
@@ -630,6 +632,9 @@
 					});
 				}
 				catch (Exception e2) {
+					try {
+						OpenWelcomePage.openWelcomePage();
+					} catch (Exception e3) { }
 				}
 				
 				// set the install directory preference
@@ -874,13 +879,17 @@
 		Version v = Activator.getDefault().getBundle().getVersion();
 		String vv = v.getMajor() + "." + v.getMinor() + "." + v.getMicro(); //$NON-NLS-1$ //$NON-NLS-2$ $NON-NLS-2$
 		String SAMPLES = "1. " + TXMUIMessages.bind(TXMUIMessages.sampleCorporaOfCurrentTXMP0, vv);
+		int n = 2;
 		String vCURRENT = "2. " + TXMUIMessages.bind(TXMUIMessages.corporaOfPreviousTXMP0, vv);
 		
-		int n = 3;
+		
 		final ArrayList<Object> selectedCorporaDirs = new ArrayList<>();
 		selectedCorporaDirs.add(SAMPLES);
 		
-		if (corporaDir.exists() && corporaDir.listFiles(IOUtils.HIDDENFILE_FILTER).length > 0) selectedCorporaDirs.add(vCURRENT);
+		if (corporaDir.exists() && corporaDir.listFiles(IOUtils.HIDDENFILE_FILTER).length > 0) {
+			selectedCorporaDirs.add(vCURRENT);
+			n++;
+		}
 		
 		for (int i = 0; i < previousVersions.length; i++) {
 			if (previousVersionCorporaDirectories[i].exists()
@@ -892,9 +901,9 @@
 		String OTHER = "" + (n++) + ". " + TXMUIMessages.selectAnotherTXMCorporaToRestore;
 		selectedCorporaDirs.add(OTHER);
 		
-		final ArrayList<Object> initialCorporaDirs = new ArrayList<>();
-		initialCorporaDirs.add(SAMPLES);
-		initialCorporaDirs.add(vCURRENT);
+		final ArrayList<Object> initialSelectionCorporaDirs = new ArrayList<>();
+		initialSelectionCorporaDirs.add(SAMPLES);
+		initialSelectionCorporaDirs.add(vCURRENT);
 		
 		Display.getDefault().syncExec(new Runnable() {
 			
@@ -905,7 +914,7 @@
 				ListSelectionDialog dialog = new ListSelectionDialog(shell, selectedCorporaDirs,
 						new ArrayContentProvider(), new LabelProvider(), TXMUIMessages.corporaWillBeRestoredInTheFollowingOrderCorporaAlreadyRestoredWillNotBeReplaced);
 				dialog.setTitle(TXMUIMessages.selectThecorporaSetsToRestore);
-				dialog.setInitialElementSelections(initialCorporaDirs);
+				dialog.setInitialElementSelections(initialSelectionCorporaDirs);
 				if (dialog.open() == ListSelectionDialog.OK) {
 					selectedCorporaDirs.clear();
 					List<Object> selection = Arrays.asList(dialog.getResult());
@@ -1108,7 +1117,14 @@
 					// remove some preference pages
 					setPreferencesConfiguration();
 					
-					initializeUIPMD = new ProgressMonitorDialog(Display.getDefault().getActiveShell());
+					initializeUIPMD = new ProgressMonitorDialog(Display.getDefault().getActiveShell()) {
+						@Override
+						protected void configureShell(final Shell shell) {
+							super.configureShell(shell);
+							shell.setText(getTXMStartMessage());
+						}
+					};
+					
 					initializeUIPMD.run(true, true, new IRunnableWithProgress() {
 						
 						@Override
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java	(revision 3359)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java	(revision 3360)
@@ -354,13 +354,25 @@
 					}
 					
 					// Status bar
-					if (!result.hasBeenComputedOnce() && !(result instanceof Partition)) { // FIXME: SJ: tmp fix for showing Partition parts
-						StatusLine.setMessage("");
+					//					if (!result.hasBeenComputedOnce() && !(result instanceof Partition)) { // FIXME: SJ: tmp fix for showing Partition parts
+					//						StatusLine.setMessage("");
+					//					}
+					//					else {
+					//						// TODO uncomment when status line will be restored
+					//						// StatusLine.setMessage(((TXMResult) selectedItem).getDetails());
+					//					}
+					
+					// FIXME : MD re-enable status line on corpora view selection
+					if (selectedItem instanceof TXMResult) {
+						
+						TXMResult r = ((TXMResult)selectedItem);
+						String mess = null;
+						try {mess = r.getSimpleDetails();}
+						catch(Exception e2) {Log.info("Error while getting result informations: "+e2); Log.printStackTrace(e2);}
+						
+						if (mess == null) mess = r.getName();
+						StatusLine.setMessage(mess);
 					}
-					else {
-						// TODO uncomment when status line will be restored
-						// StatusLine.setMessage(((TXMResult) selectedItem).getDetails());
-					}
 				}
 			}
 			
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/StatusLine.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/StatusLine.java	(revision 3359)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/StatusLine.java	(revision 3360)
@@ -69,23 +69,24 @@
 	 * @param message the new message
 	 */
 	public static void setMessage(final String message) {
-		return;
+		// return;
+		
 		// FIXME: define messages, how and when show them then uncomment message methods
-		// Display.getDefault().syncExec(new Runnable() {
-		// @Override
-		// public void run() {
-		// if (statusLine != null) {
-		// if (message != null && message.length() > MAX) {
-		// statusLine.setMessage(null, message.substring(0, MAX)+"...");
-		// } else {
-		// statusLine.setMessage(null, message);
-		// }
-		// }
-		// }
-		// });
+		Display.getDefault().syncExec(new Runnable() {
+			@Override
+			public void run() {
+				if (statusLine != null) {
+					if (message != null && message.length() > MAX) {
+						statusLine.setMessage(null, message.substring(0, MAX)+"...");
+					} else {
+						statusLine.setMessage(null, message);
+					}
+				}
+			}
+		});
 		
-		// cancelTimer();
-		// scheduleTimer();
+		cancelTimer();
+		scheduleTimer();
 	}
 	
 	/**
@@ -94,19 +95,19 @@
 	 * @param message the new message
 	 */
 	public static void setMessage(final String message, boolean keep) {
-		return;
+		//return;
 		// FIXME: define messages, how and when show them then uncomment message methods
-		// if (!keep) {
-		// setMessage(message);
-		// return;
-		// }
-		// Display.getDefault().syncExec(new Runnable() {
-		// @Override
-		// public void run() {
-		// statusLine.setMessage(null, message);
-		// }
-		// });
-		// cancelTimer();
+		if (!keep) {
+			setMessage(message);
+			return;
+		}
+		Display.getDefault().syncExec(new Runnable() {
+			@Override
+			public void run() {
+				statusLine.setMessage(null, message);
+			}
+		});
+		cancelTimer();
 	}
 	
 	/**
@@ -115,16 +116,16 @@
 	 * @param string the string
 	 */
 	public static void error(final String message) {
-		return;
+		//return;
 		// FIXME: define messages, how and when show them then uncomment message methods
-		// Display.getDefault().syncExec(new Runnable() {
-		// @Override
-		// public void run() {
-		// statusLine.setErrorMessage(null, message);
-		// }
-		// });
-		// cancelTimer();
-		// scheduleTimer();
+		Display.getDefault().syncExec(new Runnable() {
+			@Override
+			public void run() {
+				statusLine.setErrorMessage(null, message);
+			}
+		});
+		cancelTimer();
+		scheduleTimer();
 	}
 	
 	/**
@@ -133,51 +134,51 @@
 	 * @param string the string
 	 */
 	public static void error(final String message, boolean keep) {
-		return;
+		//return;
 		// FIXME: define messages, how and when show them then uncomment message methods
-		// if (!keep) {
-		// setMessage(message);
-		// return;
-		// }
-		// Display.getDefault().syncExec(new Runnable() {
-		// @Override
-		// public void run() {
-		// statusLine.setErrorMessage(null, message);
-		// }
-		// });
-		// cancelTimer();
+		if (!keep) {
+			setMessage(message);
+			return;
+		}
+		Display.getDefault().syncExec(new Runnable() {
+			@Override
+			public void run() {
+				statusLine.setErrorMessage(null, message);
+			}
+		});
+		cancelTimer();
 	}
 	
 	/**
 	 * Stops the timer
 	 */
 	private static void cancelTimer() {
-		// if (!timerScheduled)
-		// return;
-		// timerScheduled = false;
-		// timer.cancel();
+		if (!timerScheduled)
+			return;
+		timerScheduled = false;
+		timer.cancel();
 	}
 	
 	/**
 	 * Starts the timer
 	 */
 	private static void scheduleTimer() {
-		// if (timerScheduled)
-		// return;
-		// timerScheduled = true;
-		// timer = new Timer();
-		// TimerTask timerTask = new TimerTask() {
-		// @Override
-		// public void run() {
-		// Runnable r = new Runnable() {
-		// @Override
-		// public void run() {
-		// StatusLine.setMessage(""); //$NON-NLS-1$
-		// }
-		// };
-		// Display.getDefault().syncExec(r);
-		// }
-		// };
-		// timer.schedule(timerTask, time);
+		if (timerScheduled)
+			return;
+		timerScheduled = true;
+		timer = new Timer();
+		TimerTask timerTask = new TimerTask() {
+			@Override
+			public void run() {
+				Runnable r = new Runnable() {
+					@Override
+					public void run() {
+						StatusLine.setMessage(""); //$NON-NLS-1$
+					}
+				};
+				Display.getDefault().syncExec(r);
+			}
+		};
+		timer.schedule(timerTask, time);
 	}
 }
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/PropertiesSelector.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/PropertiesSelector.java	(revision 3359)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/PropertiesSelector.java	(revision 3360)
@@ -168,7 +168,7 @@
 				buffer.append(propSeparator);
 			}
 			
-			if (p instanceof StructuralUnitProperty || p instanceof VirtualProperty) {
+			if (p instanceof StructuralUnitProperty) {
 				buffer.append(((StructuralUnitProperty)p).getFullName());
 			} else if (p instanceof VirtualProperty) {
 				buffer.append(((VirtualProperty)p).getFullName());
Index: TXM/trunk/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java
===================================================================
--- TXM/trunk/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java	(revision 3359)
+++ TXM/trunk/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java	(revision 3360)
@@ -56,6 +56,7 @@
 import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
 import org.txm.searchengine.cqp.clientExceptions.UnexpectedAnswerException;
 import org.txm.searchengine.cqp.corpus.CQPCorpus;
+import org.txm.searchengine.cqp.corpus.CorpusManager;
 import org.txm.searchengine.cqp.corpus.Property;
 import org.txm.searchengine.cqp.corpus.QueryResult;
 import org.txm.searchengine.cqp.corpus.StructuralUnit;
@@ -79,6 +80,8 @@
  */
 public class Cooccurrence extends TXMResult {
 
+	boolean debug = false;
+	
 	/**
 	 * The Class CLine.
 	 */
@@ -1305,11 +1308,8 @@
 		// HashMap<Property, String[]> propsValues = new HashMap<Property, String[]>();
 		for (WordProperty property : pProperties) {
 			int[] indices = property.cpos2Id(allpositionsarray);
-			// String[] values =
-			// CorpusManager.getCorpusManager().getCqiClient().cpos2Str(property.getQualifiedName(),allpositionsarray);
+			//String[] values = CorpusManager.getCorpusManager().getCqiClient().cpos2Str(property.getQualifiedName(), allpositionsarray);
 			propsId.put(property, indices);
-			// propsValues.put(property, values);
-			// System.out.println("all "+property+" indices: "+propsId.get(property).length);
 		}
 
 		// System.out.println("T values + ids: "+(System.currentTimeMillis()- time)); //$NON-NLS-1$
@@ -1327,6 +1327,7 @@
 			pcount++;
 
 		}
+		if (debug) System.out.println(allsignaturesstr);
 		return true;
 	}
 
@@ -1343,9 +1344,10 @@
 		// time = System.currentTimeMillis();
 
 		HashMap<Integer, Integer> positionsDistances = new HashMap<>();
-
+		//int[] positionsDistances = new ArrayList()
 		for (Match m : m1) { // for each match = for each focus
 
+			if (debug) System.out.println("m="+m);
 			if (m.getTarget() >= 0) { // if target is set focus on target position
 				m.setStart(m.getTarget());
 				m.setEnd(m.getTarget());
@@ -1356,7 +1358,7 @@
 			boolean matchFound = false;
 			for (int i = startsearchM2; i < m2.size(); i++) { // find n
 				n = m2.get(i);
-				if (n.getStart() <= m.getStart() && m.getEnd() <= n.getEnd()) {
+				if (n.getTarget() == m.getStart()) {
 					startsearchM2 = i;
 					matchFound = true;
 					break;
@@ -1368,7 +1370,7 @@
 			for (int i = startsearchM3; i < m3.size(); i++) { // find next match m3 contained by m2
 
 				o = m3.get(i);
-				if (o.getStart() <= m.getStart() && m.getEnd() <= o.getEnd()) {
+				if (o.getTarget() == m.getStart()) {
 					startsearchM3 = i;
 					matchFound = matchFound && true;
 					break;
@@ -1380,6 +1382,8 @@
 				continue;
 			}
 
+			if (debug) System.out.println("n="+n);
+			if (debug) System.out.println("o="+o);
 			int start = n.getStart();
 			int size = n.getEnd() - start + 1;
 			// if (size > 0)
@@ -1398,6 +1402,10 @@
 					continue;
 				}
 
+				if (allsignaturesstr.get(position).equals("[succès]")) {
+					int a = 1+1;
+				}
+				
 				int dist;
 				if (position < m.getStart()) {
 					dist = m.getStart() - position - 1;
@@ -1409,9 +1417,16 @@
 					System.out.println("Warning: the n match is in the m match ? " + n + " " + m);
 					dist = 0;
 				}
-				if (!positionsDistances.containsKey(position) || positionsDistances.get(position) > dist) {
+				
+				if (debug) System.out.println(" p="+position+" sign="+allsignaturesstr.get(position)+" dist="+dist);
+				if (positionsDistances.containsKey(position) && positionsDistances.get(position) < dist) {
 					positionsDistances.put(position, dist);
+					if (debug) System.out.println(" using the higher distance");
+				} else {
+					positionsDistances.put(position, dist);
+					if (debug) System.out.println(" add");
 				}
+				
 			}
 
 			// System.out.println("nb Occ ignored: "+ignore);
@@ -1424,7 +1439,7 @@
 			// String signature = allsignatures.get(position);
 			String signaturestr = allsignaturesstr.get(position);
 
-			int dist = positionsDistances.get(position);
+			Integer dist = positionsDistances.get(position);
 			if (distances.containsKey(signaturestr)) {
 				distances.put(signaturestr, (distances.get(signaturestr)) + dist);
 			}
@@ -1432,12 +1447,17 @@
 				distances.put(signaturestr, 0.0);
 			}
 
+			Integer count = (counts.get(signaturestr));
 			if (counts.containsKey(signaturestr)) {
-				counts.put(signaturestr, (counts.get(signaturestr)) + 1);
+				counts.put(signaturestr, count + 1);
 			}
 			else {
 				counts.put(signaturestr, 1);
 			}
+			
+			if (allsignaturesstr.get(position).equals("[succès]")) {
+				int b = 1+1;
+			}
 
 			// if ("[1599]".equals(signaturestr)) {
 			// System.out.println("p=" + position + " d=" + dist + " total(d)=" + distances.get(signaturestr) + " c=" + counts.get(signaturestr));
@@ -1485,6 +1505,13 @@
 		numberOfKeyword = m1.size();
 		m2 = r2.getMatches();
 		m3 = r3.getMatches();
+		
+		if (debug) System.out.println(pQuery);
+		if (debug) System.out.println(m1);
+		if (debug) System.out.println(contextQuery);
+		if (debug) System.out.println(m2);
+		if (debug) System.out.println(anticontextquery);
+		if (debug) System.out.println(m3);
 
 		Log.finest("R1 size=" + m1.size());
 		Log.finest("R2 size=" + m2.size());
@@ -1553,9 +1580,9 @@
 						indexfreqs.get(specifrownames[ii]), scores[ii][1], // freq
 						((float) (distances.get(signaturestr) / counts.get(signaturestr))), // mean distance
 						-1);
-
+				if (debug) System.out.println("Line: "+specifrownames[ii]+" dists="+distances.get(signaturestr)+" counts="+counts.get(signaturestr)+" mean="+((float) (distances.get(signaturestr) / counts.get(signaturestr))));
 				// select the line
-				if (cline.freq >= this.pFminFilter && cline.nbocc >= this.pFCoocFilter && cline.score >= 0 && cline.score >= this.pScoreMinFilter) {
+				if (cline.freq >= this.pFminFilter && cline.nbocc >= this.pFCoocFilter && cline.score >= this.pScoreMinFilter) {
 					if (cline.score >= Integer.MAX_VALUE - 5) {
 						cline.score = Float.MAX_EXPONENT;
 					}
@@ -1577,6 +1604,11 @@
 		// structural context
 
 		String fixedQuery = CQLQuery.fixQuery(pQuery.getQueryString(), this.getCorpus().getLang());
+		if (fixedQuery.contains("@[") || fixedQuery.contains("@\"")) {
+			
+		} else {
+			fixedQuery = "@"+fixedQuery;
+		}
 
 		if (pStructuralUnitLimit != null) {
 			String tempquery = ""; //$NON-NLS-1$
Index: TXM/trunk/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java
===================================================================
--- TXM/trunk/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 3359)
+++ TXM/trunk/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 3360)
@@ -464,20 +464,13 @@
 			StringBuffer buf = new StringBuffer();
 			buf.append("Concordance:\n"); //$NON-NLS-1$
 			buf.append("\tCorpus: " + this.getCorpus() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buf
-			.append("\tQuery: " + this.getQuery() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buf
-			.append("\tLeft Context View property: " + this.getLeftViewProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buf
-			.append("\tKeyword View property: " + this.getKeywordViewProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buf
-			.append("\tRight Context View property: " + this.getRightViewProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buf
-			.append("\tLeft Context Sort property: " + this.getLeftAnalysisProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buf
-			.append("\tKeyword Sort property: " + this.getKeywordAnalysisProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-			buf
-			.append("\tRight Context Sort property: " + this.getRightAnalysisProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("\tQuery: " + this.getQuery() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("\tLeft Context View property: " + this.getLeftViewProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("\tKeyword View property: " + this.getKeywordViewProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("\tRight Context View property: " + this.getRightViewProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("\tLeft Context Sort property: " + this.getLeftAnalysisProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("\tKeyword Sort property: " + this.getKeywordAnalysisProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+			buf.append("\tRight Context Sort property: " + this.getRightAnalysisProperties() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 			buf.append("\tReference View Pattern: " + this.getRefViewPattern() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 			buf.append("\tReference Sort Pattern: " + this.getRefAnalysePattern() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 			return buf.toString();
Index: TXM/trunk/org.txm.libs.cqp.win32/res/win64/cqpjni.dll
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: TXM/trunk/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java
===================================================================
--- TXM/trunk/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 3359)
+++ TXM/trunk/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 3360)
@@ -194,7 +194,7 @@
 		// parts lexicons
 		List<CQPLexicon> partsLexicons = new ArrayList<>();
 		for (int i = 0; i < partition.getPartsCount(); i++) {
-			partsLexicons.add(CQPLexicon.getLexicon(partition.getParts().get(i), partition.getParts().get(i).getProperty(property.getName()), monitor.createNewMonitor(1), false));
+			partsLexicons.add(CQPLexicon.getLexicon(partition.getParts().get(i), partition.getParts().get(i).getProperty(property.getFullName()), monitor.createNewMonitor(1), false));
 		}
 		
 		// Corpus global lexicon
@@ -479,8 +479,18 @@
 	
 	@Override
 	public String getDetails() {
-		// FIXME: to do
-		return "";
+		if (hasBeenComputedOnce()) {
+			try {
+				return "fMin="+this.getFMin()+" V="+this.getNRows();
+			}
+			catch (Exception e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return "";
+			}
+		} else {
+			return "fMinFilter="+this.fMinFilter+(Integer.MAX_VALUE == fMaxFilter?" fMaxFilter="+fMaxFilter:"")+" vMaxFilter="+vMaxFilter;
+		}
 	}
 	
 	/**
Index: TXM/trunk/org.txm.internalview.rcp/src/org/txm/internalview/rcp/editors/InternalViewEditor.java
===================================================================
--- TXM/trunk/org.txm.internalview.rcp/src/org/txm/internalview/rcp/editors/InternalViewEditor.java	(revision 3359)
+++ TXM/trunk/org.txm.internalview.rcp/src/org/txm/internalview/rcp/editors/InternalViewEditor.java	(revision 3360)
@@ -138,7 +138,9 @@
 		propertiesSelector.setLayoutData(new GridData(GridData.CENTER, GridData.CENTER, false, true));
 		propertiesSelector.setLayout(new GridLayout(3, false));
 		try {
-			propertiesSelector.setProperties(internalView.getCorpus().getOrderedProperties());
+			List<WordProperty> l = internalView.getCorpus().getOrderedProperties();
+			l.addAll(internalView.getCorpus().getVirtualProperties());
+			propertiesSelector.setProperties(l);
 		}
 		catch (CqiClientException e) {
 			Log.printStackTrace(e);
