From 0c6944320cf8255e4844e4ade4d7061d1da4a368 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sat, 27 May 2017 11:12:38 +0200 Subject: [PATCH] added a cut operation (CTRL+X) --- .../java/de/neemann/digital/gui/Main.java | 1 + .../gui/components/CircuitComponent.java | 33 ++++++++++++++++++- src/main/resources/lang/lang_de.xml | 1 + src/main/resources/lang/lang_en.xml | 1 + 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index e31b4e2da..5d539474a 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -587,6 +587,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS edit.add(createSpecialEditMenu()); edit.addSeparator(); + edit.add(circuitComponent.getCutAction().createJMenuItem()); edit.add(circuitComponent.getCopyAction().createJMenuItem()); edit.add(circuitComponent.getPasteAction().createJMenuItem()); edit.add(circuitComponent.getRotateAction().createJMenuItem()); diff --git a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java index 38b85d994..e401b0450 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -52,7 +52,6 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe private static final Icon ICON_REDO = IconCreator.create("edit-redo.png"); private static final String DEL_ACTION = "myDelAction"; - private static final String ESC_ACTION = "myEscAction"; private static final int MOUSE_BORDER_SMALL = 10; private static final int MOUSE_BORDER_LARGE = 50; @@ -75,6 +74,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe private final MouseControllerInsertCopied mouseInsertList; private final Cursor moveCursor; private final ToolTipAction copyAction; + private final ToolTipAction cutAction; private final ToolTipAction pasteAction; private final ToolTipAction rotateAction; private final ToolTipAction undoAction; @@ -117,6 +117,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe }.setActive(false).setAccelerator(KeyStroke.getKeyStroke("R")).enableAcceleratorIn(this); + cutAction = createCutAction(shapeFactory); copyAction = createCopyAction(shapeFactory); pasteAction = createPasteAction(shapeFactory); @@ -243,6 +244,27 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe }.setAcceleratorCTRLplus('V').enableAcceleratorIn(this); } + private ToolTipAction createCutAction(ShapeFactory shapeFactory) { + return new ToolTipAction(Lang.get("menu_cut")) { + @Override + public void actionPerformed(ActionEvent e) { + ArrayList elements = null; + if (activeMouseController instanceof MouseControllerSelect) { + MouseControllerSelect mcs = ((MouseControllerSelect) activeMouseController); + Vector min = Vector.min(mcs.corner1, mcs.corner2); + Vector max = Vector.max(mcs.corner1, mcs.corner2); + elements = circuit.getElementsToCopy(min, max, shapeFactory); + if (elements != null) { + Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + clipboard.setContents(new CircuitTransferable(elements), null); + modify(new ModifyDeleteRect(min, max)); + activeMouseController.escapePressed(); + } + } + } + }.setActive(false).setAcceleratorCTRLplus('X').enableAcceleratorIn(this); + } + private ToolTipAction createCopyAction(ShapeFactory shapeFactory) { return new ToolTipAction(Lang.get("menu_copy")) { @Override @@ -397,6 +419,13 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe return deleteAction; } + /** + * @return the cut action + */ + public ToolTipAction getCutAction() { + return cutAction; + } + /** * @return the copy action */ @@ -856,6 +885,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe activeMouseController = this; deleteAction.setActive(false); copyAction.setEnabled(false); + cutAction.setEnabled(false); rotateAction.setEnabled(false); setCursor(mouseCursor); hasChanged(); @@ -1307,6 +1337,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe this.corner2 = corner2; deleteAction.setActive(true); copyAction.setEnabled(true); + cutAction.setEnabled(true); rotateAction.setEnabled(true); wasReleased = false; } diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index 232c2af78..74a29d265 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -659,6 +659,7 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Über Digital Analyse Analyse der aktuellen Schaltung + Ausschneiden Kopieren Benutzerdefiniert Löschen diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 7901d6ddc..5743f3407 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -649,6 +649,7 @@ The names of the variables may not be unique. About Analysis Analyses the actual circuit + Cut Copy Custom Delete components