package net.mograsim.logic.model.model.components.atomic;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
import net.mograsim.logic.core.types.BitVectorFormatter;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
import net.mograsim.logic.model.modeladapter.componentadapters.SplitterAdapter;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
import net.mograsim.preferences.ColorDefinition;
import net.mograsim.preferences.ColorManager;
import net.mograsim.preferences.Preferences;
public class GUISplitter extends GUIComponent
{
- private static final double width = 20;
+ private static final double width = 10;
private static final double heightPerPin = 10;
public final int logicWidth;
private ReadEnd inputEnd;
- private ReadEnd[] outputEnds;
+ private final ReadEnd[] outputEnds;
public GUISplitter(ViewModelModifiable model, int logicWidth, String name)
{
double outputHeight = 0;
for (int i = 0; i < logicWidth; i++, outputHeight += 10)
addPin(new Pin(this, "O" + i, 1, width, outputHeight));
+ outputEnds = new ReadEnd[logicWidth];
}
@Override
}
}
+ @Override
+ public JsonElement getParamsForSerializing(IdentifierGetter idGetter)
+ {
+ return new JsonPrimitive(logicWidth);
+ }
+
public void setLogicModelBinding(ReadEnd inputEnd, ReadEnd[] outputEnds)
{
this.inputEnd = inputEnd;
- this.outputEnds = outputEnds;
+ System.arraycopy(outputEnds, 0, this.outputEnds, 0, logicWidth);
}
static
{
ViewLogicModelAdapter.addComponentAdapter(new SplitterAdapter());
+ IndirectGUIComponentCreator.setComponentSupplier(GUISplitter.class.getCanonicalName(),
+ (m, p, n) -> new GUISplitter(m, p.getAsInt(), n));
}
}
\ No newline at end of file