Changeset 137 in josm for src


Ignore:
Timestamp:
2006-09-08T20:38:05+02:00 (18 years ago)
Author:
imi
Message:
  • updated Romanian translation (thanks Ovidiu)
  • added feature to specify "draw-lines-between-points" for a specific layer (thanks Rob)
  • added feature to remove segments from a way when deleting a point (thanks Dean)
  • added feature to sort geoimages and raw gps points after time (thanks Jon)
Location:
src/org/openstreetmap/josm
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/actions/DownloadIncompleteAction.java

    r113 r137  
    4444
    4545                private DownloadTask(Collection<OsmPrimitive> toDownload) {
    46                         super(trn("Downloading {0} segments", "Downloading {0} segment", toDownload.size(), toDownload.size()));
     46                        super(trn("Downloading {0} segment", "Downloading {0} segments", toDownload.size(), toDownload.size()));
    4747                        reader = new ObjectListDownloader(toDownload);
    4848                        reader.setProgressInformation(currentAction, progress);
  • src/org/openstreetmap/josm/actions/mapmode/AddNodeAction.java

    r104 r137  
    133133                }
    134134                Main.main.editLayer().add(c);
     135                Main.ds.setSelected(n);
    135136                Main.map.mapView.repaint();
    136137        }
  • src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java

    r113 r137  
    1111import java.util.Collections;
    1212import java.util.HashSet;
     13import java.util.LinkedList;
    1314import java.util.Map.Entry;
    1415
     
    134135         * If deleting a node which is part of exactly two segments, and both segments
    135136         * have no conflicting keys, join them and remove the node.
     137         * If the two segments are part of the same way, remove the deleted segment
     138         * from the way.
    136139         *
    137140         * @param selection The objects to delete.
     
    181184                        seg2 = s;
    182185                }
    183                 for (Way w : Main.ds.ways)
    184                         if (!w.deleted && (w.segments.contains(seg1) || w.segments.contains(seg2)))
    185                                 return tr("Used in a way.");
    186186                if (seg1.from == seg2.from || seg1.to == seg2.to)
    187187                        return tr("Wrong direction of segments.");
     
    189189                        if (seg2.keySet().contains(e.getKey()) && !seg2.get(e.getKey()).equals(e.getValue()))
    190190                                return tr("Conflicting keys");
     191                ArrayList<Way> ways = new ArrayList<Way>(2);
     192                for (Way w : Main.ds.ways) {
     193                        if (w.deleted)
     194                                continue;
     195                        if ((w.segments.contains(seg1) && !w.segments.contains(seg2)) || (w.segments.contains(seg2) && !w.segments.contains(seg1)))
     196                                return tr("Segments are part of different ways.");
     197                        if (w.segments.contains(seg1) && w.segments.contains(seg2))
     198                                ways.add(w);
     199                }
    191200                Segment s = new Segment(seg1);
    192201                s.to = seg2.to;
     
    195204                else if (seg2.keys != null)
    196205                        s.keys.putAll(seg2.keys);
    197                 Command[] cmds = new Command[]{
    198                         new ChangeCommand(seg1, s),
    199                         new DeleteCommand(Arrays.asList(new OsmPrimitive[]{n, seg2}))};
    200                 Main.main.editLayer().add(new SequenceCommand(tr("Delete Node"), Arrays.asList(cmds)));
     206                Collection<Command> cmds = new LinkedList<Command>();
     207                for (Way w : ways) {
     208                        Way copy = new Way(w);
     209                        copy.segments.remove(seg2);
     210                        cmds.add(new ChangeCommand(w, copy));
     211                }
     212                cmds.add(new ChangeCommand(seg1, s));
     213                cmds.add(new DeleteCommand(Arrays.asList(new OsmPrimitive[]{n, seg2})));
     214                Main.main.editLayer().add(new SequenceCommand(tr("Delete Node"), cmds));
    201215                return null;
    202216    }
  • src/org/openstreetmap/josm/data/Preferences.java

    r118 r137  
    4747        }
    4848
     49        synchronized final public boolean hasKey(final String key) {
     50                return properties.containsKey(key);
     51        }
    4952        synchronized final public String get(final String key) {
    5053                if (!properties.containsKey(key))
  • src/org/openstreetmap/josm/gui/layer/GeoImageLayer.java

    r129 r137  
    2424import java.util.ArrayList;
    2525import java.util.Collection;
     26import java.util.Collections;
    2627import java.util.Date;
    2728import java.util.LinkedList;
     
    6768public class GeoImageLayer extends Layer {
    6869
    69         private static final class ImageEntry {
     70        private static final class ImageEntry implements Comparable<ImageEntry> {
    7071                File image;
    7172                Date time;
     
    7374                EastNorth pos;
    7475                Icon icon;
     76                public int compareTo(ImageEntry image) {
     77                        return time.compareTo(image.time);
     78                }               
    7579        }
    7680
     
    8993                        LinkedList<TimedPoint> gps = new LinkedList<TimedPoint>();
    9094
    91                         // check the gps layer for time loops (and process it on the way)
    92                         Date last = null;
     95                        // Extract dates and locations from GPS input
    9396                        for (Collection<GpsPoint> c : gpsLayer.data) {
    9497                                for (GpsPoint p : c) {
     
    102105                    }
    103106                                        gps.add(new TimedPoint(d, p.eastNorth));
    104                                         if (last != null && last.after(d))
    105                                                 throw new IOException(tr("Time loop in gps data."));
    106                                         last = d;
    107107                                }
    108108                        }
     
    168168        }
    169169
    170         private static final class TimedPoint {
     170        private static final class TimedPoint implements Comparable<TimedPoint> {
    171171                Date time;
    172172                EastNorth pos;
     
    175175                        this.pos = pos;
    176176                }
     177                public int compareTo(TimedPoint point) {
     178                        return time.compareTo(point.time);
     179                }
    177180        }
    178181
     
    185188        private GeoImageLayer(final ArrayList<ImageEntry> data, LinkedList<TimedPoint> gps) {
    186189                super(tr("Geotagged Images"));
     190                Collections.sort(data);
     191                Collections.sort(gps);                                 
    187192                this.data = data;
    188193                this.gps = gps;
  • src/org/openstreetmap/josm/gui/layer/RawGpsLayer.java

    r115 r137  
    1515
    1616import javax.swing.AbstractAction;
     17import javax.swing.Box;
     18import javax.swing.ButtonGroup;
    1719import javax.swing.Icon;
    1820import javax.swing.JColorChooser;
     
    2022import javax.swing.JMenuItem;
    2123import javax.swing.JOptionPane;
     24import javax.swing.JRadioButton;
    2225import javax.swing.JSeparator;
    2326import javax.swing.filechooser.FileFilter;
     
    115118                boolean force = Main.pref.getBoolean("draw.rawgps.lines.force");
    116119                boolean lines = Main.pref.getBoolean("draw.rawgps.lines");
     120                String linesKey = "draw.rawgps.lines.layer "+name;
     121                if (Main.pref.hasKey(linesKey))
     122                        lines = Main.pref.getBoolean(linesKey);
    117123                boolean large = Main.pref.getBoolean("draw.rawgps.large");
    118124                for (Collection<GpsPoint> c : data) {
     
    167173
    168174        @Override public Component[] getMenuEntries() {
     175                JMenuItem line = new JMenuItem(tr("Customize line drawing"), ImageProvider.get("mapmode/addsegment"));
     176                line.addActionListener(new ActionListener(){
     177                        public void actionPerformed(ActionEvent e) {
     178                                JRadioButton[] r = new JRadioButton[3];
     179                                r[0] = new JRadioButton(tr("Use global settings."));
     180                                r[1] = new JRadioButton(tr("Draw lines between points for this layer."));
     181                                r[2] = new JRadioButton(tr("Do not draw lines between points for this layer."));
     182                                ButtonGroup group = new ButtonGroup();
     183                                Box panel = Box.createVerticalBox();
     184                                for (JRadioButton b : r) {
     185                                        group.add(b);
     186                                        panel.add(b);
     187                                }
     188                                String propName = "draw.rawgps.lines.layer "+name;
     189                                if (Main.pref.hasKey(propName))
     190                                        group.setSelected(r[Main.pref.getBoolean(propName) ? 1:2].getModel(), true);
     191                                else
     192                                        group.setSelected(r[0].getModel(), true);
     193                                int answer = JOptionPane.showConfirmDialog(Main.parent, panel, tr("Select line drawing options"), JOptionPane.OK_CANCEL_OPTION);
     194                                if (answer == JOptionPane.CANCEL_OPTION)
     195                                        return;
     196                                if (group.getSelection() == r[0].getModel())
     197                                        Main.pref.put(propName, null);
     198                                else
     199                                        Main.pref.put(propName, group.getSelection() == r[1].getModel());
     200                                Main.map.repaint();
     201                        }
     202                });
     203
    169204                JMenuItem color = new JMenuItem(tr("Customize Color"), ImageProvider.get("colorchooser"));
    170205                color.addActionListener(new ActionListener(){
     
    228263                                new JMenuItem(new GpxExportAction(this)),
    229264                                color,
     265                                line,
    230266                                tagimage,
    231267                                new JMenuItem(new ConvertToDataLayerAction()),
Note: See TracChangeset for help on using the changeset viewer.