import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
import net.mograsim.logic.model.model.ViewModelModifiable;
import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.JSONSerializable;
import net.mograsim.logic.model.snippets.HighLevelStateHandler;
/**
*
* @author Daniel Kirschten
*/
-public abstract class GUIComponent
+public abstract class GUIComponent implements JSONSerializable
{
/**
* The model this component is a part of.
private final List<Runnable> redrawListeners;
private final Runnable redrawListenerForSubcomponents;
+
+ private HighLevelStateHandler highLevelStateHandler;
+
// creation and destruction
public GUIComponent(ViewModelModifiable model, String name)
// high-level access
+ /**
+ * @author Daniel Kirschten
+ */
+ protected void setHighLevelStateHandler(HighLevelStateHandler highLevelStateHandler)
+ {
+ this.highLevelStateHandler = highLevelStateHandler;
+ }
+
+ public HighLevelStateHandler getHighLevelStateHandler()
+ {
+ return highLevelStateHandler;
+ }
+
/**
* Gets the current value of the given high-level state. <br>
* See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
*
* @author Daniel Kirschten
*/
- @SuppressWarnings("static-method") // this method is intended to be overridden
public Object getHighLevelState(String stateID)
{
- throw new IllegalArgumentException("No high level state with ID " + stateID);
+ return highLevelStateHandler.getHighLevelState(stateID);
}
/**
*
* @author Daniel Kirschten
*/
- @SuppressWarnings({ "static-method", "unused" }) // this method is intended to be overridden
public void setHighLevelState(String stateID, Object newState)
{
- throw new IllegalArgumentException("No high level state with ID " + stateID);
+ highLevelStateHandler.setHighLevelState(stateID, newState);
}
// "graphical" operations
// serializing
- @SuppressWarnings("static-method") // this method is intended to be overridden
- public JsonElement getParamsForSerializing()
+ @Override
+ public JsonElement getParamsForSerializing(IdentifierGetter idGetter)
{
return JsonNull.INSTANCE;
}