Changeset 167 in josm


Ignore:
Timestamp:
2006-11-24T15:52:34+01:00 (13 years ago)
Author:
imi
Message:
  • removed external tools (superseeded by plugins)
  • added align-in-line mode
  • added delete_if_empty-attribute to annotation presets
  • fixed exception when help is not available
Files:
2 added
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • data/empty.xml

    r146 r167  
    11<?xml version='1.0' encoding='UTF-8'?>
    22<osm version='0.3' generator='JOSM'>
    3   <node id='-1' lat='19.054463960754692' lon='-66.94382022471912' />
    4   <node id='2' lat='43.00883564541926' lon='-6.269662921348315' />
    5   <node id='-2' lat='-34.84314824807727' lon='-13.146067415730338' />
    6   <node id='1' lat='67.99839775928415' lon='-59.66292134831462' />
    7   <node id='-3' lat='-24.68228648077048' lon='-40.651685393258425' />
    8   <segment id='-4' from='1' to='2' />
    9   <segment id='-5' from='-2' to='-3' />
    10   <segment id='-6' from='2' to='-1' />
    11   <way id='-7'>
    12     <seg id='-4' />
    13     <seg id='-6' />
    14   </way>
    15   <way id='-8'>
    16     <seg id='-5' />
    17   </way>
    183</osm>
  • src/org/openstreetmap/josm/actions/AlignInCircleAction.java

    r146 r167  
    6868
    6969                Main.main.editLayer().add(new SequenceCommand(tr("Align Nodes in Circle"), cmds));
    70                 Main.ds.setSelected(avn);
    7170                Main.map.repaint();
    7271        }
  • src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java

    r144 r167  
    66
    77import org.openstreetmap.josm.Main;
     8import org.openstreetmap.josm.data.osm.DataSet;
    89import org.openstreetmap.josm.data.osm.Node;
     10import org.openstreetmap.josm.data.osm.OsmPrimitive;
    911import org.openstreetmap.josm.data.osm.Segment;
    1012import org.openstreetmap.josm.data.osm.Way;
     
    3436
    3537        protected static final double PHI = Math.toRadians(20);
     38
     39        public void visitAll(DataSet data) {
     40                for (final OsmPrimitive osm : data.segments)
     41                        if (!osm.deleted)
     42                                osm.visit(this);
     43                for (final OsmPrimitive osm : data.ways)
     44                        if (!osm.deleted)
     45                                osm.visit(this);
     46                for (final OsmPrimitive osm : data.nodes)
     47                        if (!osm.deleted)
     48                                osm.visit(this);
     49                for (final OsmPrimitive osm : data.getSelected())
     50                        if (!osm.deleted)
     51                                osm.visit(this);
     52        }
    3653
    3754        /**
  • src/org/openstreetmap/josm/gui/MainMenu.java

    r160 r167  
    1010import org.openstreetmap.josm.actions.AboutAction;
    1111import org.openstreetmap.josm.actions.AlignInCircleAction;
     12import org.openstreetmap.josm.actions.AlignInLineAction;
    1213import org.openstreetmap.josm.actions.DownloadAction;
    1314import org.openstreetmap.josm.actions.DownloadIncompleteAction;
    1415import org.openstreetmap.josm.actions.ExitAction;
    15 import org.openstreetmap.josm.actions.ExternalToolsAction;
    1616import org.openstreetmap.josm.actions.GpxExportAction;
    1717import org.openstreetmap.josm.actions.HelpAction;
     
    4141        public final Action reverseSegment = new ReverseSegmentAction();
    4242        public final Action alignInCircle = new AlignInCircleAction();
     43        public final Action alignInLine = new AlignInLineAction();
    4344        public final Action upload = new UploadAction();
    4445        public final Action save = new SaveAction();
     
    5253        public final JMenu layerMenu = new JMenu(tr("Layer"));
    5354        public final JMenu editMenu = new JMenu(tr("Edit"));
    54         public final JMenu externalMenu = ExternalToolsAction.buildMenu();
    5555        public final JMenu helpMenu = new JMenu(tr("Help"));
    5656        public final JMenu fileMenu = new JMenu(tr("Files"));
     
    7676                editMenu.add(reverseSegment);
    7777                editMenu.add(alignInCircle);
     78                editMenu.add(alignInLine);
    7879                editMenu.addSeparator();
    7980                editMenu.add(preferences);
     
    9091                layerMenu.setVisible(false);
    9192
     93                add(Box.createHorizontalGlue());
    9294
    93                 if (externalMenu != null)
    94                         add(externalMenu);
    95 
    96                 add(Box.createHorizontalGlue());
    97                
    9895                helpMenu.setMnemonic('H');
    9996                helpMenu.add(help);
  • src/org/openstreetmap/josm/gui/MapFrame.java

    r155 r167  
    5858         */
    5959        public MapStatus statusLine;
    60        
     60
    6161        public ConflictDialog conflictDialog;
    6262        private JPanel toggleDialogs = new JPanel();
    63        
     63
     64        public final ButtonGroup toolGroup = new ButtonGroup();
     65
    6466        /**
    6567         * Construct a map with a given DataSet. The set cannot be replaced after
     
    8789                toolBarActions.add(new IconToggleButton(new DeleteAction(this)));
    8890
    89                 // all map modes in one button group
    90                 ButtonGroup toolGroup = new ButtonGroup();
    9191                for (Component c : toolBarActions.getComponents())
    9292                        toolGroup.add((AbstractButton)c);
     
    112112                                if (!autoScaleButton.groupbutton)
    113113                                        autoScaleButton.setSelected(true);
    114             }
     114                        }
    115115                });
    116116
     
    130130
    131131        public Action getDefaultButtonAction() {
    132             return ((AbstractButton)toolBarActions.getComponent(0)).getAction();
    133     }
     132                return ((AbstractButton)toolBarActions.getComponent(0)).getAction();
     133        }
    134134
    135135        /**
     
    147147
    148148        private void addIconToggle(JPanel toggleDialogs, ToggleDialog dlg) {
    149         IconToggleButton button = new IconToggleButton(dlg.action);
    150         dlg.action.button = button;
     149                IconToggleButton button = new IconToggleButton(dlg.action);
     150                dlg.action.button = button;
    151151                toolBarActions.add(button);
    152152                toggleDialogs.add(dlg);
    153153        }
    154154
    155        
     155
    156156        /**
    157157         * Fires an property changed event "visible".
  • src/org/openstreetmap/josm/gui/annotation/AnnotationPreset.java

    r129 r167  
    4646
    4747        public static class Text implements Item {
    48                 String key;
    49                 String label;
    50                 JTextField value = new JTextField();
     48                private String key;
     49                private String label;
     50                private JTextField value = new JTextField();
     51                private boolean deleteIfEmpty;
    5152
    5253                public void addToPanel(JPanel p) {
     
    5455                        p.add(value, GBC.eol().fill(GBC.HORIZONTAL));
    5556                }
    56                 public Text(String key, String label, String value) {
     57                public Text(String key, String label, String value, boolean deleteIfEmpty) {
    5758                        this.key = key;
    5859                        this.label = label;
    5960                        this.value.setText(value == null ? "" : value);
    60                 }
    61                 public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
    62                         cmds.add(new ChangePropertyCommand(sel, key, value.getText()));
     61                        this.deleteIfEmpty = deleteIfEmpty;
     62                }
     63                public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
     64                        String v = value.getText();
     65                        if (deleteIfEmpty && v.length() == 0)
     66                                v = null;
     67                        cmds.add(new ChangePropertyCommand(sel, key, v));
    6368                }
    6469        }
    6570
    6671        public static class Check implements Item {
    67                 String key;
    68                 JCheckBox check = new JCheckBox();
     72                private String key;
     73                private JCheckBox check = new JCheckBox();
    6974
    7075                public void addToPanel(JPanel p) {
     
    8287
    8388        public static class Combo implements Item {
    84                 String key;
    85                 String label;
    86                 JComboBox combo;
     89                private String key;
     90                private String label;
     91                private JComboBox combo;
    8792                private final String[] values;
     93                private boolean deleteIfEmpty;
    8894
    8995                public void addToPanel(JPanel p) {
     
    9197                        p.add(combo, GBC.eol().fill(GBC.HORIZONTAL));
    9298                }
    93                 public Combo(String key, String label, String def, String[] values, String[] displayedValues, boolean editable) {
     99                public Combo(String key, String label, String def, String[] values, String[] displayedValues, boolean editable, boolean deleteIfEmpty) {
    94100                        this.key = key;
    95101                        this.label = label;
    96102                        this.values = values;
     103                        this.deleteIfEmpty = deleteIfEmpty;
    97104                        combo = new JComboBox(displayedValues);
    98105                        combo.setEditable(editable);
     
    102109                        String v = combo.getSelectedIndex() == -1 ? null : values[combo.getSelectedIndex()];
    103110                        String str = combo.isEditable()?combo.getEditor().getItem().toString() : v;
     111                        if (deleteIfEmpty && str != null && str.length() == 0)
     112                                str = null;
    104113                        cmds.add(new ChangePropertyCommand(sel, key, str));
    105114                }
     
    107116
    108117        public static class Label implements Item {
    109                 String text;
     118                private String text;
    110119
    111120                public void addToPanel(JPanel p) {
     
    119128
    120129        public static class Key implements Item {
    121                 String key;
    122                 String value;
     130                private String key;
     131                private String value;
    123132
    124133                public void addToPanel(JPanel p) {}
     
    162171                                }
    163172                        } else if (qname.equals("text"))
    164                                 current.add(new Text(a.getValue("key"), a.getValue("text"), a.getValue("default")));
     173                                current.add(new Text(a.getValue("key"), a.getValue("text"), a.getValue("default"), parseBoolean(a.getValue("delete_if_empty"))));
    165174                        else if (qname.equals("check")) {
    166175                                String s = a.getValue("default");
    167                                 boolean clear = s == null || s.equals("0") || s.startsWith("off") || s.startsWith("false") || s.startsWith("no");
     176                                boolean clear = parseBoolean(s);
    168177                                current.add(new Check(a.getValue("key"), a.getValue("text"), !clear));
    169178                        } else if (qname.equals("label"))
     
    173182                                String s = a.getValue("readonly");
    174183                                String dvstr = a.getValue("display_values");
    175                                 boolean editable = s == null  || s.equals("0") || s.startsWith("off") || s.startsWith("false") || s.startsWith("no");
     184                                boolean editable = parseBoolean(s);
    176185                                if (dvstr != null) {
    177186                                        if (editable && s != null)
     
    184193                                                        displayValues.length+" "+trn("element", "elements", displayValues.length),
    185194                                                        values.length+" "+trn("element", "elements", values.length)));
    186                                 current.add(new Combo(a.getValue("key"), a.getValue("text"), a.getValue("default"), values, displayValues, editable));
     195                                current.add(new Combo(a.getValue("key"), a.getValue("text"), a.getValue("default"), values, displayValues, editable, parseBoolean(a.getValue("delete_if_empty"))));
    187196                        } else if (qname.equals("key"))
    188197                                current.add(new Key(a.getValue("key"), a.getValue("value")));
     
    190199                                throw new SAXException(tr("Unknown annotation object {0} at line {1} column {2}", qname, getLineNumber(), getColumnNumber()));
    191200                }
     201
     202                private boolean parseBoolean(String s) {
     203                return s == null || s.equals("0") || s.startsWith("off") || s.startsWith("false") || s.startsWith("no");
     204        }
    192205
    193206                @Override public void endElement(String ns, String lname, String qname) {
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r155 r167  
    142142                mapPainter.setGraphics(g);
    143143                mapPainter.setNavigatableComponent(mv);
    144                 for (final OsmPrimitive osm : data.segments)
    145                         if (!osm.deleted)
    146                                 osm.visit(mapPainter);
    147                 for (final OsmPrimitive osm : data.ways)
    148                         if (!osm.deleted)
    149                                 osm.visit(mapPainter);
    150                 for (final OsmPrimitive osm : data.nodes)
    151                         if (!osm.deleted)
    152                                 osm.visit(mapPainter);
    153                 for (final OsmPrimitive osm : data.getSelected())
    154                         if (!osm.deleted)
    155                                 osm.visit(mapPainter);
     144                mapPainter.visitAll(data);
    156145                Main.map.conflictDialog.paintConflicts(g, mv);
    157146        }
  • src/org/openstreetmap/josm/io/OsmWriter.java

    r143 r167  
    6262                        Visitor writer = new OsmWriter(out, osmConform);
    6363                        for (Node n : ds.nodes)
    64                                 writer.visit(n);
     64                                if (shouldWrite(n))
     65                                        writer.visit(n);
    6566                        for (Segment ls : ds.segments)
    66                                 writer.visit(ls);
     67                                if (shouldWrite(ls))
     68                                        writer.visit(ls);
    6769                        for (Way w : ds.ways)
    68                                 writer.visit(w);
     70                                if (shouldWrite(w))
     71                                        writer.visit(w);
     72        }
     73
     74                private boolean shouldWrite(OsmPrimitive osm) {
     75                return osm.id != 0 || !osm.deleted;
    6976        }
    7077        }
  • src/org/openstreetmap/josm/plugins/PluginInformation.java

    r159 r167  
    66import java.net.URL;
    77import java.net.URLClassLoader;
     8import java.util.ArrayList;
     9import java.util.List;
    810import java.util.Map;
    911import java.util.TreeMap;
     
    2527        public final boolean early;
    2628        public final String author;
     29        public final List<URL> libraries = new ArrayList<URL>();
    2730
    2831        public final Map<String, String> attr = new TreeMap<String, String>();
    2932
     33        /**
     34         * @param file the plugin jar file.
     35         */
    3036        public PluginInformation(File file) {
    3137                this.file = file;
     
    3945                        early = Boolean.parseBoolean(attr.getValue("Plugin-Early"));
    4046                        author = attr.getValue("Author");
     47                        libraries.add(new URL(getURLString(file.getAbsolutePath())));
     48                        String classPath = attr.getValue("Class-Path");
     49                        if (classPath != null) {
     50                                for (String s : classPath.split(classPath.contains(";") ? ";" : ":")) {
     51                                        if (!s.startsWith("/") && !s.startsWith("\\") && !s.matches("^.:"))
     52                                                s = file.getParent() + File.separator + s;
     53                                        libraries.add(new URL(getURLString(s)));
     54                                }
     55                        }
     56
    4157                        for (Object o : attr.keySet())
    4258                                this.attr.put(o.toString(), attr.getValue(o.toString()));
     
    6379        public Class<?> loadClass() {
    6480                try {
    65                         ClassLoader loader = URLClassLoader.newInstance(
    66                                         new URL[]{new URL(getURLString())},
    67                                         getClass().getClassLoader());
     81                        URL[] urls = new URL[libraries.size()];
     82                        urls = libraries.toArray(urls);
     83                        ClassLoader loader = URLClassLoader.newInstance(urls, getClass().getClassLoader());
    6884                        Class<?> realClass = Class.forName(className, true, loader);
    6985                        return realClass;
     
    7389        }
    7490
    75         private String getURLString() {
     91        private String getURLString(String fileName) {
    7692                if (System.getProperty("os.name").startsWith("Windows"))
    77                         return "file:/"+file.getAbsolutePath();
    78                 return "file://"+file.getAbsolutePath();
     93                        return "file:/"+fileName;
     94                return "file://"+fileName;
    7995        }
    8096}
  • src/org/openstreetmap/josm/tools/WikiReader.java

    r155 r167  
    44import java.io.IOException;
    55import java.io.InputStreamReader;
    6 import java.net.MalformedURLException;
    76import java.net.URL;
    87
     
    2726         * replace relative pathes etc..
    2827         *
    29          * @return Either the string of the content of the wiki page or <code>null</code>
    30          * if the page could not be read.
     28         * @return Either the string of the content of the wiki page.
     29         * @throws IOException Throws, if the page could not be loaded.
    3130         */
    32         public String read(String url) {
    33                 try {
    34                 BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream()));
    35                 if (url.startsWith(baseurl))
    36                         return readFromTrac(in, url);
    37                 return readNormal(in);
    38         } catch (MalformedURLException e) {
    39                 throw new RuntimeException(e);
    40         } catch (IOException e) {
    41                 return null;
    42         }
     31        public String read(String url) throws IOException {
     32        BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream()));
     33        if (url.startsWith(baseurl))
     34                return readFromTrac(in, url);
     35        return readNormal(in);
    4336        }
    4437
Note: See TracChangeset for help on using the changeset viewer.