GUIComponents now have names
[Mograsim.git] / net.mograsim.logic.ui / src / net / mograsim / logic / ui / model / components / GUIComponent.java
index 83e6d61..bf9ea85 100644 (file)
@@ -14,6 +14,7 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.ui.model.ViewModelModifiable;
 import net.mograsim.logic.ui.model.wires.Pin;
+import net.mograsim.logic.ui.serializing.snippets.HighLevelStateHandler;
 
 /**
  * The base class for all GUI components.<br>
@@ -27,6 +28,10 @@ public abstract class GUIComponent
         * The model this component is a part of.
         */
        protected final ViewModelModifiable model;
+       /**
+        * The name of this component. Is unique in its model.
+        */
+       public final String name;
        private final Rectangle bounds;
        /**
         * The list of all pins of this component by name.
@@ -46,9 +51,10 @@ public abstract class GUIComponent
        private final Runnable redrawListenerForSubcomponents;
        // creation and destruction
 
-       public GUIComponent(ViewModelModifiable model)
+       public GUIComponent(ViewModelModifiable model, String name)
        {
                this.model = model;
+               this.name = name == null ? model.getDefaultComponentName(this) : name;
                this.bounds = new Rectangle(0, 0, 0, 0);
                this.pinsByName = new HashMap<>();
                this.pinsUnmodifiable = Collections.unmodifiableMap(pinsByName);
@@ -142,13 +148,10 @@ public abstract class GUIComponent
 
        /**
         * Sets the given high-level state to the given value. <br>
-        * A high level state ID consists of parts separated by dots ('.').<br>
-        * The last part (the part after the last dot) is called "atomic high level state ID". The parts before that part are called
-        * "subcomponent ID"s.<br>
-        * If there is no dot in a high level state ID, the whole high level state ID is called atomic.<br>
-        * Note that subcomponent IDs don't have to correspond to actual subcomponents. For example, a RAM component may supply subcomponent IDs
-        * "c0000", "c0001" ... "cFFFF" without actually having a subcomponent for each cell. It also is allowed for an atomic high level state
-        * ID to be delegated to a subcomponent.
+        * See {@link HighLevelStateHandler#setHighLevelState(String, Object)} for an explanation of high-level state IDs.
+        * 
+        * @see #getHighLevelState(String)
+        * @see HighLevelStateHandler#setHighLevelState(String, Object)
         * 
         * @author Daniel Kirschten
         */
@@ -160,7 +163,10 @@ public abstract class GUIComponent
 
        /**
         * Gets the current value of the given high-level state. <br>
-        * See {@link #setHighLevelState(String, Object)} for an explanation of high-level state IDs.
+        * See {@link HighLevelStateHandler#setHighLevelState(String, Object)} for an explanation of high-level state IDs.
+        * 
+        * @see #setHighLevelState(String, Object)
+        * @see HighLevelStateHandler#getHighLevelState(String)
         * 
         * @author Daniel Kirschten
         */