Made LogicUI compatible with ReadEnd and ReadWriteEnd
[Mograsim.git] / LogicUI / src / era / mi / gui / components / BasicGUIComponent.java
1 package era.mi.gui.components;\r
2 \r
3 import era.mi.logic.wires.Wire.ReadEnd;\r
4 import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
5 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
6 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
7 \r
8 public interface BasicGUIComponent\r
9 {\r
10         /**\r
11          * Render this component to the given gc, at coordinates (0, 0).\r
12          */\r
13         public void render(GeneralGC gc);\r
14 \r
15         /**\r
16          * Returns the bounds of this component. Used for calculating which component is clicked.\r
17          */\r
18         public Rectangle getBounds();\r
19 \r
20         /**\r
21          * Called when this component is clicked. Relative coordinates of the click are given. Returns true if this component has to be redrawn.\r
22          */\r
23         public default boolean clicked(double x, double y)\r
24         {\r
25                 return false;\r
26         }\r
27 \r
28         // TODO this code will be replaced by code in BasicComponent.\r
29         /**\r
30          * Returns how many wire arrays are connected to this component. (Connections are static - they can't be removed and no new ones can be\r
31          * added)\r
32          */\r
33         public int getConnectedWireEndsCount();\r
34 \r
35         /**\r
36          * Returns the n-th wire array connected to this component.\r
37          */\r
38         public ReadEnd getConnectedWireEnd(int connectionIndex);\r
39 \r
40         /**\r
41          * Returns relative coordinates where the n-th wire array is connected to this component.\r
42          */\r
43         public Point getWireEndConnectionPoint(int connectionIndex);\r
44 }