Index: TXM/trunk/org.txm.ruby.core/src/org/txm/ruby/core/RubyScriptEngine.java
===================================================================
--- TXM/trunk/org.txm.ruby.core/src/org/txm/ruby/core/RubyScriptEngine.java	(revision 3514)
+++ TXM/trunk/org.txm.ruby.core/src/org/txm/ruby/core/RubyScriptEngine.java	(revision 3515)
@@ -34,7 +34,7 @@
 	private javax.script.ScriptEngine engine;
 
 	public RubyScriptEngine() {
-		super("rb");
+		super("ruby", "rb");
 	}
 	
 	@Override
Index: TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/CallUD2TigerPerlScript.groovy
===================================================================
--- TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/CallUD2TigerPerlScript.groovy	(revision 3514)
+++ TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/CallUD2TigerPerlScript.groovy	(revision 3515)
@@ -38,7 +38,9 @@
 				println "Error: Perl engine not correctly set to run $perlScript"
 				return false;
 			}
-			def status = engine.runPerl(["$perlScript", "-s", "10000", "-o", "$tigerXMLDirectory", "$f"], null)
+			def cmd = new ArrayList()
+			cmd.addAll(["$perlScript", "-s", "10000", "-o", "$tigerXMLDirectory", "$f"])
+			def status = engine.runPerl(cmd, null)
 			subcorpusList += mainFile.readLines("UTF-8").findAll() {it.contains("<subcorpus ")}.join("\n") // tiger-xml/main.xml >> tiger-xml/subcorpus-list
 		} catch (Throwable t) { println "Error: $t" }
 	}
Index: TXM/trunk/org.txm.ocaml.core/src/org/txm/ocaml/core/OcamlScriptEngine.java
===================================================================
--- TXM/trunk/org.txm.ocaml.core/src/org/txm/ocaml/core/OcamlScriptEngine.java	(revision 3514)
+++ TXM/trunk/org.txm.ocaml.core/src/org/txm/ocaml/core/OcamlScriptEngine.java	(revision 3515)
@@ -19,7 +19,7 @@
 public class OcamlScriptEngine extends ScriptEngine {
 
 	public OcamlScriptEngine() {
-		super("ml");
+		super("ocaml", "ml");
 	}
 
 	@Override
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 3514)
+++ TXM/trunk/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 3515)
@@ -1883,4 +1883,34 @@
 	public String getResultType() {
 		return ConcordanceCoreMessages.RESULT_TYPE;
 	}
+
+	public void setKeywordAvailableViewProperties(List<WordProperty> availableProperties) {
+		
+		this.availableKeywordViewProperties = new ArrayList<>(availableProperties);
+	}
+	
+	public void setLeftAvailableViewProperties(List<WordProperty> availableProperties) {
+		
+		this.availableLeftViewProperties = new ArrayList<>(availableProperties);
+	}
+	
+	public void setRightAvailableViewProperties(List<WordProperty> availableProperties) {
+		
+		this.availableRightViewProperties = new ArrayList<>(availableProperties);
+	}
+
+	public void setKeywordAvailableAnalysisProperties(List<WordProperty> availableProperties) {
+		
+		this.availableKeywordSortProperties = new ArrayList<>(availableProperties);
+	}
+	
+	public void setLeftAvailableAnalysisProperties(List<WordProperty> availableProperties) {
+		
+		this.availableLeftSortProperties = new ArrayList<>(availableProperties);
+	}
+	
+	public void setRightAvailableAnalysisProperties(List<WordProperty> availableProperties) {
+		
+		this.availableRightSortProperties = new ArrayList<>(availableProperties);
+	}
 }
Index: TXM/trunk/org.txm.python.core/src/org/txm/python/core/PythonScriptEngine.java
===================================================================
--- TXM/trunk/org.txm.python.core/src/org/txm/python/core/PythonScriptEngine.java	(revision 3514)
+++ TXM/trunk/org.txm.python.core/src/org/txm/python/core/PythonScriptEngine.java	(revision 3515)
@@ -20,7 +20,7 @@
 public class PythonScriptEngine extends ScriptEngine {
 
 	public PythonScriptEngine() {
-		super("py");
+		super("python", "py");
 	}
 
 	@Override
Index: TXM/trunk/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RScriptEngine.java
===================================================================
--- TXM/trunk/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RScriptEngine.java	(revision 3514)
+++ TXM/trunk/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RScriptEngine.java	(revision 3515)
@@ -19,7 +19,7 @@
 public class RScriptEngine extends ScriptEngine {
 
 	public RScriptEngine() {
-		super("R");
+		super("R", "R");
 	}
 
 	@Override
Index: TXM/trunk/org.txm.groovy.core/src/java/org/txm/groovy/core/TXMGroovyScriptEngine.java
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/java/org/txm/groovy/core/TXMGroovyScriptEngine.java	(revision 3514)
+++ TXM/trunk/org.txm.groovy.core/src/java/org/txm/groovy/core/TXMGroovyScriptEngine.java	(revision 3515)
@@ -11,7 +11,7 @@
 public class TXMGroovyScriptEngine extends ScriptEngine {
 	
 	public TXMGroovyScriptEngine() {
-		super("groovy"); //$NON-NLS-1$
+		super("groovy", "groovy"); //$NON-NLS-1$
 	}
 	
 	@Override
Index: TXM/trunk/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/EditionPanel.java
===================================================================
--- TXM/trunk/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/EditionPanel.java	(revision 3514)
+++ TXM/trunk/org.txm.edition.rcp/src/org/txm/edition/rcp/editors/EditionPanel.java	(revision 3515)
@@ -1,9 +1,6 @@
 package org.txm.edition.rcp.editors;
 
 import java.io.File;
-
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -23,8 +20,6 @@
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.browser.LocationEvent;
-import org.eclipse.swt.browser.LocationListener;
 import org.eclipse.swt.browser.ProgressEvent;
 import org.eclipse.swt.browser.ProgressListener;
 import org.eclipse.swt.events.DisposeEvent;
@@ -52,7 +47,6 @@
 import org.txm.rcp.commands.ShowSelected;
 import org.txm.rcp.editors.CommandLink;
 import org.txm.rcp.utils.IOClipboard;
-import org.txm.rcp.utils.URLUtils;
 import org.txm.utils.io.IOUtils;
 import org.txm.utils.logger.Log;
 
@@ -461,7 +455,6 @@
 				Log.finest("EditionPanel " + currentEdition + " reload " + currentPage);
 				if (currentPage != null && currentEdition != null) { // avoid null pointer
 					
-					
 					String firstWord = currentPage.getWordId();
 					Page nextPage = currentEdition.getNextPage(currentPage);
 					String lastWord = "w_999999999"; //$NON-NLS-1$
Index: TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java
===================================================================
--- TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 3514)
+++ TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/editors/ConcordanceEditor.java	(revision 3515)
@@ -1127,15 +1127,7 @@
 					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);
@@ -1146,6 +1138,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					
 					concordance.setLeftViewProperties(leftViewProperties.getSelectedProperties());
+					concordance.setLeftAvailableViewProperties(leftViewProperties.getAvailableProperties());
 					super.widgetSelected(e);
 				}
 			});
@@ -1159,6 +1152,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					
 					concordance.setKeywordViewProperties(keywordViewProperties.getSelectedProperties());
+					concordance.setKeywordAvailableViewProperties(keywordViewProperties.getAvailableProperties());
 					super.widgetSelected(e);
 				}
 			});
@@ -1172,6 +1166,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					
 					concordance.setRightViewProperties(rightViewProperties.getSelectedProperties());
+					concordance.setRightAvailableViewProperties(rightViewProperties.getAvailableProperties());
 					super.widgetSelected(e);
 				}
 			});
@@ -1202,6 +1197,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					
 					concordance.setLeftAnalysisProperties(leftSortProperties.getSelectedProperties());
+					concordance.setLeftAvailableAnalysisProperties(leftSortProperties.getSelectedProperties());
 					super.widgetSelected(e);
 				}
 			});
@@ -1215,6 +1211,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					
 					concordance.setKeywordAnalysisProperties(keywordSortProperties.getSelectedProperties());
+					concordance.setKeywordAvailableAnalysisProperties(keywordSortProperties.getSelectedProperties());
 					super.widgetSelected(e);
 				}
 			});
@@ -1228,6 +1225,7 @@
 				public void widgetSelected(SelectionEvent e) {
 					
 					concordance.setRightAnalysisProperties(rightSortProperties.getSelectedProperties());
+					concordance.setRightAvailableAnalysisProperties(rightSortProperties.getSelectedProperties());
 					super.widgetSelected(e);
 				}
 			});
Index: TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/actions/ViewPropertySelection.java
===================================================================
--- TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/actions/ViewPropertySelection.java	(revision 3514)
+++ TXM/trunk/org.txm.concordance.rcp/src/org/txm/concordance/rcp/actions/ViewPropertySelection.java	(revision 3515)
@@ -36,14 +36,14 @@
 import org.eclipse.ui.IWorkbenchPartSite;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
-import org.txm.searchengine.cqp.corpus.Property;
-import org.txm.searchengine.cqp.corpus.WordProperty;
 import org.txm.concordance.rcp.editors.ConcordanceEditor;
 import org.txm.rcp.messages.TXMUIMessages;
 import org.txm.rcp.swt.dialog.MultiplePropertySelectionDialog;
-// TODO: Auto-generated Javadoc
+import org.txm.searchengine.cqp.corpus.WordProperty;
 /**
- * Action to define the view properties of each column @ author mdecorde.
+ * Action to define the view properties of each column 
+ * 
+ * @author mdecorde
  */
 public class ViewPropertySelection extends Action implements IWorkbenchAction {
 
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/views/fileexplorer/MacroExplorer.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/views/fileexplorer/MacroExplorer.java	(revision 3514)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/views/fileexplorer/MacroExplorer.java	(revision 3515)
@@ -60,6 +60,7 @@
 import org.txm.Toolbox;
 import org.txm.core.engines.EngineType;
 import org.txm.core.engines.ScriptEngine;
+import org.txm.core.engines.ScriptEnginesManager;
 import org.txm.rcp.TXMWindows;
 import org.txm.rcp.handlers.files.CopyFile;
 import org.txm.rcp.handlers.files.CutFile;
@@ -275,7 +276,8 @@
 					}
 					else {
 						String ext = FileUtils.getExtension(selectedItem);
-						ScriptEngine se = (ScriptEngine) Toolbox.getEngineManager(EngineType.SCRIPT).getEngine(ext);
+						ScriptEnginesManager manager = (ScriptEnginesManager) Toolbox.getEngineManager(EngineType.SCRIPT);
+						ScriptEngine se = manager.getEngineForExtension(ext);
 						if (se != null) {
 							ExecuteScript.executeScript(selectedItem.getAbsolutePath(), page, selection, null);
 						} else {
Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 3514)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java	(revision 3515)
@@ -5,7 +5,6 @@
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -70,7 +69,6 @@
 import org.txm.core.results.BeanParameters;
 import org.txm.core.results.Parameter;
 import org.txm.core.results.TXMResult;
-import org.txm.objects.CorpusBuild;
 import org.txm.rcp.JobsTimer;
 import org.txm.rcp.StatusLine;
 import org.txm.rcp.TXMWindows;
@@ -1076,12 +1074,16 @@
 	@SuppressWarnings("unchecked")
 	public static <T extends TXMResult> TXMEditor<T> openEditor(TXMResultEditorInput<T> editorInput, String editorId) {
 		
+		
+		
 		TXMEditor<T> editor = null;
 		IWorkbenchWindow window = TXMWindows.getActiveWindow();
 		IWorkbenchPage page = window.getActivePage();
 		try {
 			boolean wasAlreadyOpened = SWTEditorsUtils.isOpenEditor(editorInput, editorId);
-			
+			if (!wasAlreadyOpened) {
+				try {StatusLine.setMessage(NLS.bind("Opening {0}...", editorInput.getResult().getSimpleName())); } catch(Exception e) {}
+			}
 			// since some editor fields need some values of their parent,
 			// ensure the parents branch is ready (e.g. Sub-corpus properties in Cooccurrence editor, etc.)
 			// show modal blocking&cancelable progression dialog
@@ -1109,6 +1111,7 @@
 				}
 			}
 			
+			
 			// opening the editor
 			IEditorPart tmpEditor = page.openEditor(editorInput, editorId, true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID);
 			if (tmpEditor instanceof TXMEditor) {
@@ -1116,9 +1119,7 @@
 			}
 			else if (tmpEditor instanceof TXMMultiPageEditor) {
 				editor = (TXMEditor<T>) ((TXMMultiPageEditor) tmpEditor).getMainEditorPart();
-				
 				// If result specify a opening Area use it
-				
 			}
 			else {
 				Log.severe(NLS.bind(TXMCoreMessages.FailedToOpenTheP0Editor, editorId)); // $NON-NLS-1$
@@ -1137,7 +1138,6 @@
 				// }
 				// else {
 				
-				
 				// editor.compute(false); // FIXME: temporary fix for the AHC SVG bug but there are 2 computing (skipped but it stays a quick'n'dirty fix)
 				editor.refresh(false);
 				
@@ -1146,7 +1146,9 @@
 				// editor.setFocus();
 				
 				// }
+				StatusLine.setMessage(null);
 			}
+			
 		}
 		catch (Exception e) {
 			// TODO Auto-generated catch block
@@ -1485,7 +1487,6 @@
 					e.printStackTrace();
 				}
 			}
-			
 		}
 		
 		// FIXME: SJ: Updating the compute button enabled/disabled state
Index: TXM/trunk/org.txm.core/src/java/org/txm/core/engines/ScriptEngine.java
===================================================================
--- TXM/trunk/org.txm.core/src/java/org/txm/core/engines/ScriptEngine.java	(revision 3514)
+++ TXM/trunk/org.txm.core/src/java/org/txm/core/engines/ScriptEngine.java	(revision 3515)
@@ -18,12 +18,15 @@
 	
 	protected String name;
 	
+	protected String scriptExtension;
+	
 	public boolean canExecute(File script) {
 		return true;
 	}
 	
-	public ScriptEngine(String name) {
+	public ScriptEngine(String name, String scriptExtension) {
 		this.name = name;
+		this.scriptExtension = scriptExtension;
 	}
 	
 	public IStatus executeScript(String scriptPath) {
@@ -51,6 +54,10 @@
 		return name;
 	}
 	
+	public String getScriptExtension() {
+		return scriptExtension;
+	}
+	
 	@Override
 	public void notify(TXMResult r, String state) {
 		//nothing to do
Index: TXM/trunk/org.txm.core/src/java/org/txm/core/engines/ScriptEnginesManager.java
===================================================================
--- TXM/trunk/org.txm.core/src/java/org/txm/core/engines/ScriptEnginesManager.java	(revision 3514)
+++ TXM/trunk/org.txm.core/src/java/org/txm/core/engines/ScriptEnginesManager.java	(revision 3515)
@@ -34,4 +34,14 @@
 	public static ScriptEngine getPythonEngine() {
 		return (ScriptEngine) Toolbox.getEngineManager(EngineType.SCRIPT).getEngine("python");
 	}
+
+	public ScriptEngine getEngineForExtension(String ext) {
+		
+		for (ScriptEngine e : this.getEngines().values()) {
+			if (ext.equals(e.getScriptExtension())) {
+				return e;
+			}
+		}
+		return null;
+	}
 }
Index: TXM/trunk/org.txm.perl.core/plugin.xml
===================================================================
--- TXM/trunk/org.txm.perl.core/plugin.xml	(revision 3514)
+++ TXM/trunk/org.txm.perl.core/plugin.xml	(revision 3515)
@@ -5,7 +5,7 @@
          point="org.txm.core.engines.ScriptEngine">
       <ScriptEngine
             class="org.txm.perl.core.PerlScriptEngine"
-            name="perl">
+            name="pl">
       </ScriptEngine>
    </extension>
    <extension
Index: TXM/trunk/org.txm.perl.core/src/org/txm/perl/core/PerlScriptEngine.java
===================================================================
--- TXM/trunk/org.txm.perl.core/src/org/txm/perl/core/PerlScriptEngine.java	(revision 3514)
+++ TXM/trunk/org.txm.perl.core/src/org/txm/perl/core/PerlScriptEngine.java	(revision 3515)
@@ -20,7 +20,7 @@
 public class PerlScriptEngine extends ScriptEngine {
 
 	public PerlScriptEngine() {
-		super("pl");
+		super("perl", "pl");
 	}
 
 	@Override
@@ -65,14 +65,16 @@
 	
 	public boolean canExecute(File script) {
 		
-		File runner = new File(PerlPreferences.getInstance().getString(PerlPreferences.HOME),
-				PerlPreferences.getInstance().getString(PerlPreferences.EXECUTABLE_NAME));
-		
-		return script.isFile() && script.canExecute() && runner.canExecute() && runner.isFile();
+		return script.isFile() 
+				&& script.canRead();
 	}
 
 	private static IStatus runPerl(ArrayList<String> cmd, HashMap<String, Object> env) {
+		
 		try {
+			ArrayList<String> tmp = new ArrayList<String>();
+			tmp.addAll(cmd);
+			cmd = tmp;
 			
 			String additionalParametersString = PerlPreferences.getInstance().getString(PerlPreferences.ADDITIONAL_PARAMETERS);
 			String[] additionalParameters = additionalParametersString.split("\t");
@@ -82,13 +84,26 @@
 			
 			String path = PerlPreferences.getInstance().getString(PerlPreferences.HOME);
 			String perlRunner = PerlPreferences.getInstance().getString(PerlPreferences.EXECUTABLE_NAME);
-			if (path != null && path.length() > 0) {
-				cmd.add(0, new File(path, perlRunner).getAbsolutePath());
-			} else {
-				cmd.add(0, perlRunner);
-			}
 			
-			ProcessBuilder pb = new ProcessBuilder(cmd);
+			
+//			if (false && (OSDetector.isFamilyUnix() || OSDetector.isFamilyMac())) {
+//				if (path != null && path.length() > 0) {
+//					cmd.add(0, new File(path, perlRunner).getAbsolutePath());
+//				} else {
+//					cmd.add(0, perlRunner);
+//				}
+//				
+//				String code = "'"+StringUtils.join(cmd, "' '")+"'";
+//				cmd = new ArrayList(Arrays.asList("bash", "-c", code));
+//			} else {
+				if (path != null && path.length() > 0) {
+					cmd.add(0, new File(path, perlRunner).getAbsolutePath());
+				} else {
+					cmd.add(0, perlRunner);
+				}
+//			}
+			
+			ProcessBuilder pb = new ProcessBuilder(new ArrayList<String>(cmd));
 			pb.redirectErrorStream(true);
 
 			// new org.txm.utils.StreamHog(p.getInputStream(), true).setName("perl");
