Class WLayout

java.lang.Object
eu.webtoolkit.jwt.WObject
eu.webtoolkit.jwt.WLayout
All Implemented Interfaces:
WLayoutItem
Direct Known Subclasses:
WBorderLayout, WBoxLayout, WFitLayout, WGridLayout

public abstract class WLayout extends WObject implements WLayoutItem
An abstract base class for layout managers.

This class is the abstract base class for any layout manager. A layout manager is associated with a container widget, and manages the layout of children inside the whole space available to the container widget.

The implementation of the layout manager depends on the container widget to which it is set, and is therefore deferred to WLayoutImpl.

Note: When applying a layout manager to a WContainerWidget, you may not define any padding for the container widget. Instead, use setContentsMargins().

  • Constructor Details

    • WLayout

      protected WLayout()
      Create a layout.
  • Method Details

    • setPreferredImplementation

      public void setPreferredImplementation(LayoutImplementation implementation)
      Set the preferred layout implementation.

      The default implementation for box layouts and fit layouts is LayoutImplementation.Flex (if supported by the browser). Otherwise a fallback to LayoutImplementation.JavaScript is used.

      See Also:
    • setDefaultImplementation

      public static void setDefaultImplementation(LayoutImplementation implementation)
      Sets the preferred layout implementation globally.

      The default implementation for box layouts and fit layouts is LayoutImplementation.Flex (if supported by the browser). Otherwise a fallback to LayoutImplementation.JavaScript is used.

      Because there are cases where LayoutImplementation.Flex does not work properly, this method can be used to set the global preferred implementation to instead. Since this is a system-wide setting, and not a per-session setting, you should call this function before any session is created, e.g. in main() before calling WRun(). setPreferredImplementation()

    • addItem

      public abstract void addItem(WLayoutItem item)
      Adds a layout item.

      The item may be a widget or nested layout.

      How the item is layed out with respect to siblings is implementation specific to the layout manager. In some cases, a layout manager will overload this method with extra arguments that specify layout options.

      See Also:
    • addWidget

      public void addWidget(WWidget w)
      Adds the given widget to the layout.

      This method wraps the widget in a WWidgetItem and calls addItem(WLayoutItem *).

      How the widget is layed out with respect to siblings is implementation specific to the layout manager. In some cases, a layout manager will overload this method with extra arguments that specify layout options.

      See Also:
    • removeItem

      public abstract WLayoutItem removeItem(WLayoutItem item)
      Removes a layout item (widget or nested layout).

      See Also:
    • removeWidget

      public WWidget removeWidget(WWidget w)
      Removes the given widget from the layout.

      This method finds the corresponding WWidgetItem and calls removeItem(), and returns the widget.

      See Also:
    • getCount

      public abstract int getCount()
      Returns the number of items in this layout.

      This may be a theoretical number, which is greater than the actual number of items. It can be used to iterate over the items in the layout, in conjunction with getItemAt().

    • getItemAt

      public abstract WLayoutItem getItemAt(int index)
      Returns the layout item at a specific index.

      If there is no item at the index, null is returned.

      See Also:
    • indexOf

      public int indexOf(WLayoutItem item)
      Returns the index of a given item.

      The default implementation loops over all items, and returns the index for which itemAt(index) equals item.

      See Also:
    • findWidgetItem

      public WWidgetItem findWidgetItem(WWidget widget)
      Finds the widget item associated with the given widget.
      Specified by:
      findWidgetItem in interface WLayoutItem
    • getWidget

      public WWidget getWidget()
      Description copied from interface: WLayoutItem
      Returns the widget that is held by this WLayoutItem.

      This implements a type-safe upcasting mechanism to a WWidgetItem.

      Specified by:
      getWidget in interface WLayoutItem
    • getLayout

      public WLayout getLayout()
      Description copied from interface: WLayoutItem
      Returns the layout that implements this WLayoutItem.

      This implements a type-safe upcasting mechanism to a WLayout.

      Specified by:
      getLayout in interface WLayoutItem
    • getParentLayout

      public WLayout getParentLayout()
      Description copied from interface: WLayoutItem
      Returns the layout in which this item is contained.
      Specified by:
      getParentLayout in interface WLayoutItem
    • getParentWidget

      public WWidget getParentWidget()
      Specified by:
      getParentWidget in interface WLayoutItem
    • getImpl

      public WLayoutImpl getImpl()
      Specified by:
      getImpl in interface WLayoutItem
    • setContentsMargins

      public void setContentsMargins(int left, int top, int right, int bottom)
      Set contents margins (in pixels).

      The default contents margins are 9 pixels in all directions.

      Note: Only used when the layout manager is applied to a WContainerWidget.

      See Also:
    • getContentsMargin

      public int getContentsMargin(Side side)
      Returns a contents margin.

      See Also:
    • isImplementationIsFlexLayout

      public boolean isImplementationIsFlexLayout()
    • update

      protected void update(WLayoutItem item)
      Update the layout.

      Must be called whenever some properties of the layout have changed.

    • update

      protected final void update()
      Update the layout.

      Calls update((WLayoutItem)null)

    • itemAdded

      protected void itemAdded(WLayoutItem item)
    • itemRemoved

      protected void itemRemoved(WLayoutItem item)
    • setParentWidget

      public void setParentWidget(WWidget parent)
      Description copied from interface: WLayoutItem
      Internal method.
      Specified by:
      setParentWidget in interface WLayoutItem
    • setImpl

      protected void setImpl(WLayoutImpl impl)
    • getImplementation

      protected LayoutImplementation getImplementation()
    • getPreferredImplementation

      protected LayoutImplementation getPreferredImplementation()
    • updateImplementation

      protected void updateImplementation()
    • setParentLayout

      public void setParentLayout(WLayout layout)
      Description copied from interface: WLayoutItem
      Internal method.
      Specified by:
      setParentLayout in interface WLayoutItem