Class PageLayout

java.lang.Object
xyz.gmitch215.socketmc.screen.layout.PageLayout
All Implemented Interfaces:
Serializable, Layout, LayoutElement

public final class PageLayout extends Object implements Layout

Represents a layout with a header, footer, and content area. This layout is always at the top left of the screen, with isFullscreen() always true. This means that calling setWidth(int) and setHeight(int) will have no effect.

See Also:
  • Field Details

    • DEFAULT_MARGIN_HEIGHT

      public static final int DEFAULT_MARGIN_HEIGHT
      The default height for the header and footer.
      See Also:
    • CONTENT_MARGIN_TOP

      public static final int CONTENT_MARGIN_TOP
      The top margin of the content area.
      See Also:
  • Constructor Details

    • PageLayout

      public PageLayout()
      Creates a new PageLayout using the default margin height.
    • PageLayout

      public PageLayout(int marginHeight)
      Creates a new PageLayout.
      Parameters:
      marginHeight - The height of the header and footer.
    • PageLayout

      public PageLayout(int headerHeight, int footerHeight)
      Creates a new PageLayout.
      Parameters:
      headerHeight - The height of the header.
      footerHeight - The height of the footer.
  • Method Details

    • getHeaderHeight

      public int getHeaderHeight()
      Gets the height of the header.
      Returns:
      Header Height
    • setHeaderHeight

      public void setHeaderHeight(int headerHeight)
      Sets the height of the header.
      Parameters:
      headerHeight - Header Height
    • getFooterHeight

      public int getFooterHeight()
      Gets the height of the footer.
      Returns:
      Footer Height
    • setFooterHeight

      public void setFooterHeight(int footerHeight)
      Sets the height of the footer.
      Parameters:
      footerHeight - Footer Height
    • getContentHeight

      public int getContentHeight()
      Gets the height of the content area.
      Returns:
      Content Height
    • addHeaderElement

      @NotNull public <T extends LayoutElement> T addHeaderElement(@NotNull T element) throws IllegalArgumentException
      Adds an element to the header of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • addHeaderElement

      @NotNull public <T extends LayoutElement> T addHeaderElement(@NotNull T element, @NotNull @NotNull LayoutSettings settings) throws IllegalArgumentException
      Adds an element to the header of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      settings - the settings for the element
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • addHeaderElement

      @NotNull public <T extends LayoutElement> T addHeaderElement(@NotNull T element, @NotNull @NotNull Supplier<LayoutSettings> settings) throws IllegalArgumentException
      Adds an element to the header of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      settings - the generator for the element settings
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • addHeaderElement

      @NotNull public <T extends LayoutElement> T addHeaderElement(@NotNull T element, @NotNull @NotNull Consumer<LayoutSettings> settings) throws IllegalArgumentException
      Adds an element to the header of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      settings - the function for settings applied on createDefaultSettings()
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • isFullscreen

      public boolean isFullscreen()
      Description copied from interface: Layout
      Gets whether this layout is fullscreen. If true, this layout will automatically have its witdh and height set to the screen's width and height.
      Specified by:
      isFullscreen in interface Layout
      Returns:
      true if this layout is fullscreen
    • setFullscreen

      public void setFullscreen(boolean fullscreen)
      Description copied from interface: Layout
      Sets whether this layout is fullscreen. If true, this layout will automatically have its witdh and height set to the screen's width and height.
      Specified by:
      setFullscreen in interface Layout
      Parameters:
      fullscreen - true if this layout is fullscreen
    • addElement

      public <T extends LayoutElement> T addElement(@NotNull T element, @NotNull @NotNull LayoutSettings settings) throws IllegalArgumentException
      Adds an element to the contents of this PageLayout.
      Specified by:
      addElement in interface Layout
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      settings - the settings for the element
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • addFooterElement

      @NotNull public <T extends LayoutElement> T addFooterElement(@NotNull T element) throws IllegalArgumentException
      Adds an element to the footer of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • addFooterElement

      @NotNull public <T extends LayoutElement> T addFooterElement(@NotNull T element, @NotNull @NotNull LayoutSettings settings) throws IllegalArgumentException
      Adds an element to the footer of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      settings - the settings for the element
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • addFooterElement

      @NotNull public <T extends LayoutElement> T addFooterElement(@NotNull T element, @NotNull @NotNull Supplier<LayoutSettings> settings) throws IllegalArgumentException
      Adds an element to the footer of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      settings - the generator for the element settings
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • addFooterElement

      @NotNull public <T extends LayoutElement> T addFooterElement(@NotNull T element, @NotNull @NotNull Consumer<LayoutSettings> settings) throws IllegalArgumentException
      Adds an element to the footer of this PageLayout.
      Type Parameters:
      T - the type of element
      Parameters:
      element - the element to add
      settings - the function for settings applied on createDefaultSettings()
      Returns:
      the element that was added
      Throws:
      IllegalArgumentException - if the element or settings are null
    • createDefaultSettings

      @NotNull public @NotNull LayoutSettings createDefaultSettings()
      Description copied from interface: Layout
      Generates the default layout settings for this layout.
      Specified by:
      createDefaultSettings in interface Layout
      Returns:
      Default Layout Settings
    • visitChildren

      public void visitChildren(@NotNull @NotNull Consumer<LayoutElement> visitor)
      Description copied from interface: Layout
      Visits this layout and all of its children.
      Specified by:
      visitChildren in interface Layout
      Parameters:
      visitor - Element Visitor
    • arrangeElements

      public void arrangeElements()
      Description copied from interface: Layout
      Arranges the elements inside this Layout.
      Specified by:
      arrangeElements in interface Layout
    • getHeight

      public int getHeight()
      Description copied from interface: LayoutElement
      Gets the height of this object.
      Specified by:
      getHeight in interface LayoutElement
      Returns:
      the height
    • setHeight

      public void setHeight(int height)
      Description copied from interface: LayoutElement
      Sets the height of this object.
      Specified by:
      setHeight in interface LayoutElement
      Parameters:
      height - the height
    • getWidth

      public int getWidth()
      Description copied from interface: LayoutElement
      Gets the width of this object.
      Specified by:
      getWidth in interface LayoutElement
      Returns:
      the width
    • setWidth

      public void setWidth(int width)
      Description copied from interface: LayoutElement
      Sets the width of this object.
      Specified by:
      setWidth in interface LayoutElement
      Parameters:
      width - the width
    • getX

      public int getX()
      Description copied from interface: LayoutElement
      Gets the x-coordinate of this object.
      Specified by:
      getX in interface LayoutElement
      Returns:
      the x-coordinate
    • setX

      public void setX(int x)
      Description copied from interface: LayoutElement
      Sets the x-coordinate of this object.
      Specified by:
      setX in interface LayoutElement
      Parameters:
      x - the x-coordinate
    • getY

      public int getY()
      Description copied from interface: LayoutElement
      Gets the y-coordinate of this object.
      Specified by:
      getY in interface LayoutElement
      Returns:
      the y-coordinate
    • setY

      public void setY(int y)
      Description copied from interface: LayoutElement
      Sets the y-coordinate of this object.
      Specified by:
      setY in interface LayoutElement
      Parameters:
      y - the y-coordinate