X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2Fmodel%2Fwires%2FWireCrossPoint.java;h=724de54bd96ce49804e56112c6a2e4869a9de759;hb=bedef06cf9b3fdd815dd8cf8925aeb159381d59d;hp=84179fad7029ca702e918ae9d81f35b7ecb58548;hpb=4d29cabdc45d68b5e5f210266dc4fbc5560dbcdd;p=Mograsim.git diff --git a/LogicUI/src/era/mi/gui/model/wires/WireCrossPoint.java b/LogicUI/src/era/mi/gui/model/wires/WireCrossPoint.java index 84179fad..724de54b 100644 --- a/LogicUI/src/era/mi/gui/model/wires/WireCrossPoint.java +++ b/LogicUI/src/era/mi/gui/model/wires/WireCrossPoint.java @@ -1,35 +1,47 @@ package era.mi.gui.model.wires; -import org.eclipse.swt.graphics.Color; - +import era.mi.gui.ColorHelper; import era.mi.gui.model.ViewModel; import era.mi.gui.model.components.GUIComponent; -import era.mi.logic.wires.Wire; +import era.mi.logic.types.BitVectorFormatter; +import era.mi.logic.wires.Wire.ReadEnd; import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; public class WireCrossPoint extends GUIComponent { - private Wire wire; + private final Pin pin; + + private ReadEnd end; + private final int logicWidth; - public WireCrossPoint(ViewModel model) + public WireCrossPoint(ViewModel model, int logicWidth) { super(model); + this.logicWidth = logicWidth; setSize(0, 0); - addPin(new Pin(this, 0, 0)); + addPin(this.pin = new Pin(this, logicWidth, 0, 0)); } @Override public void render(GeneralGC gc, Rectangle visibleRegion) { - Color oldBG = gc.getBackground(); - gc.setBackground(gc.getDevice().getSystemColor(GUIWire.getSWTColorConstantForWire(wire))); - gc.fillOval(-1, -1, 2, 2); - gc.setBackground(oldBG); + ColorHelper.executeWithDifferentBackground(gc, BitVectorFormatter.formatAsColor(end), () -> gc.fillOval(-1, -1, 2, 2)); + } + + public void setLogicModelBinding(ReadEnd end) + { + this.end = end; + end.addObserver((i, o) -> callComponentLookChangedListeners()); + } + + public int getLogicWidth() + { + return logicWidth; } - public void setLogicModelWire(Wire wire) + public Pin getPin() { - this.wire = wire; + return pin; } } \ No newline at end of file