source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddFromSelectionAction.java@ 12933

Last change on this file since 12933 was 12846, checked in by bastiK, 7 years ago

see #15229 - use Config.getPref() wherever possible

File size: 2.8 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation.actions;
3
4import java.util.ArrayList;
5import java.util.Collections;
6import java.util.List;
7
8import org.openstreetmap.josm.data.osm.OsmPrimitive;
9import org.openstreetmap.josm.data.osm.Relation;
10import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
11import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
12import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.AddAbortException;
13import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
14import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
15import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
16import org.openstreetmap.josm.gui.dialogs.relation.SelectionTable;
17import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
18import org.openstreetmap.josm.gui.layer.OsmDataLayer;
19
20/**
21 * Abstract superclass of "Add from selection" actions.
22 * @since 9496
23 */
24abstract class AddFromSelectionAction extends AbstractRelationEditorAction {
25
26 protected final SelectionTable selectionTable;
27 protected final SelectionTableModel selectionTableModel;
28
29 protected AddFromSelectionAction(MemberTable memberTable, MemberTableModel memberTableModel, SelectionTable selectionTable,
30 SelectionTableModel selectionTableModel, String actionMapKey, OsmDataLayer layer, IRelationEditor editor) {
31 super(memberTable, memberTableModel, actionMapKey, layer, editor);
32 this.selectionTable = selectionTable;
33 this.selectionTableModel = selectionTableModel;
34 }
35
36 protected boolean isPotentialDuplicate(OsmPrimitive primitive) {
37 return memberTableModel.hasMembersReferringTo(Collections.singleton(primitive));
38 }
39
40 protected List<OsmPrimitive> filterConfirmedPrimitives(List<OsmPrimitive> primitives) throws AddAbortException {
41 if (primitives == null || primitives.isEmpty())
42 return primitives;
43 List<OsmPrimitive> ret = new ArrayList<>();
44 ConditionalOptionPaneUtil.startBulkOperation("add_primitive_to_relation");
45 for (OsmPrimitive primitive : primitives) {
46 if (primitive instanceof Relation && editor.getRelation() != null && editor.getRelation().equals(primitive)) {
47 GenericRelationEditor.warnOfCircularReferences(primitive);
48 continue;
49 }
50 if (isPotentialDuplicate(primitive)) {
51 if (GenericRelationEditor.confirmAddingPrimitive(primitive)) {
52 ret.add(primitive);
53 }
54 continue;
55 } else {
56 ret.add(primitive);
57 }
58 }
59 ConditionalOptionPaneUtil.endBulkOperation("add_primitive_to_relation");
60 return ret;
61 }
62}
Note: See TracBrowser for help on using the repository browser.