X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2Fcomponents%2FBasicGUIComponent.java;fp=LogicUI%2Fsrc%2Fera%2Fmi%2Fgui%2Fcomponents%2FBasicGUIComponent.java;h=29696e13914c47976a1366436bb620722f1c7f8c;hb=d3a382377768fdb1434d5baebf73c9413e61e46f;hp=0000000000000000000000000000000000000000;hpb=0cfea6ef89dea8a797708ff685aa2ef9aefd85b9;p=Mograsim.git diff --git a/LogicUI/src/era/mi/gui/components/BasicGUIComponent.java b/LogicUI/src/era/mi/gui/components/BasicGUIComponent.java new file mode 100644 index 00000000..29696e13 --- /dev/null +++ b/LogicUI/src/era/mi/gui/components/BasicGUIComponent.java @@ -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