diff --git a/src/main/java/de/ph87/electro/circuit/Circuit.java b/src/main/java/de/ph87/electro/circuit/Circuit.java index 0ac651a..26bf27c 100644 --- a/src/main/java/de/ph87/electro/circuit/Circuit.java +++ b/src/main/java/de/ph87/electro/circuit/Circuit.java @@ -78,6 +78,15 @@ public class Circuit { return part; } + public void removePart(final Part part) { + if (parts.remove(part)) { + part.getJunctions().forEach(junction -> junction.getWires().forEach(this::disconnect)); + } else { + throw new RuntimeException(); + } + evaluate(); + } + public void movePart(final Part part, final Position position) { if (!parts.contains(part)) { throw new RuntimeException(); diff --git a/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java b/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java index f59f349..0f20a28 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitPanelMouseAdapter.java @@ -8,11 +8,9 @@ import de.ph87.electro.circuit.wire.Wire; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.util.Optional; import static de.ph87.electro.CONFIG.*; -import static java.awt.event.MouseEvent.BUTTON1; -import static java.awt.event.MouseEvent.BUTTON3; +import static java.awt.event.MouseEvent.*; class CircuitPanelMouseAdapter extends MouseAdapter { @@ -41,10 +39,15 @@ class CircuitPanelMouseAdapter extends MouseAdapter { final Position position = new Position(event); if (event.getButton() == BUTTON3) { - final Optional wireOptional = circuitPanel.getCircuit().findWireByPosition(position); - if (wireOptional.isPresent()) { + if (wireHover != null) { + circuitPanel.getCircuit().disconnect(wireHover); wireHover = null; - circuitPanel.getCircuit().disconnect(wireOptional.get()); + circuitPanel.repaint(); + return; + } + if (partHover != null) { + circuitPanel.getCircuit().removePart(partHover); + partHover = null; circuitPanel.repaint(); return; } @@ -56,7 +59,7 @@ class CircuitPanelMouseAdapter extends MouseAdapter { part.action(); circuitPanel.repaint(); break; - case BUTTON3: + case BUTTON2: part.rotate(); circuitPanel.repaint(); break;