33d38df8be30b4a29090467dccbb6672844830ca
[Mograsim.git] / LogicUI / src / era / mi / gui / wires / WireConnectionPoint.java
1 package era.mi.gui.wires;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.Collections;\r
5 import java.util.List;\r
6 \r
7 import org.eclipse.swt.graphics.Color;\r
8 \r
9 import era.mi.gui.components.BasicGUIComponent;\r
10 import era.mi.logic.wires.Wire;\r
11 import era.mi.logic.wires.Wire.WireEnd;\r
12 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
13 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
14 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
15 \r
16 public class WireConnectionPoint implements BasicGUIComponent\r
17 {\r
18         private final Wire wire;\r
19         private final List<WireEnd> wireEnds;\r
20         private final int wiresCrossing;\r
21 \r
22         public WireConnectionPoint(Wire wire, int wiresCrossing)\r
23         {\r
24                 this.wire = wire;\r
25                 List<WireEnd> wireEndsModifiable = new ArrayList<>();\r
26                 for (int i = 0; i < wiresCrossing; i++)\r
27                         wireEndsModifiable.add(wire.createReadOnlyEnd());\r
28                 wireEnds = Collections.unmodifiableList(wireEndsModifiable);\r
29                 this.wiresCrossing = wiresCrossing;\r
30         }\r
31 \r
32         @Override\r
33         public void render(GeneralGC gc)\r
34         {\r
35                 Color oldBG = gc.getBackground();\r
36                 if (wire.length == 1)\r
37                         gc.setBackground(gc.getDevice().getSystemColor(GUIWire.getSWTColorConstantForBit(wire.getValue())));\r
38                 gc.fillOval(-1, -1, 2, 2);\r
39                 gc.setBackground(oldBG);\r
40         }\r
41 \r
42         @Override\r
43         public Rectangle getBounds()\r
44         {\r
45                 return new Rectangle(0, 0, 0, 0);\r
46         }\r
47 \r
48         @Override\r
49         public int getConnectedWireEndsCount()\r
50         {\r
51                 return wiresCrossing;\r
52         }\r
53 \r
54         @Override\r
55         public WireEnd getConnectedWireEnd(int connectionIndex)\r
56         {\r
57                 return wireEnds.get(connectionIndex);\r
58         }\r
59 \r
60         @Override\r
61         public Point getWireEndConnectionPoint(int connectionIndex)\r
62         {\r
63                 return new Point(0, 0);\r
64         }\r
65 }