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