Changeset 7413 in josm for trunk/src


Ignore:
Timestamp:
2014-08-16T03:49:41+02:00 (5 years ago)
Author:
Don-vip
Message:

fix #10055 - Display preset dialog on preset link even without dataset

Location:
trunk/src/org/openstreetmap/josm/gui/tagging
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java

    r7153 r7413  
    1313import java.util.ArrayList;
    1414import java.util.Collection;
     15import java.util.Collections;
    1516import java.util.EnumSet;
    1617import java.util.HashSet;
     
    3334import org.openstreetmap.josm.command.Command;
    3435import org.openstreetmap.josm.command.SequenceCommand;
    35 import org.openstreetmap.josm.data.osm.Node;
     36import org.openstreetmap.josm.data.osm.DataSet;
    3637import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3738import org.openstreetmap.josm.data.osm.Relation;
    3839import org.openstreetmap.josm.data.osm.RelationMember;
    3940import org.openstreetmap.josm.data.osm.Tag;
    40 import org.openstreetmap.josm.data.osm.Way;
    4141import org.openstreetmap.josm.gui.ExtendedDialog;
    4242import org.openstreetmap.josm.gui.MapView;
     
    4545import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
    4646import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Link;
     47import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.PresetLink;
    4748import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Role;
    4849import org.openstreetmap.josm.gui.tagging.TaggingPresetItems.Roles;
     
    207208            return null;
    208209        PresetPanel p = new PresetPanel();
    209         LinkedList<TaggingPresetItem> l = new LinkedList<>();
    210         LinkedList<TaggingPresetItem> presetLink = new LinkedList<>();
    211         if(types != null){
     210        List<Link> l = new LinkedList<>();
     211        List<PresetLink> presetLink = new LinkedList<>();
     212        if (types != null){
    212213            JPanel pp = new JPanel();
    213             for(TaggingPresetType t : types){
     214            for (TaggingPresetType t : types) {
    214215                JLabel la = new JLabel(ImageProvider.get(t.getIconName()));
    215216                la.setToolTipText(tr("Elements of type {0} are supported.", tr(t.getName())));
     
    224225        boolean presetInitiallyMatches = !selected.isEmpty() && Utils.forAll(selected, this);
    225226        JPanel items = new JPanel(new GridBagLayout());
    226         for (TaggingPresetItem i : data){
    227             if(i instanceof Link) {
    228                 l.add(i);
    229             } else if (i instanceof TaggingPresetItems.PresetLink) {
    230                 presetLink.add(i);
     227        for (TaggingPresetItem i : data) {
     228            if (i instanceof Link) {
     229                l.add((Link) i);
     230            } else if (i instanceof PresetLink) {
     231                presetLink.add((PresetLink) i);
    231232            } else {
    232                 if(i.addToPanel(items, selected, presetInitiallyMatches)) {
     233                if (i.addToPanel(items, selected, presetInitiallyMatches)) {
    233234                    p.hasElements = true;
    234235                }
     
    243244        if (!presetLink.isEmpty()) {
    244245            p.add(new JLabel(tr("Edit also …")), GBC.eol().insets(0, 8, 0, 0));
    245             for(TaggingPresetItem link : presetLink) {
     246            for (PresetLink link : presetLink) {
    246247                link.addToPanel(p, selected, presetInitiallyMatches);
    247248            }
     
    249250
    250251        // add Link
    251         for(TaggingPresetItem link : l) {
     252        for (Link link : l) {
    252253            link.addToPanel(p, selected, presetInitiallyMatches);
    253254        }
     
    261262
    262263    public boolean isShowable() {
    263         for(TaggingPresetItem i : data) {
    264             if(!(i instanceof TaggingPresetItems.Optional || i instanceof TaggingPresetItems.Space || i instanceof TaggingPresetItems.Key))
     264        for (TaggingPresetItem i : data) {
     265            if (!(i instanceof TaggingPresetItems.Optional || i instanceof TaggingPresetItems.Space || i instanceof TaggingPresetItems.Key))
    265266                return true;
    266267        }
     
    282283    @Override
    283284    public void actionPerformed(ActionEvent e) {
    284         if (Main.main == null) return;
    285         if (Main.main.getCurrentDataSet() == null) return;
    286 
    287         Collection<OsmPrimitive> sel = createSelection(Main.main.getCurrentDataSet().getSelected());
     285        if (Main.main == null) {
     286            return;
     287        }
     288        DataSet ds = Main.main.getCurrentDataSet();
     289        Collection<OsmPrimitive> participants = Collections.emptyList();
     290        if (Main.main != null && ds != null) {
     291            participants = ds.getSelected();
     292        }
     293
     294        // Display dialog even if no data layer (used by preset-tagging-tester plugin)
     295        Collection<OsmPrimitive> sel = createSelection(participants);
    288296        int answer = showDialog(sel, supportsRelation());
     297
     298        if (ds == null) {
     299            return;
     300        }
    289301
    290302        if (!sel.isEmpty() && answer == DIALOG_ANSWER_APPLY) {
     
    299311                r.put(t.getKey(), t.getValue());
    300312            }
    301             for (OsmPrimitive osm : Main.main.getCurrentDataSet().getSelected()) {
     313            for (OsmPrimitive osm : ds.getSelected()) {
    302314                String role = suggestRoleForOsmPrimitive(osm);
    303315                RelationMember rm = new RelationMember(role == null ? "" : role, osm);
     
    312324            });
    313325        }
    314         Main.main.getCurrentDataSet().setSelected(Main.main.getCurrentDataSet().getSelected()); // force update
    315 
     326        ds.setSelected(ds.getSelected()); // force update
    316327    }
    317328
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java

    r7412 r7413  
    1616import java.awt.event.MouseEvent;
    1717import java.util.ArrayList;
    18 import java.util.Arrays;
    1918import java.util.Collection;
    2019import java.util.Collections;
     
    343342        if (!Objects.equals(oldPreset, newPreset)) {
    344343            int[] indices = lsResult.getSelectedIndices();
    345             System.out.println(newPreset + " / "+Arrays.toString(indices));
    346344            for (ListSelectionListener listener : listSelectionListeners) {
    347345                listener.valueChanged(new ListSelectionEvent(lsResult, lsResult.getSelectedIndex(),
Note: See TracChangeset for help on using the changeset viewer.