diff --git a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java index ec45cc608..2928c15a8 100644 --- a/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java +++ b/src/main/java/de/neemann/digital/draw/library/ElementLibrary.java @@ -237,7 +237,7 @@ public class ElementLibrary implements Iterable * If not found its tried to load it. * * @param elementName the elements name - * @return the {@link ElementTypeDescription} ore null if not found + * @return the {@link ElementTypeDescription} * @throws ElementNotFoundException ElementNotFoundException */ public ElementTypeDescription getElementType(String elementName) throws ElementNotFoundException { 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 8c4b065cb..efedd8ece 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -165,6 +165,22 @@ 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 ToolTipAction(Lang.get("menu_programDiode")) { @Override public void actionPerformed(ActionEvent e) { @@ -304,6 +320,21 @@ 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 * @@ -890,7 +921,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe } void activate() { - if (activeMouseController != null) + if (activeMouseController != null && activeMouseController != this) activeMouseController.deactivate(); activeMouseController = this; deleteAction.setActive(false); diff --git a/src/test/resources/docu/static_de.xml b/src/test/resources/docu/static_de.xml index 60406cc43..8250cfa75 100644 --- a/src/test/resources/docu/static_de.xml +++ b/src/test/resources/docu/static_de.xml @@ -251,5 +251,7 @@ Abbrechen der aktuellen Aktion. Löschen der selektierten Elemente. Löschen der selektierten Elemente. + Erhöht die Anzahl der Eingänge in dem Element auf welches die Maus zeigt. + Erniedrigt die Anzahl der Eingänge in dem Element auf welches die Maus zeigt. diff --git a/src/test/resources/docu/static_en.xml b/src/test/resources/docu/static_en.xml index 48ccfd3de..bc6e48a5b 100644 --- a/src/test/resources/docu/static_en.xml +++ b/src/test/resources/docu/static_en.xml @@ -240,5 +240,7 @@ Abort the actual action. Removes the selected components. Removes the selected components. + Increases the number of inputs at the component the mouse points to. + Decreases the number of inputs at the component the mouse points to. \ No newline at end of file