From e0d89eadc29a98c48b3517093368e681891e28cb Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 28 May 2017 09:56:37 +0200 Subject: [PATCH] +/- shortcut also works if element is selected --- .../gui/components/CircuitComponent.java | 67 ++++++++++--------- 1 file changed, 37 insertions(+), 30 deletions(-) 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 6d94e4459..beb106322 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -165,21 +165,8 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe } }.setAccelerator("D").enableAcceleratorIn(this); - new ToolTipAction("plus") { - @Override - public void actionPerformed(ActionEvent e) { - if (activeMouseController instanceof MouseControllerNormal) - addToInputCount(getPosVector(lastMousePos.x, lastMousePos.y), 1); - } - }.setAccelerator("PLUS").enableAcceleratorIn(this); - - new ToolTipAction("minus") { - @Override - public void actionPerformed(ActionEvent e) { - if (activeMouseController instanceof MouseControllerNormal) - addToInputCount(getPosVector(lastMousePos.x, lastMousePos.y), -1); - } - }.setAccelerator("MINUS").enableAcceleratorIn(this); + new PlusMinusAction(1).setAccelerator("PLUS").enableAcceleratorIn(this); + new PlusMinusAction(-1).setAccelerator("MINUS").enableAcceleratorIn(this); new ToolTipAction(Lang.get("menu_programDiode")) { @Override @@ -320,21 +307,6 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe } } - private void addToInputCount(Vector pos, int delta) { - VisualElement ve = circuit.getElementAt(pos); - if (ve != null) { - try { - if (library.getElementType(ve.getElementName()).hasAttribute(Keys.INPUT_COUNT)) { - int number = ve.getElementAttributes().get(Keys.INPUT_COUNT) + delta; - if (number >= Keys.INPUT_COUNT.getMin() && number <= Keys.INPUT_COUNT.getMax()) - modify(new ModifyAttribute<>(ve, Keys.INPUT_COUNT, number)); - } - } catch (ElementNotFoundException e) { - // do nothing on error - } - } - } - /** * Apply a modification * @@ -857,6 +829,37 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe return redoAction; } + private final class PlusMinusAction extends ToolTipAction { + private final int delta; + + private PlusMinusAction(int delta) { + super("plusMinus"); + this.delta = delta; + } + + @Override + public void actionPerformed(ActionEvent e) { + VisualElement ve = null; + if (activeMouseController instanceof MouseControllerNormal) + ve = circuit.getElementAt(getPosVector(lastMousePos.x, lastMousePos.y)); + if (activeMouseController instanceof MouseControllerMoveElement) + ve = ((MouseControllerMoveElement) activeMouseController).getVisualElement(); + + if (ve != null) { + try { + if (library.getElementType(ve.getElementName()).hasAttribute(Keys.INPUT_COUNT)) { + int number = ve.getElementAttributes().get(Keys.INPUT_COUNT) + delta; + if (number >= Keys.INPUT_COUNT.getMin() && number <= Keys.INPUT_COUNT.getMax()) + modify(new ModifyAttribute<>(ve, Keys.INPUT_COUNT, number)); + } + } catch (ElementNotFoundException e1) { + // do nothing on error + } + + } + } + } + private class MouseDispatcher extends MouseAdapter implements MouseMotionListener { private Vector pos; private boolean isMoved; @@ -1168,6 +1171,10 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe } mouseNormal.activate(); } + + public VisualElement getVisualElement() { + return visualElement; + } } private final class MouseControllerMoveWire extends MouseController {