- Timestamp:
- 2020-06-21T15:39:43+02:00 (5 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/tagging/presets
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
r16585 r16699 14 14 import java.util.ArrayList; 15 15 import java.util.Collection; 16 import java.util.Collections;17 16 import java.util.EnumSet; 18 17 import java.util.LinkedHashSet; … … 386 385 public void actionPerformed(ActionEvent e) { 387 386 DataSet ds = OsmDataManager.getInstance().getEditDataSet(); 388 Collection<OsmPrimitive> participants = Collections.emptyList();389 if (ds != null) {390 participants = ds.getSelected();391 }392 393 // Display dialog even if no data layer (used by preset-tagging-tester plugin)394 Collection<OsmPrimitive> sel = createSelection(participants);395 int answer = showDialog(sel, supportsRelation());396 397 387 if (ds == null) { 398 388 return; 399 389 } 390 showAndApply(ds.getSelected()); 391 } 392 393 /** 394 * {@linkplain #showDialog Show preset dialog}, apply changes 395 * @param primitives the primitives 396 */ 397 public void showAndApply(Collection<OsmPrimitive> primitives) { 398 // Display dialog even if no data layer (used by preset-tagging-tester plugin) 399 Collection<OsmPrimitive> sel = createSelection(primitives); 400 int answer = showDialog(sel, supportsRelation()); 400 401 401 402 if (!sel.isEmpty() && answer == DIALOG_ANSWER_APPLY) { … … 407 408 Relation calculated = null; 408 409 if (getChangedTags().stream().anyMatch(t -> "boundary".equals(t.get("type")) || "multipolygon".equals(t.get("type")))) { 409 Pair<Relation, Relation> res = CreateMultipolygonAction.createMultipolygonRelation(ds.getSelectedWays(), true); 410 Collection<Way> ways = Utils.filteredCollection(primitives, Way.class); 411 Pair<Relation, Relation> res = CreateMultipolygonAction.createMultipolygonRelation(ways, true); 410 412 if (res != null) { 411 413 calculated = res.b; … … 413 415 } 414 416 final Relation r = calculated != null ? calculated : new Relation(); 415 final Collection<RelationMember> members = new LinkedHashSet<>(); 416 members.addAll(r.getMembers()); 417 final Collection<RelationMember> members = new LinkedHashSet<>(r.getMembers()); 417 418 for (Tag t : getChangedTags()) { 418 419 r.put(t.getKey(), t.getValue()); 419 420 } 420 for (OsmPrimitive osm : ds.getSelected()) {421 for (OsmPrimitive osm : primitives) { 421 422 if (r == calculated && osm instanceof Way) 422 423 continue; … … 432 433 MainApplication.getLayerManager().getEditLayer(), r, members).setVisible(true)); 433 434 } 434 ds.setSelected(ds.getSelected()); // force update 435 if (!primitives.isEmpty()) { 436 DataSet ds = primitives.iterator().next().getDataSet(); 437 ds.setSelected(primitives); // force update 438 } 435 439 } 436 440 -
trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java
r16280 r16699 28 28 static final class TaggingPresetMouseAdapter extends MouseAdapter { 29 29 private final TaggingPreset t; 30 private final Collection<OsmPrimitive> sel; 30 31 31 TaggingPresetMouseAdapter(TaggingPreset t) { 32 TaggingPresetMouseAdapter(TaggingPreset t, Collection<OsmPrimitive> sel) { 32 33 this.t = t; 34 this.sel = sel; 33 35 } 34 36 35 37 @Override 36 38 public void mouseClicked(MouseEvent e) { 37 t. actionPerformed(null);39 t.showAndApply(sel); 38 40 } 39 41 } … … 58 60 TaggingPreset t = found.get(); 59 61 JLabel lbl = new TaggingPresetLabel(t); 60 lbl.addMouseListener(new TaggingPresetMouseAdapter(t)); 62 lbl.addMouseListener(new TaggingPresetMouseAdapter(t, sel)); 61 63 p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL)); 62 64 }
Note:
See TracChangeset
for help on using the changeset viewer.