import org.eclipse.swt.graphics.Color;
-import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.mograsim.logic.model.model.components.GUIComponent;
import net.mograsim.logic.model.model.wires.MovablePin;
import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.IdentifyParams;
import net.mograsim.preferences.Preferences;
public class SimpleRectangularGUIGate extends GUIComponent
private static final double fontHeight = 5;
private static final double invertedCircleDiam = 3.5;
+ private final String id;
+
private final String label;
private final boolean isInverted;
protected final int logicWidth;
private MovablePin outputPin;
private final List<Pin> inputPins;
- protected SimpleRectangularGUIGate(ViewModelModifiable model, String label, boolean isInverted, int logicWidth, String name)
+ protected SimpleRectangularGUIGate(ViewModelModifiable model, String id, String label, boolean isInverted, int logicWidth, String name)
{
super(model, name);
+ this.id = id;
this.label = label;
this.logicWidth = logicWidth;
this.isInverted = isInverted;
this.rectWidth = width - (isInverted ? invertedCircleDiam : 0);
- this.outputPin = new MovablePin(this, "Y", logicWidth, width, 0);
+ this.outputPin = new MovablePin(this, "Y", logicWidth, PinUsage.OUTPUT, width, 0);
addPin(outputPin);
this.inputPins = new ArrayList<>();
setInputCount(1);
for (int i = oldInputCount; i < inputCount; i++)
{
// TODO what for more than 24 input pins?
- Pin pin = new Pin(this, String.valueOf((char) ('A' + i)), logicWidth, 0, pinDistance / 2 + i * pinDistance);
+ Pin pin = new Pin(this, String.valueOf((char) ('A' + i)), logicWidth, PinUsage.INPUT, 0, pinDistance / 2 + i * pinDistance);
inputPins.add(pin);
addPin(pin);
}
// serializing
+ @Override
+ public String getIDForSerializing(IdentifyParams idParams)
+ {
+ return id;
+ }
+
/**
* {@link SimpleRectangularGUIGate}s implementation returns a {@link JsonPrimitive} of type int containing the {@link #logicWidth} of
* this component.
* @see GUIComponent#getParamsForSerializing()
*/
@Override
- public JsonElement getParamsForSerializing()
+ public Integer getParamsForSerializing(IdentifyParams idParams)
{
- return new JsonPrimitive(logicWidth);
+ return logicWidth;
}
}
\ No newline at end of file