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 21298)
+++ /applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java	(revision 21299)
@@ -2,5 +2,8 @@
 
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -12,4 +15,6 @@
 import java.awt.Point;
 import java.awt.Rectangle;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
@@ -22,4 +27,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -31,16 +37,18 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 
-public class PositionLayer extends Layer implements MouseListener {
-	private DataSet ds;
-	private Node sel;
-	private Iterator<Node> it;
-		
-	public PositionLayer(String name, final DataSet ds) {
+public class PositionLayer extends Layer implements MouseListener, KeyListener {
+	private List<WayPoint> ls;
+	private Collection<WayPoint> selected;
+	private WayPoint sel;
+	private Iterator<WayPoint> it;
+		
+	public PositionLayer(String name, final List<WayPoint> ls) {
 		super(name);		
-		this.ds = ds;
-		Main.map.mapView.addMouseListener(this);		
-		Timer t  = new Timer();
-		it=ds.getNodes().iterator();
-		
+		this.ls = ls;
+		selected = new ArrayList<WayPoint>();
+		Main.map.mapView.addMouseListener(this);
+		Main.map.mapView.addKeyListener(this);
+		it=ls.iterator();
+		Timer t  = new Timer();		
 		t.schedule(new TimerTask() {
 			
@@ -49,8 +57,8 @@
 				// TODO Auto-generated method stub
 				sel=it.next();
-				System.out.println(sel.getTimestamp());
+				System.out.println(sel.getTime());
 				Main.map.mapView.repaint();
 			}
-		},1000,1000);
+		},100,100);
 		
 	}
@@ -103,21 +111,20 @@
 	public void paint(Graphics2D g, MapView map, Bounds bound) {
 		Point p;
-		for(Node n: ds.getNodes()) {
+		g.setColor(Color.green);
+		for(WayPoint n: ls) {
 			p = Main.map.mapView.getPoint(n.getEastNorth());
-			if(n.isHighlighted())
-			{
-				g.setColor(Color.red);
-				g.drawString(n.getTimestamp().toString(), p.x+10, p.y);
+			g.drawOval(p.x - 2, p.y - 2, 4, 4); // small circles
 			}
-			else
-			{
-				g.setColor(Color.green);
-			}
+		g.setColor(Color.red);
+		for(WayPoint n:selected)
+		{
+			p = Main.map.mapView.getPoint(n.getEastNorth());
 			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);
+			p=Main.map.mapView.getPoint(sel.getEastNorth());
+			//TODO Source out redundant calculations
+			//TODO make icon transparent
+			ImageProvider.get("videomapping.png").paintIcon(null, g, p.x-ImageProvider.get("videomapping.png").getIconWidth()/2, p.y-ImageProvider.get("videomapping.png").getIconHeight()/2);					
 		};
 	}
@@ -133,5 +140,5 @@
 		//only on leftclicks of our layer
 		if(e.getButton() == MouseEvent.BUTTON1) {
-			JOptionPane.showMessageDialog(Main.parent,"test");
+			//JOptionPane.showMessageDialog(Main.parent,"test");
 			getNearestNode(e.getPoint());
 			Main.map.mapView.repaint();
@@ -145,10 +152,11 @@
 		Rectangle rect = new Rectangle(mouse, new Dimension(30, 30));		
 		//iterate through all possible notes
-		for(Node node : ds.getNodes())
+		for(WayPoint n : ls)
 		{
-			p = Main.map.mapView.getPoint(node);
+			p = Main.map.mapView.getPoint(n.getEastNorth());
 			if (rect.contains(p))
 			{				
-				node.setHighlighted(true);
+				selected.add(n);
+				sel=n;
 			}
 			
@@ -176,3 +184,22 @@
 	}
 
+	public void keyPressed(KeyEvent e) {
+		System.out.println(e.getKeyCode());
+		switch(e.getKeyCode())
+		{
+			case KeyEvent.VK_LEFT: sel = ls.get(50);
+		}
+		
+	}
+
+	public void keyReleased(KeyEvent e) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void keyTyped(KeyEvent e) {
+		// TODO Auto-generated method stub
+		
+	}
+
 }
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 21298)
+++ /applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoAction.java	(revision 21299)
@@ -3,4 +3,6 @@
 import java.awt.event.ActionEvent;
 import java.io.File;
+import java.util.Collections;
+import java.util.LinkedList;
 import java.util.List;
 
@@ -35,5 +37,5 @@
 	
 		copyGPSLayer();
-		Main.main.addLayer(new PositionLayer("test",ds));
+		Main.main.addLayer(new PositionLayer("test",ls));
 	}
 		
@@ -45,22 +47,12 @@
 	//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);
-                }
+	{ 
+		ls = new LinkedList<WayPoint>();
+        for (GpxTrack trk : gps.tracks) {
+            for (GpxTrackSegment segment : trk.getSegments()) {
+                ls.addAll(segment.getWayPoints());
             }
+        }
+        Collections.sort(ls); //sort basing upon time
 	}
 
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 21298)
+++ /applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java	(revision 21299)
@@ -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"));//TODO no more ugly " video" hack
+		VMenu = Main.main.menu.addMenu(" 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();
