Index: applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DirectDownload.java
===================================================================
--- applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DirectDownload.java	(revision 29222)
+++ applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DirectDownload.java	(revision 29776)
@@ -3,67 +3,58 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.event.ActionEvent;
 import java.io.InputStream;
-import java.io.IOException;
-
 import java.net.URL;
 
-import java.util.List;
-
-import java.awt.event.ActionEvent;
+import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
-
+import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
+import org.openstreetmap.josm.io.GpxReader;
+import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
-
-import org.openstreetmap.josm.gui.download.DownloadSelection;
-
-import org.openstreetmap.josm.gui.layer.GpxLayer;
-import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
-
-import org.openstreetmap.josm.io.GpxReader;
-
-import javax.swing.JOptionPane;
-
 import org.xml.sax.SAXException;
 
 public class DirectDownload extends Plugin {
-    DownloadAction openaction;
+    private DownloadAction openaction;
 
-     /**
-      * Will be invoked by JOSM to bootstrap the plugin
-      *
-      * @param info  information about the plugin and its local installation    
-      */
-      public DirectDownload(PluginInformation info) {
-         super(info);
+    /**
+     * Will be invoked by JOSM to bootstrap the plugin
+     *
+     * @param info  information about the plugin and its local installation    
+     */
+    public DirectDownload(PluginInformation info) {
+        super(info);
 
-	 openaction = new DownloadAction();
-	 Main.main.menu.fileMenu.add(openaction);
-      }
+        openaction = new DownloadAction();
+        MainMenu.add(Main.main.menu.gpsMenu, openaction);
+    }
 
-    class DownloadAction extends JosmAction{
-        public DownloadAction(){
-            super(tr("Download Track ..."), "DownloadAction", tr("Download GPX track from openstreetmap.org"),
-            null, false);
+    class DownloadAction extends JosmAction {
+        public DownloadAction() {
+            super(tr("Download Track ..."), "DownloadAction",
+                    tr("Download GPX track from openstreetmap.org"), null, false);
         }
+
         public void actionPerformed(ActionEvent event) {
             DownloadDataGui go = new DownloadDataGui();
             go.setVisible(true);
 
-	    UserTrack track = go.getSelectedUserTrack();
+            UserTrack track = go.getSelectedUserTrack();
 
-	    if ((go.getValue() == 1) && (track != null)) {
-		String apiBaseUrl = "http://api.openstreetmap.org/api/0.6/";
-		String urlString = apiBaseUrl + "gpx/" + track.id + "/data";
+            if ((go.getValue() == 1) && (track != null)) {
+                String urlString = OsmApi.getOsmApi().getBaseUrl() + "gpx/" + track.id + "/data";
 
-		try {
-		    URL trackDataUrl = new URL(urlString);
-		    InputStream is = trackDataUrl.openStream();
+                try {
+                    URL trackDataUrl = new URL(urlString);
+                    InputStream is = trackDataUrl.openStream();
 
-		    GpxReader r = new GpxReader(is);
-		    boolean parsedProperly = r.parse(true);
-		    GpxLayer gpxLayer = new GpxLayer(r.getGpxData(), track.filename, true);
+                    GpxReader r = new GpxReader(is);
+                    boolean parsedProperly = r.parse(true);
+                    GpxLayer gpxLayer = new GpxLayer(r.getGpxData(), track.filename, true);
 
                     if (r.getGpxData().hasRoutePoints() || r.getGpxData().hasTrackPoints()) {
@@ -78,18 +69,20 @@
                     }
                     if (!parsedProperly) {
-                        JOptionPane.showMessageDialog(null, tr("Error occurred while parsing gpx file {0}. Only a part of the file will be available.", urlString));
+                        JOptionPane.showMessageDialog(Main.parent,
+                            tr("Error occurred while parsing gpx file {0}. Only a part of the file will be available.", urlString));
                     }
 
-		} catch (java.net.MalformedURLException e) {
-		    JOptionPane.showMessageDialog(null, tr("Invalid URL {0}", urlString));
-		} catch (java.io.IOException e) {
-		    JOptionPane.showMessageDialog(null, tr("Error fetching URL {0}", urlString));
-		} catch (SAXException e) {
-		    JOptionPane.showMessageDialog(null, tr("Error parsing data from URL {0}", urlString));
-		}
-	    }
+                } catch (java.net.MalformedURLException e) {
+                    JOptionPane.showMessageDialog(Main.parent,
+                            tr("Invalid URL {0}", urlString));
+                } catch (java.io.IOException e) {
+                    JOptionPane.showMessageDialog(Main.parent,
+                            tr("Error fetching URL {0}", urlString));
+                } catch (SAXException e) {
+                    JOptionPane.showMessageDialog(Main.parent,
+                            tr("Error parsing data from URL {0}", urlString));
+                }
+            }
         }
     }
-
 }
-
Index: applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DownloadDataGui.java
===================================================================
--- applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DownloadDataGui.java	(revision 29222)
+++ applications/editors/josm/plugins/DirectDownload/src/org/openstreetmap/josm/plugins/directdownload/DownloadDataGui.java	(revision 29776)
@@ -3,26 +3,15 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.io.InputStream;
-import java.io.IOException;
-
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Dimension;
 import java.net.URL;
-
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.StringTokenizer;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.ExtendedDialog;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Dimension;
 
 import javax.swing.BorderFactory;
-import javax.swing.DefaultListModel;
 import javax.swing.DefaultListSelectionModel;
 import javax.swing.JLabel;
-import javax.swing.JList;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
@@ -31,27 +20,22 @@
 import javax.swing.ListSelectionModel;
 import javax.swing.UIManager;
-
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
-
 import javax.swing.table.DefaultTableColumnModel;
 import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
-
-import org.xml.sax.*;
-import org.xml.sax.helpers.*;
-
-import javax.xml.parsers.SAXParserFactory; 
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
-
+import javax.xml.parsers.SAXParserFactory;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.io.OsmApi;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
 
 public class DownloadDataGui extends ExtendedDialog {
-    private String apiBaseUrl = "http://api.openstreetmap.org/api/0.6/";
-
-    // User for log in when downloading trace
-    private String username = Main.pref.get("osm-server.username");
-    private String password = Main.pref.get("osm-server.password");
 
     private NamedResultTableModel model;
@@ -62,12 +46,12 @@
         // Initalizes ExtendedDialog
         super(Main.parent,
-	      tr("Download Track"),
-	      new String[] {tr("Download Track"), tr("Cancel")},
-	      true
-	      );
-
-	JPanel panel = new JPanel();
-	panel.setLayout(new BorderLayout());
-	
+          tr("Download Track"),
+          new String[] {tr("Download Track"), tr("Cancel")},
+          true
+          );
+
+        JPanel panel = new JPanel();
+        panel.setLayout(new BorderLayout());
+    
         DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
         model = new NamedResultTableModel(selectionModel);
@@ -80,48 +64,45 @@
         panel.add(scrollPane, BorderLayout.CENTER);
 
-	model.setData(getTrackList());
-
-	setContent(panel);
-	setupDialog();
+    model.setData(getTrackList());
+
+    setContent(panel);
+    setupDialog();
     }
 
     private static class TrackListHandler extends DefaultHandler {
         private LinkedList<UserTrack> data = new LinkedList<UserTrack>();
-	private String cdata = new String();
-
-        @Override
-        public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
-        throws SAXException {
-	    if (qName.equals("gpx_file")) {
-		UserTrack track = new UserTrack();
-
-		track.id       = atts.getValue("id");
-		track.filename = atts.getValue("name");
-		track.datetime = atts.getValue("timestamp").replaceAll("[TZ]", " "); // TODO: do real parsing and time zone conversion
-		
-		data.addFirst(track);
-	    } 
-	    cdata = new String();
-	}
-
-	public void characters(char ch[], int start, int length)
-	    throws SAXException {
-	    cdata += new String(ch, start, length);
-	}
-
-	public void endElement(String uri, String localName,
-			       String qName)
-	    throws SAXException {
-	    if (qName.equals("description")) {
-		data.getFirst().description = cdata;
-	    }
-	    /*
-	    else if (qName.equals("tag")) {
-		data.getFirst().tags = cdata;
-		cdata = new String();
-	    }	
-	    */
-	}
-
+        
+        private String cdata = new String();
+    
+        @Override
+        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
+            if (qName.equals("gpx_file")) {
+            UserTrack track = new UserTrack();
+    
+            track.id       = atts.getValue("id");
+            track.filename = atts.getValue("name");
+            track.datetime = atts.getValue("timestamp").replaceAll("[TZ]", " "); // TODO: do real parsing and time zone conversion
+            
+            data.addFirst(track);
+            } 
+            cdata = new String();
+        }
+    
+        public void characters(char ch[], int start, int length)
+            throws SAXException {
+            cdata += new String(ch, start, length);
+        }
+    
+        public void endElement(String uri, String localName, String qName) throws SAXException {
+            if (qName.equals("description")) {
+            data.getFirst().description = cdata;
+            }
+            /*
+            else if (qName.equals("tag")) {
+            data.getFirst().tags = cdata;
+            cdata = new String();
+            }    
+            */
+        }
 
         public List<UserTrack> getResult() {
@@ -131,30 +112,30 @@
 
     private List<UserTrack> getTrackList() {
-	String urlString = apiBaseUrl + "user/gpx_files";
-
-	try {
-	    URL userTracksUrl = new URL(urlString);
-
-	    SAXParserFactory spf = SAXParserFactory.newInstance();
-	    TrackListHandler handler = new TrackListHandler();
-
-	    //get a new instance of parser
-	    SAXParser sp = spf.newSAXParser();
-	    
-	    //parse the file and also register this class for call backs
-	    sp.parse(userTracksUrl.openStream(), handler);
-	    
-	    return handler.getResult();
-	} catch (java.net.MalformedURLException e) {
-	    JOptionPane.showMessageDialog(null, tr("Invalid URL {0}", urlString));
-	} catch (java.io.IOException e) {
-	    JOptionPane.showMessageDialog(null, tr("Error fetching URL {0}", urlString));
-	} catch (SAXException e) {
-	    JOptionPane.showMessageDialog(null, tr("Error parsing data from URL {0}", urlString));
-	} catch(ParserConfigurationException pce) {
-	    JOptionPane.showMessageDialog(null, tr("Error parsing data from URL {0}", urlString));
-	}
-
-	return new LinkedList<UserTrack>();
+        String urlString = OsmApi.getOsmApi().getBaseUrl() + "user/gpx_files";
+
+        try {
+            URL userTracksUrl = new URL(urlString);
+    
+            SAXParserFactory spf = SAXParserFactory.newInstance();
+            TrackListHandler handler = new TrackListHandler();
+    
+            //get a new instance of parser
+            SAXParser sp = spf.newSAXParser();
+            
+            //parse the file and also register this class for call backs
+            sp.parse(userTracksUrl.openStream(), handler);
+            
+            return handler.getResult();
+        } catch (java.net.MalformedURLException e) {
+            JOptionPane.showMessageDialog(null, tr("Invalid URL {0}", urlString));
+        } catch (java.io.IOException e) {
+            JOptionPane.showMessageDialog(null, tr("Error fetching URL {0}", urlString));
+        } catch (SAXException e) {
+            JOptionPane.showMessageDialog(null, tr("Error parsing data from URL {0}", urlString));
+        } catch(ParserConfigurationException pce) {
+            JOptionPane.showMessageDialog(null, tr("Error parsing data from URL {0}", urlString));
+        }
+
+        return new LinkedList<UserTrack>();
     }
 
@@ -167,4 +148,5 @@
             this.selectionModel = selectionModel;
         }
+        
         @Override
         public int getRowCount() {
@@ -187,4 +169,5 @@
             fireTableDataChanged();
         }
+        
         @Override
         public boolean isCellEditable(int row, int column) {
@@ -200,7 +183,6 @@
 
     public UserTrack getSelectedUserTrack() {
-	return model.getSelectedUserTrack();
-    }
-   
+        return model.getSelectedUserTrack();
+    }
 
     static class NamedResultTableColumnModel extends DefaultTableColumnModel {
@@ -234,5 +216,5 @@
 
             // column 3 - tags
-	    /*
+        /*
             col = new TableColumn(3);
             col.setHeaderValue(tr("Tags"));
@@ -241,5 +223,5 @@
             col.setCellRenderer(renderer);
             addColumn(col);
-	    */
+        */
         }
 
@@ -286,21 +268,20 @@
             switch(column) {
             case 0:
-		setText(sr.datetime);
+                setText(sr.datetime);
                 break;
             case 1:
                 setText(sr.filename);
-                break;		
-	    case 2:
+                break;        
+            case 2:
                 setText(sr.description);
                 break;
-		/*
+        /*
             case 3:
                 setText(sr.tags);
                 break;
-		*/
+        */
             }
             return this;
         }
     }
-
 }
