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


Ignore:
Timestamp:
2013-12-31T01:38:06+01:00 (11 years ago)
Author:
simon04
Message:

see #7797 - extend presets by <preset_link preset_name="..." /> to add a link to another preset, exemplified in "Education" presets

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PresetListPanel.java

    r6403 r6572  
    4040     * the corresponding preset when clicked
    4141     */
    42     private static class PresetLabelML implements MouseListener {
     42    public static class PresetLabelML implements MouseListener {
    4343        final JLabel label;
    4444        final Font hover;
     
    4747        final PresetHandler presetHandler;
    4848
    49         PresetLabelML(JLabel lbl, TaggingPreset t, PresetHandler presetHandler) {
     49        public PresetLabelML(JLabel lbl, TaggingPreset t, PresetHandler presetHandler) {
    5050            super();
    5151            label = lbl;
     
    8282    }
    8383
     84    public static JLabel createLabelForPreset(TaggingPreset t) {
     85        JLabel lbl = new JLabel(t.getName() + " …");
     86        lbl.setIcon(t.getIcon());
     87        return lbl;
     88    }
     89
    8490    public void updatePresets(final Collection<TaggingPresetType> types, final Map<String, String> tags, PresetHandler presetHandler) {
    8591
     
    9197
    9298        for (TaggingPreset t : TaggingPreset.getMatchingPresets(types, tags, true)) {
    93             JLabel lbl = new JLabel(t.getName() + " …");
    94             lbl.setIcon(t.getIcon());
     99            final JLabel lbl = createLabelForPreset(t);
    95100            lbl.addMouseListener(new PresetLabelML(lbl, t, presetHandler));
    96101            add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java

    r6403 r6572  
    1111import java.awt.Insets;
    1212import java.awt.event.ActionEvent;
     13import java.awt.event.MouseEvent;
    1314import java.util.ArrayList;
    1415import java.util.Collection;
     
    4041import org.openstreetmap.josm.gui.ExtendedDialog;
    4142import org.openstreetmap.josm.gui.MapView;
     43import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel;
    4244import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
    4345import org.openstreetmap.josm.gui.layer.Layer;
     
    207209        PresetPanel p = new PresetPanel();
    208210        LinkedList<TaggingPresetItem> l = new LinkedList<TaggingPresetItem>();
     211        LinkedList<TaggingPresetItem> presetLink = new LinkedList<TaggingPresetItem>();
    209212        if(types != null){
    210213            JPanel pp = new JPanel();
     
    221224            if(i instanceof Link) {
    222225                l.add(i);
     226            } else if (i instanceof TaggingPresetItems.PresetLink) {
     227                presetLink.add(i);
    223228            } else {
    224229                if(i.addToPanel(items, selected)) {
     
    232237        }
    233238
     239        // add PresetLink
     240        if (!presetLink.isEmpty()) {
     241            p.add(new JLabel(tr("Edit also …")), GBC.eol().insets(0, 8, 0, 0));
     242        }
     243        for(TaggingPresetItem link : presetLink) {
     244            link.addToPanel(p, selected);
     245        }
     246
     247        // add Link
    234248        for(TaggingPresetItem link : l) {
    235249            link.addToPanel(p, selected);
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java

    r6442 r6572  
    1212import java.awt.event.ActionEvent;
    1313import java.awt.event.ActionListener;
     14import java.awt.event.MouseEvent;
    1415import java.io.File;
    1516import java.lang.reflect.Method;
     
    4849import org.openstreetmap.josm.data.osm.Tag;
    4950import org.openstreetmap.josm.data.preferences.BooleanProperty;
     51import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel;
     52import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
    5053import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
    5154import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionItemPriority;
     
    5760import org.openstreetmap.josm.tools.GBC;
    5861import org.openstreetmap.josm.tools.ImageProvider;
     62import org.openstreetmap.josm.tools.Predicate;
    5963import org.openstreetmap.josm.tools.Utils;
    6064import org.xml.sax.SAXException;
     
    375379            }
    376380            if (url != null) {
    377                 p.add(new UrlLabel(url, locale_text, 2), GBC.eol().anchor(GBC.WEST));
     381                p.add(new UrlLabel(url, locale_text, 2), GBC.eol().insets(0, 10, 0, 0));
    378382            }
    379383            return false;
     
    385389                    + (href != null ? "href=" + href + ", " : "")
    386390                    + (locale_href != null ? "locale_href=" + locale_href + ", " : "");
     391        }
     392    }
     393
     394    public static class PresetLink extends TaggingPresetItem {
     395
     396        public String preset_name = "";
     397
     398        @Override
     399        boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
     400            final String presetName = preset_name;
     401            final TaggingPreset t = Utils.filter(TaggingPresetPreference.taggingPresets, new Predicate<TaggingPreset>() {
     402                @Override
     403                public boolean evaluate(TaggingPreset object) {
     404                    return presetName.equals(object.name);
     405                }
     406            }).iterator().next();
     407            if (t == null) return false;
     408            JLabel lbl = PresetListPanel.createLabelForPreset(t);
     409            lbl.addMouseListener(new PresetListPanel.PresetLabelML(lbl, t, null) {
     410                @Override
     411                public void mouseClicked(MouseEvent arg0) {
     412                    t.actionPerformed(null);
     413                }
     414            });
     415            p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL));
     416            return false;
     417        }
     418
     419        @Override
     420        void addCommands(List<Tag> changedTags) {
    387421        }
    388422    }
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java

    r6562 r6572  
    7272        parser.map("text", TaggingPresetItems.Text.class);
    7373        parser.map("link", TaggingPresetItems.Link.class);
     74        parser.map("preset_link", TaggingPresetItems.PresetLink.class);
    7475        parser.mapOnStart("optional", TaggingPresetItems.Optional.class);
    7576        parser.mapOnStart("roles", TaggingPresetItems.Roles.class);
Note: See TracChangeset for help on using the changeset viewer.