diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java b/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
index 45d3b58137..474360fab4 100644
|
a
|
b
|
public class GenericRelationEditor extends RelationEditor implements CommandQueu
|
| 308 | 308 | key = Shortcut.getCopyKeyStroke(); |
| 309 | 309 | if (key != null) { |
| 310 | 310 | // handle uncommon situation, that user has no keystroke assigned to copy |
| 311 | | registerCopyPasteAction(new CopyMembersAction(actionAccess), |
| | 311 | registerCopyPasteAction(new CopyMembersAction(actionAccess, true), |
| 312 | 312 | "COPY_MEMBERS", key, getRootPane(), memberTable, selectionTable); |
| 313 | 313 | } |
| | 314 | key = Shortcut.getCutKeyStroke(); |
| | 315 | if (key != null) { |
| | 316 | // handle uncommon situation, that user has no keystroke assigned to cut |
| | 317 | registerCopyPasteAction(new CopyMembersAction(actionAccess, false), |
| | 318 | "CUT_MEMBERS", key, getRootPane(), memberTable, selectionTable); |
| | 319 | } |
| 314 | 320 | tagEditorPanel.setNextFocusComponent(memberTable); |
| 315 | 321 | selectionTable.setFocusable(false); |
| 316 | 322 | memberTableModel.setSelectedMembers(selectedMembers); |
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CopyMembersAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CopyMembersAction.java
index bdbce29b48..791c4ba7b9 100644
|
a
|
b
|
import org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable;
|
| 14 | 14 | */ |
| 15 | 15 | public class CopyMembersAction extends AddFromSelectionAction { |
| 16 | 16 | private static final long serialVersionUID = 1L; |
| | 17 | private boolean keepCopiedMembers = true; |
| 17 | 18 | |
| 18 | 19 | /** |
| 19 | 20 | * Constructs a new {@code CopyMembersAction}. |
| 20 | 21 | * @param editorAccess An interface to access the relation editor contents. |
| | 22 | * @param keepCopiedMembers if true, copied members are kept in the table; otherwise they are removed (cut) |
| 21 | 23 | */ |
| 22 | | public CopyMembersAction(IRelationEditorActionAccess editorAccess) { |
| | 24 | public CopyMembersAction(IRelationEditorActionAccess editorAccess, boolean keepCopiedMembers) { |
| 23 | 25 | super(editorAccess); |
| | 26 | this.keepCopiedMembers = keepCopiedMembers; |
| 24 | 27 | } |
| 25 | 28 | |
| 26 | 29 | @Override |
| … |
… |
public class CopyMembersAction extends AddFromSelectionAction {
|
| 29 | 32 | |
| 30 | 33 | if (!members.isEmpty()) { |
| 31 | 34 | ClipboardUtils.copy(new RelationMemberTransferable(members)); |
| | 35 | if (!this.keepCopiedMembers) { |
| | 36 | getMemberTableModel().remove(getMemberTableModel().getSelectedIndices()); |
| | 37 | } |
| 32 | 38 | } |
| 33 | 39 | } |
| 34 | 40 | |
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
index ae6a7e687a..c915bee9cb 100644
|
a
|
b
|
class RelationEditorActionsTest extends AbstractRelationEditorActionTest {
|
| 48 | 48 | new OKAction(relationEditorAccess).actionPerformed(null); |
| 49 | 49 | new CancelAction(relationEditorAccess).actionPerformed(null); |
| 50 | 50 | |
| 51 | | new CopyMembersAction(relationEditorAccess).actionPerformed(null); |
| | 51 | new CopyMembersAction(relationEditorAccess, true).actionPerformed(null); |
| | 52 | new CopyMembersAction(relationEditorAccess, false).actionPerformed(null); |
| 52 | 53 | new PasteMembersAction(relationEditorAccess).actionPerformed(null); |
| 53 | 54 | |
| 54 | 55 | new SelectAction(relationEditorAccess).actionPerformed(null); |