GUIWires now have names
[Mograsim.git] / net.mograsim.logic.model / src / net / mograsim / logic / model / model / wires / GUIWire.java
index 7146d63..f59355c 100644 (file)
@@ -30,6 +30,10 @@ public class GUIWire
         * The model this wire is a part of.
         */
        private final ViewModelModifiable model;
+       /**
+        * The name of this wire. Is unique for all wires in its model.
+        */
+       public final String name;
        /**
         * The logical width of this wire. Is equal to the logical with of {@link #pin1} and {@link #pin2}.
         */
@@ -72,83 +76,164 @@ public class GUIWire
        // creation and destruction
 
        /**
-        * Creates a new {@link GUIWire} with automatic interpolation.
+        * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2)
        {
-               this(model, pin1, pin2, (Point[]) null);
+               this(model, null, pin1, pin2);
        }
 
        /**
-        * Creates a new {@link GUIWire} with automatic interpolation.
+        * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2)
        {
-               this(model, pin1, pin2, (Point[]) null);
+               this(model, null, pin1, pin2);
        }
 
        /**
-        * Creates a new {@link GUIWire} with automatic interpolation.
+        * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2)
        {
-               this(model, pin1, pin2, (Point[]) null);
+               this(model, null, pin1, pin2);
        }
 
        /**
-        * Creates a new {@link GUIWire} with automatic interpolation.
+        * Creates a new {@link GUIWire} with automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2)
        {
-               this(model, pin1, pin2, (Point[]) null);
+               this(model, null, pin1, pin2);
        }
 
        /**
-        * Creates a new {@link GUIWire} without automatic interpolation.
+        * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2, Point... path)
        {
-               this(model, pin1.getPin(), pin2.getPin(), path);
+               this(model, null, pin1, pin2, path);
        }
 
        /**
-        * Creates a new {@link GUIWire} without automatic interpolation.
+        * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2, Point... path)
        {
-               this(model, pin1.getPin(), pin2, path);
+               this(model, null, pin1, pin2, path);
        }
 
        /**
-        * Creates a new {@link GUIWire} without automatic interpolation.
+        * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2, Point... path)
        {
-               this(model, pin1, pin2.getPin(), path);
+               this(model, null, pin1, pin2, path);
        }
 
        /**
-        * Creates a new {@link GUIWire} without automatic interpolation.
+        * Creates a new {@link GUIWire} without automatic interpolation and using the default name.
         * 
         * @author Daniel Kirschten
         */
        public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path)
+       {
+               this(model, null, pin1, pin2, path);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} with automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, WireCrossPoint pin2)
+       {
+               this(model, name, pin1, pin2, (Point[]) null);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} with automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, Pin pin2)
+       {
+               this(model, name, pin1, pin2, (Point[]) null);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} with automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, Pin pin1, WireCrossPoint pin2)
+       {
+               this(model, name, pin1, pin2, (Point[]) null);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} with automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, Pin pin1, Pin pin2)
+       {
+               this(model, name, pin1, pin2, (Point[]) null);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} without automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, WireCrossPoint pin2, Point... path)
+       {
+               this(model, name, pin1.getPin(), pin2.getPin(), path);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} without automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, WireCrossPoint pin1, Pin pin2, Point... path)
+       {
+               this(model, name, pin1.getPin(), pin2, path);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} without automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, Pin pin1, WireCrossPoint pin2, Point... path)
+       {
+               this(model, name, pin1, pin2.getPin(), path);
+       }
+
+       /**
+        * Creates a new {@link GUIWire} without automatic interpolation.
+        * 
+        * @author Daniel Kirschten
+        */
+       public GUIWire(ViewModelModifiable model, String name, Pin pin1, Pin pin2, Point... path)
        {
                this.model = model;
+               this.name = name == null ? model.getDefaultWireName() : name;
                this.logicWidth = pin1.logicWidth;
                if (pin2.logicWidth != pin1.logicWidth)
                        throw new IllegalArgumentException("Can't connect pins of different logic width");