Index: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages_fr.properties
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages_fr.properties	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages_fr.properties	(revision 456)
@@ -0,0 +1,40 @@
+BackToMedia_0=Pas de s�lection RCP structur�e. Abandon.
+BackToMedia_1=L'�diteur courant n'est pas un ConcordancesEditor. Abandon.
+BackToMedia_11=Pas de propri�t� de temps trouv�e avec comme nom : 
+BackToMedia_12=Erreur : pas de structure ''{0}'' trouv�e
+BackToMedia_14=Erreur : pas de propri�t� de structure ''{0}'' trouv�e
+BackToMedia_16=TEMPS DEBUT : 
+BackToMedia_17=Erreur : pas de propri�t� de structure ''{0}'' trouv�e
+BackToMedia_19=TEMPS FIN : 
+BackToMedia_25=Fichier AUDIO/VIDEO : 
+BackToMedia_26=Error: no media file (mp3, wav, mp4 or avi) found for name: 
+BackToMedia_27=All media files should be stored in the '
+BackToMedia_28=' directory.
+BackToMedia_29=Le nom du fichier m�dia doit �tre '<transcription ID>.<format support�>'
+BackToMedia_30=Erreur : 
+BackToMedia_7=Identifiant de texte : 
+BackToMediaPreferencePage_0=M�diaPlayer
+BackToMediaPreferencePage_1=R�p�ter le m�dia
+BackToMediaPreferencePage_2=R�cup�rer le temps � partir d'une propri�t� de mot
+BackToMediaPreferencePage_3=Empan � jouer
+BackToMediaPreferencePage_4=Propri�t� de mot de temps
+BackToMediaPreferencePage_5=Structure
+BackToMediaPreferencePage_6=Propri�t� codant le temps de d�part
+BackToMediaPreferencePage_7=Propri�t� codant le temps de fin
+cancel=Annuler
+error_native_libs=ERREUR: TXM n'a pas trouv� les libraries natives de VLC.
+error_open_media=Erreur: l'�diteur n'a pas pu �tre ouvert
+opening=Ouverture : 
+opening_media=Ouverture du m�dia... 
+pause=PAUSE
+play=LECTURE
+playing=Joue {0} depuis {1} ms � {2} ms ...
+rate=Taux:
+repeat=R�p�ter
+resume=REPRENDRE
+select_file=S�lection du fichier...
+select_file_title=S�lectionner un fichier audio/video
+select_object=Objet RCP s�lectionn� : 
+stop=STOP
+time_range=Empan temporel
+volume=Vol :

Property changes on: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages_fr.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationActionBarAdvisor.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationActionBarAdvisor.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationActionBarAdvisor.java	(revision 456)
@@ -0,0 +1,20 @@
+package vlcplayerrcp;
+
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+
+public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
+
+    public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
+        super(configurer);
+    }
+
+    protected void makeActions(IWorkbenchWindow window) {
+    }
+
+    protected void fillMenuBar(IMenuManager menuBar) {
+    }
+    
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationActionBarAdvisor.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchAdvisor.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchAdvisor.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchAdvisor.java	(revision 456)
@@ -0,0 +1,18 @@
+package vlcplayerrcp;
+
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchAdvisor;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
+
+	private static final String PERSPECTIVE_ID = "WordCloudRCP.perspective"; //$NON-NLS-1$
+
+    public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+        return new ApplicationWorkbenchWindowAdvisor(configurer);
+    }
+
+	public String getInitialWindowPerspectiveId() {
+		return PERSPECTIVE_ID;
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchAdvisor.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages.properties
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages.properties	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages.properties	(revision 456)
@@ -0,0 +1,40 @@
+BackToMedia_0=No StructuredSelection. Aborting.
+BackToMedia_1=Current editor is not a ConcordancesEditor. Aborting.
+BackToMedia_11=No time property found with name: 
+BackToMedia_12=Error: no ''{0}'' structure
+BackToMedia_14=Error: no ''{0}'' structure property
+BackToMedia_16=STARTTIME: 
+BackToMedia_17=Error: this is not a transcription corpus: no ''{0}'' structure properties
+BackToMedia_19=ENDTIME: 
+BackToMedia_25=AUDIO/VIDEO FILE: 
+BackToMedia_26=Error: no media file (mp3, wav, mp4 or avi) found for name: 
+BackToMedia_27=All media files should be stored in the '
+BackToMedia_28=' directory.
+BackToMedia_29=Media file names should be '<transcription ID>.<supported format>'
+BackToMedia_30=Unexpected error: 
+BackToMedia_7=TEXT ID: 
+BackToMediaPreferencePage_0=MediaPlayer
+BackToMediaPreferencePage_1=Open the player with the repeat option enable
+BackToMediaPreferencePage_2=Use word property to get time
+BackToMediaPreferencePage_3=Span to play
+BackToMediaPreferencePage_4=Word time property
+BackToMediaPreferencePage_5=Structure
+BackToMediaPreferencePage_6=Start property
+BackToMediaPreferencePage_7=End property
+cancel=Cancel
+error_native_libs=ERROR: failed to find VLC native libraries
+error_open_media=Error: could not open VLC player.
+opening=Opening: 
+opening_media=Opening media... 
+pause=PAUSE
+play=PLAY
+playing=Playing {0} from {1} ms to {2} ms ...
+rate=Rate:
+repeat=Repeat
+resume=RESUME
+select_file=Selecting file...
+select_file_title=Select a audio/video file
+select_object=Selected object: 
+stop=STOP
+time_range=Time range
+volume=Vol:

Property changes on: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/messages.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/Application.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/Application.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/Application.java	(revision 456)
@@ -0,0 +1,47 @@
+package vlcplayerrcp;
+
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * This class controls all aspects of the application's execution
+ */
+public class Application implements IApplication {
+	
+	public static String PLUGIN_ID = "org.txm.backtomedia"; //$NON-NLS-1$
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
+	 */
+	public Object start(IApplicationContext context) throws Exception {
+		Display display = PlatformUI.createDisplay();
+		try {
+			int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
+			if (returnCode == PlatformUI.RETURN_RESTART)
+				return IApplication.EXIT_RESTART;
+			else
+				return IApplication.EXIT_OK;
+		} finally {
+			display.dispose();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.equinox.app.IApplication#stop()
+	 */
+	public void stop() {
+		if (!PlatformUI.isWorkbenchRunning())
+			return;
+		final IWorkbench workbench = PlatformUI.getWorkbench();
+		final Display display = workbench.getDisplay();
+		display.syncExec(new Runnable() {
+			public void run() {
+				if (!display.isDisposed())
+					workbench.close();
+			}
+		});
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/Application.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/MessagesMP.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/MessagesMP.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/MessagesMP.java	(revision 456)
@@ -0,0 +1,54 @@
+package vlcplayerrcp;
+
+import org.eclipse.osgi.util.NLS;
+
+public class MessagesMP extends NLS {
+	private static final String BUNDLE_NAME = "vlcplayerrcp.messages"; //$NON-NLS-1$
+	public static String BackToMedia_0;
+	public static String BackToMedia_1;
+	public static String BackToMedia_11;
+	public static String BackToMedia_12;
+	public static String BackToMedia_14;
+	public static String BackToMedia_16;
+	public static String BackToMedia_17;
+	public static String BackToMedia_19;
+	public static String BackToMedia_25;
+	public static String BackToMedia_26;
+	public static String BackToMedia_27;
+	public static String BackToMedia_28;
+	public static String BackToMedia_29;
+	public static String BackToMedia_30;
+	public static String BackToMedia_7;
+	public static String BackToMediaPreferencePage_0;
+	public static String BackToMediaPreferencePage_1;
+	public static String BackToMediaPreferencePage_2;
+	public static String BackToMediaPreferencePage_3;
+	public static String BackToMediaPreferencePage_4;
+	public static String BackToMediaPreferencePage_5;
+	public static String BackToMediaPreferencePage_6;
+	public static String BackToMediaPreferencePage_7;
+	public static String cancel;
+	public static String error_native_libs;
+	public static String error_open_media;
+	public static String opening;
+	public static String opening_media;
+	public static String pause;
+	public static String play;
+	public static String playing;
+	public static String rate;
+	public static String repeat;
+	public static String resume;
+	public static String select_file;
+	public static String select_file_title;
+	public static String select_object;
+	public static String stop;
+	public static String time_range;
+	public static String volume;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, MessagesMP.class);
+	}
+
+	private MessagesMP() {
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/MessagesMP.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchWindowAdvisor.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchWindowAdvisor.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchWindowAdvisor.java	(revision 456)
@@ -0,0 +1,26 @@
+package vlcplayerrcp;
+
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
+
+    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+        super(configurer);
+    }
+
+    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
+        return new ApplicationActionBarAdvisor(configurer);
+    }
+    
+    public void preWindowOpen() {
+        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
+        configurer.setInitialSize(new Point(400, 300));
+        configurer.setShowCoolBar(false);
+        configurer.setShowStatusLine(false);
+        configurer.setTitle("Hello RCP"); //$NON-NLS-1$
+    }
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/vlcplayerrcp/ApplicationWorkbenchWindowAdvisor.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/BackToMedia.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/BackToMedia.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/BackToMedia.java	(revision 456)
@@ -0,0 +1,209 @@
+// Copyright © 2010-2013 ENS de Lyon.
+// 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.backtomedia.commands.function;
+
+import java.io.File;
+import java.util.HashMap;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.txm.Toolbox;
+import org.txm.backtomedia.editors.vlcplayer.VLCPlayerEditor;
+import org.txm.backtomedia.preferences.BackToMediaPreferences;
+import org.txm.concordance.core.functions.Line;
+import org.txm.concordance.rcp.editors.ConcordanceEditor;
+import org.txm.core.preferences.TXMPreferences;
+import org.txm.rcp.TxmPreferences;
+import org.txm.searchengine.cqp.CQPEngine;
+import org.txm.searchengine.cqp.corpus.Corpus;
+import org.txm.searchengine.cqp.corpus.Property;
+import org.txm.searchengine.cqp.corpus.StructuralUnit;
+import org.txm.utils.logger.Log;
+
+import vlcplayerrcp.MessagesMP;
+
+// TODO: Auto-generated Javadoc
+/**
+ * open the VLCPlayer Editor and go back to time 
+ * @author mdecorde.
+ */
+public class BackToMedia extends AbstractHandler {
+
+	/** The ID. */
+	public static String ID = "org.txm.rcpapplication.commands.BackToMedia"; //$NON-NLS-1$
+
+	/** The selection. */
+	private IStructuredSelection selection;
+
+	private static HashMap<ConcordanceEditor, VLCPlayerEditor> associatedEditors = new HashMap<ConcordanceEditor, VLCPlayerEditor>();
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 */
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		Object o = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
+		if (!(o instanceof IStructuredSelection)) {
+			Log.warning(MessagesMP.BackToMedia_0);
+			return null;
+		}
+
+		IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event)
+				.getActivePage().getActivePart();
+
+		if (!(page instanceof ConcordanceEditor)) {
+			Log.warning(MessagesMP.BackToMedia_1);
+			return null;
+		}
+		
+		if (!(page instanceof ConcordanceEditor)) {
+			System.out.println("Active page is not a ConcordanceEditor");
+			return null;
+		}
+		ConcordanceEditor ce = (ConcordanceEditor) page;
+
+		selection = (IStructuredSelection)o;
+
+		Object s = selection.getFirstElement();
+
+	
+		//System.out.println("Selected object: "+s);
+		if (s instanceof Line) {
+			
+			String structurePropertyName = TXMPreferences.getString(BackToMediaPreferences.STRUCTURE, BackToMediaPreferences.PREFERENCES_NODE); //$NON-NLS-1$
+			String startPropertyName = TXMPreferences.getString(BackToMediaPreferences.STRUCTURE_START_PROPERTY, BackToMediaPreferences.PREFERENCES_NODE); //$NON-NLS-1$
+			String endPropertyName = TXMPreferences.getString(BackToMediaPreferences.STRUCTURE_END_PROPERTY, BackToMediaPreferences.PREFERENCES_NODE); //$NON-NLS-1$
+			
+			
+			Line line = (Line)s;
+			Corpus corpus = line.getConcordance().getCorpus();
+
+			try {
+				String sStartTime = "0"; //$NON-NLS-1$
+				String sEndTime = "0"; //$NON-NLS-1$
+				int startTime = 0;
+				int endTime = 0;
+				//boolean useWordProperty = Platform.getPreferencesService().getBoolean(Application.PLUGIN_ID, BackToMediaPreferences.USEWORDPROPERTY, false, null);
+				boolean useWordProperty = TXMPreferences.getBoolean(BackToMediaPreferences.USEWORDPROPERTY, BackToMediaPreferences.PREFERENCES_NODE);
+
+				StructuralUnit textS = corpus.getStructuralUnit("text"); //$NON-NLS-1$
+				Property textP = textS.getProperty("id"); //$NON-NLS-1$
+				String textid = line.getMatch().getValueForProperty(textP);// get text via text struc property id
+				Log.info(MessagesMP.BackToMedia_7+textid);
+
+				if (useWordProperty) {
+					String pTimeName = TXMPreferences.getString(BackToMediaPreferences.WORD_PROPERTY, BackToMediaPreferences.PREFERENCES_NODE); //$NON-NLS-1$
+					if ("".equals(pTimeName)) pTimeName = "time"; //$NON-NLS-1$ //$NON-NLS-2$
+					
+					Property timeP = corpus.getProperty(pTimeName);
+					if (timeP == null) {
+						System.out.println(MessagesMP.BackToMedia_11+pTimeName);
+						return false;
+					}
+					int keywordPosition = line.getKeywordPosition();
+					int leftPosition = Math.max(keywordPosition - line.getConcordance().getLeftContextSize(), 0);
+					int rightPosition = Math.min(keywordPosition + line.getConcordance().getRightContextSize(), corpus.getSize());
+					int[] positions = {leftPosition, rightPosition};
+					String[] times = CQPEngine.getCqiClient().cpos2Str(timeP.getQualifiedName(), positions);
+					sStartTime = times[0];
+					sEndTime = times[1];
+				} else {
+					StructuralUnit structure = corpus.getStructuralUnit(structurePropertyName);
+					if (structure == null) {
+						System.out.println(MessagesMP.bind(MessagesMP.BackToMedia_12, structurePropertyName));
+						return null;
+					}
+					Property startProperty = structure.getProperty(startPropertyName);
+					if (startProperty == null) {
+						System.out.println(MessagesMP.bind(MessagesMP.BackToMedia_14, startPropertyName));
+						return null;
+					}
+					sStartTime = line.getMatch().getValueForProperty(startProperty);
+					Log.info(MessagesMP.BackToMedia_16+sStartTime);
+
+					Property endProperty = structure.getProperty(endPropertyName);
+					if (endProperty == null) {
+						System.out.println(MessagesMP.bind(MessagesMP.BackToMedia_17, endPropertyName));
+						return null;
+					}
+					sEndTime = line.getMatch().getValueForProperty(endProperty);
+					Log.info(MessagesMP.BackToMedia_19+sEndTime);
+				}
+
+//				try {
+//					startTime = (int)Float.parseFloat(sStartTime);
+//					endTime = (int)Float.parseFloat(sEndTime);
+//				} catch(Exception e2) {
+//					System.out.println("Error: time format must be an Integer, unit is second. Found "+sStartTime);
+//					return null;
+//				}
+
+				File binDir = corpus.getBase().getBaseParameters().paramFile.getParentFile();
+				File mediaDir = new File(binDir, "media"); //$NON-NLS-1$
+				File audioFile = new File(mediaDir, textid+".mp3"); //$NON-NLS-1$
+				if (!audioFile.exists()) audioFile = new File(mediaDir, textid+".ogg"); //$NON-NLS-1$
+				if (!audioFile.exists()) audioFile = new File(mediaDir, textid+".wav"); //$NON-NLS-1$
+				if (!audioFile.exists()) audioFile = new File(mediaDir, textid+".mp4"); //$NON-NLS-1$
+				if (!audioFile.exists()) audioFile = new File(mediaDir, textid+".avi"); //$NON-NLS-1$
+				if (!audioFile.exists()) audioFile = new File(mediaDir, textid+".mov"); //$NON-NLS-1$
+
+				Log.info(MessagesMP.BackToMedia_25+audioFile);
+				if (audioFile.exists()) {
+					//System.out.println("Linked editors: "+associatedEditors);
+					VLCPlayerEditor editor = associatedEditors.get(ce); 
+					if (editor != null && !editor.isDirty() && !editor.getPlayer().isDisposed()) {
+						editor.getPlayer().play(audioFile.getPath(), sStartTime, sEndTime);
+						editor.getPlayer().setRepeat(true);
+					} else {
+						//System.out.println("new editor linked to "+ce);
+						editor = OpenVLCPlayer.openEditor(audioFile.getPath(), sStartTime, sEndTime);
+						//editor.getPlayer().setRepeat(true);
+						editor.getPlayer().hideStopButton();
+						associatedEditors.put(ce, editor);
+					}
+					if (audioFile != null)
+						editor.setName(audioFile.getName());
+					return null;
+				} else {
+					System.out.println(MessagesMP.BackToMedia_26+textid);
+					System.out.println(MessagesMP.BackToMedia_27+mediaDir+MessagesMP.BackToMedia_28);
+					System.out.println(MessagesMP.BackToMedia_29);
+				}
+			} catch (Exception e2) {
+				System.out.println(MessagesMP.BackToMedia_30+e2);
+				Log.printStackTrace(e2);
+				return null;
+			}
+		}
+		return null;
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/BackToMedia.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/OpenVLCPlayer.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/OpenVLCPlayer.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/OpenVLCPlayer.java	(revision 456)
@@ -0,0 +1,153 @@
+// Copyright © 2010-2013 ENS de Lyon.
+// 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.backtomedia.commands.function;
+
+import java.io.File;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.txm.backtomedia.editors.input.VLCPlayerEditorInput;
+import org.txm.backtomedia.editors.vlcplayer.VLCPlayerEditor;
+import org.txm.rcp.StatusLine;
+import org.txm.rcp.TXMWindows;
+
+import vlcplayerrcp.MessagesMP;
+
+// TODO: Auto-generated Javadoc
+/**
+ * open the VLCPlayer Editor 
+ * 
+ * @author mdecorde.
+ */
+public class OpenVLCPlayer extends AbstractHandler {
+
+	/** The ID. */
+	public static String ID = "org.txm.rcpapplication.commands.BackToMedia"; //$NON-NLS-1$
+
+	/** The selection. */
+	private IStructuredSelection selection;
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 */
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+
+		Object o = HandlerUtil.getCurrentSelection(event);
+		if (o instanceof IStructuredSelection) {
+			selection = (IStructuredSelection)o;
+			Object s = selection.getFirstElement();
+			System.out.println(MessagesMP.select_object+s);
+		}
+
+		FileDialog fd = new FileDialog(new Shell(), SWT.SAVE);
+		fd.setText(MessagesMP.select_file);
+
+		String[] filterExt = { "*.*", "*.mp3", "*.ogg", "*.avi", "*.mp4", "*.mov"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+		fd.setFilterExtensions(filterExt);
+		String mrl = fd.open();
+		if (mrl != null)
+			openEditor(mrl, 0);
+		return null;
+	}
+
+	public static void openEditor(String mrl,  int time) {
+		IWorkbenchPage page = TXMWindows.getActiveWindow().getActivePage();
+		VLCPlayerEditorInput editorInput = new VLCPlayerEditorInput();
+		StatusLine.setMessage(MessagesMP.opening_media+mrl);
+		try {
+			VLCPlayerEditor player = (VLCPlayerEditor) page
+					.openEditor(editorInput,VLCPlayerEditor.ID);
+			if (player != null)
+				player.getPlayer().play(mrl, time);
+			if (mrl != null) {
+				player.setName(new File(mrl).getName());
+			}
+			else 
+				System.out.println(MessagesMP.error_open_media);
+		} catch (PartInitException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public static VLCPlayerEditor openEditor(String mrl, int time, int endtime) {
+		IWorkbenchPage page = TXMWindows.getActiveWindow().getActivePage();
+		VLCPlayerEditorInput editorInput = new VLCPlayerEditorInput();
+		StatusLine.setMessage(MessagesMP.opening_media+mrl);
+		try {
+			VLCPlayerEditor player = (VLCPlayerEditor) page
+					.openEditor(editorInput,VLCPlayerEditor.ID);
+			
+			boolean isAudio = mrl.matches(".+\\.(mp3|ogg|wav|wpa)"); //$NON-NLS-1$
+			if (player != null) {
+				player.getPlayer().play(mrl, time, endtime);
+			} else {
+				System.out.println(MessagesMP.error_open_media);
+				return null;
+			}
+			return player;
+		} catch (PartInitException e) {
+			e.printStackTrace();
+		}
+		
+		return null;
+	}
+
+	public static VLCPlayerEditor openEditor(String path, String sStartTime,
+			String sEndTime) {
+		IWorkbenchPage page = TXMWindows.getActiveWindow().getActivePage();
+		VLCPlayerEditorInput editorInput = new VLCPlayerEditorInput();
+		StatusLine.setMessage(MessagesMP.opening_media+path);
+		try {
+			VLCPlayerEditor player = (VLCPlayerEditor) page
+					.openEditor(editorInput,VLCPlayerEditor.ID);
+			
+			//boolean isAudio = mrl.matches(".+\\.(mp3|ogg|wav|wpa)");
+			if (player != null) {
+				player.getPlayer().play(path, sStartTime, sEndTime);
+			} else {
+				System.out.println(MessagesMP.error_open_media);
+				return null;
+			}
+			return player;
+		} catch (PartInitException e) {
+			e.printStackTrace();
+		}
+		
+		return null;
+	}
+
+}
\ No newline at end of file

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/OpenVLCPlayer.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/TripleRangeSlider.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/TripleRangeSlider.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/TripleRangeSlider.java	(revision 456)
@@ -0,0 +1,1171 @@
+package org.txm.backtomedia.commands.function;
+/*******************************************************************************
+ * Copyright (c) 2011 Laurent CARON.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Laurent CARON (laurent.caron@gmail.com) - initial API and implementation
+ *******************************************************************************/
+
+import java.awt.dnd.MouseDragGestureRecognizer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.mihalis.opal.utils.SWTGraphicUtil;
+
+/**
+ * Instances of this class provide a slider with 2 buttons (min value, max
+ * value).
+ * <p>
+ * <dl>
+ * <dt><b>Styles:</b></dt>
+ * <dd>BORDER</dd>
+ * <dd>HORIZONTAL</dd>
+ * <dd>VERTICAL</dd> *
+ * <dt><b>Events:</b></dt>
+ * <dd>Selection</dd>
+ * </dl>
+ * </p>
+ */
+public class TripleRangeSlider extends Canvas {
+
+	public enum SELECTED_KNOB {NONE, UPPER, LOWER, MIDDLE  };
+
+	private int minimum;
+	private int maximum;
+	private int lowerValue;
+	private int middleValue;
+	private int upperValue;
+	private final List<SelectionListener> listeners;
+	private final Image slider, sliderHover, sliderDrag, sliderSelected;
+	private final Image vSlider, vSliderHover, vSliderDrag, vSliderSelected;
+	private int orientation;
+	private int increment;
+	private int pageIncrement;
+	private SELECTED_KNOB lastSelected;
+	private boolean dragInProgress;
+	private Point coordUpper;
+	private boolean upperHover;
+	private Point coordMiddle;
+	private boolean middleHover;
+	private Point coordLower;
+	private boolean lowerHover;
+	private int previousUpperValue;
+	private int previousMiddleValue;
+	private int previousLowerValue;
+
+	/**
+	 * Constructs a new instance of this class given its parent and a style
+	 * value describing its behavior and appearance.
+	 * <p>
+	 * The style value is either one of the style constants defined in class
+	 * <code>SWT</code> which is applicable to instances of this class, or must
+	 * be built by <em>bitwise OR</em>'ing together (that is, using the
+	 * <code>int</code> "|" operator) two or more of those <code>SWT</code>
+	 * style constants. The class description lists the style constants that are
+	 * applicable to the class. Style bits are also inherited from superclasses.
+	 * </p>
+	 *
+	 * @param parent a composite control which will be the parent of the new
+	 *            instance (cannot be null)
+	 * @param style the style of control to construct
+	 *
+	 * @exception IllegalArgumentException <ul>
+	 *                <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+	 *                </ul>
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the parent</li>
+	 *                </ul>
+	 *
+	 */
+	public TripleRangeSlider(final Composite parent, final int style) {
+		super(parent, SWT.DOUBLE_BUFFERED | ((style & SWT.BORDER) == SWT.BORDER ? SWT.BORDER : SWT.NONE));
+		this.minimum = this.lowerValue = 0;
+		this.middleValue = 50;
+		this.maximum = this.upperValue = 100;
+		this.listeners = new ArrayList<SelectionListener>();
+		this.increment = 1;
+		this.pageIncrement = 10;
+		this.lastSelected = SELECTED_KNOB.NONE;
+		this.slider = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/slider-normal.png")); //$NON-NLS-1$
+		this.sliderHover = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/slider-hover.png")); //$NON-NLS-1$
+		this.sliderDrag = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/slider-drag.png")); //$NON-NLS-1$
+		this.sliderSelected = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/slider-selected.png")); //$NON-NLS-1$
+
+		this.vSlider = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/h-slider-normal.png")); //$NON-NLS-1$
+		this.vSliderHover = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/h-slider-hover.png")); //$NON-NLS-1$
+		this.vSliderDrag = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/h-slider-drag.png")); //$NON-NLS-1$
+		this.vSliderSelected = new Image(getDisplay(), this.getClass().getClassLoader().getResourceAsStream("images/h-slider-selected.png")); //$NON-NLS-1$
+
+		if ((style & SWT.VERTICAL) == SWT.VERTICAL) {
+			this.orientation = SWT.VERTICAL;
+		} else {
+			this.orientation = SWT.HORIZONTAL;
+		}
+
+		this.addListener(SWT.Dispose, new Listener() {
+			@Override
+			public void handleEvent(final Event event) {
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.slider);
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.sliderHover);
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.sliderDrag);
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.sliderSelected);
+
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.vSlider);
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.vSliderHover);
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.vSliderDrag);
+				SWTGraphicUtil.dispose(TripleRangeSlider.this.vSliderSelected);
+			}
+		});
+
+		addMouseListeners();
+		addListener(SWT.KeyDown, new Listener() {
+
+			@Override
+			public void handleEvent(final Event event) {
+				handleKeyDown(event);
+			}
+		});
+		addPaintListener(new PaintListener() {
+			@Override
+			public void paintControl(final PaintEvent e) {
+				drawWidget(e);
+
+			}
+		});
+
+	}
+
+	/**
+	 * Add the mouse listeners (mouse up, mouse down, mouse move, mouse wheel)
+	 */
+	private void addMouseListeners() {
+		addListener(SWT.MouseDown, new Listener() {
+			@Override
+			public void handleEvent(final Event e) {
+				handleMouseDown(e);
+			}
+		});
+
+		addListener(SWT.MouseUp, new Listener() {
+			@Override
+			public void handleEvent(final Event e) {
+				handleMouseUp(e);
+			}
+		});
+
+		addListener(SWT.MouseMove, new Listener() {
+			@Override
+			public void handleEvent(final Event e) {
+				handleMouseMove(e);
+			}
+		});
+
+		addListener(SWT.MouseWheel, new Listener() {
+			@Override
+			public void handleEvent(final Event e) {
+				handleMouseWheel(e);
+			}
+		});
+
+	}
+
+	/**
+	 * Code executed when the mouse is down
+	 *
+	 * @param e event
+	 */
+	private void handleMouseDown(final Event e) {
+		
+		if (this.upperHover) {
+			this.dragInProgress = true;
+			this.lastSelected = SELECTED_KNOB.UPPER;
+			this.previousUpperValue = this.upperValue;
+		} else if (this.lowerHover) {
+			this.dragInProgress = true;
+			this.lastSelected = SELECTED_KNOB.LOWER;
+			this.previousLowerValue = this.lowerValue;
+		} else if (this.middleHover) {
+			this.dragInProgress = true;
+			this.lastSelected = SELECTED_KNOB.MIDDLE;
+			this.previousMiddleValue = this.middleValue;
+		} else {
+			this.dragInProgress = true;
+			//this.lastSelected = SELECTED_KNOB.NONE;
+			this.lastSelected = SELECTED_KNOB.MIDDLE;
+			this.previousMiddleValue = this.middleValue;
+			handleMouseMove(e);
+		}
+		//System.out.println("MouseDown : "+lastSelected);
+	}
+
+	/**
+	 * Code executed when the mouse is up
+	 *
+	 * @param e event
+	 */
+	private void handleMouseUp(final Event e) {
+		if (!this.dragInProgress) {
+			return;
+		}
+		this.dragInProgress = false;
+		if (!fireSelectionListeners(e)) {
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				this.upperValue = this.previousUpperValue;
+				if (this.middleValue > this.upperValue) this.middleValue = upperValue;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				this.lowerValue = this.previousLowerValue;
+				if (this.middleValue < this.lowerValue) this.middleValue = lowerValue;
+			} else {
+				this.middleValue = this.previousMiddleValue;
+			}
+			redraw();
+		}
+	}
+
+	/**
+	 * Fire all selection listeners
+	 *
+	 * @param event selection event
+	 * @return <code>true</code> if no listener cancels the selection,
+	 *         <code>false</code> otherwise
+	 */
+	private boolean fireSelectionListeners(final Event event) {
+		for (final SelectionListener selectionListener : this.listeners) {
+			final SelectionEvent selectionEvent = new SelectionEvent(event);
+			selectionListener.widgetSelected(selectionEvent);
+			if (!selectionEvent.doit) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Code executed when the mouse pointer is moving
+	 *
+	 * @param e event
+	 */
+	private void handleMouseMove(final Event e) {
+		final int x = e.x, y = e.y;
+		final Image img = this.orientation == SWT.HORIZONTAL ? this.slider : this.vSlider;
+		this.upperHover = x >= this.coordUpper.x && x <= this.coordUpper.x + img.getBounds().width && y >= this.coordUpper.y && y <= this.coordUpper.y + img.getBounds().height;
+		this.middleHover = x >= this.coordMiddle.x && x <= this.coordMiddle.x + img.getBounds().width && y >= this.coordMiddle.y && y <= this.coordMiddle.y + img.getBounds().height;
+		this.lowerHover = x >= this.coordLower.x && x <= this.coordLower.x + img.getBounds().width && y >= this.coordLower.y && y <= this.coordLower.y + img.getBounds().height;
+
+		if (this.dragInProgress) {
+			if (this.orientation == SWT.HORIZONTAL) {
+				final int mouseValue = (int) ((x - 9f) / computePixelSizeForHorizonalSlider()) + this.minimum;
+				if (this.lastSelected == SELECTED_KNOB.UPPER) {
+					this.upperValue = (int) (Math.ceil(mouseValue / this.increment) * this.increment) - this.increment;
+					checkUpperValue();
+				} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+					this.lowerValue = (int) (Math.ceil(mouseValue / this.increment) * this.increment) - this.increment;
+					checkLowerValue();
+				} else {
+					this.middleValue = (int) (Math.ceil(mouseValue / this.increment) * this.increment) - this.increment;
+					checkMiddleValue();
+				}
+
+			} else {
+				final int mouseValue = (int) ((y - 9f) / computePixelSizeForVerticalSlider()) + this.minimum;
+				if (this.lastSelected == SELECTED_KNOB.UPPER) {
+					this.upperValue = (int) (Math.ceil(mouseValue / this.increment) * this.increment) - this.increment;
+					checkUpperValue();
+				} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+					this.lowerValue = (int) (Math.ceil(mouseValue / this.increment) * this.increment) - this.increment;
+					checkLowerValue();
+				} else {
+					this.middleValue = (int) (Math.ceil(mouseValue / this.increment) * this.increment) - this.increment;
+					checkMiddleValue();
+				}
+			}
+		}
+
+		redraw();
+	}
+
+	/**
+	 * Code executed when the mouse wheel is activated
+	 *
+	 * @param e event
+	 */
+	private void handleMouseWheel(final Event e) {
+		if (this.lastSelected == SELECTED_KNOB.NONE) {
+			return;
+		}
+
+		if (this.lastSelected == SELECTED_KNOB.LOWER) {
+			this.lowerValue += e.count * this.increment;
+			checkLowerValue();
+			redraw();
+		} else if (this.lastSelected == SELECTED_KNOB.UPPER) {
+			this.upperValue += e.count * this.increment;
+			checkUpperValue();
+			redraw();
+		} else {
+			this.middleValue += e.count * this.increment;
+			checkMiddleValue();
+			redraw();
+		}
+	}
+
+	/**
+	 * Check if the lower value is in ranges
+	 */
+	private void checkLowerValue() {
+		if (this.lowerValue < this.minimum) {
+			this.lowerValue = this.minimum;
+		}
+		if (this.lowerValue > this.maximum) {
+			this.lowerValue = this.maximum;
+		}
+		if (this.lowerValue > this.upperValue) {
+			this.lowerValue = this.upperValue;
+		}
+	}
+	
+	/**
+	 * Check if the middle value is in lowerValue and upperValue range
+	 */
+	private void checkMiddleValue() {
+		if (this.middleValue < this.lowerValue) {
+			this.middleValue = this.lowerValue;
+		}
+		if (this.middleValue > this.upperValue) {
+			this.middleValue = this.upperValue;
+		}
+	}
+
+	/**
+	 * Check if the upper value is in ranges
+	 */
+	private void checkUpperValue() {
+		if (this.upperValue < this.minimum) {
+			this.upperValue = this.minimum;
+		}
+		if (this.upperValue > this.maximum) {
+			this.upperValue = this.maximum;
+		}
+		if (this.upperValue < this.lowerValue) {
+			this.upperValue = this.lowerValue;
+		}
+	}
+
+	/**
+	 * Draws the widget
+	 *
+	 * @param e paint event
+	 */
+	private void drawWidget(final PaintEvent e) {
+		final Rectangle rect = this.getClientArea();
+		if (rect.width == 0 || rect.height == 0) {
+			return;
+		}
+		e.gc.setAdvanced(true);
+		e.gc.setAntialias(SWT.ON);
+		if (this.orientation == SWT.HORIZONTAL) {
+			drawHorizontalRangeSlider(e.gc);
+		} else {
+			drawVerticalRangeSlider(e.gc);
+		}
+
+	}
+
+	/**
+	 * Draw the range slider (horizontal)
+	 *
+	 * @param gc graphic context
+	 */
+	private void drawHorizontalRangeSlider(final GC gc) {
+		drawBackgroundHorizontal(gc);
+		drawBarsHorizontal(gc);
+		this.coordUpper = drawHorizontalKnob(gc, this.upperValue, SELECTED_KNOB.UPPER);
+		this.coordMiddle = drawHorizontalKnob(gc, this.middleValue, SELECTED_KNOB.MIDDLE);
+		this.coordLower = drawHorizontalKnob(gc, this.lowerValue, SELECTED_KNOB.LOWER);
+	}
+
+	/**
+	 * Draw the background
+	 *
+	 * @param gc graphic context
+	 */
+	private void drawBackgroundHorizontal(final GC gc) {
+		final Rectangle clientArea = this.getClientArea();
+
+		gc.setBackground(getBackground());
+		gc.fillRectangle(clientArea);
+
+		if (isEnabled()) {
+			gc.setForeground(getForeground());
+		} else {
+			gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_GRAY));
+		}
+		gc.drawRoundRectangle(9, 9, clientArea.width - 20, clientArea.height - 20, 3, 3);
+
+		final float pixelSize = computePixelSizeForHorizonalSlider();
+		final int startX = (int) (pixelSize * this.lowerValue);
+		final int endX = (int) (pixelSize * this.upperValue);
+		if (isEnabled()) {
+			gc.setBackground(getForeground());
+		} else {
+			gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_GRAY));
+		}
+		gc.fillRectangle(12 + startX, 9, endX - startX - 6, clientArea.height - 20);
+
+	}
+
+	/**
+	 * @return how many pixels corresponds to 1 point of value
+	 */
+	private float computePixelSizeForHorizonalSlider() {
+		return (getClientArea().width - 20f) / (this.maximum - this.minimum);
+	}
+
+	/**
+	 * Draw the bars
+	 *
+	 * @param gc graphic context
+	 */
+	private void drawBarsHorizontal(final GC gc) {
+		final Rectangle clientArea = this.getClientArea();
+		if (isEnabled()) {
+			gc.setForeground(getForeground());
+		} else {
+			gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_GRAY));
+		}
+
+		final float pixelSize = computePixelSizeForHorizonalSlider();
+		for (int i = 1; i < 10; i++) {
+			final int x = (int) (9 + pixelSize * (this.maximum - this.minimum) / 10 * i);
+			gc.drawLine(x, 4, x, 7);
+			gc.drawLine(x, clientArea.height - 6, x, clientArea.height - 9);
+		}
+
+	}
+
+	/**
+	 * Draws an horizontal knob
+	 *
+	 * @param gc graphic context
+	 * @param value corresponding value
+	 * @param knob if <code>true</code>, draws the upper knob. If
+	 *            <code>false</code>, draws the lower knob
+	 * @return the coordinate of the upper left corner of the knob
+	 */
+	private Point drawHorizontalKnob(final GC gc, final int value, final SELECTED_KNOB knob) {
+		final float pixelSize = computePixelSizeForHorizonalSlider();
+		final int x = (int) (pixelSize * value);
+		Image image;
+		if (knob == SELECTED_KNOB.UPPER) {
+			if (this.upperHover) {
+				image = this.dragInProgress ? this.sliderDrag : this.sliderHover;
+			} else if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				image = this.sliderSelected;
+			} else {
+				image = this.slider;
+			}
+		} else if (knob == SELECTED_KNOB.LOWER) {
+			if (this.lowerHover) {
+				image = this.dragInProgress ? this.sliderDrag : this.sliderHover;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				image = this.sliderSelected;
+			} else {
+				image = this.slider;
+			}
+		} else {
+			if (this.middleHover) {
+				image = this.dragInProgress ? this.sliderDrag : this.sliderHover;
+			} else if (this.lastSelected == SELECTED_KNOB.MIDDLE) {
+				image = this.sliderSelected;
+			} else {
+				image = this.slider;
+			}
+		}
+		if (isEnabled()) {
+			gc.drawImage(image, x + 5, getClientArea().height / 2 - this.slider.getBounds().height / 2);
+		} else {
+			final Image temp = new Image(getDisplay(), image, SWT.IMAGE_DISABLE);
+			gc.drawImage(temp, x + 5, getClientArea().height / 2 - this.slider.getBounds().height / 2);
+			temp.dispose();
+		}
+		return new Point(x + 5, getClientArea().height / 2 - this.slider.getBounds().height / 2);
+	}
+
+	/**
+	 * Draw the range slider (vertical)
+	 *
+	 * @param gc graphic context
+	 */
+	private void drawVerticalRangeSlider(final GC gc) {
+		drawBackgroundVertical(gc);
+		drawBarsVertical(gc);
+		this.coordUpper = drawVerticalKnob(gc, this.upperValue, SELECTED_KNOB.UPPER);
+		this.coordMiddle = drawVerticalKnob(gc, this.middleValue, SELECTED_KNOB.MIDDLE);
+		this.coordLower = drawVerticalKnob(gc, this.lowerValue, SELECTED_KNOB.LOWER);
+	}
+
+	/**
+	 * Draws the background
+	 *
+	 * @param gc graphic context
+	 */
+	private void drawBackgroundVertical(final GC gc) {
+		final Rectangle clientArea = this.getClientArea();
+		gc.setBackground(getBackground());
+		gc.fillRectangle(clientArea);
+
+		if (isEnabled()) {
+			gc.setForeground(getForeground());
+		} else {
+			gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_GRAY));
+		}
+		gc.drawRoundRectangle(9, 9, clientArea.width - 20, clientArea.height - 20, 3, 3);
+
+		final float pixelSize = computePixelSizeForVerticalSlider();
+		final int startY = (int) (pixelSize * this.lowerValue);
+		final int endY = (int) (pixelSize * this.upperValue);
+		if (isEnabled()) {
+			gc.setBackground(getForeground());
+		} else {
+			gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_GRAY));
+		}
+		gc.fillRectangle(9, 12 + startY, clientArea.width - 20, endY - startY - 6);
+
+	}
+
+	/**
+	 * @return how many pixels corresponds to 1 point of value
+	 */
+	private float computePixelSizeForVerticalSlider() {
+		return (getClientArea().height - 20f) / (this.maximum - this.minimum);
+	}
+
+	/**
+	 * Draws the bars
+	 *
+	 * @param gc graphic context
+	 */
+	private void drawBarsVertical(final GC gc) {
+		final Rectangle clientArea = this.getClientArea();
+		if (isEnabled()) {
+			gc.setForeground(getForeground());
+		} else {
+			gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_GRAY));
+		}
+
+		final float pixelSize = computePixelSizeForVerticalSlider();
+		for (int i = 1; i < 10; i++) {
+			final int y = (int) (9 + pixelSize * (this.maximum - this.minimum) / 10 * i);
+			gc.drawLine(4, y, 7, y);
+			gc.drawLine(clientArea.width - 6, y, clientArea.width - 9, y);
+
+		}
+
+	}
+
+	/**
+	 * Draws a vertical knob
+	 *
+	 * @param gc graphic context
+	 * @param value corresponding value
+	 * @param knob if <code>true</code>, draws the upper knob. If
+	 *            <code>false</code>, draws the lower knob
+	 * @return the coordinate of the upper left corner of the knob
+	 */
+	private Point drawVerticalKnob(final GC gc, final int value, final SELECTED_KNOB knob) {
+		final float pixelSize = computePixelSizeForVerticalSlider();
+		final int y = (int) (pixelSize * value);
+
+		Image image;
+		if (knob == SELECTED_KNOB.UPPER) {
+			if (this.upperHover) {
+				image = this.dragInProgress ? this.vSliderDrag : this.vSliderHover;
+			} else if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				image = this.vSliderSelected;
+			} else {
+				image = this.vSlider;
+			}
+		} else if (knob == SELECTED_KNOB.LOWER) {
+			if (this.lowerHover) {
+				image = this.dragInProgress ? this.vSliderDrag : this.vSliderHover;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				image = this.vSliderSelected;
+			} else {
+				image = this.vSlider;
+			}
+		} else { // MIDDLE
+			if (this.middleHover) {
+				image = this.dragInProgress ? this.vSliderDrag : this.vSliderHover;
+			} else if (this.lastSelected == SELECTED_KNOB.MIDDLE) {
+				image = this.vSliderSelected;
+			} else {
+				image = this.vSlider;
+			}
+		}
+		if (isEnabled()) {
+			gc.drawImage(image, getClientArea().width / 2 - 8, y + 2);
+		} else {
+			final Image temp = new Image(getDisplay(), image, SWT.IMAGE_DISABLE);
+			gc.drawImage(temp, getClientArea().width / 2 - 8, y + 2);
+			temp.dispose();
+		}
+		return new Point(getClientArea().width / 2 - 8, y + 2);
+	}
+
+	/**
+	 * Code executed when a key is typed
+	 *
+	 * @param event event
+	 */
+	private void handleKeyDown(final Event event) {
+
+		boolean needRedraw = false;
+
+		if (this.lastSelected == SELECTED_KNOB.NONE) {
+			this.lastSelected = SELECTED_KNOB.LOWER;
+		}
+
+		switch (event.keyCode) {
+		case SWT.HOME:
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				this.upperValue = this.minimum;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				this.lowerValue = this.minimum;
+			} else {
+				this.middleValue = this.minimum;
+			}
+			needRedraw = true;
+			break;
+		case SWT.END:
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				this.upperValue = this.maximum;
+			} if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				this.lowerValue = this.maximum;
+			} else {
+				this.middleValue = this.maximum;
+			}
+			needRedraw = true;
+			break;
+		case SWT.PAGE_UP:
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				this.upperValue += this.pageIncrement;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				this.lowerValue += this.pageIncrement;
+			} else {
+				this.middleValue += this.pageIncrement;
+			}
+			needRedraw = true;
+			break;
+		case SWT.PAGE_DOWN:
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				this.upperValue -= this.pageIncrement;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				this.lowerValue -= this.pageIncrement;
+			} else {
+				this.middleValue -= this.pageIncrement;
+			}
+			needRedraw = true;
+			break;
+		case SWT.ARROW_LEFT:
+		case SWT.ARROW_UP:
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				this.upperValue -= this.increment;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				this.lowerValue -= this.increment;
+			} else {
+				this.middleValue -= this.increment;
+			}
+			needRedraw = true;
+			break;
+		case SWT.ARROW_RIGHT:
+		case SWT.ARROW_DOWN:
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				this.upperValue += this.increment;
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				this.lowerValue += this.increment;
+			} else {
+				this.middleValue += this.increment;
+			}
+			needRedraw = true;
+			break;
+		}
+
+		if (needRedraw) {
+			if (this.lastSelected == SELECTED_KNOB.UPPER) {
+				checkUpperValue();
+			} else if (this.lastSelected == SELECTED_KNOB.LOWER) {
+				checkLowerValue();
+			} else {
+				checkMiddleValue();
+			}
+			redraw();
+		}
+	}
+
+	/**
+	 * Adds the listener to the collection of listeners who will be notified
+	 * when the user changes the receiver's value, by sending it one of the
+	 * messages defined in the <code>SelectionListener</code> interface.
+	 * <p>
+	 * <code>widgetSelected</code> is called when the user changes the
+	 * receiver's value. <code>widgetDefaultSelected</code> is not called.
+	 * </p>
+	 *
+	 * @param listener the listener which should be notified
+	 *
+	 * @exception IllegalArgumentException <ul>
+	 *                <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+	 *                </ul>
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 *
+	 * @see SelectionListener
+	 * @see #removeSelectionListener
+	 */
+	public void addSelectionListener(final SelectionListener listener) {
+		checkWidget();
+		this.listeners.add(listener);
+	}
+
+	/**
+	 * @see org.eclipse.swt.widgets.Composite#computeSize(int, int, boolean)
+	 */
+	@Override
+	public Point computeSize(final int wHint, final int hHint, final boolean changed) {
+		final int width, height;
+		checkWidget();
+		if (this.orientation == SWT.HORIZONTAL) {
+			if (wHint < 100) {
+				width = 100;
+			} else {
+				width = wHint;
+			}
+
+			if (hHint < 30) {
+				height = 30;
+			} else {
+				height = hHint;
+			}
+		} else {
+			if (wHint < 30) {
+				width = 30;
+			} else {
+				width = wHint;
+			}
+
+			if (hHint < 100) {
+				height = 100;
+			} else {
+				height = hHint;
+			}
+		}
+
+		return new Point(width, height);
+	}
+
+	/**
+	 * Returns the amount that the selected receiver's value will be modified by
+	 * when the up/down (or right/left) arrows are pressed.
+	 *
+	 * @return the increment
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int getIncrement() {
+		checkWidget();
+		return this.increment;
+	}
+
+	/**
+	 * Returns the 'lower selection', which is the lower receiver's position.
+	 *
+	 * @return the selection
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int getLowerValue() {
+		checkWidget();
+		return this.lowerValue;
+	}
+	
+	public SELECTED_KNOB getLastSelectedKnob() {
+		return lastSelected;
+	}
+
+	/**
+	 * Returns the 'middle selection', which is the middle receiver's position.
+	 *
+	 * @return the selection
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int getMiddleValue() {
+		checkWidget();
+		return this.middleValue;
+	}
+	
+	/**
+	 * Returns the maximum value which the receiver will allow.
+	 *
+	 * @return the maximum
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int getMaximum() {
+		checkWidget();
+		return this.maximum;
+	}
+
+	/**
+	 * Returns the minimum value which the receiver will allow.
+	 *
+	 * @return the minimum
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int getMinimum() {
+		checkWidget();
+		return this.minimum;
+	}
+
+	/**
+	 * Returns the amount that the selected receiver's value will be modified by
+	 * when the page increment/decrement areas are selected.
+	 *
+	 * @return the page increment
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int getPageIncrement() {
+		checkWidget();
+		return this.pageIncrement;
+	}
+
+	/**
+	 * Returns the 'selection', which is an array where the first element is the
+	 * lower selection, and the second element is the upper selection
+	 *
+	 * @return the selection
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int[] getSelection() {
+		checkWidget();
+		final int[] selection = new int[3];
+		selection[0] = this.lowerValue;
+		selection[1] = this.middleValue;
+		selection[2] = this.upperValue;
+		return selection;
+	}
+
+	/**
+	 * Returns the 'upper selection', which is the upper receiver's position.
+	 *
+	 * @return the selection
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public int getUpperValue() {
+		checkWidget();
+		return this.upperValue;
+	}
+
+	/**
+	 * Removes the listener from the collection of listeners who will be
+	 * notified when the user changes the receiver's value.
+	 *
+	 * @param listener the listener which should no longer be notified
+	 *
+	 * @exception IllegalArgumentException <ul>
+	 *                <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+	 *                </ul>
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 *
+	 * @see SelectionListener
+	 * @see #addSelectionListener
+	 */
+	public void removeSelectionListener(final SelectionListener listener) {
+		checkWidget();
+		this.listeners.remove(listener);
+	}
+
+	/**
+	 * Sets the amount that the selected receiver's value will be modified by
+	 * when the up/down (or right/left) arrows are pressed to the argument,
+	 * which must be at least one.
+	 *
+	 * @param increment the new increment (must be greater than zero)
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setIncrement(final int increment) {
+		checkWidget();
+		this.increment = increment;
+		redraw();
+	}
+
+	/**
+	 * Sets the 'lower selection', which is the receiver's lower value, to the
+	 * argument which must be greater than or equal to zero.
+	 *
+	 * @param value the new selection (must be zero or greater)
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setLowerValue(final int value) {
+		checkWidget();
+		if (this.minimum <= value && value <= this.maximum && value <= this.upperValue) {
+			this.lowerValue = value;
+			
+			if (middleValue < lowerValue) middleValue = lowerValue;
+		}
+		
+		redraw();
+	}
+
+	/**
+	 * Sets the maximum value that the receiver will allow. This new value will
+	 * be ignored if it is not greater than the receiver's current minimum
+	 * value. If the new maximum is applied then the receiver's selection value
+	 * will be adjusted if necessary to fall within its new range.
+	 *
+	 * @param value the new maximum, which must be greater than the current
+	 *            minimum
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setMaximum(final int value) {
+		checkWidget();
+		if (this.minimum <= value) {
+			this.maximum = value;
+			if (this.lowerValue > this.maximum) {
+				this.lowerValue = this.maximum;
+			}
+			if (this.upperValue > this.maximum) {
+				this.upperValue = this.maximum;
+			}
+			if (middleValue > this.maximum) {
+				middleValue = maximum;
+			}
+		}
+		redraw();
+	}
+
+	/**
+	 * Sets the minimum value that the receiver will allow. This new value will
+	 * be ignored if it is negative or is not less than the receiver's current
+	 * maximum value. If the new minimum is applied then the receiver's
+	 * selection value will be adjusted if necessary to fall within its new
+	 * range.
+	 *
+	 * @param value the new minimum, which must be nonnegative and less than the
+	 *            current maximum
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setMinimum(final int value) {
+		checkWidget();
+		if (this.maximum >= value) {
+			this.minimum = value;
+			if (this.lowerValue < this.minimum) {
+				this.lowerValue = this.minimum;
+			}
+			if (this.upperValue < this.minimum) {
+				this.upperValue = this.minimum;
+			}
+			if (this.middleValue < this.minimum) {
+				this.middleValue = this.minimum;
+			}
+		}
+		redraw();
+	}
+
+	/**
+	 * Sets the amount that the receiver's value will be modified by when the
+	 * page increment/decrement areas are selected to the argument, which must
+	 * be at least one.
+	 *
+	 * @param pageIncrement the page increment (must be greater than zero)
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setPageIncrement(final int pageIncrement) {
+		checkWidget();
+		this.pageIncrement = pageIncrement;
+	}
+
+	/**
+	 * Sets the 'selection', which is the receiver's value, to the argument
+	 * which must be greater than or equal to zero.
+	 *
+	 * @param value the new selection (first value is lower value, second value
+	 *            is upper value)
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setSelection(final int[] values) {
+		if (values.length != 3) return;
+	
+		checkWidget();
+		setLowerValue(values[0]);
+		setMiddleValue(values[1]);
+		setUpperValue(values[2]);
+		checkUpperValue();
+		checkLowerValue();
+		checkMiddleValue();
+		redraw();
+	}
+
+	/**
+	 * Sets the 'selection', which is the receiver's value, argument which must
+	 * be greater than or equal to zero.
+	 *
+	 * @param lowerValue the new lower selection (must be zero or greater)
+	 * @param upperValue the new upper selection (must be zero or greater)
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setSelection(final int lowerValue, final int middleValue, final int upperValue) {
+		checkWidget();
+		setLowerValue(lowerValue);
+		setMiddleValue(middleValue);
+		setUpperValue(upperValue);
+	}
+
+	/**
+	 * Sets the 'upper selection', which is the upper receiver's value, argument
+	 * which must be greater than or equal to zero.
+	 *
+	 * @param value the new selection (must be zero or greater)
+	 *
+	 * @exception SWTException <ul>
+	 *                <li>ERROR_WIDGET_DISPOSED - if the receiver has been
+	 *                disposed</li>
+	 *                <li>ERROR_THREAD_INVALID_ACCESS - if not called from the
+	 *                thread that created the receiver</li>
+	 *                </ul>
+	 */
+	public void setUpperValue(final int value) {
+		checkWidget();
+		if (this.minimum <= value && value <= this.maximum && value >= this.lowerValue) {
+			this.upperValue = value;
+			
+			if (middleValue > this.upperValue) middleValue = upperValue;
+			redraw();
+		}
+	}
+	
+	public void setMiddleValue(int value) {
+		if (this.minimum <= value && value <= this.maximum && value >= this.lowerValue && value <= this.upperValue) {
+			this.middleValue = value;
+			redraw();
+		}
+	}
+
+	public boolean isDragMiddleKnob() {
+		return this.dragInProgress && SELECTED_KNOB.MIDDLE == lastSelected;
+	}
+}
\ No newline at end of file

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/commands/function/TripleRangeSlider.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferencePage.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferencePage.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferencePage.java	(revision 456)
@@ -0,0 +1,147 @@
+// Copyright © 2010-2013 ENS de Lyon.
+// 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.backtomedia.preferences;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditor;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.preferences.ScopedPreferenceStore;
+import org.txm.rcp.preferences.TXMPreferencePage;
+import org.txm.rcp.preferences.TXMPreferenceStore;
+
+import vlcplayerrcp.MessagesMP;
+// TODO: Auto-generated Javadoc
+/**
+ * This class represents a preference page that is contributed to the
+ * Preferences dialog. By subclassing <samp>FieldEditorPreferencePage</samp>, we
+ * can use the field support built into JFace that allows us to create a page
+ * that is small and knows how to save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They are stored in the
+ * preference store that belongs to the main plug-in class. That way,
+ * preferences can be accessed directly via the preference store.
+ */
+
+public class BackToMediaPreferencePage extends TXMPreferencePage {
+
+	/** The Constant ID. */
+	public static final String ID = "org.txm.backtomedia.preferences.BackToMediaPreferencePage"; //$NON-NLS-1$
+
+	/** The preferences. */
+	private ScopedPreferenceStore preferences;
+
+	/**
+	 * The display parts count in chart title state.
+	 */
+	private BooleanFieldEditor loopProperty;
+	private BooleanFieldEditor useWordProperty;
+	private StringFieldEditor defaultStructure;
+	private StringFieldEditor defaultStructureStartProperty;
+	private StringFieldEditor defaultStructureEndProperty;
+	private StringFieldEditor defaultWordTimeProperty;
+	private Group spanGroup;
+	
+	/**
+	 * Instantiates a new diagnostic preference page.
+	 */
+	public BackToMediaPreferencePage() {
+		super();
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+	 */
+	@Override
+	public void init(IWorkbench workbench) {
+		this.setPreferenceStore(new TXMPreferenceStore(BackToMediaPreferences.PREFERENCES_NODE));
+		//this.setImageDescriptor(WordCloudAdapterFactory.ICON);
+	}
+
+	/**
+	 * Creates the field editors. Field editors are abstractions of the common
+	 * GUI blocks needed to manipulate various types of preferences. Each field
+	 * editor knows how to save and restore itself.
+	 */
+	@Override
+	public void createFieldEditors() {
+		
+		loopProperty = new BooleanFieldEditor(BackToMediaPreferences.REPEAT,MessagesMP.BackToMediaPreferencePage_1, getFieldEditorParent());
+		addField(loopProperty);
+		
+		useWordProperty = new BooleanFieldEditor(BackToMediaPreferences.USEWORDPROPERTY,MessagesMP.BackToMediaPreferencePage_2, getFieldEditorParent());
+		addField(useWordProperty);
+		
+		spanGroup = new Group(getFieldEditorParent(), SWT.NONE);
+		spanGroup.setText(MessagesMP.BackToMediaPreferencePage_3);
+		GridData gridData2 = new GridData(SWT.FILL, SWT.FILL, true, false);
+		gridData2.horizontalSpan = 3;
+		gridData2.verticalIndent = 10;
+		spanGroup.setLayoutData(gridData2);
+		RowLayout rlayout = new RowLayout(SWT.VERTICAL);
+		rlayout.marginHeight = 5;
+		spanGroup.setLayout(rlayout);
+		
+		defaultWordTimeProperty = new StringFieldEditor(BackToMediaPreferences.WORD_PROPERTY,MessagesMP.BackToMediaPreferencePage_4, spanGroup);
+		addField(defaultWordTimeProperty);
+		
+		defaultStructure = new StringFieldEditor(BackToMediaPreferences.STRUCTURE,MessagesMP.BackToMediaPreferencePage_5, spanGroup);
+		addField(defaultStructure);
+		
+		defaultStructureStartProperty = new StringFieldEditor(BackToMediaPreferences.STRUCTURE_START_PROPERTY,MessagesMP.BackToMediaPreferencePage_6, spanGroup);
+		addField(defaultStructureStartProperty);
+		
+		defaultStructureEndProperty = new StringFieldEditor(BackToMediaPreferences.STRUCTURE_END_PROPERTY,MessagesMP.BackToMediaPreferencePage_7, spanGroup);
+		addField(defaultStructureEndProperty);
+		
+		updateEnables(useWordProperty.getBooleanValue());
+	}
+	
+	public void updateEnables(boolean useWordPropertyValue) {
+		defaultStructure.setEnabled(!useWordPropertyValue, spanGroup);
+		defaultStructureStartProperty.setEnabled(!useWordPropertyValue, spanGroup);
+		defaultStructureEndProperty.setEnabled(!useWordPropertyValue, spanGroup);
+		defaultWordTimeProperty.setEnabled(useWordPropertyValue, spanGroup);
+	}
+	
+	@Override
+	public void propertyChange(PropertyChangeEvent event) {
+		String prefName = ((FieldEditor) event.getSource()).getPreferenceName();
+		if (prefName.equals(BackToMediaPreferences.USEWORDPROPERTY)) {
+			updateEnables(useWordProperty.getBooleanValue());
+		}
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferencePage.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferences.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferences.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferences.java	(revision 456)
@@ -0,0 +1,38 @@
+package org.txm.backtomedia.preferences;
+
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.service.prefs.Preferences;
+import org.txm.core.preferences.TXMPreferences;
+
+public class BackToMediaPreferences extends TXMPreferences {
+
+	// auto populate the preference node qualifier from the current bundle id
+	public static final String PREFERENCES_NODE = FrameworkUtil.getBundle(BackToMediaPreferences.class).getSymbolicName();
+	
+	public static final String PREFERENCES_PREFIX = "backtomedia_";
+	
+	public static final String REPEAT = "backtomedia_loop"; //$NON-NLS-1$
+	public static final String USEWORDPROPERTY = "backtomedia_type"; //$NON-NLS-1$
+	public static final String STRUCTURE = "backtomedia_structure"; //$NON-NLS-1$
+	public static final String STRUCTURE_START_PROPERTY = "backtomedia_startproperty"; //$NON-NLS-1$
+	public static final String STRUCTURE_END_PROPERTY = "backtomedia_endproperty"; //$NON-NLS-1$
+	public static final String WORD_PROPERTY = "backtomedia_time_property"; //$NON-NLS-1$
+
+	
+	public BackToMediaPreferences() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public void initializeDefaultPreferences() {
+	
+		Preferences preferences = DefaultScope.INSTANCE.getNode(PREFERENCES_NODE);
+		preferences.putBoolean(REPEAT, true);
+		preferences.putBoolean(USEWORDPROPERTY, false);
+		preferences.put(STRUCTURE, "sp");
+		preferences.put(STRUCTURE_START_PROPERTY, "starttime");
+		preferences.put(STRUCTURE_START_PROPERTY, "endtime");
+		preferences.put(WORD_PROPERTY, "time");
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/preferences/BackToMediaPreferences.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/input/VLCPlayerEditorInput.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/input/VLCPlayerEditorInput.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/input/VLCPlayerEditorInput.java	(revision 456)
@@ -0,0 +1,131 @@
+// Copyright © 2010-2013 ENS de Lyon.
+// 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.backtomedia.editors.input;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.txm.rcp.Application;
+import org.txm.rcp.IImageKeys;
+
+// TODO: Auto-generated Javadoc
+/**
+ * VLCEditor input
+ *
+ * @author mdecorde
+ */
+public class VLCPlayerEditorInput implements IEditorInput {
+	
+	/**
+	 * Instantiates a new VLC player editor input.
+	 *
+	 * @param src the source
+	 */
+	public VLCPlayerEditorInput() {
+		super();
+	}
+
+	/**
+	 * Exists.
+	 *
+	 * @return true, if successful
+	 * @see org.eclipse.ui.IEditorInput#exists()
+	 */
+	@Override
+	public boolean exists() {
+		return false;
+	}
+
+	/**
+	 * Gets the image descriptor.
+	 *
+	 * @return the image descriptor
+	 * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+	 */
+	@Override
+	public ImageDescriptor getImageDescriptor() {
+		return AbstractUIPlugin.imageDescriptorFromPlugin(
+				Application.PLUGIN_ID,
+				IImageKeys.ACTION_WORDCLOUD);
+	}
+
+	/**
+	 * Gets the name.
+	 *
+	 * @return the name
+	 * @see org.eclipse.ui.IEditorInput#getName()
+	 */
+	@Override
+	public String getName() {
+		return "VLCPlayer"; //$NON-NLS-1$
+	}
+
+	/**
+	 * Gets the persistable.
+	 *
+	 * @return the persistable
+	 * @see org.eclipse.ui.IEditorInput#getPersistable()
+	 */
+	@Override
+	public IPersistableElement getPersistable() {
+		return null;
+	}
+
+	/**
+	 * Gets the tool tip text.
+	 *
+	 * @return the tool tip text
+	 * @see org.eclipse.ui.IEditorInput#getToolTipText()
+	 */
+	@Override
+	public String getToolTipText() {
+		return getName();
+	}
+
+	/**
+	 * Gets the adapter.
+	 *
+	 * @param arg0 the arg0
+	 * @return the adapter
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	@Override
+	public Object getAdapter(@SuppressWarnings("rawtypes") Class arg0) {
+		return null;
+	}
+
+	/**
+	 * Gets the source.
+	 *
+	 * @return the Correspondance analysis underlying object
+	 */
+	public Object getSource() {
+		return ""; //$NON-NLS-1$
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/input/VLCPlayerEditorInput.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.java	(revision 456)
@@ -0,0 +1,562 @@
+package org.txm.backtomedia.editors.vlcplayer;
+
+import java.awt.Canvas;
+import java.awt.Frame;
+import java.io.File;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.awt.SWT_AWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Scale;
+import org.eclipse.swt.widgets.Text;
+import org.mihalis.opal.rangeSlider.RangeSlider;
+import org.txm.backtomedia.commands.function.TripleRangeSlider;
+import org.txm.backtomedia.preferences.BackToMediaPreferencePage;
+import org.txm.backtomedia.preferences.BackToMediaPreferences;
+import org.txm.core.preferences.TXMPreferences;
+import org.txm.utils.logger.Log;
+
+import uk.co.caprica.vlcj.binding.internal.libvlc_media_t;
+import uk.co.caprica.vlcj.discovery.NativeDiscovery;
+import uk.co.caprica.vlcj.logger.Logger;
+import uk.co.caprica.vlcj.logger.Logger.Level;
+import uk.co.caprica.vlcj.player.MediaPlayer;
+import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
+import uk.co.caprica.vlcj.player.MediaPlayerEventListener;
+import uk.co.caprica.vlcj.player.MediaPlayerFactory;
+import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
+import uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface;
+import uk.co.caprica.vlcj.player.embedded.videosurface.VideoSurfaceAdapter;
+import uk.co.caprica.vlcj.player.embedded.videosurface.linux.LinuxVideoSurfaceAdapter;
+import uk.co.caprica.vlcj.player.embedded.videosurface.mac.MacVideoSurfaceAdapter;
+import uk.co.caprica.vlcj.player.embedded.videosurface.windows.WindowsVideoSurfaceAdapter;
+import uk.co.caprica.vlcj.version.LibVlcVersion;
+import vlcplayerrcp.MessagesMP;
+public class VLCPlayer extends Composite {
+	static {
+		if (!new NativeDiscovery().discover()) {
+			System.out.println(MessagesMP.error_native_libs);
+		} else {
+			//System.out.println("VLC native libraries found !");
+		}
+	}
+	protected static final String NOMEDIA = ""; //$NON-NLS-1$
+	private MediaPlayerFactory mediaPlayerFactory;
+	private EmbeddedMediaPlayer vlcPlayer;
+	private Composite videoComposite;
+	private CanvasVideoSurface playerCanvas;
+	private Scale volumeField;
+	private Button playButton;
+	private Button repeatButton;
+	
+	protected String currentlyPlayed = ""; //$NON-NLS-1$
+	private Scale rateField;
+	//private String startTime, endTime;
+	private int start, end;
+	
+	protected boolean hasEnded = false;
+	private String previouslyPlayed = ""; //$NON-NLS-1$
+	private boolean repeat = false;
+	protected int volume = 100;
+	private Button stopButton;
+	Label timeLabel;
+	TripleRangeSlider timeRange;
+	boolean firstLengthEvent = true;
+
+	long previous = 0;
+	long time, mins, secs;
+
+	static {
+		//uncomment to enable VLC logs
+		//Logger.setLevel(Level.TRACE);
+	}
+
+	public VLCPlayer(Composite parent, int style) {
+		super(parent, style);
+		this.setLayout(new GridLayout(11, false));
+
+		// THE PLAYER
+		videoComposite = new Composite(this, SWT.EMBEDDED | SWT.NO_BACKGROUND);
+
+		Frame videoFrame = SWT_AWT.new_Frame(videoComposite);
+		Canvas canvas = new Canvas();
+		canvas.setBackground(java.awt.Color.black);
+		videoFrame.add(canvas);
+
+		mediaPlayerFactory = new MediaPlayerFactory();
+
+		vlcPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer(null);
+		videoComposite.setVisible(true);
+
+		VideoSurfaceAdapter vadapter;
+		String OS = System.getProperty("os.name"); //$NON-NLS-1$
+		if (OS.indexOf("Windows") >= 0) { //$NON-NLS-1$
+			vadapter = new WindowsVideoSurfaceAdapter();
+		} else if (OS.indexOf("Mac") >= 0) { //$NON-NLS-1$
+			vadapter = new MacVideoSurfaceAdapter();
+		} else {
+			vadapter = new LinuxVideoSurfaceAdapter();
+		}
+
+		playerCanvas = new CanvasVideoSurface(canvas, vadapter);
+		vlcPlayer.setVideoSurface(playerCanvas);
+		vlcPlayer.setPlaySubItems(true); // for youtube, 2013-12-10: youtube.lua don't work
+
+		GridData gdata = new GridData(SWT.FILL, SWT.FILL, true, true);
+		gdata.horizontalSpan = 11;		
+		videoComposite.setLayoutData(gdata);
+
+		// THE CONTROL BUTTONS
+		playButton = new Button(this,SWT.PUSH);
+		GridData playLayoutData = new GridData(SWT.FILL, SWT.CENTER, false, false);
+		playButton.setLayoutData(playLayoutData);
+		playButton.setText(MessagesMP.play);
+		playButton.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				if (currentlyPlayed.length() == 0) {
+					selectMedia();
+					playButton.setText(MessagesMP.pause);
+				} else	if (vlcPlayer.isPlaying()) {
+					vlcPlayer.pause();
+					playButton.setText(MessagesMP.resume);
+				} else if (hasEnded) {
+					replay();
+				} else {
+					vlcPlayer.play();
+					playButton.setText(MessagesMP.pause);
+				}
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {}
+		});
+
+		//		Button browseButton = new Button(this,SWT.PUSH);
+		//		browseButton.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
+		//		browseButton.setText("Open...");
+		//		browseButton.addSelectionListener(new SelectionListener() {
+		//			@Override
+		//			public void widgetSelected(SelectionEvent e) {
+		//				selectMedia();			
+		//			}
+		//
+		//			@Override
+		//			public void widgetDefaultSelected(SelectionEvent e) {}
+		//		});
+
+		stopButton = new Button(this,SWT.PUSH);
+		stopButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+		stopButton.setText(MessagesMP.stop);
+		stopButton.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				stop();
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {}
+		});
+
+		timeLabel = new Label(this, SWT.NONE);
+		timeLabel.setText("00:00"); //$NON-NLS-1$
+
+		timeRange = new TripleRangeSlider(this, SWT.None);
+		timeRange.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+		timeRange.setToolTipText(MessagesMP.time_range);
+		timeRange.addSelectionListener(new SelectionListener() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				TripleRangeSlider.SELECTED_KNOB sk = timeRange.getLastSelectedKnob();
+				switch(sk) {
+				case UPPER:
+					end = timeRange.getUpperValue();
+					
+					if (end < time) {
+						//System.out.println("Upper changed: fix time");
+						time = end;
+						vlcPlayer.setTime(time);
+					}
+					break;
+				case LOWER:
+					start = timeRange.getLowerValue();
+					if (start > time) {
+						//System.out.println("Lower changed: fix time");
+						time = start;
+						vlcPlayer.setTime(time);
+					}
+					break;
+				case MIDDLE:
+					
+					time = timeRange.getMiddleValue();
+					//System.out.println("Middle changed: fix time: "+time);
+					vlcPlayer.setTime(time);
+					break;
+				default:
+					// nothing
+				}
+				//System.out.println("time range: "+start+" -> "+end+" time="+time);
+			}
+			
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+
+		repeatButton = new Button(this,SWT.CHECK);
+		repeatButton.setText(MessagesMP.repeat);
+		repeat = TXMPreferences.getBoolean(BackToMediaPreferences.REPEAT, BackToMediaPreferences.PREFERENCES_NODE);
+		repeatButton.setSelection(repeat);
+		repeatButton.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				repeat = repeatButton.getSelection();
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+
+		Label l = new Label(this, SWT.NONE);
+		l.setText(MessagesMP.rate);
+
+		rateField = new Scale(this, SWT.BORDER);
+		GridData gdata4 = new GridData(SWT.FILL, SWT.CENTER, false, false);
+		gdata4.widthHint = 100;
+		rateField.setLayoutData(gdata4);
+		rateField.setMaximum(150);
+		rateField.setMinimum(60);
+		rateField.setSelection(100);
+		rateField.setPageIncrement (5);
+		rateField.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				float rate = rateField.getSelection()/100.0f;
+				vlcPlayer.setRate(rate);
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+
+		l = new Label(this, SWT.NONE);
+		l.setText(MessagesMP.volume);
+
+		volumeField = new Scale(this, SWT.BORDER);
+		gdata4 = new GridData(SWT.FILL, SWT.CENTER, false, false);
+		gdata4.widthHint = 100;
+		volumeField.setLayoutData(gdata4);
+		volumeField.setMinimum(0);
+		volumeField.setMaximum(100);
+		volumeField.setSelection(volume);
+		volumeField.setPageIncrement (5);
+		volumeField.addSelectionListener(new SelectionListener() {
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				vlcPlayer.setVolume(volumeField.getSelection());
+				volume = volumeField.getSelection();
+			}
+
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) { }
+		});
+
+		vlcPlayer.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {			
+			@Override
+			public void playing(MediaPlayer mediaPlayer) {
+				if (volumeField != null)
+					vlcPlayer.setVolume(volume);
+			}
+
+			@Override
+			public void finished(MediaPlayer mediaPlayer) {
+				if (repeat) {
+					replay();
+				} else {
+					hasEnded = true;
+				}
+			}
+		});
+
+		vlcPlayer.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
+
+			//			@Override
+			//			public void videoOutput(MediaPlayer arg0, int arg1) {
+			//				System.out.println("videoOutput: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void titleChanged(MediaPlayer arg0, int arg1) {
+			//				System.out.println("titleChanged: "+arg1);
+			//			}
+
+
+			@Override
+			public void timeChanged(MediaPlayer arg0, final long arg1) {
+				time = arg1;
+				if (previous == time) return;
+				previous = time;
+
+				timeLabel.getDisplay().syncExec(new Runnable() {
+					@Override
+					public void run() {
+						if (timeRange.isDisposed()) return;
+						if (!timeRange.isDragMiddleKnob())
+							timeRange.setMiddleValue((int)time);
+						updateTimeLabel();
+						
+						if (arg1 > end) {
+							//System.out.println("Time > end :"+arg1 +" > "+end);
+							if (repeat) {
+								vlcPlayer.setTime(start);
+							} else {
+								vlcPlayer.stop();
+							}
+						}
+					}
+				});
+				
+				
+			}
+
+			//			@Override
+			//			public void subItemPlayed(MediaPlayer arg0, int arg1) {
+			//				System.out.println("subItemPlayed: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void subItemFinished(MediaPlayer arg0, int arg1) {
+			//				System.out.println("subItemFinished: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void stopped(MediaPlayer arg0) {
+			//				System.out.println("stopped: ");
+			//			}
+			//			
+			//			@Override
+			//			public void snapshotTaken(MediaPlayer arg0, String arg1) {
+			//				System.out.println("snapshotTaken: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void seekableChanged(MediaPlayer arg0, int arg1) {
+			//				System.out.println("seekableChanged: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void positionChanged(MediaPlayer arg0, float arg1) {
+			//				//System.out.println("positionChanged: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void playing(MediaPlayer arg0) {
+			//				System.out.println("playing: ");
+			//			}
+			//			
+			//			@Override
+			//			public void paused(MediaPlayer arg0) {
+			//				System.out.println("paused: ");
+			//			}
+			//			
+			//			@Override
+			//			public void pausableChanged(MediaPlayer arg0, int arg1) {
+			//				System.out.println("pausableChanged: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void opening(MediaPlayer arg0) {
+			//				System.out.println("opening: ");
+			//			}
+			//			
+			//			@Override
+			//			public void newMedia(MediaPlayer arg0) {
+			//				System.out.println("newMedia: ");
+			//			}
+			//						
+			//			@Override
+			//			public void mediaStateChanged(MediaPlayer arg0, int arg1) {
+			//				System.out.println("mediaStateChanged: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void mediaParsedChanged(MediaPlayer arg0, int arg1) {
+			//				System.out.println("mediaParsedChanged: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void mediaMetaChanged(MediaPlayer arg0, int arg1) {
+			//				System.out.println("mediaMetaChanged: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void mediaFreed(MediaPlayer arg0) {
+			//				System.out.println("mediaFreed: ");
+			//			}
+			//			
+			//			@Override
+			//			public void mediaDurationChanged(MediaPlayer arg0, long arg1) {
+			//				//System.out.println("mediaDurationChanged: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void mediaChanged(MediaPlayer arg0, libvlc_media_t arg1, String arg2) {
+			//				System.out.println("mediaChanged: "+arg1+" "+arg2);
+			//			}
+			//			
+			
+			@Override
+			public void lengthChanged(MediaPlayer arg0, final long arg1) {
+				if (firstLengthEvent) {
+					firstLengthEvent = false;
+					
+					//initialize time range widget limits
+					timeRange.getDisplay().syncExec(new Runnable() {
+						@Override
+						public void run() {
+							timeRange.setMaximum((int)arg1);
+							if (start == end) end = (int)arg1;
+							timeRange.setLowerValue(start);
+							timeRange.setUpperValue(end);
+							//System.out.println("Range: "+start+" -> "+end+" song length "+arg1);
+						}
+					});
+				}
+			}
+			//			
+			//			@Override
+			//			public void forward(MediaPlayer arg0) {
+			//				System.out.println("forward: ");
+			//			}
+			//			
+			//			@Override
+			//			public void finished(MediaPlayer arg0) {
+			//				System.out.println("finished: ");
+			//			}
+			//			
+			//			@Override
+			//			public void error(MediaPlayer arg0) {
+			//				System.out.println("error: ");
+			//			}
+			//			
+			//			@Override
+			//			public void endOfSubItems(MediaPlayer arg0) {
+			//				System.out.println("endOfSubItems: ");
+			//			}
+			//			
+			//			@Override
+			//			public void buffering(MediaPlayer arg0, float arg1) {
+			//				//System.out.println("buffering: "+arg1);
+			//			}
+			//			
+			//			@Override
+			//			public void backward(MediaPlayer arg0) {
+			//				System.out.println("backward: ");
+			//			}
+			//
+			//			@Override
+			//			public void mediaSubItemAdded(MediaPlayer arg0, libvlc_media_t arg1) {
+			//				// TODO Auto-generated method stub
+			//				
+			//			}
+		});
+
+	}
+
+	private void updateTimeLabel() {
+		mins = time / 60000;
+		secs = time % 60000;
+		timeLabel.setText(String.format("%02d:%02d", mins, secs)); //$NON-NLS-1$
+		timeLabel.update();
+	}
+
+	protected void replay() {
+		if (currentlyPlayed.length() > 0) {
+			//this.play(currentlyPlayed, startTime, endTime);
+			vlcPlayer.setTime(start);
+			playButton.setText(MessagesMP.pause);
+		}
+	}
+
+	protected void selectMedia() {
+		Log.info(MessagesMP.select_file);
+
+		FileDialog fd = new FileDialog(VLCPlayer.this.getShell(), SWT.OPEN);
+		fd.setText(MessagesMP.select_file_title);
+		File f = new File(previouslyPlayed);
+		if (f.isDirectory()) fd.setFilterPath(f.getPath());
+		else fd.setFilterPath(f.getParent());
+
+		String[] filterExt = { "*.*", "*.mp3", "*.mp4", "*.avi" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+		fd.setFilterExtensions(filterExt);
+		String selected = fd.open();
+		if (selected == null) {
+			System.out.println(MessagesMP.cancel);
+			return;
+		}
+
+		currentlyPlayed = selected;
+		previouslyPlayed = selected;
+		Log.info(MessagesMP.opening+currentlyPlayed);
+		play(currentlyPlayed, 0, 0);
+
+	}
+
+	/**
+	 * 
+	 * @param mrl
+	 * @param time msec start time
+	 * @param endtime msec end time
+	 */
+	public void play(String mrl, int time, int endtime) {
+		Log.info(MessagesMP.bind(MessagesMP.playing, new Object[]{mrl, time, endtime}));
+		play(mrl, ""+time/1000.0f, ""+endtime/1000.0f); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	public void play(String mrl, int time) {
+		play(mrl, time, time);
+	}
+
+	public void hideStopButton() {
+		if (this.stopButton != null && !this.stopButton.isDisposed())
+			this.stopButton.dispose();
+	}
+
+	public void play(String mrl, String startTime, String endTime) {
+
+		start = (int)(1000*Float.parseFloat(startTime));
+		end = (int)(1000*Float.parseFloat(endTime));
+		
+		Log.info(MessagesMP.bind(MessagesMP.playing, new Object[]{mrl, startTime, endTime}));
+		vlcPlayer.playMedia(mrl);
+		vlcPlayer.setTime(start);
+		if (new File(mrl+".srt").exists()) { //$NON-NLS-1$
+			vlcPlayer.setSubTitleFile(mrl+".srt"); //$NON-NLS-1$
+		}
+		currentlyPlayed = mrl;
+		previouslyPlayed = mrl;
+		
+		playButton.setText(MessagesMP.pause);
+		firstLengthEvent = true;
+	}
+
+	public void setRepeat(boolean repeat) {
+		this.repeat = repeat;
+		repeatButton.setSelection(repeat);
+	}
+
+	public void stop() {
+		vlcPlayer.stop();
+		currentlyPlayed = NOMEDIA;
+		if (!playButton.isDisposed()) playButton.setText(MessagesMP.play);
+	}
+}

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayerEditor.java
===================================================================
--- tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayerEditor.java	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayerEditor.java	(revision 456)
@@ -0,0 +1,136 @@
+package org.txm.backtomedia.editors.vlcplayer;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.txm.concordance.core.functions.Line;
+import org.txm.rcp.commands.editor.CustomizableEditor;
+import org.txm.rcp.editors.TXMEditorPart;
+import org.txm.searchengine.cqp.corpus.Corpus;
+
+public class VLCPlayerEditor extends TXMEditorPart implements CustomizableEditor {
+	/** The Constant ID. */
+	public static final String ID = VLCPlayerEditor.class.getCanonicalName(); //$NON-NLS-1$
+	private Line concordanceLine;
+	
+	VLCPlayer player;
+
+	@Override
+	public void createPartControl(Composite parent) {
+		player = new VLCPlayer(parent, SWT.NONE);
+	}
+
+	public void init() {
+		
+	}
+
+	@Override
+	public void setFocus() {
+		
+	}
+	
+	@Override
+	public void dispose() {
+		try {if (player != null) player.stop();}
+		catch(Exception e) {e.printStackTrace();}
+		
+		super.dispose();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	@Override
+	public void doSave(IProgressMonitor monitor) { }
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#doSaveAs()
+	 */
+	@Override
+	public void doSaveAs() { }
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput input)
+			throws PartInitException {
+		setSite(site);
+		setInput(input);
+		//VLCPlayerEditorInput ii = (VLCPlayerEditorInput) input;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#isDirty()
+	 */
+	@Override
+	public boolean isDirty() {
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return false;
+	}
+
+	@Override
+	public void setName(String name) {
+		this.setPartName(name);
+	}
+
+	@Override
+	public void setIcon(Image titleImage) {
+		this.setTitleImage(titleImage);
+	}
+
+	@Override
+	public void setSource(Object source) {
+		//this.source = source;
+	}
+
+	@Override
+	public Object getSource() {
+		return concordanceLine;
+	}
+
+	public VLCPlayer getPlayer() {
+		return player;
+	}
+
+	@Override
+	public Object toConcordance() {
+		return null;
+	}
+
+	@Override
+	public Object toIndex() {
+		return null;
+	}
+
+	@Override
+	public Object toProgression() {
+		return null;
+	}
+
+	@Override
+	public boolean usingCorpus(Corpus corpus) {
+		return false;
+	}
+
+	@Override
+	public boolean updateCorpus(Corpus corpus) {
+		return false;
+	}
+
+	@Override
+	public void computeResult(boolean update) {
+		// no result to compute :)
+	}
+}
\ No newline at end of file

Property changes on: tmp/org.txm.backtomedia.rcp/src/org/txm/backtomedia/editors/vlcplayer/VLCPlayerEditor.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/ApplicationActionBarAdvisor.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/ApplicationActionBarAdvisor.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/ApplicationWorkbenchAdvisor.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/ApplicationWorkbenchAdvisor.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/messages.properties
===================================================================
--- tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/messages.properties	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/messages.properties	(revision 456)
@@ -0,0 +1,40 @@
+BackToMedia_0=No StructuredSelection. Aborting.
+BackToMedia_1=Current editor is not a ConcordancesEditor. Aborting.
+BackToMedia_11=No time property found with name: 
+BackToMedia_12=Error: no ''{0}'' structure
+BackToMedia_14=Error: no ''{0}'' structure property
+BackToMedia_16=STARTTIME: 
+BackToMedia_17=Error: this is not a transcription corpus: no ''{0}'' structure properties
+BackToMedia_19=ENDTIME: 
+BackToMedia_25=AUDIO/VIDEO FILE: 
+BackToMedia_26=Error: no media file (mp3, wav, mp4 or avi) found for name: 
+BackToMedia_27=All media files should be stored in the '
+BackToMedia_28=' directory.
+BackToMedia_29=Media file names should be '<transcription ID>.<supported format>'
+BackToMedia_30=Unexpected error: 
+BackToMedia_7=TEXT ID: 
+BackToMediaPreferencePage_0=MediaPlayer
+BackToMediaPreferencePage_1=Open the player with the repeat option enable
+BackToMediaPreferencePage_2=Use word property to get time
+BackToMediaPreferencePage_3=Span to play
+BackToMediaPreferencePage_4=Word time property
+BackToMediaPreferencePage_5=Structure
+BackToMediaPreferencePage_6=Start property
+BackToMediaPreferencePage_7=End property
+cancel=Cancel
+error_native_libs=ERROR: failed to find VLC native libraries
+error_open_media=Error: could not open VLC player.
+opening=Opening: 
+opening_media=Opening media... 
+pause=PAUSE
+play=PLAY
+playing=Playing {0} from {1} ms to {2} ms ...
+rate=Rate:
+repeat=Repeat
+resume=RESUME
+select_file=Selecting file...
+select_file_title=Select a audio/video file
+select_object=Selected object: 
+stop=STOP
+time_range=Time range
+volume=Vol:
Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/Application.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/Application.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/MessagesMP.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/MessagesMP.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/messages_fr.properties
===================================================================
--- tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/messages_fr.properties	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/messages_fr.properties	(revision 456)
@@ -0,0 +1,40 @@
+BackToMedia_0=Pas de s�lection RCP structur�e. Abandon.
+BackToMedia_1=L'�diteur courant n'est pas un ConcordancesEditor. Abandon.
+BackToMedia_11=Pas de propri�t� de temps trouv�e avec comme nom : 
+BackToMedia_12=Erreur : pas de structure ''{0}'' trouv�e
+BackToMedia_14=Erreur : pas de propri�t� de structure ''{0}'' trouv�e
+BackToMedia_16=TEMPS DEBUT : 
+BackToMedia_17=Erreur : pas de propri�t� de structure ''{0}'' trouv�e
+BackToMedia_19=TEMPS FIN : 
+BackToMedia_25=Fichier AUDIO/VIDEO : 
+BackToMedia_26=Error: no media file (mp3, wav, mp4 or avi) found for name: 
+BackToMedia_27=All media files should be stored in the '
+BackToMedia_28=' directory.
+BackToMedia_29=Le nom du fichier m�dia doit �tre '<transcription ID>.<format support�>'
+BackToMedia_30=Erreur : 
+BackToMedia_7=Identifiant de texte : 
+BackToMediaPreferencePage_0=M�diaPlayer
+BackToMediaPreferencePage_1=R�p�ter le m�dia
+BackToMediaPreferencePage_2=R�cup�rer le temps � partir d'une propri�t� de mot
+BackToMediaPreferencePage_3=Empan � jouer
+BackToMediaPreferencePage_4=Propri�t� de mot de temps
+BackToMediaPreferencePage_5=Structure
+BackToMediaPreferencePage_6=Propri�t� codant le temps de d�part
+BackToMediaPreferencePage_7=Propri�t� codant le temps de fin
+cancel=Annuler
+error_native_libs=ERREUR: TXM n'a pas trouv� les libraries natives de VLC.
+error_open_media=Erreur: l'�diteur n'a pas pu �tre ouvert
+opening=Ouverture : 
+opening_media=Ouverture du m�dia... 
+pause=PAUSE
+play=LECTURE
+playing=Joue {0} depuis {1} ms � {2} ms ...
+rate=Taux:
+repeat=R�p�ter
+resume=REPRENDRE
+select_file=S�lection du fichier...
+select_file_title=S�lectionner un fichier audio/video
+select_object=Objet RCP s�lectionn� : 
+stop=STOP
+time_range=Empan temporel
+volume=Vol :
Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/ApplicationWorkbenchWindowAdvisor.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/ApplicationWorkbenchWindowAdvisor.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/Application$1.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/vlcplayerrcp/Application$1.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/BackToMedia.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/BackToMedia.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/OpenVLCPlayer.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/OpenVLCPlayer.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$1.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$1.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$2.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$2.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$SELECTED_KNOB.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$SELECTED_KNOB.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$3.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$3.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$4.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$4.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$5.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$5.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$6.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$6.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$7.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/commands/function/TripleRangeSlider$7.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/preferences/BackToMediaPreferencePage.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/preferences/BackToMediaPreferencePage.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/preferences/BackToMediaPreferences.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/preferences/BackToMediaPreferences.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/input/VLCPlayerEditorInput.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/input/VLCPlayerEditorInput.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$5.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$5.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$6.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$6.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$7.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$7.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$8.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$8.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$8$1.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$8$1.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$8$2.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$8$2.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$1.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$1.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$2.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$2.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$3.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$3.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayerEditor.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayerEditor.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$4.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/bin/org/txm/backtomedia/editors/vlcplayer/VLCPlayer$4.class
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/trsmedia.zip
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/trsmedia.zip
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/build.properties
===================================================================
--- tmp/org.txm.backtomedia.rcp/build.properties	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/build.properties	(revision 456)
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               OSGI-INF/,\
+               .,\
+               icons/,\
+               vlcj-2.4.1/jna-3.5.2.jar,\
+               vlcj-2.4.1/platform-3.5.2.jar,\
+               vlcj-2.4.1/vlcj-2.4.1.jar,\
+               opal-0.9.5.2.jar,\
+               OSGI-INF/l10n/bundle.properties

Property changes on: tmp/org.txm.backtomedia.rcp/build.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle_fr.properties
===================================================================
--- tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle_fr.properties	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle_fr.properties	(revision 456)
@@ -0,0 +1,8 @@
+#Properties file for org.txm.backtomedia
+command.label = MediaPlayer
+command.description = Ouvre un fichier m�dia dans un lecteur VLC int�gr�
+command.name = Ouvrir un fichier m�dia...
+command.name.0 = Jouer le m�dia
+editor.name = Editeur M�diaPlayer
+page.name = M�diaPlayer
+Bundle-Name = MediaPlayer
\ No newline at end of file

Property changes on: tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle_fr.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle.properties
===================================================================
--- tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle.properties	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle.properties	(revision 456)
@@ -0,0 +1,8 @@
+#Properties file for org.txm.backtomedia
+command.label = MediaPlayer
+command.description = Open a media in an embedded VLC player
+command.name = Open media...
+command.name.0 = Play the media
+editor.name = VLCPlayerEditor
+page.name = MediaPlayer
+Bundle-Name = MediaPlayer
\ No newline at end of file

Property changes on: tmp/org.txm.backtomedia.rcp/OSGI-INF/l10n/bundle.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/icons/functions/WordCloud.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/icons/functions/WordCloud.png
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/icons/alt_launcher.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

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

Index: tmp/org.txm.backtomedia.rcp/icons/alt_launcher.icns
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

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

Index: tmp/org.txm.backtomedia.rcp/icons/alt_about.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

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

Index: tmp/org.txm.backtomedia.rcp/icons/alt_window_32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

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

Index: tmp/org.txm.backtomedia.rcp/icons/alt_window_16.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

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

Index: tmp/org.txm.backtomedia.rcp/icons/alt_launcher.xpm
===================================================================
--- tmp/org.txm.backtomedia.rcp/icons/alt_launcher.xpm	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/icons/alt_launcher.xpm	(revision 456)
@@ -0,0 +1,307 @@
+/* XPM */
+static char * icon48_xpm[] = {
+"48 48 256 2",
+"  	c #4B4B3B3B9090",
+". 	c #0D0D0E0E5454",
+"X 	c #11110E0E5B5B",
+"o 	c #17170F0F6363",
+"O 	c #1D1D13136969",
+"+ 	c #212114146C6C",
+"@ 	c #252514147171",
+"# 	c #282811116C6C",
+"$ 	c #26260D0D6363",
+"% 	c #22220B0B5E5E",
+"& 	c #1C1C0B0B5A5A",
+"* 	c #1C1C0B0B5252",
+"= 	c #1B1B05055353",
+"- 	c #161606064D4D",
+"; 	c #161605054949",
+": 	c #111104044848",
+"> 	c #131304044545",
+", 	c #131305054242",
+"< 	c #141410105E5E",
+"1 	c #2C2C15157373",
+"2 	c #2B2B1B1B7575",
+"3 	c #343416167272",
+"4 	c #313113136E6E",
+"5 	c #222209095757",
+"6 	c #1B1B06064D4D",
+"7 	c #15150B0B4242",
+"8 	c #13130C0C5555",
+"9 	c #2E2E1B1B7878",
+"0 	c #33331F1F7C7C",
+"q 	c #343418187878",
+"w 	c #3B3B1C1C7575",
+"e 	c #2E2E10106767",
+"r 	c #1B1B07074747",
+"t 	c #18180B0B4646",
+"y 	c #151513136262",
+"u 	c #1A1A15156464",
+"i 	c #34341F1F7777",
+"p 	c #40401E1E8080",
+"a 	c #42421B1B7A7A",
+"s 	c #3B3B15157474",
+"d 	c #2B2B0B0B5B5B",
+"f 	c #222207075252",
+"g 	c #373727277A7A",
+"h 	c #474724248484",
+"j 	c #393915156E6E",
+"k 	c #373711116A6A",
+"l 	c #343413136363",
+"z 	c #232319196E6E",
+"x 	c #292919197070",
+"c 	c #3C3C2C2C8282",
+"v 	c #444431318585",
+"b 	c #494934348A8A",
+"n 	c #505026268A8A",
+"m 	c #3D3D1B1B6E6E",
+"M 	c #31310E0E5C5C",
+"N 	c #2B2B0D0D5353",
+"B 	c #222207074A4A",
+"V 	c #52523C3C9292",
+"C 	c #58583C3C9494",
+"Z 	c #5D5D44449797",
+"A 	c #5C5C2E2E9292",
+"S 	c #676733339595",
+"D 	c #424228287575",
+"F 	c #29290A0A4F4F",
+"G 	c #6C6C4A4A9E9E",
+"H 	c #72725454A7A7",
+"J 	c #8C8C6D6DB2B2",
+"K 	c #343424246E6E",
+"L 	c #3A3A23236A6A",
+"P 	c #3A3A1C1C6767",
+"I 	c #24240A0A4B4B",
+"U 	c #151518186161",
+"Y 	c #76766F6FA5A5",
+"T 	c #ADAD9191CCCC",
+"R 	c #98988989D3D3",
+"E 	c #45453B3B8686",
+"W 	c #3C3C35357979",
+"Q 	c #363631317575",
+"! 	c #32322D2D6B6B",
+"~ 	c #323229296363",
+"^ 	c #30301F1F6262",
+"/ 	c #323218185E5E",
+"( 	c #272707074B4B",
+") 	c #202028286C6C",
+"_ 	c #1E1E1D1D6868",
+"` 	c #9A9A8282BBBB",
+"' 	c #C8C8B3B3D3D3",
+"] 	c #B3B3AFAFE7E7",
+"[ 	c #84847272C6C6",
+"{ 	c #58585757A3A3",
+"} 	c #3F3F3C3C8A8A",
+"| 	c #3B3B3A3A8484",
+" .	c #414139397D7D",
+"..	c #3D3D39397A7A",
+"X.	c #37372E2E6E6E",
+"o.	c #2C2C21215A5A",
+"O.	c #2E2E1B1B5B5B",
+"+.	c #F5F5EFEFF5F5",
+"@.	c #656566669A9A",
+"#.	c #47474B4B8E8E",
+"$.	c #3C3C44447B7B",
+"%.	c #444442428080",
+"&.	c #45453E3E8181",
+"*.	c #40403C3C8181",
+"=.	c #3D3D33337474",
+"-.	c #3B3B30306E6E",
+";.	c #38382D2D6969",
+":.	c #303026265D5D",
+">.	c #2C2C15155A5A",
+",.	c #1F1F1C1C7070",
+"<.	c #25251E1E7171",
+"1.	c #59595C5C9191",
+"2.	c #4D4D53538989",
+"3.	c #4C4C49498484",
+"4.	c #484845458585",
+"5.	c #494941418585",
+"6.	c #494940408181",
+"7.	c #2F2F1C1C5353",
+"8.	c #2B2B28287676",
+"9.	c #323231317F7F",
+"0.	c #545452528B8B",
+"q.	c #51514E4E8989",
+"w.	c #4E4E4B4B8C8C",
+"e.	c #4C4C47478686",
+"r.	c #46463D3D7E7E",
+"t.	c #434336367A7A",
+"y.	c #2B2B13135555",
+"u.	c #47473D3D8D8D",
+"i.	c #575757578E8E",
+"p.	c #48483E3E7F7F",
+"a.	c #46463A3A7D7D",
+"s.	c #424235357575",
+"d.	c #404034347171",
+"f.	c #BFBFCBCBFAFA",
+"g.	c #B8B8A8A8DDDD",
+"h.	c #5E5E60609292",
+"j.	c #565655558C8C",
+"k.	c #4B4B44448282",
+"l.	c #454539397B7B",
+"z.	c #434338387878",
+"x.	c #3F3F32326D6D",
+"c.	c #3D3D30306969",
+"v.	c #3A3A2E2E6363",
+"b.	c #36362A2A5C5C",
+"n.	c #343424245555",
+"m.	c #30301E1E4D4D",
+"M.	c #49493C3C8282",
+"N.	c #5E5E4F4F8C8C",
+"B.	c #56563B3B8B8B",
+"V.	c #545407078585",
+"C.	c #424234347272",
+"Z.	c #9797A4A4F7F7",
+"A.	c #444436367676",
+"S.	c #7D7D7979D5D5",
+"D.	c #464640408A8A",
+"F.	c #44444B4B8282",
+"G.	c #414107077777",
+"H.	c #71716161C1C1",
+"J.	c #303039397979",
+"K.	c #8E8E8E8EE6E6",
+"L.	c #404033338B8B",
+"P.	c #4A4A45458C8C",
+"I.	c #46463A3A8080",
+"U.	c #363629295454",
+"Y.	c #303022224848",
+"T.	c #424237377575",
+"R.	c #2E2E1D1D6363",
+"E.	c #79798383EAEA",
+"W.	c #74747B7BE4E4",
+"Q.	c #6D6D7676D6D6",
+"!.	c #6A6A7171CECE",
+"~.	c #66666969C6C6",
+"^.	c #62626565BCBC",
+"/.	c #5F5F6060B5B5",
+"(.	c #5B5B5B5BACAC",
+").	c #535353539898",
+"_.	c #4F4F4F4FA4A4",
+"`.	c #54544D4DA4A4",
+"'.	c #323204046B6B",
+"].	c #303035357979",
+"[.	c #313122224343",
+"{.	c #5A5A5B5BB7B7",
+"}.	c #484846468080",
+"|.	c #454541417575",
+" X	c #4B4B31318282",
+".X	c #47473C3C8484",
+"XX	c #3E3E35356E6E",
+"oX	c #2F2F26264040",
+"OX	c #2B2B23233A3A",
+"+X	c #262619195C5C",
+"@X	c #252515155A5A",
+"#X	c #55555151B3B3",
+"$X	c #3C3C2D2D5D5D",
+"%X	c #39392F2F5656",
+"&X	c #37372D2D5050",
+"*X	c #25251F1F3030",
+"=X	c #24241D1D4343",
+"-X	c #202013135656",
+";X	c #41413B3B6C6C",
+":X	c #444442429696",
+">X	c #212100005E5E",
+",X	c #444436367272",
+"<X	c #444436366F6F",
+"1X	c #424236366868",
+"2X	c #3F3F34346161",
+"3X	c #3C3C32325A5A",
+"4X	c #34342A2A4A4A",
+"5X	c #21211B1B2121",
+"6X	c #22221C1C6363",
+"7X	c #2D2D01015E5E",
+"8X	c #20201B1B2525",
+"9X	c #49492F2F7B7B",
+"0X	c #434334346C6C",
+"qX	c #323229294545",
+"wX	c #1C1C10104F4F",
+"eX	c #222217176363",
+"rX	c #37371E1E6B6B",
+"tX	c #424232326E6E",
+"yX	c #444433336969",
+"uX	c #424233336565",
+"iX	c #1E1E1A1A1E1E",
+"pX	c #161601014C4C",
+"aX	c #1C1C11115454",
+"sX	c #252503035B5B",
+"dX	c #414131316A6A",
+"fX	c #22221F1F7878",
+"gX	c #272724246767",
+"hX	c #1D1D16165E5E",
+"jX	c #131305055151",
+"kX	c #40402F2F6464",
+"lX	c #111107074E4E",
+"zX	c #0C0C05054B4B",
+"xX	c #22221E1E5757",
+"cX	c #1A1A0D0D4D4D",
+"vX	c #16160B0B4D4D",
+"bX	c #060604044747",
+"nX	c #040403034343",
+"mX	c #3B3B27276565",
+"MX	c #0E0E03034141",
+"NX	c #111106064A4A",
+"BX	c #0E0E04044646",
+"VX	c #111105053B3B",
+"CX	c #0D0D01013A3A",
+"ZX	c #030305053F3F",
+"AX	c #0F0F0F0F4C4C",
+"SX	c #020207073B3B",
+"DX	c #0D0D03034646",
+"FX	c #0B0B02023F3F",
+"GX	c #0D0D02023434",
+"HX	c #0A0A0E0E4444",
+"JX	c #161614145252",
+"KX	c #0B0B04044646",
+"LX	c #0A0A03034444",
+"PX	c #1D1D21215757",
+"IX	c #090910104040",
+"UX	c #18181E1E5353",
+"                                                                                                ",
+"  . . . . X X o o o o O + + @ @ @ @ @ @ @ # # # # # # $ $ % % & & & & * = - - - ; : > > , , ,   ",
+"  . . X X < < o o O O + @ 1 2 2 1 1 1 1 1 1 1 1 3 4 # # $ $ $ % % % 5 = = 6 6 - ; ; > > , , 7   ",
+"  . 8 < < < o O O + @ @ 2 9 9 0 0 q q q q q q q w 3 4 4 e e $ $ $ $ % 5 = = 6 6 6 ; ; > > r t   ",
+"  . X < y u O O + @ 1 2 i 0 0 p p p p p p p a a p a s 3 4 4 e e e e d 5 5 f f 6 6 6 ; ; r r t   ",
+"  X < y u O + + @ 2 9 0 g p p h h h h h h h p h h a a s s j k k j l d d 5 5 f f 6 6 r r r r r   ",
+"  X < y O z x x 9 0 g c v b n n n n n n n n n n n h a a s s j j m l M d d N f f B B B B r r r   ",
+"  < y u + z 2 0 c c b V C Z C C A A A A A S S S n h D w w m m m m k l M d d N f F F F B r r r   ",
+"  < y O z z 9 c b V Z G H H H G S G G J J H V v c g g K K K K L P l l l M M N N N N I B B r r   ",
+"  U u + z x i v C H Y J J J J H J T R H V E W W Q Q Q Q ! ! ! ~ ^ ^ / / M M M M M N ( B B r r   ",
+"  ) _ z x 9 g b Z Y ` ' ' ' T T ] [ { } |  .........W W Q Q X.! ~ ~ o.O./ / / / N F ( B B B r   ",
+"  ) ) z x i c V G J ' +.+.+.+.] [ @.#.$.%.%.%.&.*. . .....W =.-.X.;.~ :.o.O.^ >.N F ( B B B B   ",
+"  ) ,.<.2 g v C H J ' +.+.+.+.T Y 1.2.3.4.4.4.5.6.&.&. . ...W =.=.-.;.~ :.o.7.>.N F F ( B I I   ",
+"  ) ,.<.8.9.b C H J T +.+.+.' J @.1.0.q.q.w.e.4.5.6.&.r. . .t.W =.=.-.;.~ :.o.7.y.N F ( ( I I   ",
+"  8.8.8.9.| u.C G J T +.+.' ` Y @.1.i.0.q.q.e.e.5.6.p.r.a. .t.t.s.d.d.-.;.~ :.7.7.y.F F ( I I   ",
+"  9.c c c v b A S H ' f.g.` Y @.h.1.i.j.0.q.q.e.k.6.p.r.a.l.t.z.s.s.d.x.c.v.b.n.m.7.N F F F I   ",
+"  <.g M.N.B.B.n V.J f.R J @.h.h.1.i.i.j.j.0.q.3.k.6.p.r.a.l.l.z.s.C.d.x.x.c.v.b.n.m.y.N F F F   ",
+"  + x i v B.Z Z G g.Z.[ @.2.i.i.j.j.j.j.j.0.q.3.k.6.p.p.a.l.l.A.s.C.C.d.x.c.v.b.n.m.7.y.N N y.  ",
+"  O # 3 w p n Z ` f.S.H D.F.q.0.0.0.0.j.0.q.q.3.k.6.p.r.a.a.l.A.s.s.C.d.x.x.c.v.b.n.m.y.y.y.y.  ",
+"  O # 4 s a G.V.T Z.H.V J.%.e.w.q.0.0.0.0.q.q.e.k.6.p.r.a.a.l.z.A.s.C.d.d.x.c.v.b.n.m.7.>.y.y.  ",
+"  O # 4 s w G.A f.K.H L...4.P.w.w.w.q.q.q.q.e.e.5.6.M.I.I.a.a.l.z.A.s.d.d.x.c.v.v.U.Y.7.O.>.y.  ",
+"  $ # 4 3 s G.G f.S.Z 9.*.D.P.P.w.w.w.w.w.e.e.5.5.M.M.I.I.a.a.l.z.T.s.d.d.x.x.c.v.U.Y.m.R.>.>.  ",
+"  E.E.W.W.W.W.E.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { )._.`._.  ",
+"  + # 3 w s '.` f.H.V ].*.D.P.P.P.P.P.P.P.5.5.5.M.M.M.I.I.a.l.z.z.T.T.s.d.d.x.c.v.U.Y.[.^ O.>.  ",
+"  ~.~.~.~.~.~.K.Z.S.~.{.^.^.^.^.^.^.^.^././././././.(.(.(.(.(.(.{ { { { { ).).).w.w.}.|.P.u.}   ",
+"   .I.6. X X XT f.H.b ].*.E D.D.D.D.5.5..X.XM.M.I.I.a.a.l.l.z.z.T.T.T.d.XXx.c.v.b.U.oXOXR.+X@X  ",
+"  E.E.E.W.W.W.K.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { ).).#X_._.  ",
+"  & % $ e '.= H f.H.b 8.W *.E E E .X.X.XI.I.I.I.a.a.l.l.z.z.T.T.T.C.XXXXc.v.$X%X&XY.*X=X2 @X-X  ",
+"  {.{.{.{.{.#X~.Z.W.~.{.{./././././././././.(.(.(.(.(.(.(.{ { { { { { ).).).w.w.3.}.;X%.:X} }   ",
+"  & & % $ e >XV.f.S.C K X.W t. . .l.l.t.t.t.t.A.A.A.,X,X,X,X,X<X;X1X1X2X3X%X&X4XoX*X5Xo.6X-X-X  ",
+"  & & % $ $ >X7X` Z.Z D ! =.=.s.t.t.t.A.A.s.A.,X,X,X,X<X<X<X<X;X1X2X2X3X%X&X4XoXOX8X5X<.@X-X-X  ",
+"  8 & & $ e K 9XJ f.^. XK X.=.=.s.s.s.s.s.C.C.C.C.<X0X0X0X1X1X1X2X2X3X%X&X4XqXOX*X8X=X<.-X-XwX  ",
+"  8 & eXK k.@.M. Xg.E.B.rX~ -.d.d.C.C.C.C.C.tX0X0X0XyXyX1X1XuX2X2X3X%X&X4XqXoXOX8XiX6XeX-X-XwX  ",
+"  6XQ h.Y N.K e pXB.f./.9Xo.;.-.x.d.tXtXtXtXtX0X0XyXyXyXuXuX2X2X3X%X&X4XqXoXOX*XiX=X_ aX-XaXwX  ",
+"  Y Y  .R.@X% sX= 7XT Z.V P :.;.c.x.x.x.tXdXdXdXyXyXuXuX2X2X3X3X%X&X4XqXoXOX*X8X*XfXaXaXaXwXwX  ",
+"  gXhX& * & 5 5 sXjXa ] S.9X/ ~ v.c.dXdXdXdXdXuXuXuXkX2X2X3X%X%X&X4XqXoXOX*X8XiX<.hXwXwXaXwXwX  ",
+"  8 lXlXjX= * 5 5 = zX9X] H.D 7.b.v.v.kXc.kXkXkXkXkX2X$X3X%X&X&X4XqXoXOX*X8XiXxXhXwXcXcXwXwXwX  ",
+"  zXzXlXlXjX= = f f sXD Y ] ~.D 7.n.b.v.v.kXkXkXkX$X$X%X%X&X4XqXoXoXOX*X8X5XgXu cXvXvXcXcXwXwX  ",
+"  bXbXzXlXlX- = * @XX.h.e D T S.D n.m.b.$X$X$X$X$X%X%X&X&X4XqXoXOX*X8X8X*X<.hXvX; ; vXvXvXcXwX  ",
+"  nXbXzXzXlXlX- -XX.Y R.pXpXP J K.Z mXm.n.U.U.U.U.U.4X4XY.oXOX*X8X8X8X=X,.aXvX; > > > t t t cX  ",
+"  nXbXbXzXzXlXaXXXY +Xf = f = 7XtXR R   mXn.Y.[.[.[.[.OX*X*X8X5X*X=X,.u vXvX; > > MXMX, 7 t t   ",
+"  nXnXnXbXzXvX-.Y +XcX6 6 = = = d L B.G H `.X.:.7.m.=X=X=X=X=X6X,.u cXvXNX: BX> MXVXCXVX7 7 7   ",
+"  ZXZXnXbXAXgX@.+XvX; - - - - * @XR.>.sX>.R.i 0 x eXeXeXeXO hXaXcXvXNX: BXMXMXMXVXCXCXCXVX7 7   ",
+"  SXZXZXAXgXN.aXNX: : NXNXNX- * +X+X* 6 6 6 * * * * * * * vXvX- NX: DXBXMXMXFXCXCXCXCXGXVXVX7   ",
+"  SXSXHXgX0.JXKXLXKXKXDX: : NX* @X-X- - - - - - - - - - - NX: DXDXDXMXMXFXFXCXCXCXCXGXGXGXVXVX  ",
+"  SXHXPX3.JXnXnXnXnXbXLXKXKXNXaX-XvX: : NX: : : : : : : BXDXDXLXMXMXFXFXCXCXCXCXGXGXGXGXGXGXGX  ",
+"  IXUX$.AXZXZXZXZXnXnXnXLXLXNXJXvXBXDXBXBXBXBXDXDXDXDXLXDXLXLXFXFXFXFXCXCXCXCXGXGXGXGXGXGXGXGX  ",
+"                                                                                                "};
Index: tmp/org.txm.backtomedia.rcp/opal-0.9.5.2.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/opal-0.9.5.2.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/plugin.xml
===================================================================
--- tmp/org.txm.backtomedia.rcp/plugin.xml	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/plugin.xml	(revision 456)
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         id="application"
+         point="org.eclipse.core.runtime.applications">
+      <application>
+         <run
+               class="vlcplayerrcp.Application">
+         </run>
+      </application>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="menu:menu.file?after=file.open">
+         <command
+               commandId="org.txm.backtomedia.commands.function.OpenVLCPlayer"
+               style="push">
+         </command>
+      </menuContribution>
+      <menuContribution
+            locationURI="popup:org.txm.rcpapplication.editors.ConcordancesEditor">
+         <command
+               commandId="org.txm.backtomedia.commands.function.BackToMedia"
+               style="push">
+         </command>
+      </menuContribution>
+      <menuContribution
+            locationURI="menu:menu.help.plugins">
+         <command
+               commandId="org.txm.rcpapplication.commands.OpenBrowser"
+               label="%command.label"
+               style="push">
+            <parameter
+                  name="org.txm.rcpapplication.commands.commandParameter2"
+                  value="https://groupes.renater.fr/wiki/txm-users/public/extensions#media_player">
+            </parameter>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.txm.backtomedia.commands.function.OpenVLCPlayer"
+            description="%command.description"
+            id="org.txm.backtomedia.commands.function.OpenVLCPlayer"
+            name="%command.name">
+      </command>
+      <command
+            defaultHandler="org.txm.backtomedia.commands.function.BackToMedia"
+            id="org.txm.backtomedia.commands.function.BackToMedia"
+            name="%command.name.0">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.editors">
+      <editor
+            class="org.txm.backtomedia.editors.vlcplayer.VLCPlayerEditor"
+            default="false"
+            id="org.txm.backtomedia.editors.vlcplayer.VLCPlayerEditor"
+            name="%editor.name">
+      </editor>
+   </extension>
+   <extension
+         point="org.eclipse.ui.bindings">
+      <key
+            commandId="org.txm.backtomedia.commands.function.BackToMedia"
+            contextId="org.eclipse.ui.contexts.window"
+            schemeId="org.txm.rcp.scheme"
+            sequence="M1+M2+M">
+      </key>
+   </extension>
+   <extension
+         point="org.eclipse.ui.preferencePages">
+      <page
+            category="org.txm.rcpapplication.preferences.UserPreferencePage"
+            class="org.txm.backtomedia.preferences.BackToMediaPreferencePage"
+            id="org.txm.backtomedia.preferences.BackToMediaPreferencePage"
+            name="%page.name">
+      </page>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.preferences">
+      <initializer
+            class="org.txm.backtomedia.preferences.BackToMediaPreferenceInitializer">
+      </initializer>
+   </extension>
+
+</plugin>

Property changes on: tmp/org.txm.backtomedia.rcp/plugin.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-javadoc.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-javadoc.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/platform-3.5.2.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/platform-3.5.2.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/RELEASE-NOTES.txt
===================================================================
--- tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/RELEASE-NOTES.txt	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/RELEASE-NOTES.txt	(revision 456)
@@ -0,0 +1,16 @@
+
+                            vlcj Release Notes
+                            ==================
+
+2.3.0
+=====
+
+A small backwardly incompatible API change was made for this release. If you
+previously used the SpuTrackInfo class, you must now use TextTrackInfo instead.
+
+Incorporate latest enhancements to the native logging API.
+
+2.2.0
+=====
+
+There is new API to access the native log - this requires vlc 2.1.0 or later.

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/RELEASE-NOTES.txt
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/INSTALL
===================================================================
--- tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/INSTALL	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/INSTALL	(revision 456)
@@ -0,0 +1,67 @@
+Installation for vlcj.
+
+0. Manual installation
+
+These instructions describe a manual installation of vlcj. You may choose 
+instead to use maven to add vlcj to your project.
+
+1. Unpack the distribution archive to a local directory, for example:
+
+    $mkdir -p /home/java/vlcj
+    $cd /home/java/vlcj
+
+1.1 If using the gzipped package:
+
+    $tar -xzf vlcj-2.2.0-dist.tar.gz
+
+1.2 Or, if using the zipped package:
+
+    $unzip -x vlcj-2.2.0-dist.zip
+
+1.3 A new directory will be created, for example:
+
+    /home/java/vlcj/vlcj-2.2.0
+
+Inside this directory you will find all of the vlcj distribution artifacts and
+third-party library dependencies:
+
+    jna-3.4.0.jar                   - JNA binary jar file
+    platform-3.4.0.jar              - JNA platform binary jar file
+    
+    vlcj-2.2.0.jar                  - vlcj binary jar file
+    vlcj-2.2.0-javadoc.jar          - vlcj Javadoc archive
+    vlcj-2.2.0-sources.jar          - vlcj source code archive
+    vlcj-2.2.0-tests.jar            - vlcj tests binary jar file
+    vlcj-2.2.0-test-sources.jar     - vlcj test sources
+
+2. Using with Eclipse or some other IDE
+
+The vlcj binary jar file contains manifest classpath entries to set up the
+proper run-time classpath automatically. This means you only need add the vlcj
+binary jar to your project and the dependent jar files will be automatically
+included.
+
+This will work so long as you keep all of the jar files in the same directory.
+
+This works in Eclipse at least, other IDE's may have different behaviour.
+
+If it does not work automatically, then you will have to add the JNA and JNA
+platform jars explicitly.
+
+3. Run the test application.
+
+The tests jar file is executable and when executed the "basic" vlcj media player
+test case will start.
+
+    $java -jar vlcj-2.2.0-tests.jar
+    
+The tests jar contains manifest classpath entries to set up the proper run-time
+classpath automatically.
+
+This will work so long as you keep all of the jar files in the same directory.
+
+4. Sources
+
+The vlcj distribution contains all of the sources for the project (sources for
+main and test classes are included). You are encouraged to link the sources to
+your libraries in your IDE.
Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/README.icons
===================================================================
--- tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/README.icons	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/README.icons	(revision 456)
@@ -0,0 +1,11 @@
+The icons for the demo media player application came from here:
+
+http://www.fatcow.com/free-icons/
+
+The license is here:
+
+http://creativecommons.org/licenses/by/3.0/us/
+
+These icons seem to be basically new versions of the Silk icons:
+
+http://www.famfamfam.com/lab/icons/silk/
Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/lgpl-3.0.txt
===================================================================
--- tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/lgpl-3.0.txt	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/lgpl-3.0.txt	(revision 456)
@@ -0,0 +1,165 @@
+		   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/lgpl-3.0.txt
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/README.LICENSE
===================================================================
--- tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/README.LICENSE	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/README.LICENSE	(revision 456)
@@ -0,0 +1,16 @@
+VLCJ 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 3 of the License, or
+(at your option) any later version.
+
+VLCJ 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 VLCJ.  If not, see <http://www.gnu.org/licenses/>.
+ 
+Copyright 2009, 2010, 2011, 2012, 2013 Caprica Software Limited.
+
+VLCJ makes use of JNA (https://jna.dev.java.net/). JNA is licensed under LGPL.
Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/gpl.txt
===================================================================
--- tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/gpl.txt	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/gpl.txt	(revision 456)
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program 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 3 of the License, or
+    (at your option) any later version.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/doc/gpl.txt
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/jna-3.5.2.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/jna-3.5.2.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-test-sources.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-test-sources.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-tests.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-tests.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-sources.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tmp/org.txm.backtomedia.rcp/vlcj-2.4.1/vlcj-2.4.1-sources.jar
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tmp/org.txm.backtomedia.rcp/.classpath
===================================================================
--- tmp/org.txm.backtomedia.rcp/.classpath	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/.classpath	(revision 456)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry exported="true" kind="lib" path="vlcj-2.4.1/jna-3.5.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="vlcj-2.4.1/platform-3.5.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="vlcj-2.4.1/vlcj-2.4.1.jar"/>
+	<classpathentry kind="lib" path="opal-0.9.5.2.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+		<accessrules>
+			<accessrule kind="accessible" pattern="**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

Property changes on: tmp/org.txm.backtomedia.rcp/.classpath
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/META-INF/MANIFEST.MF
===================================================================
--- tmp/org.txm.backtomedia.rcp/META-INF/MANIFEST.MF	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/META-INF/MANIFEST.MF	(revision 456)
@@ -0,0 +1,71 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.txm.backtomedia;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.txm.core;bundle-version="0.7.0",
+ org.txm.rcp;bundle-version="0.7.8",
+ org.eclipse.core.runtime,
+ org.eclipse.ui,
+ org.eclipse.core.expressions;bundle-version="3.4.500",
+ org.txm.concordance.core;bundle-version="1.0.0",
+ org.txm.concordance.rcp;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: com.sun.jna,
+ com.sun.jna.platform,
+ com.sun.jna.platform.dnd,
+ com.sun.jna.platform.mac,
+ com.sun.jna.platform.unix,
+ com.sun.jna.platform.win32,
+ com.sun.jna.platform.win32.COM,
+ com.sun.jna.platform.wince,
+ com.sun.jna.ptr,
+ com.sun.jna.win32,
+ org.txm.backtomedia.commands.function,
+ org.txm.backtomedia.editors.input,
+ org.txm.backtomedia.editors.vlcplayer,
+ uk.co.caprica.vlcj,
+ uk.co.caprica.vlcj.binding,
+ uk.co.caprica.vlcj.binding.internal,
+ uk.co.caprica.vlcj.component,
+ uk.co.caprica.vlcj.component.overlay,
+ uk.co.caprica.vlcj.discovery,
+ uk.co.caprica.vlcj.discovery.linux,
+ uk.co.caprica.vlcj.discovery.mac,
+ uk.co.caprica.vlcj.discovery.windows,
+ uk.co.caprica.vlcj.filter,
+ uk.co.caprica.vlcj.filter.swing,
+ uk.co.caprica.vlcj.log,
+ uk.co.caprica.vlcj.logger,
+ uk.co.caprica.vlcj.medialist,
+ uk.co.caprica.vlcj.medialist.events,
+ uk.co.caprica.vlcj.mrl,
+ uk.co.caprica.vlcj.player,
+ uk.co.caprica.vlcj.player.condition,
+ uk.co.caprica.vlcj.player.condition.conditions,
+ uk.co.caprica.vlcj.player.direct,
+ uk.co.caprica.vlcj.player.direct.format,
+ uk.co.caprica.vlcj.player.directaudio,
+ uk.co.caprica.vlcj.player.discoverer,
+ uk.co.caprica.vlcj.player.embedded,
+ uk.co.caprica.vlcj.player.embedded.videosurface,
+ uk.co.caprica.vlcj.player.embedded.videosurface.linux,
+ uk.co.caprica.vlcj.player.embedded.videosurface.mac,
+ uk.co.caprica.vlcj.player.embedded.videosurface.windows,
+ uk.co.caprica.vlcj.player.embedded.x,
+ uk.co.caprica.vlcj.player.events,
+ uk.co.caprica.vlcj.player.headless,
+ uk.co.caprica.vlcj.player.list,
+ uk.co.caprica.vlcj.player.list.events,
+ uk.co.caprica.vlcj.player.manager,
+ uk.co.caprica.vlcj.runtime,
+ uk.co.caprica.vlcj.runtime.windows,
+ uk.co.caprica.vlcj.runtime.x,
+ uk.co.caprica.vlcj.version,
+ vlcplayerrcp
+Bundle-ClassPath: .,
+ vlcj-2.4.1/jna-3.5.2.jar,
+ vlcj-2.4.1/platform-3.5.2.jar,
+ vlcj-2.4.1/vlcj-2.4.1.jar,
+ opal-0.9.5.2.jar
+Bundle-Vendor: Textometrie.org

Property changes on: tmp/org.txm.backtomedia.rcp/META-INF/MANIFEST.MF
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tmp/org.txm.backtomedia.rcp/.project
===================================================================
--- tmp/org.txm.backtomedia.rcp/.project	(revision 0)
+++ tmp/org.txm.backtomedia.rcp/.project	(revision 456)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>BackToMediaRCP</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Property changes on: tmp/org.txm.backtomedia.rcp/.project
___________________________________________________________________
Added: svn:mime-type
   + text/plain

