import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
import net.mograsim.logic.ui.model.ViewModelModifiable;
-import net.mograsim.logic.ui.model.components.params.RectComponentParams;
import net.mograsim.logic.ui.model.wires.Pin;
public class SimpleRectangularSubmodelComponent extends SubmodelComponent
{
+ public static String kLabel = "label", kInCount = "input_count", kOutCount = "output_count", kLogicWidth = "logic_width";
+
private static final double width = 35;
private static final double pinDistance = 10;
private static final double fontHeight = 5;
else if (oldInputCount < inputCount)
for (int i = oldInputCount; i < inputCount; i++)
{
- Pin submodelPin = addSubmodelInterface(logicWidth, 0, pinDistance / 2 + i * pinDistance);
+ // TODO pin names
+ Pin submodelPin = addSubmodelInterface("Input pin #" + i, logicWidth, 0, pinDistance / 2 + i * pinDistance);
inputSubmodelPins.add(submodelPin);
inputSupermodelPins.add(getSupermodelPin(submodelPin));
}
else if (oldOutputCount < outputCount)
for (int i = oldOutputCount; i < outputCount; i++)
{
- Pin submodelPin = addSubmodelInterface(logicWidth, width, pinDistance / 2 + i * pinDistance);
+ // TODO pin names
+ Pin submodelPin = addSubmodelInterface("Output pin #" + i, logicWidth, width, pinDistance / 2 + i * pinDistance);
outputSubmodelPins.add(submodelPin);
outputSupermodelPins.add(getSupermodelPin(submodelPin));
}
Point textExtent = gc.textExtent(label);
gc.drawText(label, posX + (getBounds().width - textExtent.x) / 2, posY + (getBounds().height - textExtent.y) / 2, true);
gc.setFont(oldFont);
+ // TODO draw pin names
}
@Override
gc.drawRectangle(getBounds());
}
- public RectComponentParams calculateRectParams()
+ @Override
+ public SubmodelComponentParams calculateParams()
{
- RectComponentParams params = new RectComponentParams();
- params.displayName = label;
- params.inputCount = inputSupermodelPins.size();
- params.outputCount = outputSubmodelPins.size();
- params.logicWidth = logicWidth;
- params.composition = calculateCompositionParams();
- return params;
+ SubmodelComponentParams ret = super.calculateParams();
+ ret.type = SimpleRectangularSubmodelComponent.class.getSimpleName();
+ Map<String, Object> m = new TreeMap<>();
+ m.put(kLabel, label);
+ m.put(kInCount, inputSupermodelPins.size());
+ m.put(kOutCount, outputSupermodelPins.size());
+ m.put(kLogicWidth, logicWidth);
+ ret.specialized = m;
+ return ret;
}
}
\ No newline at end of file