remove Part via mouse

This commit is contained in:
Patrick Haßel 2024-05-23 11:40:22 +02:00
parent db63665949
commit 2f7b2568c6
2 changed files with 19 additions and 7 deletions

View File

@ -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();

View File

@ -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<Wire> 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;