Changeset 178 in josm for src


Ignore:
Timestamp:
2006-12-29T16:57:07+01:00 (18 years ago)
Author:
imi
Message:
  • fixed display of tooltip shortcuts
  • added icon=... to annotation presets
  • added support for putting annotation presets in the toolbar
Location:
src/org/openstreetmap/josm
Files:
1 added
24 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/Main.java

    r172 r178  
    4343import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    4444import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
     45import org.openstreetmap.josm.gui.preferences.AnnotationPresetPreference;
    4546import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
    4647import org.openstreetmap.josm.plugins.PluginException;
     
    175176                contentPane.add(toolbar.control, BorderLayout.NORTH);
    176177
    177         contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "Help");
    178         contentPane.getActionMap().put("Help", menu.help);
    179 
    180         toolbar.refreshToolbarControl();
    181 
    182         toolbar.control.updateUI();
    183         contentPane.updateUI();
     178                contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "Help");
     179                contentPane.getActionMap().put("Help", menu.help);
     180
     181                AnnotationPresetPreference.initialize();
     182
     183                toolbar.refreshToolbarControl();
     184
     185                toolbar.control.updateUI();
     186                contentPane.updateUI();
    184187        }
    185188
     
    189192         */
    190193        public void loadPlugins() {
    191             if (Main.pref.hasKey("plugins")) {
     194                if (Main.pref.hasKey("plugins")) {
    192195                        for (String pluginName : Main.pref.get("plugins").split(",")) {
    193196                                try {
     
    206209                        }
    207210                }
    208     }
     211        }
    209212
    210213        /**
     
    307310                        bounds = !args.containsKey("no-fullscreen") ? new Rectangle(0,0,screenDimension.width,screenDimension.height) : new Rectangle(1000,740);
    308311
    309                 pleaseWaitDlg = new PleaseWaitDialog();
     312                        pleaseWaitDlg = new PleaseWaitDialog();
    310313        }
    311314
     
    323326
    324327        public static boolean breakBecauseUnsavedChanges() {
    325             if (map != null) {
    326                 boolean modified = false;
    327                 boolean uploadedModified = false;
    328                 for (final Layer l : map.mapView.getAllLayers()) {
    329                         if (l instanceof OsmDataLayer && ((OsmDataLayer)l).isModified()) {
    330                                 modified = true;
    331                                 uploadedModified = ((OsmDataLayer)l).uploadedModified;
    332                                 break;
    333                         }
    334                 }
    335                 if (modified) {
    336                         final String msg = uploadedModified ? "\n"+tr("Hint: Some changes came from uploading new data to the server.") : "";
    337                         final int answer = JOptionPane.showConfirmDialog(
    338                                         parent, tr("There are unsaved changes. Discard the changes and continue?")+msg,
    339                                         tr("Unsaved Changes"), JOptionPane.YES_NO_OPTION);
    340                         if (answer != JOptionPane.YES_OPTION)
    341                                 return true;
    342                 }
    343             }
    344             return false;
    345     }
     328                if (map != null) {
     329                        boolean modified = false;
     330                        boolean uploadedModified = false;
     331                        for (final Layer l : map.mapView.getAllLayers()) {
     332                                if (l instanceof OsmDataLayer && ((OsmDataLayer)l).isModified()) {
     333                                        modified = true;
     334                                        uploadedModified = ((OsmDataLayer)l).uploadedModified;
     335                                        break;
     336                                }
     337                        }
     338                        if (modified) {
     339                                final String msg = uploadedModified ? "\n"+tr("Hint: Some changes came from uploading new data to the server.") : "";
     340                                final int answer = JOptionPane.showConfirmDialog(
     341                                                parent, tr("There are unsaved changes. Discard the changes and continue?")+msg,
     342                                                tr("Unsaved Changes"), JOptionPane.YES_NO_OPTION);
     343                                if (answer != JOptionPane.YES_OPTION)
     344                                        return true;
     345                        }
     346                }
     347                return false;
     348        }
    346349
    347350        private static void downloadFromParamString(final boolean rawGps, String s) {
  • src/org/openstreetmap/josm/actions/AboutAction.java

    r162 r178  
    5555
    5656        public AboutAction() {
    57                 super(tr("About"), "about",tr("Display the about screen."), KeyEvent.VK_F1, KeyEvent.SHIFT_DOWN_MASK);
     57                super(tr("About"), "about",tr("Display the about screen."), KeyEvent.VK_F1, KeyEvent.SHIFT_DOWN_MASK, true);
    5858        }
    5959
  • src/org/openstreetmap/josm/actions/AlignInCircleAction.java

    r167 r178  
    2727
    2828        public AlignInCircleAction() {
    29                 super(tr("Align Nodes in Circle"), "aligncircle", tr("Move the selected nodes into a circle."), KeyEvent.VK_O, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK);
     29                super(tr("Align Nodes in Circle"), "aligncircle", tr("Move the selected nodes into a circle."), KeyEvent.VK_O, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK, true);
    3030        }
    3131
  • src/org/openstreetmap/josm/actions/AlignInLineAction.java

    r167 r178  
    2727
    2828        public AlignInLineAction() {
    29                 super(tr("Align Nodes in Line"), "alignline", tr("Move the selected nodes onto a line."), KeyEvent.VK_L, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK);
     29                super(tr("Align Nodes in Line"), "alignline", tr("Move the selected nodes onto a line."), KeyEvent.VK_L, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK, true);
    3030        }
    3131
  • src/org/openstreetmap/josm/actions/DiskAccessAction.java

    r138 r178  
    3939
    4040        public DiskAccessAction(String name, String iconName, String tooltip, int shortCut, int modifiers) {
    41                 super(name, iconName, tooltip, shortCut, modifiers);
     41                super(name, iconName, tooltip, shortCut, modifiers, true);
    4242        }
    4343       
  • src/org/openstreetmap/josm/actions/DownloadAction.java

    r172 r178  
    8585
    8686        public DownloadAction() {
    87                 super(tr("Download from OSM"), "download", tr("Download map data from the OSM server."), KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
     87                super(tr("Download from OSM"), "download", tr("Download map data from the OSM server."), KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK, true);
    8888                // TODO remove when bug in Java6 is fixed
    8989                for (JTextField f : latlon)
  • src/org/openstreetmap/josm/actions/DownloadIncompleteAction.java

    r175 r178  
    6060
    6161        public DownloadIncompleteAction() {
    62                 super(tr("Download incomplete objects"), "downloadincomplete", tr("Download all (selected) incomplete ways from the OSM server."), KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
     62                super(tr("Download incomplete objects"), "downloadincomplete", tr("Download all (selected) incomplete ways from the OSM server."), KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK, true);
    6363        }
    6464
  • src/org/openstreetmap/josm/actions/ExitAction.java

    r104 r178  
    1616         */
    1717        public ExitAction() {
    18                 super(tr("Exit"), "exit", tr("Exit the application."), KeyEvent.VK_X);
     18                super(tr("Exit"), "exit", tr("Exit the application."), KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK, true);
    1919        }
    2020       
  • src/org/openstreetmap/josm/actions/JosmAction.java

    r172 r178  
    1616abstract public class JosmAction extends AbstractAction {
    1717
    18         /**
    19          * Construct the action as menu action entry.
    20          *
    21          * @param name          Name of the action (entry name in menu)
    22          * @param iconName      Name of the icon (without extension)
    23          * @param tooltip       Short tooltip description
    24          * @param mnemonic      Mnemonic in the menu
    25          */
    26         public JosmAction(String name, String iconName, String tooltip, int mnemonic) {
    27                 super(name, ImageProvider.get(iconName));
    28                 putValue(SHORT_DESCRIPTION, tooltip);
    29                 putValue(MNEMONIC_KEY, mnemonic);
    30                 putValue("toolbar", iconName);
    31                 Main.toolbar.register(this);
    32         }
    33 
    34 
    35         public JosmAction(String name, String iconName, String tooltip, int shortCut, int modifier) {
     18        public JosmAction(String name, String iconName, String tooltip, int shortCut, int modifier, boolean register) {
    3619                super(name, ImageProvider.get(iconName));
    3720                setHelpId();
     
    4023        Main.contentPane.getActionMap().put(name, this);
    4124        putValue("toolbar", iconName);
    42         Main.toolbar.register(this);
     25        if (register)
     26                Main.toolbar.register(this);
    4327        }
    4428
  • src/org/openstreetmap/josm/actions/NewAction.java

    r172 r178  
    1212
    1313        public NewAction() {
    14                 super(tr("New"), "new", tr("Create a new map."), KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK);
     14                super(tr("New"), "new", tr("Create a new map."), KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK, true);
    1515        }
    1616
  • src/org/openstreetmap/josm/actions/PreferencesAction.java

    r176 r178  
    2626         */
    2727        public PreferencesAction() {
    28                 super(tr("Preferences"), "preference", tr("Open a preferences page for global settings."), KeyEvent.VK_F12, 0);
     28                super(tr("Preferences"), "preference", tr("Open a preferences page for global settings."), KeyEvent.VK_F12, 0, true);
    2929        }
    3030
  • src/org/openstreetmap/josm/actions/RedoAction.java

    r113 r178  
    2121         */
    2222        public RedoAction() {
    23                 super(tr("Redo"), "redo", tr("Redo the last undone action."), KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
     23                super(tr("Redo"), "redo", tr("Redo the last undone action."), KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK, true);
    2424                setEnabled(false);
    2525        }
  • src/org/openstreetmap/josm/actions/ReverseSegmentAction.java

    r128 r178  
    2424
    2525    public ReverseSegmentAction() {
    26         super(tr("Reverse Segments"), "segmentflip", tr("Revert the direction of all selected Segments."), KeyEvent.VK_R, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK);
     26        super(tr("Reverse Segments"), "segmentflip", tr("Revert the direction of all selected Segments."), KeyEvent.VK_R, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK, true);
    2727    }
    2828
  • src/org/openstreetmap/josm/actions/UndoAction.java

    r113 r178  
    2121         */
    2222        public UndoAction() {
    23                 super(tr("Undo"), "undo", tr("Undo the last action."), KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK);
     23                super(tr("Undo"), "undo", tr("Undo the last action."), KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK, true);
    2424                setEnabled(false);
    2525        }
  • src/org/openstreetmap/josm/actions/UploadAction.java

    r153 r178  
    3434public class UploadAction extends JosmAction {
    3535        public UploadAction() {
    36                 super(tr("Upload to OSM"), "upload", tr("Upload all changes to the OSM server."), KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
     36                super(tr("Upload to OSM"), "upload", tr("Upload all changes to the OSM server."), KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK, true);
    3737        }
    3838
  • src/org/openstreetmap/josm/actions/mapmode/MapMode.java

    r113 r178  
    2828         */
    2929        public MapMode(String name, String iconName, String tooltip, int keystroke, MapFrame mapFrame, Cursor cursor) {
    30                 super(name, "mapmode/"+iconName, tooltip, keystroke, 0);
     30                super(name, "mapmode/"+iconName, tooltip, keystroke, 0, false);
    3131//              this.cursor = cursor;
    3232                putValue("active", false);
  • src/org/openstreetmap/josm/gui/MapView.java

    r169 r178  
    323323                recalculateCenterScale();
    324324
    325                 if (!oldCenter.equals(center))
     325                if ((oldCenter == null && center != null) || !oldCenter.equals(center))
    326326                        firePropertyChange("center", oldCenter, center);
    327327                if (oldAutoScale != autoScale)
  • src/org/openstreetmap/josm/gui/annotation/AnnotationCellRenderer.java

    r177 r178  
    1 /**
    2  *
    3  */
    41package org.openstreetmap.josm.gui.annotation;
    52
    63import java.awt.Component;
     4import java.awt.Image;
    75
     6import javax.swing.Action;
    87import javax.swing.DefaultListCellRenderer;
     8import javax.swing.ImageIcon;
    99import javax.swing.JComponent;
    1010import javax.swing.JLabel;
     
    1515final public class AnnotationCellRenderer extends DefaultListCellRenderer {
    1616        @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    17         AnnotationPreset a = (AnnotationPreset)value;
    18         if (a == null || a.name == null)
    19                 return super.getListCellRendererComponent(list, "", index, false, false);
    20         JComponent c = (JComponent)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
    21         JLabel l = new JLabel((a).name);
    22         l.setForeground(c.getForeground());
    23         l.setBackground(c.getBackground());
    24         l.setFont(c.getFont());
    25         l.setBorder(c.getBorder());
    26         if (a.types == null)
    27                 l.setIcon(ImageProvider.get("data", "empty"));
    28         else if (a.types.size() != 1)
    29                 l.setIcon(ImageProvider.get("data", "object"));
    30         else
    31                 l.setIcon(ImageProvider.get("data", a.types.iterator().next().getSimpleName().toLowerCase()));
    32         l.setOpaque(true);
    33         return l;
    34     }
     17                AnnotationPreset a = ((ForwardActionListener)value).preset;
     18                String name = a == null ? null : (String)a.getValue(Action.NAME);
     19                if (name == null)
     20                        return super.getListCellRendererComponent(list, "", index, false, false);
     21                JComponent c = (JComponent)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
     22                JLabel l = new JLabel(name);
     23                l.setForeground(c.getForeground());
     24                l.setBackground(c.getBackground());
     25                l.setFont(c.getFont());
     26                l.setBorder(c.getBorder());
     27                ImageIcon icon = (ImageIcon)a.getValue(Action.SMALL_ICON);
     28                if (icon != null)
     29                        l.setIcon(new ImageIcon(icon.getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH)));
     30                else {
     31                        if (a.types == null)
     32                                l.setIcon(ImageProvider.get("data", "empty"));
     33                        else if (a.types.size() != 1)
     34                                l.setIcon(ImageProvider.get("data", "object"));
     35                        else
     36                                l.setIcon(ImageProvider.get("data", a.types.iterator().next().getSimpleName().toLowerCase()));
     37                }
     38                l.setOpaque(true);
     39                return l;
     40        }
    3541}
  • src/org/openstreetmap/josm/gui/annotation/AnnotationPreset.java

    r167 r178  
    55
    66import java.awt.GridBagLayout;
     7import java.awt.Image;
     8import java.awt.event.ActionEvent;
    79import java.io.BufferedReader;
     10import java.io.FileInputStream;
    811import java.io.IOException;
    912import java.io.InputStream;
    1013import java.io.InputStreamReader;
    1114import java.io.UnsupportedEncodingException;
     15import java.net.URL;
    1216import java.util.Collection;
    1317import java.util.LinkedList;
    1418import java.util.List;
    15 
     19import java.util.StringTokenizer;
     20
     21import javax.swing.AbstractAction;
     22import javax.swing.ImageIcon;
    1623import javax.swing.JCheckBox;
    1724import javax.swing.JComboBox;
    1825import javax.swing.JLabel;
     26import javax.swing.JOptionPane;
    1927import javax.swing.JPanel;
    2028import javax.swing.JTextField;
    2129
     30import org.openstreetmap.josm.Main;
    2231import org.openstreetmap.josm.command.ChangePropertyCommand;
    2332import org.openstreetmap.josm.command.Command;
     
    3847 * It is also able to construct dialogs out of preset definitions.
    3948 */
    40 public class AnnotationPreset {
     49public class AnnotationPreset extends AbstractAction {
    4150
    4251        private static interface Item {
     
    146155                String currentName;
    147156                Collection<Class<?>> currentTypes;
     157                ImageIcon currentIcon;
    148158                private static int unknownCounter = 1;
    149159
     
    170180                                        }
    171181                                }
     182                                currentIcon = (a.getValue("icon") == null) ? null : new ImageIcon(a.getValue("icon"));
    172183                        } else if (qname.equals("text"))
    173184                                current.add(new Text(a.getValue("key"), a.getValue("text"), a.getValue("default"), parseBoolean(a.getValue("delete_if_empty"))));
     
    201212
    202213                private boolean parseBoolean(String s) {
    203                 return s == null || s.equals("0") || s.startsWith("off") || s.startsWith("false") || s.startsWith("no");
    204         }
     214                        return s == null || s.equals("0") || s.startsWith("off") || s.startsWith("false") || s.startsWith("no");
     215                }
    205216
    206217                @Override public void endElement(String ns, String lname, String qname) {
    207218                        if (qname.equals("item")) {
    208                                 data.add(new AnnotationPreset(current, currentName, currentTypes));
     219                                data.add(new AnnotationPreset(current, currentName, currentIcon, currentTypes));
    209220                                current = null;
    210221                                currentName = null;
    211222                                currentTypes = null;
     223                                currentIcon = null;
    212224                        }
    213225                }
     
    215227
    216228        private List<Item> data;
    217         public String name;
    218229        public Collection<Class<?>> types;
    219 
    220         public AnnotationPreset(List<Item> data, String name, Collection<Class<?>> currentTypes) {
     230       
     231        public AnnotationPreset(List<Item> data, String name, ImageIcon icon, Collection<Class<?>> currentTypes) {
     232                super(name, icon == null ? null : new ImageIcon(icon.getImage().getScaledInstance(24, 24, Image.SCALE_SMOOTH)));
     233                putValue("toolbar", "annotation_"+name);
    221234                this.data = data;
    222                 this.name = name;
    223235                this.types = currentTypes;
     236                Main.toolbar.register(this);
    224237        }
    225238
     
    244257        }
    245258
     259        public static Collection<AnnotationPreset> readFromPreferences() {
     260                LinkedList<AnnotationPreset> allPresets = new LinkedList<AnnotationPreset>();
     261                String allAnnotations = Main.pref.get("annotation.sources");
     262                StringTokenizer st = new StringTokenizer(allAnnotations, ";");
     263                while (st.hasMoreTokens()) {
     264                        InputStream in = null;
     265                        String source = st.nextToken();
     266                        try {
     267                                if (source.startsWith("http") || source.startsWith("ftp") || source.startsWith("file"))
     268                                        in = new URL(source).openStream();
     269                                else if (source.startsWith("resource://"))
     270                                        in = Main.class.getResourceAsStream(source.substring("resource:/".length()));
     271                                else
     272                                        in = new FileInputStream(source);
     273                                allPresets.addAll(AnnotationPreset.readAll(in));
     274                                in.close();
     275                        } catch (IOException e) {
     276                                e.printStackTrace();
     277                                JOptionPane.showMessageDialog(Main.parent, tr("Could not read annotation preset source: {0}",source));
     278                        } catch (SAXException e) {
     279                                e.printStackTrace();
     280                                JOptionPane.showMessageDialog(Main.parent, tr("Error parsing {0}: ", source)+e.getMessage());
     281                        }
     282                }
     283                return allPresets;
     284        }
     285
     286       
    246287        public JPanel createPanel() {
    247288                if (data == null)
     
    253294        }
    254295
    255         public Command createCommand(Collection<OsmPrimitive> participants) {
     296        public void actionPerformed(ActionEvent e) {
     297                Collection<OsmPrimitive> sel = Main.ds.getSelected();
     298                JPanel p = createPanel();
     299                if (p == null)
     300                        return;
     301                int answer;
     302                if (p.getComponentCount() == 0)
     303                        answer = JOptionPane.OK_OPTION;
     304                else
     305                        answer = JOptionPane.showConfirmDialog(Main.parent, p, trn("Change {0} object", "Change {0} objects", sel.size(), sel.size()), JOptionPane.OK_CANCEL_OPTION);
     306                if (answer == JOptionPane.OK_OPTION) {
     307                        Command cmd = createCommand(Main.ds.getSelected());
     308                        if (cmd != null)
     309                                Main.main.editLayer().add(cmd);
     310                }
     311                Main.ds.setSelected(Main.ds.getSelected()); // force update
     312        }
     313
     314        private Command createCommand(Collection<OsmPrimitive> participants) {
    256315                Collection<OsmPrimitive> sel = new LinkedList<OsmPrimitive>();
    257316                for (OsmPrimitive osm : participants)
  • src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java

    r155 r178  
    1414import java.awt.event.MouseAdapter;
    1515import java.awt.event.MouseEvent;
    16 import java.io.FileInputStream;
    17 import java.io.IOException;
    18 import java.io.InputStream;
    19 import java.net.URL;
    2016import java.util.Collection;
    2117import java.util.HashMap;
    2218import java.util.Map;
    23 import java.util.StringTokenizer;
    2419import java.util.TreeMap;
    2520import java.util.TreeSet;
     
    4338import org.openstreetmap.josm.Main;
    4439import org.openstreetmap.josm.command.ChangePropertyCommand;
    45 import org.openstreetmap.josm.command.Command;
    4640import org.openstreetmap.josm.data.SelectionChangedListener;
    4741import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    4943import org.openstreetmap.josm.gui.annotation.AnnotationCellRenderer;
    5044import org.openstreetmap.josm.gui.annotation.AnnotationPreset;
     45import org.openstreetmap.josm.gui.annotation.ForwardActionListener;
     46import org.openstreetmap.josm.gui.preferences.AnnotationPresetPreference;
    5147import org.openstreetmap.josm.tools.ImageProvider;
    52 import org.xml.sax.SAXException;
    5348
    5449/**
     
    214209         */
    215210        private final JTable propertyTable = new JTable(data);
    216         private JComboBox annotationPresets = new JComboBox();
     211        public JComboBox annotationPresets = new JComboBox();
     212
    217213
    218214        /**
     
    222218                super(tr("Properties"), "propertiesdialog", tr("Property for selected objects."), KeyEvent.VK_P, 150);
    223219
    224                 Vector<AnnotationPreset> allPresets = new Vector<AnnotationPreset>();
    225                 String allAnnotations = Main.pref.get("annotation.sources");
    226                 StringTokenizer st = new StringTokenizer(allAnnotations, ";");
    227                 while (st.hasMoreTokens()) {
    228                         InputStream in = null;
    229                         String source = st.nextToken();
    230                         try {
    231                                 if (source.startsWith("http") || source.startsWith("ftp") || source.startsWith("file"))
    232                                         in = new URL(source).openStream();
    233                                 else if (source.startsWith("resource://"))
    234                                         in = Main.class.getResourceAsStream(source.substring("resource:/".length()));
    235                                 else
    236                                         in = new FileInputStream(source);
    237                                 allPresets.addAll(AnnotationPreset.readAll(in));
    238                                 in.close();
    239                         } catch (IOException e) {
    240                                 e.printStackTrace();
    241                                 JOptionPane.showMessageDialog(Main.parent, tr("Could not read annotation preset source: {0}",source));
    242                         } catch (SAXException e) {
    243                                 e.printStackTrace();
    244                                 JOptionPane.showMessageDialog(Main.parent, tr("Error parsing {0}: ", source)+e.getMessage());
    245                         }
    246                 }
    247                 if (allPresets.size() > 0) {
    248                         allPresets.add(0, new AnnotationPreset());
     220                if (AnnotationPresetPreference.annotationPresets.size() > 0) {
     221                        Vector<ActionListener> allPresets = new Vector<ActionListener>();
     222                        for (final AnnotationPreset p : AnnotationPresetPreference.annotationPresets)
     223                                allPresets.add(new ForwardActionListener(this, p));
     224
     225                        allPresets.add(0, new ForwardActionListener(this, new AnnotationPreset()));
    249226                        annotationPresets.setModel(new DefaultComboBoxModel(allPresets));
    250227                        add(annotationPresets, BorderLayout.NORTH);
     
    252229                annotationPresets.addActionListener(new ActionListener(){
    253230                        public void actionPerformed(ActionEvent e) {
    254                                 Collection<OsmPrimitive> sel = Main.ds.getSelected();
    255                                 AnnotationPreset preset = (AnnotationPreset)annotationPresets.getSelectedItem();
    256                                 JPanel p = preset.createPanel();
    257                                 if (p == null)
    258                                         return;
    259                                 int answer;
    260                                 if (p.getComponentCount() == 0)
    261                                         answer = JOptionPane.OK_OPTION;
    262                                 else
    263                                         answer = JOptionPane.showConfirmDialog(Main.parent, p, trn("Change {0} object", "Change {0} objects", sel.size(), sel.size()), JOptionPane.OK_CANCEL_OPTION);
    264                                 if (answer == JOptionPane.OK_OPTION) {
    265                                         Command cmd = preset.createCommand(sel);
    266                                         if (cmd != null) {
    267                                                 Main.main.editLayer().add(cmd);
    268                                                 selectionChanged(sel); // update whole table
    269                                         }
    270                                 }
    271                                 annotationPresets.setSelectedIndex(0);
     231                                AnnotationPreset preset = ((ForwardActionListener)annotationPresets.getSelectedItem()).preset;
     232                                preset.actionPerformed(e);
    272233                        }
    273234                });
  • src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java

    r155 r178  
    2424
    2525        public final class ToggleDialogAction extends JosmAction {
    26             public final String prefname;
    27             public AbstractButton button;
     26                public final String prefname;
     27                public AbstractButton button;
    2828
    29             private ToggleDialogAction(String name, String iconName, String tooltip, int shortCut, int modifier, String prefname) {
    30                     super(name, iconName, tooltip, shortCut, modifier);
    31                     this.prefname = prefname;
    32             }
     29                private ToggleDialogAction(String name, String iconName, String tooltip, int shortCut, int modifier, String prefname) {
     30                        super(name, iconName, tooltip, shortCut, modifier, false);
     31                        this.prefname = prefname;
     32                }
    3333
    34             public void actionPerformed(ActionEvent e) {
    35                 if (e != null && !(e.getSource() instanceof AbstractButton))
    36                         button.setSelected(!button.isSelected());
    37                 setVisible(button.isSelected());
    38                 Main.pref.put(prefname+".visible", button.isSelected());
    39             }
    40     }
     34                public void actionPerformed(ActionEvent e) {
     35                        if (e != null && !(e.getSource() instanceof AbstractButton))
     36                                button.setSelected(!button.isSelected());
     37                        setVisible(button.isSelected());
     38                        Main.pref.put(prefname+".visible", button.isSelected());
     39                }
     40        }
    4141
    4242        /**
     
    6161                String help = getClass().getName();
    6262                help = help.substring(help.lastIndexOf('.')+1, help.length()-6);
    63             return "Dialog/"+help;
    64     }
     63                return "Dialog/"+help;
     64        }
    6565}
  • src/org/openstreetmap/josm/gui/preferences/AnnotationPresetPreference.java

    r168 r178  
    66import java.awt.event.ActionEvent;
    77import java.awt.event.ActionListener;
     8import java.util.Collection;
    89import java.util.StringTokenizer;
    910
     
    1819
    1920import org.openstreetmap.josm.Main;
     21import org.openstreetmap.josm.gui.annotation.AnnotationPreset;
    2022import org.openstreetmap.josm.tools.GBC;
    2123
    2224public class AnnotationPresetPreference implements PreferenceSetting {
    2325
    24         private JList annotationSources = new JList(new DefaultListModel());
     26        public static Collection<AnnotationPreset> annotationPresets;
     27        private JList annotationSources;
    2528
    2629        public void addGui(final PreferenceDialog gui) {
     30                annotationSources = new JList(new DefaultListModel());
    2731                String annos = Main.pref.get("annotation.sources");
    2832                StringTokenizer st = new StringTokenizer(annos, ";");
     
    9296                        Main.pref.put("annotation.sources", null);
    9397        }
     98
     99        /**
     100         * Initialize the annotation presets (load and may display error)
     101         */
     102        public static void initialize() {
     103                annotationPresets = AnnotationPreset.readFromPreferences();
     104        }
    94105}
  • src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java

    r172 r178  
    8282        private Move moveAction = new Move();
    8383
     84        /**
     85         * Key: Registered name (property "toolbar" of action).
     86         * Value: The action to execute.
     87         */
    8488        private Map<String, Action> actions = new HashMap<String, Action>();
    8589
  • src/org/openstreetmap/josm/tools/ShortCutLabel.java

    r113 r178  
    99        public static String name(int shortCut, int modifiers) {
    1010                String s = "";
    11                 if ((modifiers & KeyEvent.CTRL_MASK) != 0)
     11                if ((modifiers & KeyEvent.CTRL_MASK) != 0 || (modifiers & KeyEvent.CTRL_DOWN_MASK) != 0)
    1212                        s += tr("Ctrl-");
    13                 if ((modifiers & KeyEvent.ALT_MASK) != 0)
     13                if ((modifiers & KeyEvent.ALT_MASK) != 0 || (modifiers & KeyEvent.ALT_DOWN_MASK) != 0)
    1414                        s += tr("Alt-");
    15                 if ((modifiers & KeyEvent.ALT_GRAPH_MASK) != 0)
     15                if ((modifiers & KeyEvent.ALT_GRAPH_MASK) != 0 || (modifiers & KeyEvent.ALT_GRAPH_DOWN_MASK) != 0)
    1616                        s += tr("AltGr-");
    17                 if ((modifiers & KeyEvent.SHIFT_MASK) != 0)
     17                if ((modifiers & KeyEvent.SHIFT_MASK) != 0 || (modifiers & KeyEvent.SHIFT_DOWN_MASK) != 0)
    1818                        s += tr("Shift-");
    1919                if (shortCut >= KeyEvent.VK_F1 && shortCut <= KeyEvent.VK_F12)
Note: See TracChangeset for help on using the changeset viewer.