From 2a2f0374212ba9218805e746d5ffeb9af48c8077 Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 31 Mar 2016 13:00:17 +0200 Subject: [PATCH] better wiring mouse listener, wire ends if connected to a pin --- .../de/neemann/digital/draw/elements/Circuit.java | 12 ++++++++++++ .../digital/gui/components/CircuitComponent.java | 11 ++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/elements/Circuit.java b/src/main/java/de/neemann/digital/draw/elements/Circuit.java index 15139ce2f..634d4067b 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Circuit.java +++ b/src/main/java/de/neemann/digital/draw/elements/Circuit.java @@ -212,6 +212,18 @@ public class Circuit implements Drawable { return null; } + public boolean isPinPos(Vector pos) { + VisualElement el = getElementAt(pos); + if (el == null) return false; + + for (Pin p : el.getPins()) + if (p.getPos().equals(pos)) + return true; + + return false; + } + + public void modified() { modified = true; } 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 01658c466..f9659c79b 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -216,10 +216,15 @@ public class CircuitComponent extends JComponent { if (e.getButton() == MouseEvent.BUTTON1) { if (wire != null) { circuit.add(wire); - repaint(); + Vector startPos = raster(getPosVector(e)); + if (circuit.isPinPos(startPos)) + wire = null; + else + wire = new Wire(startPos, startPos); + } else { + Vector startPos = raster(getPosVector(e)); + wire = new Wire(startPos, startPos); } - Vector startPos = raster(getPosVector(e)); - wire = new Wire(startPos, startPos); repaint(); } else { if (wire != null) {