X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model.editor%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Feditor%2FEditableSubmodelComponent.java;h=baa02f3f5e1cdd152aac44740be2d715a5bce001;hb=500d5825bb557014eed80819f59a58b43ff71b05;hp=42e2a92cecfaeeedf5eea1f94af12030d9b15eef;hpb=c5c0d07286a29994a11ba8b01eaffb21964b6c1b;p=Mograsim.git diff --git a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditableSubmodelComponent.java b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditableSubmodelComponent.java index 42e2a92c..baa02f3f 100644 --- a/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditableSubmodelComponent.java +++ b/net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/EditableSubmodelComponent.java @@ -1,16 +1,11 @@ package net.mograsim.logic.model.editor; -import org.eclipse.swt.graphics.Color; - -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.model.model.ViewModelModifiable; import net.mograsim.logic.model.model.wires.MovablePin; -import net.mograsim.logic.model.model.wires.Pin; import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent; -import net.mograsim.preferences.Preferences; +import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer; +import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer; +import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams; public class EditableSubmodelComponent extends DeserializedSubmodelComponent { @@ -20,61 +15,23 @@ public class EditableSubmodelComponent extends DeserializedSubmodelComponent public EditableSubmodelComponent(ViewModelModifiable model, String label) { - super(model, label, null, null); //TODO: set name properly + super(model, label, null, null); // TODO: set name properly this.label = label; setSubmodelScale(0.2); addSubmodelInterface(new MovablePin(this, "A Pin", 1, 0, 10)); - - } - - public ViewModelModifiable getSubmodelModifiable() - { - return submodelModifiable; - } - - @Override - protected void renderOutline(GeneralGC gc, Rectangle visibleRegion) - { - Color foreground = Preferences.current().getColor("net.mograsim.logic.model.color.foreground"); - if (foreground != null) - gc.setForeground(foreground); - gc.drawRectangle(getBounds()); - } - - @Override - protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) - { - Font oldFont = gc.getFont(); - gc.setFont(new Font(oldFont.getName(), labelFontHeight, oldFont.getStyle())); - Point textExtent = gc.textExtent(label); - Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text"); - if (textColor != null) - gc.setForeground(textColor); - gc.drawText(label, getPosX() + (getWidth() - textExtent.x) / 2, getPosY() + (getHeight() - textExtent.y) / 2, - true); - gc.setFont(new Font(oldFont.getName(), pinNameFontHeight, oldFont.getStyle())); - for (String name : pinsUnmodifiable.keySet()) - { - Pin p = pinsUnmodifiable.get(name); - Point pos = p.getPos(); - gc.drawText(name, pos.x, pos.y, true); - } - gc.setFont(oldFont); - } - - public void setSubmodelScale(double scale) - { - super.setSubmodelScale(scale); - } - - public double getSubmodelScale() - { - return super.getSubmodelScale(); + updateSymbolRenderer(); + setOutlineRenderer(new DefaultOutlineRenderer(this)); } - public void setSize(double width, double height) + private void updateSymbolRenderer() { - super.setSize(width, height); + SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams(); + rendererParams.centerText = label; + rendererParams.centerTextHeight = labelFontHeight; + rendererParams.horizontalComponentCenter = getWidth() / 2; + rendererParams.pinLabelHeight = pinNameFontHeight; + rendererParams.pinLabelMargin = 0; + setSymbolRenderer(new SimpleRectangularLikeSymbolRenderer(this, rendererParams)); } public String getLabel() @@ -85,5 +42,6 @@ public class EditableSubmodelComponent extends DeserializedSubmodelComponent public void setLabel(String label) { this.label = label; + updateSymbolRenderer(); } }