Class Layout

All Implemented Interfaces:
HasAttachHandlers, HasHandlers, EventListener, HasVisibility, IsWidget, LogicalStructure, HasClearHandlers, HasClickHandlers, HasDoubleClickHandlers, HasDragMoveHandlers, HasDragRepositionMoveHandlers, HasDragRepositionStartHandlers, HasDragRepositionStopHandlers, HasDragResizeMoveHandlers, HasDragResizeStartHandlers, HasDragResizeStopHandlers, HasDragStartHandlers, HasDragStopHandlers, HasDropHandlers, HasDropMoveHandlers, HasDropOutHandlers, HasDropOverHandlers, HasFocusChangedHandlers, HasHoverHandlers, HasHoverHiddenHandlers, HasKeyDownHandlers, HasKeyPressHandlers, HasMouseDownHandlers, HasMouseMoveHandlers, HasMouseOutHandlers, HasMouseOverHandlers, HasMouseStillDownHandlers, HasMouseUpHandlers, HasMouseWheelHandlers, HasMovedHandlers, HasParentMovedHandlers, HasResizedHandlers, HasRightMouseDownHandlers, HasRuleContextChangedHandlers, HasScrolledHandlers, HasShowContextMenuHandlers, HasVisibilityChangedHandlers, HasMembersChangedHandlers
Direct Known Subclasses:
AdaptiveMenu, ColumnTree, Deck, FilterBuilder, HLayout, HStack, ListPropertiesPane, MultiGroupPanel, MultiSortPanel, PortalLayout, Shuttle, SplitPane, Toolbar, ToolStrip, VLayout, VStack

public class Layout extends Canvas implements HasMembersChangedHandlers
Arranges a set of "member" Canvases in horizontal or vertical stacks, applying a layout policy to determine member heights and widths.

A Layout manages a set of "member" Canvases provided as members. Layouts can have both "members", whose position and size are managed by the Layout, and normal Canvas children, which manage their own position and size.

Rather than using the Layout class directly, use the HLayout, VLayout, HStack and VStack classes, which are subclasses of Layout preconfigured for horizontal or vertical stacking, with the "fill" (VLayout) or "none" (VStack) policies already set.

Layouts and Stacks may be nested to create arbitrarily complex layouts.

Since Layouts can be either horizontally or vertically oriented, throughout the documentation of Layout and it's subclasses, the term "length" refers to the axis of stacking, and the term "breadth" refers to the other axis. Hence, "length" means height in the context of a VLayout or VStack, but means width in the context of an HLayout or HStack.

To show a resizer bar after (to the right or bottom of) a layout member, set showResizeBar to true on that member component (not on the HLayout or VLayout). Resizer bars override membersMargin spacing.

Like other Canvas subclasses, Layout and Stack components may have % width and height values. To create a dynamically-resizing layout that occupies the entire page (or entire parent component), set width and height to "100%".

See Also:
  • Constructor Details

  • Method Details

    • getOrCreateRef

      public static Layout getOrCreateRef(JavaScriptObject jsObj)
    • changeAutoChildDefaults

      public static void changeAutoChildDefaults(String autoChildName, Canvas defaults)
      Changes the defaults for Canvas AutoChildren named autoChildName.
      Parameters:
      autoChildName - name of an AutoChild to customize the defaults for.
      defaults - Canvas defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties. For usage tips on this param, see SGWTProperties.
      See Also:
    • changeAutoChildDefaults

      public static void changeAutoChildDefaults(String autoChildName, FormItem defaults)
      Changes the defaults for FormItem AutoChildren named autoChildName.
      Parameters:
      autoChildName - name of an AutoChild to customize the defaults for.
      defaults - FormItem defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties. For usage tips on this param, see SGWTProperties.
      See Also:
    • create

      protected JavaScriptObject create()
      Overrides:
      create in class Canvas
    • setAnimateMembers

      public Layout setAnimateMembers(Boolean animateMembers)
      If true when members are added / removed, they should be animated as they are shown or hidden in position
      Parameters:
      animateMembers - New animateMembers value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getAnimateMembers

      public Boolean getAnimateMembers()
      If true when members are added / removed, they should be animated as they are shown or hidden in position
      Returns:
      Current animateMembers value. Default value is null
      See Also:
    • setAnimateMemberTime

      public Layout setAnimateMemberTime(Integer animateMemberTime)
      If specified this is the duration of show/hide animations when members are being shown or hidden due to being added / removed from this layout.

      Note : This is an advanced setting

      Parameters:
      animateMemberTime - New animateMemberTime value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getAnimateMemberTime

      public Integer getAnimateMemberTime()
      If specified this is the duration of show/hide animations when members are being shown or hidden due to being added / removed from this layout.
      Returns:
      Current animateMemberTime value. Default value is null
    • setCanDropComponents

      public Layout setCanDropComponents(Boolean canDropComponents) throws IllegalStateException
      Layouts provide a default implementation of a drag and drop interaction. If you set canAcceptDrop:true and canDropComponents:true on a Layout, when a droppable Canvas (canDrop:true is dragged over the layout, it will show a dropLine (a simple insertion line) at the drop location.

      When the drop occurs, the dragTarget (obtained using EventHandler.getDragTarget()) is added as a member of this layout at the location shown by the dropLine (calculated by getDropPosition()). This default behavior allows either members or external components that have Canvas.canDragReposition (or Canvas.canDrag) and Canvas.canDrop set to true to be added to or reordered within the Layout.

      You can control the thickness of the dropLine via dropLineThickness and you can customize the style using css styling in the skin file (look for .layoutDropLine in skin_styles.css for your skin).

      If you want to dynamically create a component to be added to the Layout in response to a drop event you can do so as follows:

         final VLayout vLayout = new VLayout();
         //...various layout properties...
         vLayout.setCanDropComponents(true);
         vLayout.addDropHandler(new DropHandler() {
             @Override
             public void onDrop(DropEvent event) {
                 // create the new component 
                 Canvas newMember = new Canvas();
                 // add to the layout at the current drop position  
                 // (the dropLine will be showing here)
                 vLayout.addMember(newMember, vLayout.getDropPosition());
                 // hide the dropLine that was automatically shown 
                 // by builtin SmartGWT methods
                 vLayout.hideDropLine();
             }
         });
        
      If you want to completely suppress the builtin drag and drop logic, but still receive drag and drop events for your own custom implementation, set Canvas.canAcceptDrop to true and canDropComponents to false on your Layout.

      Note : This is an advanced setting

      Parameters:
      canDropComponents - New canDropComponents value. Default value is true
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • getCanDropComponents

      public Boolean getCanDropComponents()
      Layouts provide a default implementation of a drag and drop interaction. If you set canAcceptDrop:true and canDropComponents:true on a Layout, when a droppable Canvas (canDrop:true is dragged over the layout, it will show a dropLine (a simple insertion line) at the drop location.

      When the drop occurs, the dragTarget (obtained using EventHandler.getDragTarget()) is added as a member of this layout at the location shown by the dropLine (calculated by getDropPosition()). This default behavior allows either members or external components that have Canvas.canDragReposition (or Canvas.canDrag) and Canvas.canDrop set to true to be added to or reordered within the Layout.

      You can control the thickness of the dropLine via dropLineThickness and you can customize the style using css styling in the skin file (look for .layoutDropLine in skin_styles.css for your skin).

      If you want to dynamically create a component to be added to the Layout in response to a drop event you can do so as follows:

         final VLayout vLayout = new VLayout();
         //...various layout properties...
         vLayout.setCanDropComponents(true);
         vLayout.addDropHandler(new DropHandler() {
             @Override
             public void onDrop(DropEvent event) {
                 // create the new component 
                 Canvas newMember = new Canvas();
                 // add to the layout at the current drop position  
                 // (the dropLine will be showing here)
                 vLayout.addMember(newMember, vLayout.getDropPosition());
                 // hide the dropLine that was automatically shown 
                 // by builtin SmartGWT methods
                 vLayout.hideDropLine();
             }
         });
        
      If you want to completely suppress the builtin drag and drop logic, but still receive drag and drop events for your own custom implementation, set Canvas.canAcceptDrop to true and canDropComponents to false on your Layout.
      Returns:
      Current canDropComponents value. Default value is true
      See Also:
    • setDefaultResizeBars

      public Layout setDefaultResizeBars(LayoutResizeBarPolicy defaultResizeBars)
      Policy for whether resize bars are shown on members by default. Note that this setting changes the effect of Canvas.showResizeBar for members of this layout.
      Parameters:
      defaultResizeBars - New defaultResizeBars value. Default value is "marked"
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getDefaultResizeBars

      public LayoutResizeBarPolicy getDefaultResizeBars()
      Policy for whether resize bars are shown on members by default. Note that this setting changes the effect of Canvas.showResizeBar for members of this layout.
      Returns:
      Current defaultResizeBars value. Default value is "marked"
      See Also:
    • getDropLine

      public Canvas getDropLine() throws IllegalStateException
      Line showed to mark the drop position when components are being dragged onto this Layout. A simple Canvas typically styled via CSS. The default dropLine.styleName is "layoutDropLine".

      This component is an AutoChild named "dropLine". For an overview of how to use and configure AutoChildren, see Using AutoChildren.

      Returns:
      Current dropLine value. Default value is null
      Throws:
      IllegalStateException - if this widget has not yet been rendered.
      See Also:
    • setDropLineThickness

      public Layout setDropLineThickness(int dropLineThickness) throws IllegalStateException
      Thickness, in pixels of the dropLine shown during drag and drop when canDropComponents is set to true. See the discussion in Layout for more info.

      Note : This is an advanced setting

      Parameters:
      dropLineThickness - New dropLineThickness value. Default value is 2
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • getDropLineThickness

      public int getDropLineThickness()
      Thickness, in pixels of the dropLine shown during drag and drop when canDropComponents is set to true. See the discussion in Layout for more info.
      Returns:
      Current dropLineThickness value. Default value is 2
      See Also:
    • setEditProxyConstructor

      public Layout setEditProxyConstructor(String editProxyConstructor) throws IllegalStateException
      Default class used to construct the EditProxy for this component when the component is first placed into edit mode.
      Overrides:
      setEditProxyConstructor in class Canvas
      Parameters:
      editProxyConstructor - New editProxyConstructor value. Default value is "LayoutEditProxy"
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • getEditProxyConstructor

      public String getEditProxyConstructor()
      Default class used to construct the EditProxy for this component when the component is first placed into edit mode.
      Overrides:
      getEditProxyConstructor in class Canvas
      Returns:
      Current editProxyConstructor value. Default value is "LayoutEditProxy"
      See Also:
    • setEnforcePolicy

      public Layout setEnforcePolicy(Boolean enforcePolicy)
      Whether the layout policy is continuously enforced as new members are added or removed and as members are resized.

      This setting implies that any member that resizes larger, or any added member, will take space from other members in order to allow the overall layout to stay the same size.

      Note : This is an advanced setting

      Parameters:
      enforcePolicy - New enforcePolicy value. Default value is true
      Returns:
      Layout instance, for chaining setter calls
    • getEnforcePolicy

      public Boolean getEnforcePolicy()
      Whether the layout policy is continuously enforced as new members are added or removed and as members are resized.

      This setting implies that any member that resizes larger, or any added member, will take space from other members in order to allow the overall layout to stay the same size.

      Returns:
      Current enforcePolicy value. Default value is true
    • setHPolicy

      public Layout setHPolicy(LayoutPolicy hPolicy)
      Sizing policy applied to members on horizontal axis

      Note : This is an advanced setting

      Parameters:
      hPolicy - New hPolicy value. Default value is "fill"
      Returns:
      Layout instance, for chaining setter calls
    • getHPolicy

      public LayoutPolicy getHPolicy()
      Sizing policy applied to members on horizontal axis
      Returns:
      Current hPolicy value. Default value is "fill"
    • setLayoutBottomMargin

      public Layout setLayoutBottomMargin(Integer layoutBottomMargin)
      Space outside of all members, on the bottom side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Parameters:
      layoutBottomMargin - New layoutBottomMargin value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLayoutBottomMargin

      public Integer getLayoutBottomMargin()
      Space outside of all members, on the bottom side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Returns:
      Current layoutBottomMargin value. Default value is null
    • setLayoutEndMargin

      public Layout setLayoutEndMargin(Integer layoutEndMargin)
      Equivalent to layoutRightMargin for a horizontal layout, or layoutBottomMargin for a vertical layout.

      If both layoutEndMargin and the more specific properties (right/bottom margin) are both set, the more specific properties win.

      Parameters:
      layoutEndMargin - New layoutEndMargin value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLayoutEndMargin

      public Integer getLayoutEndMargin()
      Equivalent to layoutRightMargin for a horizontal layout, or layoutBottomMargin for a vertical layout.

      If both layoutEndMargin and the more specific properties (right/bottom margin) are both set, the more specific properties win.

      Returns:
      Current layoutEndMargin value. Default value is null
    • setLayoutLeftMargin

      public Layout setLayoutLeftMargin(Integer layoutLeftMargin)
      Space outside of all members, on the left-hand side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Parameters:
      layoutLeftMargin - New layoutLeftMargin value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLayoutLeftMargin

      public Integer getLayoutLeftMargin()
      Space outside of all members, on the left-hand side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Returns:
      Current layoutLeftMargin value. Default value is null
    • setLayoutMargin

      public Layout setLayoutMargin(Integer layoutMargin)
      Space outside of all members. This attribute, along with layoutLeftMargin and related properties do not have a true setter method. If this method is called after the layout instance has been created, it will force a reflow of the layout and pick up changes to all of the layout*Margin properties.
      Parameters:
      layoutMargin - New layoutMargin value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getLayoutMargin

      public Integer getLayoutMargin()
      Space outside of all members. This attribute, along with layoutLeftMargin and related properties do not have a true setter method. If this method is called after the layout instance has been created, it will force a reflow of the layout and pick up changes to all of the layout*Margin properties.
      Returns:
      Current layoutMargin value. Default value is null
      See Also:
    • setLayoutRightMargin

      public Layout setLayoutRightMargin(Integer layoutRightMargin)
      Space outside of all members, on the right-hand side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Parameters:
      layoutRightMargin - New layoutRightMargin value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLayoutRightMargin

      public Integer getLayoutRightMargin()
      Space outside of all members, on the right-hand side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Returns:
      Current layoutRightMargin value. Default value is null
    • setLayoutStartMargin

      public Layout setLayoutStartMargin(Integer layoutStartMargin)
      Equivalent to layoutLeftMargin for a horizontal layout, or layoutTopMargin for a vertical layout.

      If both layoutStartMargin and the more specific properties (top/left margin) are both set, the more specific properties win.

      Parameters:
      layoutStartMargin - New layoutStartMargin value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLayoutStartMargin

      public Integer getLayoutStartMargin()
      Equivalent to layoutLeftMargin for a horizontal layout, or layoutTopMargin for a vertical layout.

      If both layoutStartMargin and the more specific properties (top/left margin) are both set, the more specific properties win.

      Returns:
      Current layoutStartMargin value. Default value is null
    • setLayoutTopMargin

      public Layout setLayoutTopMargin(Integer layoutTopMargin)
      Space outside of all members, on the top side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Parameters:
      layoutTopMargin - New layoutTopMargin value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLayoutTopMargin

      public Integer getLayoutTopMargin()
      Space outside of all members, on the top side. Defaults to layoutMargin.

      Requires a manual call to setLayoutMargin() if changed on the fly.

      Returns:
      Current layoutTopMargin value. Default value is null
    • setLeaveScrollbarGap

      public Layout setLeaveScrollbarGap(Boolean leaveScrollbarGap) throws IllegalStateException
      Whether to leave a gap for a vertical scrollbar even when one is not actually present.

      This setting avoids the layout resizing all members when the vertical scrollbar is introduced or removed, which can avoid unnecessary screen shifting and improve performance.

      Parameters:
      leaveScrollbarGap - New leaveScrollbarGap value. Default value is false
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
    • getLeaveScrollbarGap

      public Boolean getLeaveScrollbarGap()
      Whether to leave a gap for a vertical scrollbar even when one is not actually present.

      This setting avoids the layout resizing all members when the vertical scrollbar is introduced or removed, which can avoid unnecessary screen shifting and improve performance.

      Returns:
      Current leaveScrollbarGap value. Default value is false
    • setLocateMembersBy

      public Layout setLocateMembersBy(LocatorStrategy locateMembersBy)
      Part of the AutomatedTesting system, strategy to use when generated locators for members from within this Layout's members array.

      Note : This is an advanced setting

      Parameters:
      locateMembersBy - New locateMembersBy value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLocateMembersBy

      public LocatorStrategy getLocateMembersBy()
      Part of the AutomatedTesting system, strategy to use when generated locators for members from within this Layout's members array.
      Returns:
      Current locateMembersBy value. Default value is null
    • setLocateMembersType

      public Layout setLocateMembersType(LocatorTypeStrategy locateMembersType)
      LocatorTypeStrategy to use when finding members within this layout.

      Note : This is an advanced setting

      Parameters:
      locateMembersType - New locateMembersType value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getLocateMembersType

      public LocatorTypeStrategy getLocateMembersType()
      LocatorTypeStrategy to use when finding members within this layout.
      Returns:
      Current locateMembersType value. Default value is null
    • setManagePercentBreadth

      public Layout setManagePercentBreadth(Boolean managePercentBreadth) throws IllegalStateException
      If set, a Layout with breadthPolicy:"fill" will specially interpret a percentage breadth on a member as a percentage of available space excluding the layoutMargin. If false, percentages work exactly as for a non-member, with layoutMargins, if any, ignored.
      Parameters:
      managePercentBreadth - New managePercentBreadth value. Default value is true
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
    • getManagePercentBreadth

      public Boolean getManagePercentBreadth()
      If set, a Layout with breadthPolicy:"fill" will specially interpret a percentage breadth on a member as a percentage of available space excluding the layoutMargin. If false, percentages work exactly as for a non-member, with layoutMargins, if any, ignored.
      Returns:
      Current managePercentBreadth value. Default value is true
    • setMemberOverlap

      public Layout setMemberOverlap(int memberOverlap) throws IllegalStateException
      Number of pixels by which each member should overlap the preceding member, used for creating an "stack of cards" appearance for the members of a Layout.

      memberOverlap can be used in conjunction with stackZIndex to create a particular visual stacking order.

      Note that overlap of individual members can be accomplished with a negative setting for Canvas.extraSpace.

      Parameters:
      memberOverlap - New memberOverlap value. Default value is 0
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • getMemberOverlap

      public int getMemberOverlap()
      Number of pixels by which each member should overlap the preceding member, used for creating an "stack of cards" appearance for the members of a Layout.

      memberOverlap can be used in conjunction with stackZIndex to create a particular visual stacking order.

      Note that overlap of individual members can be accomplished with a negative setting for Canvas.extraSpace.

      Returns:
      Current memberOverlap value. Default value is 0
      See Also:
    • setMembers

      public Layout setMembers(Canvas... members)
      An array of canvases that will be contained within this layout. You can set the following properties on these canvases (in addition to the standard component properties):
      • layoutAlign -- specifies the member's alignment along the breadth axis; valid values are "top", "center" and "bottom" for a horizontal layout and "left", "center" and "right" for a vertical layout (see defaultLayoutAlign for default implementation.)
      • showResizeBar -- set to true to show a resize bar (default is false)
      Height and width settings found on members are interpreted by the Layout according to the layout policy.

      Note that it is valid to have null slots in the provided members Array, and the Layout will ignore those slots. This can be useful to keep code compact, for example, when constructing the members Array, you might use an expression that either returns a component or null depending on whether the component should be present. If the expression returns null, the null slot will be ignored by the Layout.

      If this method is called after the component has been drawn/initialized: Display a new set of members in this layout. Equivalent to calling removeMembers() then addMembers(). Note that the new members may include members already present, in which case they will be reordered / integrated with any other new members passed into this method.

      Parameters:
      members - New members value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getMembers

      public Canvas[] getMembers()
      An array of canvases that will be contained within this layout. You can set the following properties on these canvases (in addition to the standard component properties):
      • layoutAlign -- specifies the member's alignment along the breadth axis; valid values are "top", "center" and "bottom" for a horizontal layout and "left", "center" and "right" for a vertical layout (see defaultLayoutAlign for default implementation.)
      • showResizeBar -- set to true to show a resize bar (default is false)
      Height and width settings found on members are interpreted by the Layout according to the layout policy.

      Note that it is valid to have null slots in the provided members Array, and the Layout will ignore those slots. This can be useful to keep code compact, for example, when constructing the members Array, you might use an expression that either returns a component or null depending on whether the component should be present. If the expression returns null, the null slot will be ignored by the Layout.

      Returns:
      Get the Array of members. Default value is null
    • setMembersMargin

      public Layout setMembersMargin(int membersMargin)
      Space between each member of the layout.

      Requires a manual call to reflow() if changed on the fly.

      Parameters:
      membersMargin - New membersMargin value. Default value is 0
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getMembersMargin

      public int getMembersMargin()
      Space between each member of the layout.

      Requires a manual call to reflow() if changed on the fly.

      Returns:
      Current membersMargin value. Default value is 0
      See Also:
    • setMinBreadthMember

      public Layout setMinBreadthMember(String minBreadthMember)
      Set this property to cause the layout to assign the breadths of other members as if the available breadth is actually wide enough to accommodate the minBreadthMember (even though the Layout might not actually be that wide, and may overflow its assigned size along the breadth axis due to the breadth of the minBreadthMember.

      Without this property set, members of a layout aren't ever expanded in breadth (by the layout) to fit an overflow of the layout along the breadth axis. Setting this property will make sure all members (other than the one specified) get expanded to fill the full visual breadth of the layout (assuming they are configured to use 100% layout breadth).

      Note : This is an advanced setting

      Parameters:
      minBreadthMember - New minBreadthMember value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • setMinBreadthMember

      public Layout setMinBreadthMember(int minBreadthMember)
      Set this property to cause the layout to assign the breadths of other members as if the available breadth is actually wide enough to accommodate the minBreadthMember (even though the Layout might not actually be that wide, and may overflow its assigned size along the breadth axis due to the breadth of the minBreadthMember.

      Without this property set, members of a layout aren't ever expanded in breadth (by the layout) to fit an overflow of the layout along the breadth axis. Setting this property will make sure all members (other than the one specified) get expanded to fill the full visual breadth of the layout (assuming they are configured to use 100% layout breadth).

      Note : This is an advanced setting

      Parameters:
      minBreadthMember - New minBreadthMember value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • setMinBreadthMember

      public Layout setMinBreadthMember(Canvas minBreadthMember)
      Set this property to cause the layout to assign the breadths of other members as if the available breadth is actually wide enough to accommodate the minBreadthMember (even though the Layout might not actually be that wide, and may overflow its assigned size along the breadth axis due to the breadth of the minBreadthMember.

      Without this property set, members of a layout aren't ever expanded in breadth (by the layout) to fit an overflow of the layout along the breadth axis. Setting this property will make sure all members (other than the one specified) get expanded to fill the full visual breadth of the layout (assuming they are configured to use 100% layout breadth).

      Note : This is an advanced setting

      Parameters:
      minBreadthMember - New minBreadthMember value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • setMinMemberLength

      public Layout setMinMemberLength(int minMemberLength)
      Minimum size, in pixels, below which flexible-sized members should never be shrunk, even if this requires the Layout to overflow. Note that this property only applies along the length axis of the Layout, and has no affect on breadth.

      Does not apply to members given a fixed size in pixels - such members will never be shrunk below their specified size in general.

      Parameters:
      minMemberLength - New minMemberLength value. Default value is 1
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getMinMemberLength

      public int getMinMemberLength()
      Minimum size, in pixels, below which flexible-sized members should never be shrunk, even if this requires the Layout to overflow. Note that this property only applies along the length axis of the Layout, and has no affect on breadth.

      Does not apply to members given a fixed size in pixels - such members will never be shrunk below their specified size in general.

      Returns:
      Current minMemberLength value. Default value is 1
      See Also:
    • setMinMemberSize

      public Layout setMinMemberSize(int minMemberSize)
      Deprecated.
      use the more intuitively named minMemberLength
      Parameters:
      minMemberSize - New minMemberSize value. Default value is 1
      Returns:
      Layout instance, for chaining setter calls
    • getMinMemberSize

      public int getMinMemberSize()
      Deprecated.
      use the more intuitively named minMemberLength
      Returns:
      Current minMemberSize value. Default value is 1
    • setOverflow

      public Layout setOverflow(Overflow overflow)
      A Layout may overflow if it has one or more members with a fixed width or height, or that themselves overflow. For details on member sizing see LayoutPolicy.

      Note that for overflow: "auto", "scroll", or "visible", members exceeding the Layout's specified breadth but falling short of its overflow breadth will keep the alignment set via defaultLayoutAlign or Canvas.layoutAlign.

      Overrides:
      setOverflow in class Canvas
      Parameters:
      overflow - New overflow value. Default value is "visible"
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getOverflow

      public Overflow getOverflow()
      A Layout may overflow if it has one or more members with a fixed width or height, or that themselves overflow. For details on member sizing see LayoutPolicy.

      Note that for overflow: "auto", "scroll", or "visible", members exceeding the Layout's specified breadth but falling short of its overflow breadth will keep the alignment set via defaultLayoutAlign or Canvas.layoutAlign.

      Overrides:
      getOverflow in class Canvas
      Returns:
      Current overflow value. Default value is "visible"
      See Also:
    • setPaddingAsLayoutMargin

      public Layout setPaddingAsLayoutMargin(Boolean paddingAsLayoutMargin)
      If this widget has padding specified (as this.padding or in the CSS style applied to this layout), should it show up as space outside the members, similar to layoutMargin?

      If this setting is false, padding will not affect member positioning (as CSS padding normally does not affect absolutely positioned children). Leaving this setting true allows a designer to more effectively control layout purely from CSS.

      Note that layoutMargin if specified, takes precedence over this value.

      Note : This is an advanced setting

      Parameters:
      paddingAsLayoutMargin - New paddingAsLayoutMargin value. Default value is true
      Returns:
      Layout instance, for chaining setter calls
    • getPaddingAsLayoutMargin

      public Boolean getPaddingAsLayoutMargin()
      If this widget has padding specified (as this.padding or in the CSS style applied to this layout), should it show up as space outside the members, similar to layoutMargin?

      If this setting is false, padding will not affect member positioning (as CSS padding normally does not affect absolutely positioned children). Leaving this setting true allows a designer to more effectively control layout purely from CSS.

      Note that layoutMargin if specified, takes precedence over this value.

      Returns:
      Current paddingAsLayoutMargin value. Default value is true
    • setPlaceHolderDefaults

      public Layout setPlaceHolderDefaults(Canvas placeHolderDefaults) throws IllegalStateException
      If this.showDragPlaceHolder is true, this defaults object determines the default appearance of the placeholder displayed when the user drags a widget out of this layout.
      Default value for this property sets the placeholder styleName to "layoutPlaceHolder"
      To modify this object, use Class.changeDefaults()
      Parameters:
      placeHolderDefaults - New placeHolderDefaults value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • setPlaceHolderProperties

      public Layout setPlaceHolderProperties(Canvas placeHolderProperties) throws IllegalStateException
      If this.showDragPlaceHolder is true, this properties object can be used to customize the appearance of the placeholder displayed when the user drags a widget out of this layout.
      Parameters:
      placeHolderProperties - New placeHolderProperties value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • getResizeBar

      public Splitbar getResizeBar()
      Note : This API is non-functional (always returns null) and exists only to make you aware that this MultiAutoChild exists. See Using AutoChildren for details.

      A MultiAutoChild created to resize members of this Layout.

      A resize bar will be created for any member of this Layout that has showResizeBar set to true. Resize bars will be instances of the class specified by resizeBarClass by default, and will automatically be sized to the member's breadth, and to the thickness specified by resizeBarSize.

      To customize the appearance or behavior of resizeBars within some layout a custom resize bar class can be created by subclassing Splitbar or ImgSplitbar and setting resizeBarClass or resizeBarConstructor to this custom class. Alternatively, Canvas.setAutoChildProperties(java.lang.String, com.smartgwt.client.widgets.Canvas) may be called to set resizeBar properties:

            final Splitbar resizeBarProperties = new Splitbar();
            //...
            layout.setAutoChildProperties("resizeBar", resizeBarProperties);
        
      See AutoChildUsage for more information.

      If you create a custom resize bar class in Java, enable Reflection to allow it to be used.

      Alternatively, you can use the SmartClient class system to create a simple SmartClient subclass of either Splitbar or ImgSplitbar for use with this API - see the Skinning Guide for details.

      The built-in Splitbar class supports drag resizing of its target member, and clicking on the bar with a mouse to collapse/uncollapse the target member.

      Returns:
      null
    • setResizeBarClass

      public Layout setResizeBarClass(String resizeBarClass)
      Default class to use for creating resizeBars. This may be overridden by resizeBarConstructor.

      Classes that are valid by default are Splitbar, ImgSplitbar, and Snapbar.

      Note : This is an advanced setting

      Parameters:
      resizeBarClass - New resizeBarClass value. Default value is "Splitbar"
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getResizeBarClass

      public String getResizeBarClass()
      Default class to use for creating resizeBars. This may be overridden by resizeBarConstructor.

      Classes that are valid by default are Splitbar, ImgSplitbar, and Snapbar.

      Returns:
      Current resizeBarClass value. Default value is "Splitbar"
      See Also:
    • setResizeBarSize

      public Layout setResizeBarSize(int resizeBarSize)
      Thickness of the resizeBar in pixels.

      Note : This is an advanced setting

      Parameters:
      resizeBarSize - New resizeBarSize value. Default value is 7
      Returns:
      Layout instance, for chaining setter calls
    • getResizeBarSize

      public int getResizeBarSize()
      Thickness of the resizeBar in pixels.
      Returns:
      Current resizeBarSize value. Default value is 7
    • setReverseOrder

      public Layout setReverseOrder(Boolean reverseOrder)
      Reverse the order of stacking for this Layout, so that the last member is shown first.

      Requires a manual call to reflow() if changed on the fly.

      In RTL mode, for horizontal Layouts the value of this flag will be flipped during initialization.

      Parameters:
      reverseOrder - New reverseOrder value. Default value is false
      Returns:
      Layout instance, for chaining setter calls
    • getReverseOrder

      public Boolean getReverseOrder()
      Reverse the order of stacking for this Layout, so that the last member is shown first.

      Requires a manual call to reflow() if changed on the fly.

      In RTL mode, for horizontal Layouts the value of this flag will be flipped during initialization.

      Returns:
      Current reverseOrder value. Default value is false
    • setShowDragPlaceHolder

      public Layout setShowDragPlaceHolder(Boolean showDragPlaceHolder)
      If set to true, when a member is dragged out of layout, a visible placeholder canvas will be displayed in place of the dragged widget for the duration of the drag and drop interaction.
      Parameters:
      showDragPlaceHolder - New showDragPlaceHolder value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getShowDragPlaceHolder

      public Boolean getShowDragPlaceHolder()
      If set to true, when a member is dragged out of layout, a visible placeholder canvas will be displayed in place of the dragged widget for the duration of the drag and drop interaction.
      Returns:
      Current showDragPlaceHolder value. Default value is null
      See Also:
    • setShowDropLines

      public Layout setShowDropLines(Boolean showDropLines)
      Controls whether to show a drop-indicator during a drag and drop operation. Set to false if you either don't want to show drop-lines, or plan to create your own.
      Parameters:
      showDropLines - New showDropLines value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      See Also:
    • getShowDropLines

      public Boolean getShowDropLines()
      Controls whether to show a drop-indicator during a drag and drop operation. Set to false if you either don't want to show drop-lines, or plan to create your own.
      Returns:
      Current showDropLines value. Default value is null
      See Also:
    • setStackZIndex

      public Layout setStackZIndex(String stackZIndex) throws IllegalStateException
      For use in conjunction with memberOverlap, controls the z-stacking order of members.

      If set to "lastOnTop", members stack from the first member at bottom to the last member at top. If set to "firstOnTop", members stack from the last member at bottom to the first member at top.

      Parameters:
      stackZIndex - New stackZIndex value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
    • getStackZIndex

      public String getStackZIndex()
      For use in conjunction with memberOverlap, controls the z-stacking order of members.

      If set to "lastOnTop", members stack from the first member at bottom to the last member at top. If set to "firstOnTop", members stack from the last member at bottom to the first member at top.

      Returns:
      Current stackZIndex value. Default value is null
    • setVertical

      public Layout setVertical(Boolean vertical)
      Should this layout appear with members stacked vertically or horizontally. Defaults to false if unspecified.
      Parameters:
      vertical - New vertical value. Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • getVertical

      public Boolean getVertical()
      Should this layout appear with members stacked vertically or horizontally. Defaults to false if unspecified.
      Returns:
      Current vertical value. Default value is null
    • setVPolicy

      public Layout setVPolicy(LayoutPolicy vPolicy)
      Sizing policy applied to members on vertical axis

      Note : This is an advanced setting

      Parameters:
      vPolicy - New vPolicy value. Default value is "fill"
      Returns:
      Layout instance, for chaining setter calls
    • getVPolicy

      public LayoutPolicy getVPolicy()
      Sizing policy applied to members on vertical axis
      Returns:
      Current vPolicy value. Default value is "fill"
    • getChildTabPosition

      public Integer getChildTabPosition(Canvas child)
      Layouts ensure children are ordered in the tab-sequence with members being reachable first (in member order), then any non-member children.

      As with Canvas.getChildTabPosition() if Canvas.setRelativeTabPosition() was called explicitly called for some child, it will be respected over member order.

      Overrides:
      getChildTabPosition in class Canvas
      Parameters:
      child - The child for which the tab position should be returned
      Returns:
      tab position of the child within this layout.
    • getDropPosition

      public int getDropPosition()
      Get the position a new member would be dropped. This drop position switches in the middle of each member, and both edges (before beginning, after end) are legal drop positions

      Use this method to obtain the drop position for e.g. a custom drop handler.

      Returns:
      the position a new member would be dropped
    • getMember

      public Canvas getMember(String memberID)
      Given a numerical index or a member name or member ID, return a pointer to the appropriate member. If passed a member Canvas, just returns it.

      Note that if more than one member has the same name, passing in a name has an undefined result.

      Parameters:
      memberID - identifier for the required member
      Returns:
      member widget
      See Also:
    • getMemberDefaultBreadth

      public void getMemberDefaultBreadth(Canvas member, int defaultBreadth)
      Return the breadth for a member of this layout which either didn't specify a breadth or specified a percent breadth with managePercentBreadth:true.

      Called only for Layouts which have a layout policy for the breadth axis of "fill", since Layouts with a breadth policy of "none" leave all member breadths alone.

      Parameters:
      member - Component to be sized
      defaultBreadth - Value of the currently calculated member breadth. This may be returned verbatim or manipulated in this method.
      See Also:
    • getMemberNumber

      public int getMemberNumber(String memberID)
      Given a member Canvas or member ID or name, return the index of that member within this layout's members array. If passed a number, just returns it.

      Note that if more than one member has the same name, passing in a name has an undefined result.

      Parameters:
      memberID - identifier for the required member
      Returns:
      index of the member canvas (or -1 if not found)
      See Also:
    • getMembersLength

      public Integer getMembersLength()
      Convenience method to return the number of members this Layout has
      Returns:
      the number of members this Layout has
    • hasMember

      public Boolean hasMember(Canvas canvas)
      Returns true if the layout includes the specified canvas.
      Parameters:
      canvas - the canvas to check for
      Returns:
      true if the layout includes the specified canvas
    • hideDropLine

      public void hideDropLine()
      Calling this method hides the dropLine shown during a drag and drop interaction with a Layout that has canDropComponents set to true. This method is only useful for custom implementations of drop() as the default implementation calls this method automatically.
    • hideMember

      public void hideMember(Canvas member)
      Hide the specified member, firing the specified callback when the hide is complete.

      Members can always be directly hidden via member.hide(), but if animation is enabled, animation will only occur if hideMember() is called to hide the member.

      Parameters:
      member - Member to hide
    • hideMember

      public void hideMember(Canvas member, Function callback)
      Hide the specified member, firing the specified callback when the hide is complete.

      Members can always be directly hidden via member.hide(), but if animation is enabled, animation will only occur if hideMember() is called to hide the member.

      Parameters:
      member - Member to hide
      callback - callback to fire when the member is hidden.
    • layoutIsDirty

      public boolean layoutIsDirty()
      Returns whether there is a pending reflow of the members of the layout.

      Modifying the set of members, resizing members or changing layout settings will cause a recalculation of member sizes to be scheduled. The recalculation is delayed so that it is not performed redundantly if multiple changes are made in a row.

      To force immediate recalculation of new member sizes and resizing of members, call reflowNow().

      Returns:
      whether the layout is currently dirty
    • addMembersChangedHandler

      public HandlerRegistration addMembersChangedHandler(MembersChangedHandler handler)
      Add a membersChanged handler.

      Fires once at initialization if the layout has any initial members, and then fires whenever members are added, removed or reordered.

      Specified by:
      addMembersChangedHandler in interface HasMembersChangedHandlers
      Parameters:
      handler - the membersChanged handler
      Returns:
      HandlerRegistration used to remove this handler
    • reflow

      public void reflow()
      Layout members according to current settings.

      Members will reflow automatically when the layout is resized, members resize, the list of members changes or members change visibility. It is only necessary to manually call reflow() after changing settings on the layout, for example, layout.reverseOrder.

    • reflow

      public void reflow(String reason)
      Layout members according to current settings.

      Members will reflow automatically when the layout is resized, members resize, the list of members changes or members change visibility. It is only necessary to manually call reflow() after changing settings on the layout, for example, layout.reverseOrder.

      Parameters:
      reason - reason reflow() had to be called (appear in logs if enabled)
    • reflowNow

      public void reflowNow()
      Layout members according to current settings, immediately.
      Generally, when changes occur that require a layout to reflow (such as members being shown or hidden), the Layout will reflow only after a delay, so that multiple changes cause only one reflow. To remove this delay for cases where it is not helpful, reflowNow() can be called.
    • removeMember

      public void removeMember(Canvas member)
      Removes the specified member from the layout. If it has a resize bar, the bar will be destroyed.
      Parameters:
      member - the canvas to be removed from the layout
    • removeMembers

      public void removeMembers(Canvas... members)
      Removes the specified members from the layout. If any of the removed members have resize bars, the bars will be destroyed.
      Parameters:
      members - array of members to be removed, or single member
    • removeMembers

      public void removeMembers(Canvas members)
      Removes the specified members from the layout. If any of the removed members have resize bars, the bars will be destroyed.
      Parameters:
      members - array of members to be removed, or single member
    • reorderMember

      public void reorderMember(int memberNum, int newPosition)
      Shift a member of the layout to a new position
      Parameters:
      memberNum - current position of the member to move to a new position
      newPosition - new position to move the member to
    • reorderMembers

      public void reorderMembers(int start, int end, int newPosition)
      Move a range of members to a new position
      Parameters:
      start - beginning of range of members to move
      end - end of range of members to move, non-inclusive
      newPosition - new position to move the members to
    • replaceMember

      public void replaceMember(Canvas oldMember, Canvas newMember)
      Replaces an existing member of the layout with a different widget. The new member will be assigned the width and height of the existing member (including sizes configured via end user resize), so no reflow will occur unless the new component has visible overflow and it differs from that of the widget it replaced.
      Parameters:
      oldMember - an existing member of the layout to be replaced
      newMember - a different widget that should replace oldMember
      See Also:
    • setVisibleMember

      public void setVisibleMember(Canvas member)
      Hide all other members and make the single parameter member visible.
      Parameters:
      member - member to show
    • showMember

      public void showMember(Canvas member)
      Show the specified member, firing the specified callback when the show is complete.

      Members can always be directly shown via member.show(), but if animation is enabled, animation will only occur if showMember() is called to show the member.

      Parameters:
      member - Member to show
    • showMember

      public void showMember(Canvas member, Function callback)
      Show the specified member, firing the specified callback when the show is complete.

      Members can always be directly shown via member.show(), but if animation is enabled, animation will only occur if showMember() is called to show the member.

      Parameters:
      member - Member to show
      callback - action to fire when the member has been shown
    • setDefaultProperties

      public static void setDefaultProperties(Layout layoutProperties)
      Class level method to set the default properties of this class. If set, then all existing and subsequently created instances of this class will automatically have default properties corresponding to the properties set on the SmartGWT class instance passed to this function before its underlying SmartClient JS object was created. This is a powerful feature that eliminates the need for users to create a separate hierarchy of subclasses that only alter the default properties of this class. Can also be used for skinning / styling purposes.

      Note: This method is intended for setting default attributes only and will affect all instances of the underlying class (including those automatically generated in JavaScript). This method should not be used to apply standard EventHandlers or override methods for a class - use a custom subclass instead. Calling this method after instances have been created can result in undefined behavior, since it bypasses any setters and a class instance may have already examined a particular property and not be expecting any changes through this route.

      Parameters:
      layoutProperties - properties that should be used as new defaults when instances of this class are created
      See Also:
    • onInit

      protected void onInit()
      Overrides:
      onInit in class Canvas
    • onInit_Layout

      protected void onInit_Layout()
    • getDropComponent

      protected Canvas getDropComponent(Canvas dragTarget, int dropPosition)
    • addMembers

      public void addMembers(Canvas... newMembers)
      Add one or more canvases to the layout. NOTE: depending on the layout policy, adding a new member may cause existing members to resize.
      Parameters:
      newMembers - canvases to be added
    • addMembers

      public void addMembers(Canvas[] newMembers, int position)
      Add one or more canvases to the layout at specific positions. NOTE: depending on the layout policy, adding a new member may cause existing members to resize.
      Parameters:
      newMembers - array of canvases to be added
      position - position to add newMembers position
    • addMember

      public void addMember(Widget widget)
      Add a canvas to the layout, optionally at a specific position.
      Parameters:
      widget - the canvas object to be added to the layout
    • addMember

      public void addMember(Canvas component)
      Add a canvas to the layout, optionally at a specific position.
      Parameters:
      component - the canvas object to be added to the layout
    • addMember

      public void addMember(Widget widget, int position)
    • addMember

      public void addMember(Canvas component, int position)
      Add a canvas to the layout, optionally at a specific position.
      Parameters:
      component - the canvas object to be added to the layout
      position - the position in the layout to place newMember (starts with 0); if omitted, it will be added at the last position
    • addMemberPreCreate

      protected void addMemberPreCreate(Object componentJS)
    • addMemberPostCreate

      protected void addMemberPostCreate(Object componentJS)
    • addMemberPreCreate

      protected void addMemberPreCreate(Object componentJS, int position)
    • addMemberPostCreate

      protected void addMemberPostCreate(Object componentJS, int position)
    • setDefaultLayoutAlign

      public void setDefaultLayoutAlign(Alignment alignment) throws IllegalStateException
      Specifies the default alignment for layout members on the breadth axis. Can be overridden on a per-member basis by setting layoutAlign.
      If unset, default member layout alignment will be "top" for a horizontal layout, and left for a vertical layout.
      Parameters:
      alignment - defaultLayoutAlign Default value is null
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
    • setDefaultLayoutAlign

      public void setDefaultLayoutAlign(VerticalAlignment alignment) throws IllegalStateException
      Specifies the default alignment for layout members on the breadth axis. Can be overridden on a per-member basis by setting layoutAlign.
      If unset, default member layout alignment will be "top" for a horizontal layout, and left for a vertical layout.
      Parameters:
      alignment - defaultLayoutAlign Default value is null
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
    • setDropLineProperties

      public void setDropLineProperties(Canvas dropLineProperties) throws IllegalStateException
      Throws:
      IllegalStateException
    • setAlign

      public Layout setAlign(Alignment alignment)
      Alignment of all members in this Layout on the length axis. Defaults to "top" for vertical Layouts, and "left" for horizontal Layouts.
      Horizontal layouts should only be changed to Alignment, and vertical layouts to VerticalAlignment, otherwise they will be considered invalid values, and assigning an invalid value here will log a warning to the Developer Console.
      For alignment on the breadth axis, see defaultLayoutAlign and layoutAlign.
      Overrides:
      setAlign in class Canvas
      Parameters:
      alignment - alignment Default value is null
      Returns:
      Layout instance, for chaining setter calls
    • setAlign

      public void setAlign(VerticalAlignment alignment)
      Alignment of all members in this Layout on the length axis. Defaults to "top" for vertical Layouts, and "left" for horizontal Layouts.
      Horizontal layouts should only be changed to Alignment, and vertical layouts to VerticalAlignment, otherwise they will be considered invalid values, and assigning an invalid value here will log a warning to the Developer Console.
      For alignment on the breadth axis, see defaultLayoutAlign and layoutAlign.
      Parameters:
      alignment - alignment Default value is null
    • getMember

      public Canvas getMember(int index)
      Given a numerical index or a member ID, return a pointer to the appropriate member.

      If passed a member Canvas, just returns it.

      Parameters:
      index - index for the member
      Returns:
      member widget
    • getMemberNumber

      public int getMemberNumber(Canvas member)
      Given a member Canvas or member ID, return the index of that member within this layout's members array

      If passed a number, just returns it.

      Parameters:
      member - the member
      Returns:
      index of the member canvas (or -1 if not found)
    • revealChild

      public void revealChild(String childID)
      Reveals the child or member Canvas passed in by showing it if it is currently hidden. NOTE: This is an override point.
      Overrides:
      revealChild in class Canvas
      Parameters:
      childID - the global ID of the child Canvas to reveal
    • revealChild

      public void revealChild(Canvas child)
      Reveals the child or member Canvas passed in by showing it if it is currently hidden NOTE: This is an override point.
      Overrides:
      revealChild in class Canvas
      Parameters:
      child - the child Canvas to reveal
    • setLogicalStructure

      public LogicalStructureObject setLogicalStructure(LayoutLogicalStructure s)
      Setter implementing the LogicalStructure interface, which supports Eclipse's logical structure debugging facility.
    • getLogicalStructure

      public LogicalStructureObject getLogicalStructure()
      Getter implementing the LogicalStructure interface, which supports Eclipse's logical structure debugging facility.
      Specified by:
      getLogicalStructure in interface LogicalStructure
      Overrides:
      getLogicalStructure in class Canvas