1 package net.mograsim.logic.model.editor;
3 import net.mograsim.logic.model.model.ViewModelModifiable;
4 import net.mograsim.logic.model.model.wires.MovablePin;
5 import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
6 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
7 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer;
8 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams;
10 public class EditableSubmodelComponent extends DeserializedSubmodelComponent
12 private static final double labelFontHeight = 5;
13 private static final double pinNameFontHeight = 3;
16 public EditableSubmodelComponent(ViewModelModifiable model, String label)
18 super(model, label, null, null); // TODO: set name properly
20 setSubmodelScale(0.2);
21 addSubmodelInterface(new MovablePin(this, "A Pin", 1, 0, 10));
22 updateSymbolRenderer();
23 setOutlineRenderer(new DefaultOutlineRenderer(this));
26 private void updateSymbolRenderer()
28 SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
29 rendererParams.centerText = label;
30 rendererParams.centerTextHeight = labelFontHeight;
31 rendererParams.horizontalComponentCenter = getWidth() / 2;
32 rendererParams.pinLabelHeight = pinNameFontHeight;
33 rendererParams.pinLabelMargin = 0;
34 setSymbolRenderer(new SimpleRectangularLikeSymbolRenderer(this, rendererParams));
37 public String getLabel()
42 public void setLabel(String label)
45 updateSymbolRenderer();