Interface ComponentLayout

    • Method Detail

      • getComponents

        @Nonnull
        java.util.List<Component> getComponents()
        List representation of this component layout.
        This list is modifiable. Note that empty action rows are not supported.
        Returns:
        List of components in this action row
      • getButtons

        @Nonnull
        java.util.List<Button> getButtons()
        List of buttons in this component layout.
        Returns:
        Immutable List of Buttons
      • isEmpty

        default boolean isEmpty()
        Check whether this layout is empty.
        Identical to getComponents().isEmpty()
        Returns:
        True, if this layout has no components
      • isValid

        default boolean isValid()
        Check whether this is a valid layout configuration.
        This checks that there is at least one component in this layout and it does not violate Component.getMaxPerRow().
        Returns:
        True, if this layout is valid
      • updateComponent

        @Nullable
        default Component updateComponent​(@Nonnull
                                          java.lang.String id,
                                          @Nullable
                                          Component newComponent)
        Find and replace a component in this layout.
        This will locate and replace the existing component with the specified ID. If you provide null it will be removed instead.
        Parameters:
        id - The custom id of this component, can also be a URL for a Button with ButtonStyle.LINK
        newComponent - The new component or null to remove it
        Returns:
        The old Component that was replaced or removed
        Throws:
        java.lang.IllegalArgumentException - If the provided id is null
      • updateComponent

        static boolean updateComponent​(@Nonnull
                                       java.util.List<? extends ComponentLayout> layouts,
                                       @Nonnull
                                       java.lang.String id,
                                       @Nullable
                                       Component newComponent)
        Find and replace a component in this list of layouts.
        This will locate and replace the existing component with the specified ID. If you provide null it will be removed instead.

        If one of the layouts is empty after removing the component, it will be removed from the list. This is an inplace operation and modifies the provided list directly.

        Parameters:
        layouts - The layouts to modify
        id - The custom id of this component, can also be a URL for a Button with ButtonStyle.LINK
        newComponent - The new component or null to remove it
        Returns:
        True, if any of the layouts was modified
        Throws:
        java.lang.UnsupportedOperationException - If the list cannot be modified
        java.lang.IllegalArgumentException - If the provided id or list is null or the replace operation results in an invalid layout