Changeset 6572 in josm


Ignore:
Timestamp:
2013-12-31T01:38:06+01:00 (6 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
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/defaultpresets.xml

    r6570 r6572  
    2323link: link to the relating map features website
    2424  href: the URL
     25
     26preset_link: a link to an other preset
     27  preset_name: the exact name of the preset to link to
    2528
    2629label: simple static text label
     
    38733876            <key key="amenity" value="kindergarten" />
    38743877            <text key="name" text="Name" />
     3878            <preset_link preset_name="Contact (common schema)" />
    38753879        </item>
    38763880        <item name="School" icon="presets/school.png" type="node,closedway,relation">
     
    38893893            <key key="amenity" value="school" />
    38903894            <text key="name" text="Name" />
     3895            <preset_link preset_name="Contact (common schema)" />
    38913896        </item>
    38923897        <item name="University" icon="styles/standard/education/university.png" type="node,closedway,relation">
     
    39043909            <key key="amenity" value="university" />
    39053910            <text key="name" text="Name" />
     3911            <preset_link preset_name="Contact (common schema)" />
    39063912        </item>
    39073913        <item name="College" icon="styles/standard/education/college.png" type="node,closedway,relation">
     
    39163922            <key key="amenity" value="college" />
    39173923            <text key="name" text="Name" />
     3924            <preset_link preset_name="Contact (common schema)" />
    39183925        </item>
    39193926         <item name="Driving School" icon="styles/standard/education/driving_school.png" type="node,closedway">
     
    39243931            <reference ref="name_operator" />
    39253932            <combo key="license_classes" text="License Classes" values="A;A1;B;BE;C,A;A1;B;B1;C;C1;D;D1;BE;CE;C1E;DE;D1E" />
     3933             <preset_link preset_name="Contact (common schema)" />
    39263934        </item>
    39273935    </group> <!-- Education -->
  • trunk/data/tagging-preset.xsd

    r6558 r6572  
    105105                        <element name="space" type="tns:space" />
    106106                        <element name="link" type="tns:link" />
     107                        <element name="preset_link" type="tns:preset_link" />
    107108                        <element name="text" type="tns:text" />
    108109                        <element name="combo" type="tns:combo" />
     
    129130                <attribute name="name" use="prohibited" />
    130131                <anyAttribute processContents="skip" />
     132        </complexType>
     133
     134        <complexType name="preset_link">
     135                <attribute name="preset_name" type="string" use="required" />
     136                <attribute name="name" use="prohibited" />
    131137        </complexType>
    132138
  • 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.