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