package net.tortuga.gui.widgets; import com.porcupine.coord.Coord; import com.porcupine.coord.Rect; /** * GUI widget interface * * @author Ondřej Hruška (MightyPork) */ public interface IWidget { /** * set widget required margins in layout. * * @param left * @param top * @param right * @param bottom * @return this */ public Widget setMargins(int left, int top, int right, int bottom); /** * set widget required margins in layout. * * @param left * @param right * @return this */ public Widget setMarginsH(int left, int right); /** * set widget required margins in layout. * * @param top * @param bottom * @return this */ public Widget setMarginsV(int top, int bottom); /** * Set text * * @param text text to set * @return this */ public Widget setText(String text); /** * Get display text * * @return text */ public String getText(); /** * Set widget id * * @param id * @return this */ public Widget setId(int id); /** * get id * * @return id */ public int getId(); /** * Enable widget (eg. button) * * @param state * @return this */ public Widget setEnabled(boolean state); /** * @return is enabled */ public boolean isEnabled(); /** * Set widget visible * * @param state * @return this */ public Widget setVisible(boolean state); /** * @return is visible */ public boolean isVisible(); /** * Set minimal size in layout * * @param size size to set * @return this */ public IWidget setMinSize(Coord size); /** * Set minimal size in layout * * @param w width * @param h height * @return this */ public IWidget setMinSize(int w, int h); /** * Get minimal size (set by setMinSize) * * @return size width,height */ public Coord getMinSize(); /** * Get current size (in fact a size of getRect()) * * @return the size width/height */ public Coord getSize(); /** * Set bounding rectangle.
* The margin is excluded from this area. * * @param rect * @return this */ public Widget setRect(Rect rect); /** * Get bounding rectangle * * @return bounding rectangle */ public Rect getRect(); /** * Get minimal widget margin * * @return margin (left,right,up,down) */ public LeftTopRightBottom getMargins(); /** * Check if mouse is over. * * @param mouse mouse coord * @return is over */ public boolean isMouseOver(Coord mouse); /** * Do render as 2D * * @param mouse current mouse position, for hover effects */ public void render(Coord mouse); /** * On focus gained */ public void onFocus(); /** * On focus lost */ public void onBlur(); /** * Check if this widget has focus * * @return has focus */ public boolean hasFocus(); /** * Handle click (do effects etc.) * * @param pos mouse position * @param button mouse button * @param down true if the button was pressed * @return this if event consumed */ public Widget onMouseButton(Coord pos, int button, boolean down); /** * Handle scroll event * * @param pos mouse position * @param scroll scroll (-1,0,1) * @return this if event consumed */ public Widget onScroll(Coord pos, int scroll); /** * Key pressed * * @param key key index * @param chr character typed * @return this if event consumed */ public Widget onKey(int key, char chr, boolean down); /** * Check if can add child * * @return can add child to this widget? */ public boolean canAddChild(); /** * Add child * * @param child */ public void add(Widget child); /** * Remove child widget * * @param child removed child */ public void removeChild(Widget child); /** * remove all childs */ public void removeAll(); /** * calculate size based on contents and childs */ public void calcChildSizes(); /** * set min height * * @param h * @return this */ public IWidget setMinHeight(int h); /** * set min width * * @param w * @return this */ public IWidget setMinWidth(int w); /** * Get gui container * * @return root */ public GuiRoot getGuiRoot(); /** * Set gui container * * @param guiContainer * @return */ public IWidget setGuiRoot(GuiRoot guiContainer); }