X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2Fcomponents%2Fatomic%2FGUISplitter.java;h=0ca71c7790082af27d7f2c68298ea7ccddbf37c7;hb=18ee8ea8e2c7979aab2bd96f1651c8f3f33d7f63;hp=6283c507770e79ddd7bc6f52c8abae9ffcc68701;hpb=ee907559f02192495043a97fc401cb4abad77137;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java index 6283c507..0ca71c77 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java @@ -26,16 +26,22 @@ public class GUISplitter extends GUIComponent private static final double heightPerPin = 10; public final int logicWidth; + private final Pin inputPin; private ReadEnd inputEnd; private final ReadEnd[] outputEnds; + public GUISplitter(ViewModelModifiable model, int logicWidth) + { + this(model, logicWidth, null); + } + public GUISplitter(ViewModelModifiable model, int logicWidth, String name) { super(model, name); this.logicWidth = logicWidth; setSize(width, logicWidth * heightPerPin); - addPin(new Pin(this, "I", logicWidth, 0, (logicWidth - 1) * heightPerPin / 2)); + addPin(this.inputPin = new Pin(this, "I", logicWidth, 0, (logicWidth - 1) * heightPerPin / 2)); double outputHeight = 0; for (int i = 0; i < logicWidth; i++, outputHeight += 10) addPin(new Pin(this, "O" + i, 1, width, outputHeight)); @@ -53,13 +59,6 @@ public class GUISplitter extends GUIComponent gc.setForeground(ColorManager.current().toColor(c)); double inLineY = posY + (logicWidth - 1) * heightPerPin / 2; gc.drawLine(posX, inLineY, posX + width / 2, inLineY); - gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground")); - int oldLineCap = gc.getLineCap(); - int lineJoin = gc.getLineJoin(); - // TODO find better "replacement" for JOIN_BEVEL - gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE); - gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1)); - gc.setLineCap(oldLineCap); double outputHeight = posY; for (int i = 0; i < logicWidth; i++, outputHeight += 10) { @@ -68,6 +67,13 @@ public class GUISplitter extends GUIComponent gc.setForeground(ColorManager.current().toColor(c)); gc.drawLine(posX + width / 2, outputHeight, posX + width, outputHeight); } + gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground")); + int oldLineCap = gc.getLineCap(); + int lineJoin = gc.getLineJoin(); + // TODO find better "replacement" for JOIN_BEVEL + gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE); + gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1)); + gc.setLineCap(oldLineCap); } @Override @@ -82,6 +88,11 @@ public class GUISplitter extends GUIComponent System.arraycopy(outputEnds, 0, this.outputEnds, 0, logicWidth); } + public Pin getInputPin() + { + return inputPin; + } + static { ViewLogicModelAdapter.addComponentAdapter(new SplitterAdapter());