X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fcomponents%2Fgui%2FBasicGUIComponent.java;h=47479b172bba3a822d06aeedf9a85b729830b637;hb=06b63dbefeb991fdb238ff9e7913acd9503318a5;hp=5a20b26055ddd1d73ad2528b60ad2716ba73b545;hpb=a906e7bfaefc112579625d186a9fd790bbc758b3;p=Mograsim.git diff --git a/LogicUI/src/era/mi/components/gui/BasicGUIComponent.java b/LogicUI/src/era/mi/components/gui/BasicGUIComponent.java index 5a20b260..47479b17 100644 --- a/LogicUI/src/era/mi/components/gui/BasicGUIComponent.java +++ b/LogicUI/src/era/mi/components/gui/BasicGUIComponent.java @@ -1,8 +1,42 @@ package era.mi.components.gui; +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