Moved Am2904/Am2910Testbenches to test source folder
[Mograsim.git] / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / EditableSubmodelComponent.java
1 package net.mograsim.logic.model.editor;
2
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;
9
10 public class EditableSubmodelComponent extends DeserializedSubmodelComponent
11 {
12         private static final double labelFontHeight = 5;
13         private static final double pinNameFontHeight = 3;
14         private String label;
15
16         public EditableSubmodelComponent(ViewModelModifiable model, String label)
17         {
18                 super(model, label, null, null); // TODO: set name properly
19                 this.label = label;
20                 setSubmodelScale(0.2);
21                 addSubmodelInterface(new MovablePin(this, "A Pin", 1, 0, 10));
22                 updateSymbolRenderer();
23                 setOutlineRenderer(new DefaultOutlineRenderer(this));
24         }
25
26         private void updateSymbolRenderer()
27         {
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));
35         }
36
37         public String getLabel()
38         {
39                 return label;
40         }
41
42         public void setLabel(String label)
43         {
44                 this.label = label;
45                 updateSymbolRenderer();
46         }
47 }