Changeset 99 in josm


Ignore:
Timestamp:
2006-04-27T01:29:55+02:00 (15 years ago)
Author:
imi
Message:
  • added GeoImage feature (showing images on a tracklog)
  • added zoom slider
  • added Escape cancels selection rectangle
  • added "Save password" option to Auth-dialog
  • fixed that redo/undo buttons were not enabled
  • fixed hotkeys beeing inaccessible when no data is loaded
Files:
10 added
25 edited
1 moved

Legend:

Unmodified
Added
Removed
  • .classpath

    r86 r99  
    77        <classpathentry sourcepath="JUNIT_SRC_HOME/junitsrc.zip" kind="var" path="JUNIT_HOME/junit.jar"/>
    88        <classpathentry kind="lib" path="lib/MinML2.jar"/>
     9        <classpathentry sourcepath="C:/projects/metadata-extractor/src" kind="lib" path="lib/metadata-extractor-2.3.1.jar"/>
    910        <classpathentry kind="output" path="bin"/>
    1011</classpath>
  • src/org/openstreetmap/josm/Main.java

    r98 r99  
    100100                                public void layerRemoved(final Layer oldLayer) {}
    101101                        });
     102                        if (map.mapView.editLayer != null)
     103                                map.mapView.editLayer.listenerCommands.add(redoUndoListener);
    102104                }
    103105                redoUndoListener.commandChanged(0,0);
     
    206208         * Use this to register shortcuts to
    207209         */
    208         public static JPanel panel = new JPanel(new BorderLayout());
     210        public static final JPanel contentPane = new JPanel(new BorderLayout());
    209211
    210212
     
    214216
    215217
     218        private static JPanel panel = new JPanel(new BorderLayout());
     219
    216220        protected final JMenuBar mainMenu = new JMenuBar();
    217         protected static final JPanel contentPane = new JPanel(new BorderLayout());
    218221        protected static Rectangle bounds;
    219222
  • src/org/openstreetmap/josm/actions/DownloadAction.java

    r98 r99  
    3838import org.openstreetmap.josm.gui.BookmarkList.Bookmark;
    3939import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    40 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer;
    41 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer.GpsPoint;
     40import org.openstreetmap.josm.gui.layer.RawGpsLayer;
     41import org.openstreetmap.josm.gui.layer.RawGpsLayer.GpsPoint;
    4242import org.openstreetmap.josm.io.OsmServerReader;
    4343import org.openstreetmap.josm.tools.GBC;
     
    104104                                return;
    105105                        String name = latlon[0].getText() + " " + latlon[1].getText() + " x " + latlon[2].getText() + " " + latlon[3].getText();
    106                         Main.main.addLayer(new RawGpsDataLayer(rawData, name));
     106                        Main.main.addLayer(new RawGpsLayer(rawData, name));
    107107                }
    108108
     
    170170                                        mv.getLatLon(0, mv.getHeight()),
    171171                                        mv.getLatLon(mv.getWidth(), 0)));
    172                         rawGps.setSelected(mv.getActiveLayer() instanceof RawGpsDataLayer);
     172                        rawGps.setSelected(mv.getActiveLayer() instanceof RawGpsLayer);
    173173                }
    174174                dlg.add(rawGps, GBC.eop());
  • src/org/openstreetmap/josm/actions/GpxExportAction.java

    r98 r99  
    2727import org.openstreetmap.josm.Main;
    2828import org.openstreetmap.josm.gui.layer.Layer;
    29 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer;
     29import org.openstreetmap.josm.gui.layer.RawGpsLayer;
    3030import org.openstreetmap.josm.io.GpxWriter;
    3131import org.openstreetmap.josm.tools.GBC;
     
    118118                                        authorName.getText(), email.getText(), copyright.getText(),
    119119                                        copyrightYear.getText(), keywords.getText());
    120                         if (layer instanceof RawGpsDataLayer)
    121                                 w.output(((RawGpsDataLayer)layer).data);
     120                        if (layer instanceof RawGpsLayer)
     121                                w.output(((RawGpsLayer)layer).data);
    122122                        else
    123123                                w.output(Main.ds);
  • src/org/openstreetmap/josm/actions/GroupAction.java

    r98 r99  
    5252        public GroupAction(int shortCut, int modifiers) {
    5353                String idName = getClass().getName();
    54                 Main.panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(shortCut, modifiers), idName);
    55         Main.panel.getActionMap().put(idName, this);
     54                Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(shortCut, modifiers), idName);
     55        Main.contentPane.getActionMap().put(idName, this);
    5656                shortCutName = ShortCutLabel.name(shortCut, modifiers);
    5757                addPropertyChangeListener(new PropertyChangeListener(){
  • src/org/openstreetmap/josm/actions/JosmAction.java

    r98 r99  
    3333                super(name, ImageProvider.get(iconName));
    3434                putValue(SHORT_DESCRIPTION, "<html>"+tooltip+" <font size='-2'>"+shortCutName+"</font>&nbsp;</html>");
    35                 Main.panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(shortCut, name);
    36         Main.panel.getActionMap().put(name, this);
     35                //Main.panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(shortCut, name);
     36        //Main.panel.getActionMap().put(name, this);
     37        Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(shortCut, name);
     38        Main.contentPane.getActionMap().put(name, this);
    3739        }
    3840
  • src/org/openstreetmap/josm/actions/OpenAction.java

    r98 r99  
    1818import org.openstreetmap.josm.data.osm.DataSet;
    1919import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    20 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer;
    21 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer.GpsPoint;
     20import org.openstreetmap.josm.gui.layer.RawGpsLayer;
     21import org.openstreetmap.josm.gui.layer.RawGpsLayer.GpsPoint;
    2222import org.openstreetmap.josm.io.GpxReader;
    2323import org.openstreetmap.josm.io.OsmReader;
     
    6666                                } else
    6767                                        throw new IllegalStateException();
    68                                 Main.main.addLayer(new RawGpsDataLayer(data, filename.getName()));
     68                                Main.main.addLayer(new RawGpsLayer(data, filename.getName()));
    6969                        } else {
    7070                                DataSet dataSet;
     
    102102                } catch (SAXException x) {
    103103                        x.printStackTrace();
    104                         JOptionPane.showMessageDialog(Main.parent, "Error while parsing: "+x.getMessage());
     104                        JOptionPane.showMessageDialog(Main.parent, "Error while parsing "+fn+": "+x.getMessage());
    105105                } catch (JDOMException x) {
    106106                        x.printStackTrace();
    107                         JOptionPane.showMessageDialog(Main.parent, "Error while parsing: "+x.getMessage());
     107                        JOptionPane.showMessageDialog(Main.parent, "Error while parsing "+fn+": "+x.getMessage());
    108108                } catch (IOException x) {
    109109                        x.printStackTrace();
  • src/org/openstreetmap/josm/actions/UploadAction.java

    r98 r99  
    3939
    4040        public void actionPerformed(ActionEvent e) {
    41 
     41                if (Main.map == null) {
     42                        JOptionPane.showMessageDialog(Main.parent, "Nothing to upload. Get some data first.");
     43                        return;
     44                }
     45               
    4246                String osmDataServer = Main.pref.get("osm-server.url");
    4347                //TODO: Remove this in later versions (temporary only)
  • src/org/openstreetmap/josm/actions/mapmode/AddNodeAction.java

    r98 r99  
    11package org.openstreetmap.josm.actions.mapmode;
    22
     3import java.awt.Cursor;
    34import java.awt.event.KeyEvent;
    45import java.awt.event.MouseEvent;
     
    5354                super.enterMode();
    5455                Main.map.mapView.addMouseListener(this);
     56                Main.map.mapView.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
    5557        }
    5658
     
    5860                super.exitMode();
    5961                Main.map.mapView.removeMouseListener(this);
     62                Main.map.mapView.setCursor(Cursor.getDefaultCursor());
    6063        }
    6164
  • src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java

    r98 r99  
    1414import org.openstreetmap.josm.command.AddCommand;
    1515import org.openstreetmap.josm.command.ChangeCommand;
    16 import org.openstreetmap.josm.command.Command;
    1716import org.openstreetmap.josm.command.DeleteCommand;
    1817import org.openstreetmap.josm.data.SelectionChangedListener;
     
    6463        @Override public void enterMode() {
    6564                super.enterMode();
    66                 Command c = null;
    6765                way = makeWay();
    68                 if (way != null) {
    69                         c = new AddCommand(way);
    70                         Main.ds.setSelected(way);
    71                         Main.main.editLayer().add(c);
    72                 } else
    73                         Main.ds.clearSelection();
     66                Main.ds.setSelected(way);
    7467                Main.map.mapView.addMouseListener(this);
    7568        }
     
    147140                }
    148141
     142                Way wayToAdd = null;
     143                boolean reordered = false;
    149144                if (numberOfSelectedWays > 0) {
    150145                        String ways = "way" + (numberOfSelectedWays==1?" has":"s have");
     
    155150                                        if (osm instanceof Way)
    156151                                                segmentSet.addAll(((Way)osm).segments);
     152                        } else if (numberOfSelectedWays == 1) {
     153                                answer = JOptionPane.showConfirmDialog(Main.parent, "Do you want to add all other selected segments to the one selected way?", "Add segments to way?", JOptionPane.YES_NO_OPTION);
     154                                if (answer == JOptionPane.YES_OPTION) {
     155                                        for (OsmPrimitive osm : selection) {
     156                                                if (osm instanceof Way) {
     157                                                        wayToAdd = (Way)osm;
     158                                                        answer = JOptionPane.showConfirmDialog(Main.parent, "Reorder all line segments?", "Reorder?", JOptionPane.YES_NO_CANCEL_OPTION);
     159                                                        if (answer == JOptionPane.CANCEL_OPTION)
     160                                                                return wayToAdd;
     161                                                        if (answer == JOptionPane.YES_OPTION) {
     162                                                                segmentSet.addAll(wayToAdd.segments);
     163                                                                reordered = true;
     164                                                        } else
     165                                                                segmentSet.removeAll(wayToAdd.segments);
     166                                                        break;
     167                                                }
     168                                        }
     169                                }
    157170                        }
    158171                }
     
    193206                }
    194207
     208                if (wayToAdd != null) {
     209                        Way w = new Way(wayToAdd);
     210                        if (reordered)
     211                                w.segments.clear();
     212                        w.segments.addAll(sortedSegments);
     213                        Main.main.editLayer().add(new ChangeCommand(wayToAdd, w));
     214                        return wayToAdd;
     215                }
     216
    195217                if (JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(Main.parent, "Create a new way out of "+sortedSegments.size()+" segments?", "Create new way", JOptionPane.YES_NO_OPTION))
    196218                        return null;
     
    198220                Way w = new Way();
    199221                w.segments.addAll(sortedSegments);
     222
     223                if (way != null)
     224                        Main.main.editLayer().add(new AddCommand(way));
    200225                return w;
    201226        }
  • src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java

    r93 r99  
    8888         * @param color The color of the node.
    8989         */
    90         private void drawNode(Node n, Color color) {
     90        public void drawNode(Node n, Color color) {
    9191                Point p = nc.getPoint(n.eastNorth);
    9292                g.setColor(color);
  • src/org/openstreetmap/josm/data/projection/Mercator.java

    r86 r99  
    11package org.openstreetmap.josm.data.projection;
    22
     3import org.openstreetmap.josm.data.coor.EastNorth;
    34import org.openstreetmap.josm.data.coor.LatLon;
    4 import org.openstreetmap.josm.data.coor.EastNorth;
    55
    66/**
  • src/org/openstreetmap/josm/data/projection/Projection.java

    r79 r99  
    11package org.openstreetmap.josm.data.projection;
    22
     3import org.openstreetmap.josm.data.coor.EastNorth;
    34import org.openstreetmap.josm.data.coor.LatLon;
    4 import org.openstreetmap.josm.data.coor.EastNorth;
    55
    66/**
  • src/org/openstreetmap/josm/gui/IconToggleButton.java

    r93 r99  
    4040
    4141        public void propertyChange(PropertyChangeEvent evt) {
    42                 if (evt.getPropertyName().equals("active"))
     42                if (evt.getPropertyName().equals("active")) {
    4343                        setSelected((Boolean)evt.getNewValue());
     44                        requestFocusInWindow();
     45                }
    4446        }
    4547}
  • src/org/openstreetmap/josm/gui/MapFrame.java

    r98 r99  
    133133         */
    134134        public void setVisibleDialogs() {
    135                 for (Component c : toggleDialogs.getComponents())
    136                         if (c instanceof ToggleDialog)
    137                                 c.setVisible(Main.pref.getBoolean(((ToggleDialog)c).prefName+".visible"));
     135                for (Component c : toggleDialogs.getComponents()) {
     136                        if (c instanceof ToggleDialog) {
     137                                boolean sel = Main.pref.getBoolean(((ToggleDialog)c).prefName+".visible");
     138                                ((ToggleDialog)c).action.button.setSelected(sel);
     139                                c.setVisible(sel);
     140                        }
     141                }
    138142        }
    139143
  • src/org/openstreetmap/josm/gui/MapView.java

    r98 r99  
    66import java.awt.event.ComponentAdapter;
    77import java.awt.event.ComponentEvent;
     8import java.awt.event.MouseAdapter;
     9import java.awt.event.MouseEvent;
     10import java.beans.PropertyChangeEvent;
     11import java.beans.PropertyChangeListener;
    812import java.util.ArrayList;
    913import java.util.Collection;
     
    1216
    1317import javax.swing.JOptionPane;
     18import javax.swing.JSlider;
     19import javax.swing.event.ChangeEvent;
     20import javax.swing.event.ChangeListener;
    1421
    1522import org.openstreetmap.josm.Main;
     
    7683        private final AutoScaleAction autoScaleAction;
    7784
     85       
     86        private final class Scaler extends JSlider implements PropertyChangeListener, ChangeListener {
     87                boolean hovered = false;
     88                public Scaler() {
     89                        super(0, 20);
     90                        addMouseListener(new MouseAdapter(){
     91                                @Override public void mouseEntered(MouseEvent e) {
     92                        hovered = true;
     93                }
     94                                @Override public void mouseExited(MouseEvent e) {
     95                        hovered = false;
     96                }
     97                        });
     98                        MapView.this.addPropertyChangeListener(this);
     99                        addChangeListener(this);
     100        }
     101                public void propertyChange(PropertyChangeEvent evt) {
     102                        if (evt.getPropertyName().equals("scale") && !getModel().getValueIsAdjusting())
     103                                setValue(zoom());
     104        }
     105                public void stateChanged(ChangeEvent e) {
     106                        if (!hovered)
     107                                return;
     108                        EastNorth pos = world;
     109                        for (int zoom = 0; zoom < getValue(); ++zoom)
     110                                pos = new EastNorth(pos.east()/2, pos.north()/2);
     111                        if (MapView.this.getWidth() < MapView.this.getHeight())
     112                                zoomTo(center, pos.east()*2/(MapView.this.getWidth()-20));
     113                        else
     114                                zoomTo(center, pos.north()*2/(MapView.this.getHeight()-20));
     115        }
     116        }
     117       
    78118        public MapView(AutoScaleAction autoScaleAction) {
    79119                this.autoScaleAction = autoScaleAction;
     
    91131                        }
    92132                });
     133                Scaler zoomScaler = new Scaler();
     134                zoomScaler.setOpaque(false);
     135                add(zoomScaler);
     136                zoomScaler.setBounds(0,0, 100, 30);
    93137        }
    94138
     
    182226                if (x1 > 0 || y1 > 0 || x2 < getWidth() || y2 < getHeight())
    183227                        g.drawRect(x1, y1, x2-x1+1, y2-y1+1);
     228                super.paint(g);
    184229        }
    185230
  • src/org/openstreetmap/josm/gui/NavigatableComponent.java

    r93 r99  
    88
    99import org.openstreetmap.josm.Main;
     10import org.openstreetmap.josm.data.coor.EastNorth;
    1011import org.openstreetmap.josm.data.coor.LatLon;
    11 import org.openstreetmap.josm.data.coor.EastNorth;
    12 import org.openstreetmap.josm.data.osm.Segment;
    1312import org.openstreetmap.josm.data.osm.Node;
    1413import org.openstreetmap.josm.data.osm.OsmPrimitive;
     14import org.openstreetmap.josm.data.osm.Segment;
    1515import org.openstreetmap.josm.data.osm.Way;
    1616import org.openstreetmap.josm.data.projection.Projection;
     
    2424public class NavigatableComponent extends JComponent {
    2525
     26        public static final EastNorth world = Main.proj.latlon2eastNorth(new LatLon(Projection.MAX_LAT, Projection.MAX_LON));
     27
    2628        /**
    2729         * The scale factor in x or y-units per pixel. This means, if scale = 10,
     
    3537        protected EastNorth center;
    3638
     39        public NavigatableComponent() {
     40                setLayout(null);
     41    }
     42
     43        /**
     44         * Return the OSM-conform zoom factor (0 for whole world, 1 for half, 2 for quarter...)
     45         */
     46        public int zoom() {
     47                double sizex = scale * getWidth();
     48                double sizey = scale * getHeight();
     49                for (int zoom = 0; zoom <= 32; zoom++, sizex *= 2, sizey *= 2)
     50                        if (sizex > world.east() || sizey > world.north())
     51                                return zoom;
     52                return 32;
     53        }
     54       
    3755        /**
    3856         * Return the current scale value.
  • src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java

    r98 r99  
    8282                } catch (FileNotFoundException x) {
    8383                        x.printStackTrace();
    84                         errorMessage = "URL not found: " + x.getMessage();
     84                        errorMessage = "Not found: " + x.getMessage();
    8585                } catch (IOException x) {
    8686                        x.printStackTrace();
  • src/org/openstreetmap/josm/gui/SelectionManager.java

    r94 r99  
    66import java.awt.Point;
    77import java.awt.Rectangle;
     8import java.awt.event.ActionEvent;
    89import java.awt.event.InputEvent;
     10import java.awt.event.KeyEvent;
    911import java.awt.event.MouseEvent;
    1012import java.awt.event.MouseListener;
     
    1517import java.util.LinkedList;
    1618
     19import javax.swing.AbstractAction;
     20import javax.swing.JComponent;
     21import javax.swing.KeyStroke;
     22
    1723import org.openstreetmap.josm.Main;
    18 import org.openstreetmap.josm.data.osm.Segment;
    1924import org.openstreetmap.josm.data.osm.Node;
    2025import org.openstreetmap.josm.data.osm.OsmPrimitive;
     26import org.openstreetmap.josm.data.osm.Segment;
    2127import org.openstreetmap.josm.data.osm.Way;
    2228
     
    121127                eventSource.addMouseMotionListener(this);
    122128                selectionEndedListener.addPropertyChangeListener(this);
     129                Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "SelectionManager");
     130        Main.contentPane.getActionMap().put("SelectionManager", new AbstractAction(){
     131                        public void actionPerformed(ActionEvent e) {
     132                                if (mousePos != null && mousePosStart != null)
     133                                        paintRect();
     134                                mousePosStart = null;
     135                                mousePos = null;
     136            }
     137        });
    123138        }
    124139        /**
     
    132147                eventSource.removeMouseMotionListener(this);
    133148                selectionEndedListener.removePropertyChangeListener(this);
     149                Main.contentPane.getInputMap().remove(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
     150                Main.contentPane.getActionMap().remove("SelectionManager");
    134151        }
    135152
     
    327344        }
    328345       
    329        
    330         /**
    331          * Does nothing. Only to satisfy MouseListener
    332          */
    333346        public void mouseClicked(MouseEvent e) {}
    334         /**
    335          * Does nothing. Only to satisfy MouseListener
    336          */
    337347        public void mouseEntered(MouseEvent e) {}
    338         /**
    339          * Does nothing. Only to satisfy MouseListener
    340          */
    341348        public void mouseExited(MouseEvent e) {}
    342         /**
    343          * Does nothing. Only to satisfy MouseMotionListener
    344          */
    345349        public void mouseMoved(MouseEvent e) {}
    346 
    347350}
  • src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java

    r98 r99  
    3838                        public void layerRemoved(Layer oldLayer) {}
    3939                });
     40                if (mapFrame.mapView.editLayer != null)
     41                        mapFrame.mapView.editLayer.listenerCommands.add(this);
     42                       
    4043                tree.setRootVisible(false);
    4144                tree.setShowsRootHandles(true);
  • src/org/openstreetmap/josm/gui/layer/RawGpsLayer.java

    r98 r99  
    66import java.awt.event.ActionEvent;
    77import java.awt.event.ActionListener;
     8import java.io.File;
    89import java.util.Collection;
     10import java.util.LinkedList;
    911
    1012import javax.swing.Icon;
    1113import javax.swing.JColorChooser;
     14import javax.swing.JFileChooser;
    1215import javax.swing.JMenuItem;
    1316import javax.swing.JOptionPane;
    1417import javax.swing.JPopupMenu;
     18import javax.swing.filechooser.FileFilter;
    1519
    1620import org.openstreetmap.josm.Main;
     
    3135 * @author imi
    3236 */
    33 public class RawGpsDataLayer extends Layer {
     37public class RawGpsLayer extends Layer {
    3438
    3539        private static Icon icon;
     
    5155        public final Collection<Collection<GpsPoint>> data;
    5256
    53         public RawGpsDataLayer(Collection<Collection<GpsPoint>> data, String name) {
     57        public RawGpsLayer(Collection<Collection<GpsPoint>> data, String name) {
    5458                super(name);
    5559                this.data = data;
     
    103107
    104108        @Override public void mergeFrom(Layer from) {
    105                 RawGpsDataLayer layer = (RawGpsDataLayer)from;
     109                RawGpsLayer layer = (RawGpsLayer)from;
    106110                data.addAll(layer.data);
    107111        }
    108112
    109113        @Override public boolean isMergable(Layer other) {
    110                 return other instanceof RawGpsDataLayer;
     114                return other instanceof RawGpsLayer;
    111115        }
    112116
     
    153157                menu.add(color);
    154158               
     159                JMenuItem tagimage = new JMenuItem("Import images", ImageProvider.get("tagimages"));
     160                tagimage.addActionListener(new ActionListener(){
     161                        public void actionPerformed(ActionEvent e) {
     162                                JFileChooser fc = new JFileChooser(Main.pref.get("tagimages.lastdirectory"));
     163                                fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
     164                                fc.setMultiSelectionEnabled(true);
     165                                fc.setAcceptAllFileFilterUsed(false);
     166                                fc.setFileFilter(new FileFilter(){
     167                                        @Override public boolean accept(File f) {
     168                                                return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
     169                                        }
     170                                        @Override public String getDescription() {
     171                                                return "JPEG images (*.jpg)";
     172                                        }
     173                                });
     174                                fc.showOpenDialog(Main.parent);
     175                                File[] sel = fc.getSelectedFiles();
     176                                if (sel == null || sel.length == 0)
     177                                        return;
     178                                LinkedList<File> files = new LinkedList<File>();
     179                                addRecursiveFiles(files, sel);
     180                                Main.pref.put("tagimages.lastdirectory", fc.getCurrentDirectory().getPath());
     181                                GeoImageLayer.create(files, RawGpsLayer.this);
     182            }
     183
     184                        private void addRecursiveFiles(LinkedList<File> files, File[] sel) {
     185                                for (File f : sel) {
     186                                        if (f.isDirectory())
     187                                                addRecursiveFiles(files, f.listFiles());
     188                                        else if (f.getName().toLowerCase().endsWith(".jpg"))
     189                                                files.add(f);
     190                                }
     191            }
     192                });
     193                menu.add(tagimage);
     194               
    155195                menu.addSeparator();
    156196                menu.add(new LayerListPopup.InfoAction(this));
  • src/org/openstreetmap/josm/io/GpxWriter.java

    r86 r99  
    2323import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2424import org.openstreetmap.josm.data.osm.Way;
    25 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer.GpsPoint;
     25import org.openstreetmap.josm.gui.layer.RawGpsLayer.GpsPoint;
    2626import org.openstreetmap.josm.tools.XmlWriter;
    2727
  • src/org/openstreetmap/josm/io/OsmConnection.java

    r98 r99  
    88
    99import javax.swing.BoundedRangeModel;
     10import javax.swing.JCheckBox;
    1011import javax.swing.JLabel;
    1112import javax.swing.JOptionPane;
     
    2930        protected JLabel currentAction;
    3031        protected BoundedRangeModel progress;
    31        
     32
    3233        private static OsmAuth authentication;
    3334        /**
     
    3839                Authenticator.setDefault(authentication = new OsmAuth());
    3940        }
    40        
     41
    4142        /**
    42      * The authentication class handling the login requests.
    43      */
    44     private static class OsmAuth extends Authenticator {
    45         /**
    46          * Set to true, when the autenticator tried the password once.
    47          */
    48         boolean passwordtried = false;
    49         /**
    50          * Whether the user cancelled the password dialog
    51          */
    52         boolean authCancelled = false;
    53    
    54         @Override protected PasswordAuthentication getPasswordAuthentication() {
    55                 String username = Main.pref.get("osm-server.username");
    56                 String password = Main.pref.get("osm-server.password");
    57                 if (passwordtried || username.equals("") || password.equals("")) {
    58                         JPanel p = new JPanel(new GridBagLayout());
    59                         p.add(new JLabel("Username"), GBC.std().insets(0,0,10,0));
    60                         JTextField usernameField = new JTextField(username, 20);
    61                         p.add(usernameField, GBC.eol());
    62                         p.add(new JLabel("Password"), GBC.std().insets(0,0,10,0));
    63                         JPasswordField passwordField = new JPasswordField(password, 20);
    64                         p.add(passwordField, GBC.eol());
    65                         JLabel warning = new JLabel("Warning: The password is transferred unencrypted.");
    66                         warning.setFont(warning.getFont().deriveFont(Font.ITALIC));
    67                         p.add(warning, GBC.eol());
    68                         int choice = JOptionPane.showConfirmDialog(Main.parent, p, "Enter Password", JOptionPane.OK_CANCEL_OPTION);
    69                         if (choice == JOptionPane.CANCEL_OPTION) {
    70                                 authCancelled = true;
    71                                 return null;
    72                         }
    73                         username = usernameField.getText();
    74                         password = String.valueOf(passwordField.getPassword());
    75                         if (username.equals(""))
    76                                 return null;
    77                 }
    78                 passwordtried = true;
    79                 return new PasswordAuthentication(username, password.toCharArray());
    80         }
    81     }
     43         * The authentication class handling the login requests.
     44         */
     45        private static class OsmAuth extends Authenticator {
     46                /**
     47                 * Set to true, when the autenticator tried the password once.
     48                 */
     49                boolean passwordtried = false;
     50                /**
     51                 * Whether the user cancelled the password dialog
     52                 */
     53                boolean authCancelled = false;
     54
     55                @Override protected PasswordAuthentication getPasswordAuthentication() {
     56                        String username = Main.pref.get("osm-server.username");
     57                        String password = Main.pref.get("osm-server.password");
     58                        if (passwordtried || username.equals("") || password.equals("")) {
     59                                JPanel p = new JPanel(new GridBagLayout());
     60                                if (!username.equals("") && !password.equals(""))
     61                                        p.add(new JLabel("Incorrect password or username."), GBC.eop());
     62                                p.add(new JLabel("Username"), GBC.std().insets(0,0,10,0));
     63                                JTextField usernameField = new JTextField(username, 20);
     64                                p.add(usernameField, GBC.eol());
     65                                p.add(new JLabel("Password"), GBC.std().insets(0,0,10,0));
     66                                JPasswordField passwordField = new JPasswordField(password, 20);
     67                                p.add(passwordField, GBC.eol());
     68                                JLabel warning = new JLabel("Warning: The password is transferred unencrypted.");
     69                                warning.setFont(warning.getFont().deriveFont(Font.ITALIC));
     70                                p.add(warning, GBC.eop());
     71
     72                                JCheckBox savePassword = new JCheckBox("Save user and password (unencrypted)", !username.equals("") && !password.equals(""));
     73                                p.add(savePassword, GBC.eop());
     74
     75                                int choice = JOptionPane.showConfirmDialog(Main.parent, p, "Enter Password", JOptionPane.OK_CANCEL_OPTION);
     76                                if (choice == JOptionPane.CANCEL_OPTION) {
     77                                        authCancelled = true;
     78                                        return null;
     79                                }
     80                                username = usernameField.getText();
     81                                password = String.valueOf(passwordField.getPassword());
     82                                if (savePassword.isSelected()) {
     83                                        Main.pref.put("osm-server.username", username);
     84                                        Main.pref.put("osm-server.password", password);
     85                                }
     86                                if (username.equals(""))
     87                                        return null;
     88                        }
     89                        passwordtried = true;
     90                        return new PasswordAuthentication(username, password.toCharArray());
     91                }
     92        }
    8293
    8394        /**
     
    8899                authentication.passwordtried = false;
    89100        }
    90        
     101
    91102        /**
    92103         * @return Whether the connection was cancelled.
     
    99110                this.currentAction = currentAction;
    100111                this.progress = progress;
    101     }
     112        }
    102113
    103114        public void cancel() {
    104115                currentAction.setText("Aborting...");
    105         cancel = true;
    106         if (activeConnection != null) {
    107                 activeConnection.setConnectTimeout(1);
    108                 activeConnection.setReadTimeout(1);
    109                 activeConnection.disconnect();
    110         }
    111     }
     116                cancel = true;
     117                if (activeConnection != null) {
     118                        activeConnection.setConnectTimeout(1);
     119                        activeConnection.setReadTimeout(1);
     120                        activeConnection.disconnect();
     121                }
     122        }
    112123}
  • src/org/openstreetmap/josm/io/OsmServerReader.java

    r97 r99  
    1111import org.openstreetmap.josm.Main;
    1212import org.openstreetmap.josm.data.osm.DataSet;
    13 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer.GpsPoint;
     13import org.openstreetmap.josm.gui.layer.RawGpsLayer.GpsPoint;
    1414import org.xml.sax.SAXException;
    1515
  • src/org/openstreetmap/josm/io/RawCsvReader.java

    r93 r99  
    1212import org.openstreetmap.josm.Main;
    1313import org.openstreetmap.josm.data.coor.LatLon;
    14 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer.GpsPoint;
     14import org.openstreetmap.josm.gui.layer.RawGpsLayer.GpsPoint;
    1515
    1616/**
     
    2828                this.in = new BufferedReader(in);
    2929        }
    30        
     30
    3131        public Collection<GpsPoint> parse() throws JDOMException, IOException {
    3232                Collection<GpsPoint> data = new LinkedList<GpsPoint>();
     
    3636                if (formatStr == null)
    3737                        throw new JDOMException("Could not detect data format string.");
    38                
     38
    3939                // get delimiter
    4040                String delim = ",";
     
    4545                        }
    4646                }
    47                
     47
    4848                // convert format string
    4949                ArrayList<String> format = new ArrayList<String>();
    50                 for (StringTokenizer st = new StringTokenizer(formatStr, delim); st.hasMoreTokens();)
    51                         format.add(st.nextToken());
     50                for (StringTokenizer st = new StringTokenizer(formatStr, delim); st.hasMoreTokens();) {
     51                        String token = st.nextToken();
     52                        if (!token.equals("lat") && !token.equals("lon") && !token.equals("time"))
     53                                token = "ignore";
     54                        format.add(token);
     55                }
    5256
    5357                // test for completness
     
    5761                        throw new JDOMException("Format string is incomplete. Need at least 'lat' and 'lon' specification");
    5862                }
    59                
     63
    6064                int lineNo = 0;
    6165                try {
  • src/org/openstreetmap/josm/io/RawGpsReader.java

    r78 r99  
    1111import org.jdom.input.SAXBuilder;
    1212import org.openstreetmap.josm.data.coor.LatLon;
    13 import org.openstreetmap.josm.gui.layer.RawGpsDataLayer.GpsPoint;
     13import org.openstreetmap.josm.gui.layer.RawGpsLayer.GpsPoint;
    1414
    1515/**
Note: See TracChangeset for help on using the changeset viewer.