Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java	(revision 21257)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java	(revision 21295)
@@ -1,8 +1,15 @@
 package org.openstreetmap.josm.plugins.videomapping;
+
+
+import java.util.Iterator;
+import java.util.Timer;
+import java.util.TimerTask;
 
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.Graphics2D;
 import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
@@ -15,4 +22,6 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.MapView;
@@ -23,9 +32,26 @@
 
 public class PositionLayer extends Layer implements MouseListener {
-	private GpxData gps;
-	public PositionLayer(String name,GpxData gps) {
+	private DataSet ds;
+	private Node sel;
+	private Iterator<Node> it;
+		
+	public PositionLayer(String name, final DataSet ds) {
 		super(name);		
-		this.gps = gps;
-		Main.map.mapView.addMouseListener(this);
+		this.ds = ds;
+		Main.map.mapView.addMouseListener(this);		
+		Timer t  = new Timer();
+		it=ds.getNodes().iterator();
+		
+		t.schedule(new TimerTask() {
+			
+			@Override
+			public void run() {
+				// TODO Auto-generated method stub
+				sel=it.next();
+				System.out.println(sel.getTimestamp());
+				Main.map.mapView.repaint();
+			}
+		},1000,1000);
+		
 	}
 
@@ -60,4 +86,5 @@
 	}
 
+	// no merging nescesarry
 	@Override
 	public boolean isMergable(Layer arg0) {
@@ -67,12 +94,31 @@
 	@Override
 	public void mergeFrom(Layer arg0) {
-		// no merging nescesarry
+		
 	}
 
+	
+	
 	@Override
+	//Draw the current position
 	public void paint(Graphics2D g, MapView map, Bounds bound) {
-		//TODO this is just an blue screen test
-		g.setColor(Color.BLUE);
-		g.fillRect(0, 0, map.getWidth(),map.getHeight());
+		Point p;
+		for(Node n: ds.getNodes()) {
+			p = Main.map.mapView.getPoint(n.getEastNorth());
+			if(n.isHighlighted())
+			{
+				g.setColor(Color.red);
+				g.drawString(n.getTimestamp().toString(), p.x+10, p.y);
+			}
+			else
+			{
+				g.setColor(Color.green);
+			}
+			g.drawOval(p.x - 2, p.y - 2, 4, 4); // small circles
+		}
+		if (sel!=null){
+			p=Main.map.mapView.getPoint(sel.getEastNorth());;
+			g.setColor(Color.CYAN);
+			g.drawRect(p.x, p.y, 100, 100);
+		};
 	}
 
@@ -84,19 +130,28 @@
 
 	//jump to the right position in video
-	public void mouseClicked(MouseEvent e) {
+	public void mouseClicked(MouseEvent e) {		
+		//only on leftclicks of our layer
 		if(e.getButton() == MouseEvent.BUTTON1) {
-			if(Main.map.mapView.getActiveLayer() == this) {
-				//only on leftclicks of our layer
-				getNearestPoint(e.getPoint());
-			}
+			JOptionPane.showMessageDialog(Main.parent,"test");
+			getNearestNode(e.getPoint());
+			Main.map.mapView.repaint();
 		}
 		
 	}
 
-	//finds the corresponding timecode in GPXtrack
-	private Point getNearestPoint(Point point) {
-
-		return point;
-		
+	//finds the corresponding timecode in GPXtrack by given screen coordinates
+	private void getNearestNode(Point mouse) {
+		Point p;
+		Rectangle rect = new Rectangle(mouse, new Dimension(30, 30));		
+		//iterate through all possible notes
+		for(Node node : ds.getNodes())
+		{
+			p = Main.map.mapView.getPoint(node);
+			if (rect.contains(p))
+			{				
+				node.setHighlighted(true);
+			}
+			
+		}	
 	}
 
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoAction.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoAction.java	(revision 21257)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoAction.java	(revision 21295)
@@ -3,4 +3,6 @@
 import java.awt.event.ActionEvent;
 import java.io.File;
+import java.util.List;
+
 
 import javax.swing.JFileChooser;
@@ -9,5 +11,10 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.data.gpx.*;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.tools.DateUtils;
 import org.openstreetmap.josm.tools.Shortcut;
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
@@ -17,4 +24,6 @@
 
 	private GpxData gps;
+	private DataSet ds; //all extracted GPS points
+	private List<WayPoint> ls;
 
 	public VideoAction() {
@@ -25,42 +34,34 @@
 	public void actionPerformed(ActionEvent arg0) {
 	
-//		JFileChooser fc = new JFileChooser();
-//		fc.setAcceptAllFileFilterUsed( false );
-//		fc.setFileFilter( new VideoFileFilter() );
-//		if (fc.showOpenDialog( Main.parent )==JFileChooser.APPROVE_OPTION)
-//		{
-//			VideoWindow w = new VideoWindow(fc.getSelectedFile());
-//		}
-		Main.main.addLayer(new PositionLayer("test",gps));
+		copyGPSLayer();
+		Main.main.addLayer(new PositionLayer("test",ds));
 	}
-	
-	//restrict the file chooser
-	private class VideoFileFilter extends FileFilter {
-
-		@Override
-		public boolean accept(File f) {
-		    
-		    String ext3 = ( f.getName().length() > 4 ) ?  f.getName().substring( f.getName().length() - 4 ).toLowerCase() : "";
-		    String ext4 = ( f.getName().length() > 5 ) ?  f.getName().substring( f.getName().length() - 5 ).toLowerCase() : "";
-
-		    // TODO: check what is supported by JMF or if there is a build in filter
-		    return ( f.isDirectory() 
-		    	||	ext3.equals( ".avi" )
-		    	||	ext4.equals( ".wmv" )
-		    	||	ext3.equals( ".mpg" )
-		    	);
-		}
-
-
-		@Override
-		public String getDescription() {
-			return tr("Video files");
-		}
 		
-	}
 	
 	public void setGps(GpxData gps) {
 		this.gps = gps;
 	}
+	
+	//makes a private flat copy for interaction
+	private void copyGPSLayer()
+	{
+		//TODO we assume that GPS points are in the correct order! 
+		ds = new DataSet();
+            for (GpxTrack trk : gps.tracks) {
+                for (GpxTrackSegment segment : trk.getSegments()) {
+                    Way w = new Way();
+                    for (WayPoint p : segment.getWayPoints()) {
+                        Node n = new Node(p.getCoor());
+                        String timestr = p.getString("time");
+                        if(timestr != null)
+                            n.setTimestamp(DateUtils.fromString(timestr));
+                        ds.addPrimitive(n);
+                        w.addNode(n);
+                        //ls.add
+                    }
+                    ds.addPrimitive(w);
+                }
+            }
+	}
 
 }
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java	(revision 21257)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java	(revision 21295)
@@ -30,5 +30,5 @@
 		super(info);
 		//Register for GPS menu
-		VMenu = Main.main.menu.addMenu(tr("Video"), KeyEvent.VK_V, Main.main.menu.defaultMenuPos,ht("/Plugin/Videomapping"));
+		VMenu = Main.main.menu.addMenu(tr(" Video"), KeyEvent.VK_V, Main.main.menu.defaultMenuPos,ht("/Plugin/Videomapping"));//TODO no more ugly " video" hack
 		VMenu.setEnabled(false); //enabled only on GPS Layers
 		VAction = new VideoAction();
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoWindow.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoWindow.java	(revision 21257)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoWindow.java	(revision 21295)
@@ -2,4 +2,5 @@
 
 import java.awt.BorderLayout;
+import java.awt.Canvas;
 import java.awt.Component;
 import java.awt.GraphicsConfiguration;
@@ -7,8 +8,4 @@
 import java.io.File;
 import java.io.IOException;
-import javax.media.CannotRealizeException;
-import javax.media.Manager;
-import javax.media.NoPlayerException;
-import javax.media.Player;
 
 import javax.swing.JFrame;
@@ -16,32 +13,22 @@
 import org.openstreetmap.josm.Main;
 
+import uk.co.caprica.vlcj.player.*;
+
 public class VideoWindow extends JFrame {
 
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = 2099614201397118560L;
 
 	public VideoWindow(File vfile) throws HeadlessException {
 		super();
+		MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(null);
+		FullScreenStrategy fullScreenStrategy = new DefaultFullScreenStrategy(this);
+		MediaPlayer mediaPlayer = mediaPlayerFactory.newMediaPlayer(fullScreenStrategy);
+		mediaPlayer.setStandardMediaOptions(null);
+		//mediaPlayer.addMediaPlayerEventListener
+		Canvas videoSurface = new Canvas();		
+		mediaPlayer.setVideoSurface(videoSurface);
+		add(videoSurface);
 		try {
-			setTitle(vfile.getCanonicalPath());
-			setSize(200,200);			
-			setAlwaysOnTop(true);
-			
-			try {
-				setLayout( new BorderLayout());
-				Player mediaPlayer = Manager.createRealizedPlayer( vfile.toURL() );
-				 Component video = mediaPlayer.getVisualComponent();
-				 Component controls = mediaPlayer.getControlPanelComponent();
-				add( video, BorderLayout.CENTER );
-				add( controls, BorderLayout.SOUTH );
-			} catch (NoPlayerException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			} catch (CannotRealizeException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
+			mediaPlayer.playMedia(vfile.getCanonicalPath(),null);
 		} catch (IOException e) {
 			// TODO Auto-generated catch block
@@ -49,5 +36,6 @@
 		}
 		setVisible(true);		
-		
+		mediaPlayer.release();
+		mediaPlayerFactory.release();
 	}
 
