+ /**
+ * Destroys this wire. This method implicitly calls {@link ViewModelModifiable#wireDestroyed(GUIWire) wireDestroyed()} for the model
+ * this component is a part of.
+ *
+ * @author Daniel Kirschten
+ */
+ public void destroy()
+ {
+ model.wireDestroyed(this);
+ }
+
+ // pins
+
+ /**
+ * Returns the {@link Pin} on one side of this wire, usually the signal source.
+ *
+ * @author Daniel Kirschten
+ */
+ public Pin getPin1()
+ {
+ return pin1;
+ }
+
+ /**
+ * Returns the {@link Pin} on one side of this wire, usually the signal target.
+ *
+ * @author Daniel Kirschten
+ */
+ public Pin getPin2()
+ {
+ return pin2;
+ }
+
+ /**
+ * Called when {@link #pin1} or {@link #pin2} were moved.
+ *
+ * @author Daniel Kirschten
+ */
+ private void pinMoved()
+ {
+ recalculateEffectivePath();
+ callRedrawListeners();
+ }
+
+ // "graphical" operations
+
+ /**
+ * Recalculates {@link #effectivePath} "from scratch". Also updates {@link #bounds}.
+ *
+ * @author Daniel Kirschten
+ */