Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPlugin.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPlugin.java	(revision 25796)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPlugin.java	(revision 25861)
@@ -207,7 +207,9 @@
         if(fc.showOpenDialog(Main.main.parent)!=JFileChooser.CANCEL_OPTION)
         {
-//        	mostRecentFolder=fc.getSelectedFile().getAbsolutePath();
-//        	saveProperties();
+        	mostRecentFolder=fc.getSelectedFile().getAbsolutePath();
+        	saveProperties();
         	VideoPositionLayer videoPositionLayer= new VideoPositionLayer(gpsLayer);
+        	GPSVideoPlayer gpsVideoPlayer = new GPSVideoPlayer(new SimpleDateFormat("hh:mm:ss") ,videoPositionLayer);
+        	gpsVideoPlayer.addVideo(fc.getSelectedFile());
         }
 		
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPositionLayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPositionLayer.java	(revision 25796)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoPositionLayer.java	(revision 25861)
@@ -138,5 +138,5 @@
 	}
 	
-	private WayPoint getWayPointBefore(Date GPSTime)
+	public WayPoint getWayPointBefore(Date GPSTime)
 	{
 		assert GPSTime.after(getFirstWayPoint().getTime())==true;
@@ -196,4 +196,9 @@
         if(p1.getCoor().lon()>p2.getCoor().lon()) return p1; else return p2;
     }
+    
+    public Date getGPSDate()
+    {
+    	return iconPosition.getTime();
+    }
 
 	public void mouseReleased(MouseEvent e) {
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideo.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideo.java	(revision 25796)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideo.java	(revision 25861)
@@ -1,7 +1,14 @@
 package org.openstreetmap.josm.plugins.videomapping.video;
+import java.awt.Canvas;
 import java.io.File;
 
+import javax.swing.JComponent;
+
 // a specific synced video
-public class GPSVideo {
+public class GPSVideo extends Video{
+	public JComponent SyncComponent;
+	public GPSVideo(File filename, Canvas canvas) {
+		super(filename, canvas);
+	}
    
 
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java	(revision 25796)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java	(revision 25861)
@@ -1,4 +1,7 @@
 package org.openstreetmap.josm.plugins.videomapping.video;
+import java.awt.BorderLayout;
 import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.HeadlessException;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -7,4 +10,7 @@
 import java.sql.Date;
 import java.sql.Time;
+import java.text.DateFormat;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Timer;
@@ -13,4 +19,5 @@
 import javax.swing.JButton;
 import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
@@ -18,8 +25,88 @@
 import org.openstreetmap.josm.plugins.videomapping.GpsPlayer;
 import org.openstreetmap.josm.plugins.videomapping.VideoObserver;
+import org.openstreetmap.josm.plugins.videomapping.VideoPositionLayer;
+
+import static org.openstreetmap.josm.tools.I18n.*;
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 //extends video playback, major control has the video player
-public class GPSVideoPlayer
+public class GPSVideoPlayer extends VideoPlayer
 {
+	private JPanel syncPanel;
+	private List<GPSVideo> videos;
+	private List<JButton> syncButtons;
+	private VideoPositionLayer videoPositionLayer;
+
+	public GPSVideoPlayer(DateFormat videoTimeFormat,VideoPositionLayer videoPositionLayer) throws HeadlessException {
+		super(videoTimeFormat);
+		extendUI();
+		syncButtons=new LinkedList<JButton>();
+		this.videoPositionLayer=videoPositionLayer;
+	}
+
+	@Override
+	public GPSVideo addVideo(File Videofile) {
+		
+		GPSVideo video=(GPSVideo) super.addVideo(Videofile);
+		videos.add(video);
+		JButton syncButton= new JButton(tr("Sync"));
+		syncButton.setBackground(Color.RED);
+		syncPanel.add(syncButton);
+		syncButton.addActionListener(new ActionListener() {
+            //do a sync
+            public void actionPerformed(ActionEvent e) {
+            	GPSVideo v=findVideo((JButton)e.getSource());
+            	doSync(v,videoPositionLayer);
+            }
+		});
+		return video;
+	}
+
+	protected void doSync(GPSVideo v, VideoPositionLayer layer) {
+		WayPoint first=getFirstGPS(v.getTime(),layer.getGPSDate());
+		
+	}
+
+	//make sure we don't leave the GPS track
+	private WayPoint getFirstGPS(long videoTime, java.util.Date gpsDate) {
+		Date start=new Date(gpsDate.getTime()-videoTime);
+		if(start.before(videoPositionLayer.getFirstWayPoint().getTime()))
+		{
+			return videoPositionLayer.getFirstWayPoint();
+		}
+		else
+		{
+			return videoPositionLayer.getWayPointBefore(start);
+		}
+	}
+	
+	//make sure we don't leave the GPS track
+	private WayPoint getLastGPS(long videoTime, java.util.Date gpsDate) {
+		Date end=new Date(gpsDate.getTime()-videoTime);
+		if(end.after(videoPositionLayer.getLastWayPoint().getTime()))
+		{
+			return videoPositionLayer.getLastWayPoint();
+		}
+		else
+		{
+			return videoPositionLayer.getWayPointBefore(end);
+		}
+	}
+
+	protected GPSVideo findVideo(JButton source) {
+		for (GPSVideo v : videos) {
+			if (v.SyncComponent==source) return v;
+		}
+		return null;
+	}
+
+	private void extendUI() {
+		syncPanel=new JPanel(new FlowLayout());
+		screenPanel.add(syncPanel,BorderLayout.EAST);
+				
+	}
+	
+	
+	
     
     
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/Video.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/Video.java	(revision 25796)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/Video.java	(revision 25861)
@@ -16,4 +16,9 @@
 	}
 	
+	public long getTime()
+	{
+		return player.getTime();
+	}
+	
 
 }
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/VideoPlayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/VideoPlayer.java	(revision 25796)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/VideoPlayer.java	(revision 25861)
@@ -61,5 +61,5 @@
 public class VideoPlayer extends JFrame implements WindowListener, VideosObserver, VideoPlayerObserver{
 	private static final int notificationIntervall = 1000;
-	private JPanel screenPanel,controlsPanel,canvasPanel;
+	protected JPanel screenPanel,controlsPanel,canvasPanel;
     private JSlider timeline;
     private JButton play,back,forward;
@@ -94,5 +94,5 @@
 	}
 	
-	public void addVideo(File Videofile)
+	public Video addVideo(File Videofile)
 	{
 		Video video = new Video(Videofile,new Canvas());
@@ -102,4 +102,5 @@
         pack();
         startNotificationTimer();
+        return video;
 	}
 
