X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2FGUIComponent.java;h=7254d8bd12c7bf172fabcfbcd9f1ea068886150d;hb=20aa3391efe7ae7d99861741f8b5594f88eae1d9;hp=ca21622a8fc8ac8f290507b07c7ccd434655f919;hpb=e7193d1fb16edc79e9cc3d8adcfb71caecd8463b;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java index ca21622a..7254d8bd 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java @@ -4,15 +4,16 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.function.Consumer; +import java.util.function.Supplier; -import net.mograsim.logic.ui.model.ViewModel; -import net.mograsim.logic.ui.model.wires.Pin; 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; public abstract class GUIComponent { - protected final ViewModel model; + protected final ViewModelModifiable model; private final Rectangle bounds; private final List pins; protected final List pinsUnmodifiable; @@ -23,8 +24,10 @@ public abstract class GUIComponent private final List redrawListeners; private final Runnable redrawListenerForSubcomponents; + // Defines how the GUIComponent is referenced in SubmodelComponentParams + protected Supplier identifierDelegate = () -> "class:".concat(getClass().getCanonicalName()); - public GUIComponent(ViewModel model) + public GUIComponent(ViewModelModifiable model) { this.model = model; this.bounds = new Rectangle(0, 0, 0, 0); @@ -129,4 +132,12 @@ public abstract class GUIComponent pin.removeRedrawListener(redrawListenerForSubcomponents); callRedrawListeners(); } + + /** + * @return an identifier used to reference this GUIComponent inside of {@link SubmodelComponentParams} + */ + public String getIdentifier() + { + return identifierDelegate.get(); + } } \ No newline at end of file