Restructured packages
[Mograsim.git] / LogicUI / src / era / mi / gui / components / BasicGUIComponent.java
diff --git a/LogicUI/src/era/mi/gui/components/BasicGUIComponent.java b/LogicUI/src/era/mi/gui/components/BasicGUIComponent.java
new file mode 100644 (file)
index 0000000..29696e1
--- /dev/null
@@ -0,0 +1,42 @@
+package era.mi.gui.components;
+
+import era.mi.logic.wires.WireArray;
+import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+
+public interface BasicGUIComponent
+{
+       /**
+        * Render this component to the given gc, at coordinates (0, 0).
+        */
+       public void render(GeneralGC gc);
+       /**
+        * Returns the bounds of this component.
+        * Used for calculating which component is clicked.
+        */
+       public Rectangle getBounds();
+       /**
+        * Called when this component is clicked. Relative coordinates of the click are given.
+        * Returns true if this component has to be redrawn.
+        */
+       public default boolean clicked(double x, double y)
+       {
+               return false;
+       }
+
+       //TODO this code will be replaced by code in BasicComponent.
+       /**
+        * Returns how many wire arrays are connected to this component.
+        * (Connections are static - they can't be removed and no new ones can be added)
+        */
+       public int getConnectedWireArraysCount();
+       /**
+        * Returns the n-th wire array connected to this component.
+        */
+       public WireArray getConnectedWireArray(int connectionIndex);
+       /**
+        * Returns relative coordinates where the n-th wire array is connected to this component.
+        */
+       public Point getWireArrayConnectionPoint(int connectionIndex);
+}
\ No newline at end of file