CircuitPanelMouseAdapter: part rotation was blocked by wire
This commit is contained in:
parent
621a14bc8d
commit
8c1555330b
@ -40,7 +40,7 @@ public class CircuitPanel extends JPanel {
|
|||||||
public void paint(final Graphics graphics) {
|
public void paint(final Graphics graphics) {
|
||||||
final Graphics2D g = (Graphics2D) graphics;
|
final Graphics2D g = (Graphics2D) graphics;
|
||||||
CircuitPainter.draw(g, circuit, getWidth(), getHeight());
|
CircuitPainter.draw(g, circuit, getWidth(), getHeight());
|
||||||
mouseAdapter.drawHover(g);
|
mouseAdapter.drawHovers(g);
|
||||||
mouseAdapter.drawDrag(g);
|
mouseAdapter.drawDrag(g);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package de.ph87.electro.circuit;
|
|||||||
import de.ph87.electro.circuit.node.Node;
|
import de.ph87.electro.circuit.node.Node;
|
||||||
import de.ph87.electro.circuit.part.Part;
|
import de.ph87.electro.circuit.part.Part;
|
||||||
import de.ph87.electro.circuit.wire.Wire;
|
import de.ph87.electro.circuit.wire.Wire;
|
||||||
|
import lombok.NonNull;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -33,55 +34,65 @@ class CircuitPanelMouseAdapter extends MouseAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(final MouseEvent event) {
|
public void mouseClicked(final MouseEvent event) {
|
||||||
hoverUpdate(event);
|
findHovers(event);
|
||||||
|
if (mouseClickedAction(event)) {
|
||||||
|
terminateMouseAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean mouseClickedAction(final MouseEvent event) {
|
||||||
if (wire != null) {
|
if (wire != null) {
|
||||||
switch (event.getButton()) {
|
switch (event.getButton()) {
|
||||||
case BUTTON3:
|
case BUTTON3:
|
||||||
circuitPanel.getCircuit().disconnect(wire);
|
circuitPanel.getCircuit().disconnect(wire);
|
||||||
circuitPanel.getCircuit().evaluate();
|
circuitPanel.getCircuit().evaluate();
|
||||||
wire = null;
|
return true;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (part != null) {
|
if (part != null) {
|
||||||
switch (event.getButton()) {
|
switch (event.getButton()) {
|
||||||
case BUTTON1:
|
case BUTTON1:
|
||||||
part.action();
|
part.action();
|
||||||
circuitPanel.getCircuit().evaluate();
|
circuitPanel.getCircuit().evaluate();
|
||||||
break;
|
return true;
|
||||||
case BUTTON2:
|
case BUTTON2:
|
||||||
part.rotate();
|
part.rotate();
|
||||||
break;
|
return true;
|
||||||
case BUTTON3:
|
case BUTTON3:
|
||||||
circuitPanel.getCircuit().removePart(part);
|
circuitPanel.getCircuit().removePart(part);
|
||||||
circuitPanel.getCircuit().evaluate();
|
circuitPanel.getCircuit().evaluate();
|
||||||
part = null;
|
part = null;
|
||||||
break;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void terminateMouseAction() {
|
||||||
|
part = null;
|
||||||
|
node = null;
|
||||||
|
wire = null;
|
||||||
|
dragging = null;
|
||||||
circuitPanel.repaint();
|
circuitPanel.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseMoved(final MouseEvent event) {
|
public void mouseMoved(@NonNull final MouseEvent event) {
|
||||||
hoverUpdate(event);
|
findHovers(event);
|
||||||
circuitPanel.repaint();
|
circuitPanel.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseDragged(final MouseEvent event) {
|
public void mouseDragged(@NonNull final MouseEvent event) {
|
||||||
if (dragging == null) {
|
if (dragging == null) {
|
||||||
hoverUpdate(event);
|
findHovers(event);
|
||||||
}
|
}
|
||||||
dragging = event.getPoint();
|
dragging = event.getPoint();
|
||||||
circuitPanel.repaint();
|
circuitPanel.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(final MouseEvent event) {
|
public void mouseReleased(@NonNull final MouseEvent event) {
|
||||||
if (dragging == null) {
|
if (dragging == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -98,7 +109,7 @@ class CircuitPanelMouseAdapter extends MouseAdapter {
|
|||||||
|
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
final Node source = node;
|
final Node source = node;
|
||||||
hoverUpdate(event);
|
findHovers(event);
|
||||||
if (node != null) {
|
if (node != null) {
|
||||||
final Wire wire = circuitPanel.getCircuit().connect(source, node);
|
final Wire wire = circuitPanel.getCircuit().connect(source, node);
|
||||||
log.info("Wire CREATED: {}", wire);
|
log.info("Wire CREATED: {}", wire);
|
||||||
@ -108,26 +119,17 @@ class CircuitPanelMouseAdapter extends MouseAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dragging = null;
|
terminateMouseAction();
|
||||||
circuitPanel.repaint();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void hoverUpdate(final MouseEvent event) {
|
private void findHovers(@NonNull final MouseEvent event) {
|
||||||
final Point position = event.getPoint();
|
final Point position = event.getPoint();
|
||||||
part = circuitPanel.getCircuit().findPartByPosition(position).orElse(null);
|
part = circuitPanel.getCircuit().findPartByPosition(position).orElse(null);
|
||||||
node = part != null ? part.findNodeByPosition(position).orElse(null) : null;
|
node = part != null ? part.findNodeByPosition(position).orElse(null) : null;
|
||||||
if (node != null) {
|
|
||||||
part = null;
|
|
||||||
wire = null;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
wire = circuitPanel.getCircuit().findWireByPosition(position).orElse(null);
|
wire = circuitPanel.getCircuit().findWireByPosition(position).orElse(null);
|
||||||
if (wire != null) {
|
|
||||||
part = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawHover(final Graphics2D g) {
|
public void drawHovers(@NonNull final Graphics2D g) {
|
||||||
if (part != null) {
|
if (part != null) {
|
||||||
g.setColor(NODE_HOVER_BORDER_COLOR);
|
g.setColor(NODE_HOVER_BORDER_COLOR);
|
||||||
g.setStroke(HOVER_STROKE);
|
g.setStroke(HOVER_STROKE);
|
||||||
@ -157,7 +159,7 @@ class CircuitPanelMouseAdapter extends MouseAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawDrag(final Graphics2D g) {
|
public void drawDrag(@NonNull final Graphics2D g) {
|
||||||
if (dragging != null) {
|
if (dragging != null) {
|
||||||
if (part != null) {
|
if (part != null) {
|
||||||
g.setColor(PART_HOVER_COLOR);
|
g.setColor(PART_HOVER_COLOR);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user