Changeset 614 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2008-04-19T17:55:29+02:00 (17 years ago)
Author:
framm
Message:
  • support for sub-menus in tagging presets (simply name them "Foo/Bar" instead of "Foo")
  • support for re-using the last used tags in a preset (set use_last_as_default=true in the preset definition)
  • presets for address tagging according to the "Karlsruhe Schema"
Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java

    r582 r614  
    99import java.awt.event.ActionListener;
    1010import java.util.Collection;
     11import java.util.HashMap;
    1112import java.util.StringTokenizer;
    1213
     
    1920import javax.swing.JLabel;
    2021import javax.swing.JList;
     22import javax.swing.JMenu;
    2123import javax.swing.JMenuItem;
    2224import javax.swing.JOptionPane;
     
    125127                else
    126128                {
     129                        HashMap<String,JMenu> submenus = new HashMap<String,JMenu>();
    127130                        for (final TaggingPreset p : taggingPresets) {
    128131                                if (p.getValue(Action.NAME).equals(" ")) {
    129132                                        Main.main.menu.presetsMenu.add(new JSeparator());
    130133                                } else {
    131                                         Main.main.menu.presetsMenu.add(new JMenuItem(p));
     134                                        String name = (String) p.getValue(Action.NAME);
     135                                        String[] sp = name.split("/");
     136                                        if (sp.length <= 1) {
     137                                                Main.main.menu.presetsMenu.add(new JMenuItem(p));
     138                                        } else {
     139                                                p.setName(sp[1]);
     140                                                JMenu submenu = submenus.get(sp[0]);
     141                                                if (submenu == null) {
     142                                                        submenu = new JMenu(sp[0]);
     143                                                        submenus.put(sp[0], submenu);
     144                                                        Main.main.menu.presetsMenu.add(submenu);
     145                                                }
     146                                                submenu.add(new JMenuItem(p));
     147                                        }
    132148                                }
    133149                        }               
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java

    r593 r614  
    1616import java.net.URL;
    1717import java.util.Collection;
     18import java.util.HashMap;
    1819import java.util.HashSet;
    1920import java.util.LinkedHashMap;
     
    4445import org.xml.sax.SAXException;
    4546
    46 
    4747/**
    4848 * This class read encapsulate one tagging preset. A class method can
     
    5353 */
    5454public class TaggingPreset extends AbstractAction {
    55 
     55       
    5656        public static abstract class Item {
    5757                public boolean focus = false;
     
    7171                returnValue.values = new HashSet<String>();
    7272                for (OsmPrimitive s : sel) {
    73                         returnValue.values.add(s.get(key));
     73                        String v = s.get(key);
     74                        /* if (v != null) */ returnValue.values.add(v);
    7475                }
    7576                return returnValue;
     
    9495       
    9596        public static class Text extends Item {
     97               
    9698                public String key;
    9799                public String text;
    98100                public String default_;
    99101                public String originalValue;
     102                public boolean use_last_as_default = false;
    100103                public boolean delete_if_empty = false;
    101104
     
    106109                        // find out if our key is already used in the selection.
    107110                        Usage usage = determineTextUsage(sel, key);
    108                        
    109                         if (usage.values.size() == 1) {
     111                        if (usage.values.size() == 1 && usage.values.toArray()[0] == null) {
     112                                value = new JTextField();
     113                                if (use_last_as_default && lastValue.containsKey(key)) {
     114                                        ((JTextField)value).setText(lastValue.get(key));
     115                                } else {
     116                                        ((JTextField)value).setText(default_);
     117                                }
     118                        } else if (usage.values.size() == 1) {
    110119                                // all objects use the same value
    111120                                value = new JTextField();
     
    130139                                ((JTextField)value).getText();
    131140
     141                        if (use_last_as_default) lastValue.put(key, v);
    132142                        if (v.equals(originalValue) || (originalValue == null && v.length() == 0)) return;
    133143
     
    144154                public String text;
    145155                public boolean default_ = false; // not used!
     156                public boolean use_last_as_default = false;
    146157
    147158                private QuadStateCheckBox check;
     
    205216                public boolean delete_if_empty = false;
    206217                public boolean editable = true;
     218                public boolean use_last_as_default = false;
    207219
    208220                private JComboBox combo;
     
    285297        public Collection<Class<?>> types;
    286298        private List<Item> data = new LinkedList<Item>();
     299        private static HashMap<String,String> lastValue = new HashMap<String,String>();
    287300
    288301        /**
Note: See TracChangeset for help on using the changeset viewer.