Changeset 39 in josm


Ignore:
Timestamp:
2006-01-03T21:32:28+01:00 (14 years ago)
Author:
imi
Message:
  • Select objects via overview (middle mouse button)
  • bugfix in deleted objects showing in overview
  • Error message when saving unknown extension
  • bugfix when reading osm files with new elements referenced
Location:
src/org/openstreetmap/josm
Files:
8 edited

Legend:

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

    r32 r39  
    4848                try {
    4949                        FileWriter fileWriter = new FileWriter(file);
    50                         if (file.getName().endsWith(".gpx"))
     50                        String fn = file.getName();
     51                        if (fn.endsWith(".gpx"))
    5152                                new GpxWriter(fileWriter).output();
    52                         else
     53                        else if (fn.endsWith(".xml") || fn.endsWith(".osm"))
    5354                                new OsmWriter(fileWriter, Main.main.ds).output();
     55                        else if (fn.endsWith(".txt") || fn.endsWith(".csv")) {
     56                                JOptionPane.showMessageDialog(Main.main, "CSV output not supported yet.");
     57                                return;
     58                        } else {
     59                                JOptionPane.showMessageDialog(Main.main, "Unknown file extension.");
     60                                return;
     61                        }
     62                               
    5463                        fileWriter.close();
    5564                } catch (IOException e) {
  • src/org/openstreetmap/josm/actions/mapmode/AddLineSegmentAction.java

    r30 r39  
    7979                        return;
    8080
    81                 OsmPrimitive clicked = mv.getNearest(e.getPoint(), false);
     81                OsmPrimitive clicked = mv.getNearest(e.getPoint(), true);
    8282                if (clicked == null || !(clicked instanceof Node))
    8383                        return;
  • src/org/openstreetmap/josm/data/projection/Mercator.java

    r36 r39  
    99 * from wikipedia.
    1010 *
    11  * The center of the mercator projection is always the 0°
     11 * The center of the mercator projection is always the 0 grad
    1212 * coordinate.
    1313 *
  • src/org/openstreetmap/josm/gui/MapStatus.java

    r36 r39  
    22
    33import java.awt.AWTEvent;
     4import java.awt.Cursor;
    45import java.awt.Font;
    56import java.awt.GridBagLayout;
     
    89import java.awt.event.AWTEventListener;
    910import java.awt.event.InputEvent;
     11import java.awt.event.MouseAdapter;
    1012import java.awt.event.MouseEvent;
    1113import java.awt.event.MouseMotionListener;
     
    2325import javax.swing.PopupFactory;
    2426
     27import org.openstreetmap.josm.Main;
    2528import org.openstreetmap.josm.data.GeoPoint;
    2629import org.openstreetmap.josm.data.osm.Key;
     
    120123                                       
    121124                                        JPanel c = new JPanel(new GridBagLayout());
    122                                         for (OsmPrimitive osm : osms) {
     125                                        for (final OsmPrimitive osm : osms) {
    123126                                                SelectionComponentVisitor visitor = new SelectionComponentVisitor();
    124127                                                osm.visit(visitor);
    125                                                 StringBuilder text = new StringBuilder("<html>");
     128                                                final StringBuilder text = new StringBuilder();
    126129                                                if (osm.id == 0 || osm.modified || osm.modifiedProperties)
    127130                                                        visitor.name = "<i><b>"+visitor.name+"*</b></i>";
     
    132135                                                        for (Entry<Key, String> e : osm.keys.entrySet())
    133136                                                                text.append("<br>"+e.getKey().name+"="+e.getValue());
    134                                                 JLabel l = new JLabel(text.toString()+"</html>", visitor.icon, JLabel.HORIZONTAL);
     137                                                final JLabel l = new JLabel("<html>"+text.toString()+"</html>", visitor.icon, JLabel.HORIZONTAL);
    135138                                                l.setFont(l.getFont().deriveFont(Font.PLAIN));
    136139                                                l.setVerticalTextPosition(JLabel.TOP);
     140                                                l.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
     141                                                l.addMouseListener(new MouseAdapter(){
     142                                                        @Override
     143                                                        public void mouseEntered(MouseEvent e) {
     144                                                                l.setText("<html><u color='blue'>"+text.toString()+"</u></html>");
     145                                                        }
     146                                                        @Override
     147                                                        public void mouseExited(MouseEvent e) {
     148                                                                l.setText("<html>"+text.toString()+"</html>");
     149                                                        }
     150                                                        @Override
     151                                                        public void mouseClicked(MouseEvent e) {
     152                                                                Main.main.ds.clearSelection();
     153                                                                osm.setSelected(true);
     154                                                                mv.repaint();
     155                                                        }
     156                                                });
    137157                                                c.add(l, GBC.eol());
    138158                                        }
  • src/org/openstreetmap/josm/gui/MapView.java

    r36 r39  
    234234         * If no area is found, return <code>null</code>.
    235235         *
    236          * @param p                             The point on screen.
    237          * @param wholeTrack    Whether the whole track or only the line segment
    238          *                                              should be returned.
     236         * @param p                              The point on screen.
     237         * @param lsInsteadTrack Whether the line segment (true) or only the whole
     238         *                                               track should be returned.
    239239         * @return      The primitive, that is nearest to the point p.
    240240         */
    241         public OsmPrimitive getNearest(Point p, boolean wholeTrack) {
     241        public OsmPrimitive getNearest(Point p, boolean lsInsteadTrack) {
    242242                double minDistanceSq = Double.MAX_VALUE;
    243243                OsmPrimitive minPrimitive = null;
     
    245245                // nodes
    246246                for (Node n : Main.main.ds.nodes) {
     247                        if (n.isDeleted())
     248                                continue;
    247249                        Point sp = getScreenPoint(n.coor);
    248250                        double dist = p.distanceSq(sp);
     
    257259                // for whole tracks, try the tracks first
    258260                minDistanceSq = Double.MAX_VALUE;
    259                 if (wholeTrack) {
     261                if (!lsInsteadTrack) {
    260262                        for (Track t : Main.main.ds.tracks) {
     263                                if (t.isDeleted())
     264                                        continue;
    261265                                for (LineSegment ls : t.segments) {
     266                                        if (ls.isDeleted())
     267                                                continue;
    262268                                        Point A = getScreenPoint(ls.start.coor);
    263269                                        Point B = getScreenPoint(ls.end.coor);
     
    279285                // line segments
    280286                for (LineSegment ls : Main.main.ds.lineSegments) {
     287                        if (ls.isDeleted())
     288                                continue;
    281289                        Point A = getScreenPoint(ls.start.coor);
    282290                        Point B = getScreenPoint(ls.end.coor);
     
    313321         */
    314322        public Collection<OsmPrimitive> getAllNearest(Point p) {
    315                 OsmPrimitive osm = getNearest(p, false);
     323                OsmPrimitive osm = getNearest(p, true);
    316324                if (osm == null)
    317325                        return null;
     
    321329                        Node node = (Node)osm;
    322330                        for (Node n : Main.main.ds.nodes)
    323                                 if (n.coor.equalsLatLon(node.coor))
     331                                if (!n.isDeleted() && n.coor.equalsLatLon(node.coor))
    324332                                        c.add(n);
    325333                        for (LineSegment ls : Main.main.ds.lineSegments)
    326334                                // line segments never match nodes, so they are skipped by contains
    327                                 if (c.contains(ls.start) || c.contains(ls.end))
     335                                if (!ls.isDeleted() && (c.contains(ls.start) || c.contains(ls.end)))
    328336                                        c.add(ls);
    329337                }
     
    331339                        LineSegment line = (LineSegment)osm;
    332340                        for (LineSegment ls : Main.main.ds.lineSegments)
    333                                 if (ls.equalPlace(line))
     341                                if (!ls.isDeleted() && ls.equalPlace(line))
    334342                                        c.add(ls);
    335343                }
    336344                if (osm instanceof Node || osm instanceof LineSegment) {
    337345                        for (Track t : Main.main.ds.tracks) {
     346                                if (t.isDeleted())
     347                                        continue;
    338348                                for (LineSegment ls : t.segments) {
    339                                         if (c.contains(ls)) {
     349                                        if (!ls.isDeleted() && c.contains(ls)) {
    340350                                                c.add(t);
    341351                                                break;
  • src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java

    r33 r39  
    66import java.awt.event.ActionListener;
    77import java.awt.event.KeyEvent;
     8import java.awt.event.MouseAdapter;
     9import java.awt.event.MouseEvent;
    810import java.util.Collection;
    911
     
    4850                displaylist.setCellRenderer(new OsmPrimitivRenderer());
    4951                displaylist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
     52                displaylist.addMouseListener(new MouseAdapter(){
     53                        @Override
     54                        public void mouseClicked(MouseEvent e) {
     55                                if (e.getClickCount() < 2)
     56                                        return;
     57                                updateMap();
     58                        }
     59                });
    5060
    5161                add(new JScrollPane(displaylist), BorderLayout.CENTER);
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r35 r39  
    8181                                osm.visit(visitor);
    8282                for (OsmPrimitive osm : data.nodes)
     83                        if (!osm.isDeleted())
     84                                osm.visit(visitor);
     85                for (OsmPrimitive osm : data.getSelected())
    8386                        if (!osm.isDeleted())
    8487                                osm.visit(visitor);
  • src/org/openstreetmap/josm/io/OsmReader.java

    r35 r39  
    118118                        }
    119119                }
     120               
     121                // clear all negative ids (new to this file)
     122                for (OsmPrimitive osm : data.allPrimitives())
     123                        if (osm.id < 0)
     124                                osm.id = 0;
    120125
    121126                return data;
     
    178183                if (suid != null)
    179184                        data.id = Long.parseLong(suid);
    180                 if (data.id < 0)
    181                         data.id = 0;
    182185               
    183186                String propStr = e.getAttributeValue("tags");
Note: See TracChangeset for help on using the changeset viewer.