This commit is contained in:
Patrick Haßel 2024-05-15 15:16:10 +02:00
parent 29fc0f1849
commit 91e7d2541a

View File

@ -17,11 +17,17 @@ public class CircuitPanel extends JPanel {
private Circuit circuit = new Circuit();
private Part dragPart = null;
private Point dragPoint = null;
private Point dragOffset = null;
public CircuitPanel() {
addMouseListener(new MouseAdapter() {
final MouseAdapter listener = new MouseAdapter() {
@Override
public void mouseReleased(final MouseEvent e) {
public void mouseClicked(final MouseEvent e) {
final int x = e.getX() / RASTER;
final int y = e.getY() / RASTER;
final Optional<Part> partOptional = circuit.getParts().stream().filter(p -> p.getX() == x && p.getY() == y).findFirst();
@ -42,7 +48,39 @@ public class CircuitPanel extends JPanel {
}
}
});
@Override
public void mousePressed(final MouseEvent e) {
final int x = e.getX() / RASTER;
final int y = e.getY() / RASTER;
dragOffset = new Point(RASTER / 2, RASTER / 2);
dragPart = circuit.getParts().stream().filter(p -> p.getX() == x && p.getY() == y).findFirst().orElse(null);
}
@Override
public void mouseDragged(final MouseEvent e) {
if (dragPart != null) {
dragPoint = e.getPoint();
repaint();
}
}
@Override
public void mouseReleased(final MouseEvent e) {
if (dragPart != null) {
final int x = e.getX() / RASTER;
final int y = e.getY() / RASTER;
dragPart.setX(x);
dragPart.setY(y);
dragPart = null;
dragPoint = null;
dragOffset = null;
repaint();
}
}
};
addMouseListener(listener);
addMouseMotionListener(listener);
circuit = DemoAll.create();
}
@ -55,6 +93,10 @@ public class CircuitPanel extends JPanel {
drawParts(g);
drawRaster(g, w, h);
drawWires(g);
if (dragPart != null && dragPoint != null) {
g.setColor(new Color(192, 192, 192, 128));
g.fillRect(dragPoint.x - dragOffset.x, dragPoint.y - dragOffset.y, RASTER, RASTER);
}
}
private void drawBack(final Graphics2D g, final int w, final int h) {