X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2Fcomponents%2FModelComponent.java;h=b8d9f14d7d687a77c4048097541cf3f3b84bebb6;hb=HEAD;hp=ded66859f5934427cb7137654bc75f9059c4d503;hpb=0c97f70d199e1ffcd2bc13817f7bb12867ba033e;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java index ded66859..b8d9f14d 100644 --- a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java @@ -11,6 +11,7 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; import net.mograsim.logic.model.model.LogicModelModifiable; import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.preferences.RenderPreferences; import net.mograsim.logic.model.serializing.IdentifyParams; import net.mograsim.logic.model.serializing.JSONSerializable; import net.mograsim.logic.model.snippets.HighLevelStateHandler; @@ -24,6 +25,7 @@ import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevel * * @author Daniel Kirschten */ +// TODO split into "blueprint" and "used component" public abstract class ModelComponent implements JSONSerializable { /** @@ -98,13 +100,6 @@ public abstract class ModelComponent implements JSONSerializable model.componentCreated(this, this::destroyed); } - // basic getters - - public String getName() - { - return name; - } - /** * Destroys this component. This method is called from {@link LogicModelModifiable#componentDestroyed(ModelComponent) * destroyComponent()} of the model this component is a part of.
@@ -117,6 +112,13 @@ public abstract class ModelComponent implements JSONSerializable pinsByName.values().forEach(this::removePinWithoutRedraw); } + // basic getters + + public String getName() + { + return name; + } + // pins /** @@ -215,13 +217,13 @@ public abstract class ModelComponent implements JSONSerializable * See {@link HighLevelStateHandler} for an explanation of high-level state IDs. * * @see #setHighLevelState(String, Object) - * @see HighLevelStateHandler#getHighLevelState(String) + * @see HighLevelStateHandler#get(String) * * @author Daniel Kirschten */ public final Object getHighLevelState(String stateID) { - return highLevelStateHandler.getHighLevelState(stateID); + return highLevelStateHandler.get(stateID); } /** @@ -229,13 +231,23 @@ public abstract class ModelComponent implements JSONSerializable * See {@link HighLevelStateHandler} for an explanation of high-level state IDs. * * @see #getHighLevelState(String) - * @see HighLevelStateHandler#setHighLevelState(String, Object) + * @see HighLevelStateHandler#set(String, Object) * * @author Daniel Kirschten */ public final void setHighLevelState(String stateID, Object newState) { - highLevelStateHandler.setHighLevelState(stateID, newState); + highLevelStateHandler.set(stateID, newState); + } + + public final void addHighLevelStateListener(String stateID, Consumer stateChanged) + { + highLevelStateHandler.addListener(stateID, stateChanged); + } + + public final void removeHighLevelStateListener(String stateID, Consumer stateChanged) + { + highLevelStateHandler.removeListener(stateID, stateChanged); } // "graphical" operations @@ -334,7 +346,7 @@ public abstract class ModelComponent implements JSONSerializable * * @author Daniel Kirschten */ - public abstract void render(GeneralGC gc, Rectangle visibleRegion); + public abstract void render(GeneralGC gc, RenderPreferences renderPrefs, Rectangle visibleRegion); // serializing