Class PortalLayout

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

public class PortalLayout extends Layout
A PortalLayout is a special subclass of Layout designed to display Portlet windows. A PortalLayout displays Portlets in columns and supports drag-drop interaction for moving Portlets around within the PortalLayout. Portlets may be drag-reordered within columns, dragged into other columns, or dragged next to other Portlets to sit next to them horizontally within a column.
  • Constructor Details

    • PortalLayout

      public PortalLayout()
    • PortalLayout

      public PortalLayout(JavaScriptObject jsObj)
    • PortalLayout

      public PortalLayout(int numColumns)
  • Method Details

    • getOrCreateRef

      public static PortalLayout 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 Layout
    • setCanResizeColumns

      public PortalLayout setCanResizeColumns(Boolean canResizeColumns)
      Are columns in this PortalLayout drag-resizeable?

      Note that the displayed width of a column will automatically shrink and stretch to accommodate the width of Portlets -- see canStretchColumnWidths and canShrinkColumnWidths for an explanation. This setting affects the intrinsic width of a column -- that is, the width it will try to return to when not necessary to stretch or shrink to accommodate Portlet widths.

      If this method is called after the component has been drawn/initialized: Set whether columns in this portalLayout are drag-resizable, and update any drawn columns to reflect this.

      Parameters:
      canResizeColumns - Whether columns are drag-resizable. Default value is true
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getCanResizeColumns

      public Boolean getCanResizeColumns()
      Are columns in this PortalLayout drag-resizeable?

      Note that the displayed width of a column will automatically shrink and stretch to accommodate the width of Portlets -- see canStretchColumnWidths and canShrinkColumnWidths for an explanation. This setting affects the intrinsic width of a column -- that is, the width it will try to return to when not necessary to stretch or shrink to accommodate Portlet widths.

      Returns:
      Current canResizeColumns value. Default value is true
      See Also:
    • setCanResizePortlets

      public PortalLayout setCanResizePortlets(Boolean canResizePortlets)
      Should the height and width of Portlets be drag-resizable?

      Note that changing the height of a Portlet will change the height of all the Portlets in the same row to match.

      If the height of Portlets causes a column to overflow, that column will scroll vertically (independent of other columns), depending on the columnOverflow setting.

      Changing the width of a Portlet will potentially cause columns to stretch and shrink their displayed widths in order to accommodate the Portlets, depending on the value of canStretchColumnWidths and canShrinkColumnWidths.

      However, the instrinsic width of the columns will remain the same, so that the columns will resume their former widths when no longer necessary to stretch or shrink to accommodate the widths of Portlets. To allow drag-resizing of the intrinsic width of columns, see canResizeColumns.

      The net effect is that (by default) PortalLayouts behave like layouts when Portlet sizes do not cause overflow, but behave more like stacks when overflow occurs.

      If this method is called after the component has been drawn/initialized: Set whether the height and width of Portlets should be drag-resizable, and update any drawn Portlets to reflect this.

      Parameters:
      canResizePortlets - Whether drag-resizing the height and width of portlets is allowed. Default value is false
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getCanResizePortlets

      public Boolean getCanResizePortlets()
      Should the height and width of Portlets be drag-resizable?

      Note that changing the height of a Portlet will change the height of all the Portlets in the same row to match.

      If the height of Portlets causes a column to overflow, that column will scroll vertically (independent of other columns), depending on the columnOverflow setting.

      Changing the width of a Portlet will potentially cause columns to stretch and shrink their displayed widths in order to accommodate the Portlets, depending on the value of canStretchColumnWidths and canShrinkColumnWidths.

      However, the instrinsic width of the columns will remain the same, so that the columns will resume their former widths when no longer necessary to stretch or shrink to accommodate the widths of Portlets. To allow drag-resizing of the intrinsic width of columns, see canResizeColumns.

      The net effect is that (by default) PortalLayouts behave like layouts when Portlet sizes do not cause overflow, but behave more like stacks when overflow occurs.

      Returns:
      Current canResizePortlets value. Default value is false
      See Also:
    • setCanResizeRows

      public PortalLayout setCanResizeRows(Boolean canResizeRows)
      Deprecated.
      Use canResizePortlets instead.
      Should vertical drag-resize of portlets within columns be allowed?

      If this method is called after the component has been drawn/initialized: Set whether vertical drag-resize of portlets within columns is allowed, and update any drawn columns to reflect this.
      Parameters:
      canResizeRows - Whether drag-resize of portlets within columns is allowed. Default value is false
      Returns:
      PortalLayout instance, for chaining setter calls
    • getCanResizeRows

      public Boolean getCanResizeRows()
      Deprecated.
      Use canResizePortlets instead.
      Should vertical drag-resize of portlets within columns be allowed?
      Returns:
      Current canResizeRows value. Default value is false
    • setCanShrinkColumnWidths

      public PortalLayout setCanShrinkColumnWidths(Boolean canShrinkColumnWidths)
      Controls whether the PortalLayout will shrink column widths to avoid overflowing the PortalLayout horizontally. If the PortalLayout would otherwise overflow its width, it will check each column to see whether it is wider than necessary to accommodate its Portlets. If so, the column may shrink to avoid having to scroll the PortalLayout.

      If this method is called after the component has been drawn/initialized: Sets canShrinkColumnWidths and reflows to reflect the new setting.

      Note : This is an advanced setting

      Parameters:
      canShrinkColumnWidths - Whether columns can shrink to avoid overflowing the PortalLayout's width. Default value is true
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getCanShrinkColumnWidths

      public Boolean getCanShrinkColumnWidths()
      Controls whether the PortalLayout will shrink column widths to avoid overflowing the PortalLayout horizontally. If the PortalLayout would otherwise overflow its width, it will check each column to see whether it is wider than necessary to accommodate its Portlets. If so, the column may shrink to avoid having to scroll the PortalLayout.
      Returns:
      Current canShrinkColumnWidths value. Default value is true
      See Also:
    • setCanStretchColumnWidths

      public PortalLayout setCanStretchColumnWidths(Boolean canStretchColumnWidths)
      Controls whether the PortalLayout will stretch column widths, if needed to accommodate the width of Portlets. If set, columns will overflow their widths in order to accommodate the widths of their Portlets.

      With the default setting of Overflow: auto, the PortalLayout as a whole will scroll horizontally if needed. Depending on the setting of canShrinkColumnWidths, other columns may shrink to avoid overflow on the PortalLayout as a whole.

      If canStretchColumnWidths is turned off, then individual rows will scroll horizontally in order to accommodate Portlets that are wider than their column width allows.

      If this method is called after the component has been drawn/initialized: Sets canStretchColumnWidths and reflows to reflect the new setting.

      Note : This is an advanced setting

      Parameters:
      canStretchColumnWidths - Whether columns can stretch to accommodate Portlet widths. Default value is true
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getCanStretchColumnWidths

      public Boolean getCanStretchColumnWidths()
      Controls whether the PortalLayout will stretch column widths, if needed to accommodate the width of Portlets. If set, columns will overflow their widths in order to accommodate the widths of their Portlets.

      With the default setting of Overflow: auto, the PortalLayout as a whole will scroll horizontally if needed. Depending on the setting of canShrinkColumnWidths, other columns may shrink to avoid overflow on the PortalLayout as a whole.

      If canStretchColumnWidths is turned off, then individual rows will scroll horizontally in order to accommodate Portlets that are wider than their column width allows.

      Returns:
      Current canStretchColumnWidths value. Default value is true
      See Also:
    • getColumn

      public Layout getColumn()
      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.

      Automatically generated vertical Layout used to create columns of Portlets via createAutoChild(). Since this is an com.smartgwt.client.types.AutoChild, you can use columnDefaults and columnProperties to customize the columns.

      The column includes a menu, if showColumnMenus is true, and a rowLayout which actually contains the rows. Therefore, if you want to style the columns as a whole, use columnDefaults or columnProperties, but if you want to style the layout that contains the rows, use rowLayoutDefaults or rowLayoutProperties.

      Returns:
      null
      See Also:
    • setColumnBorder

      public PortalLayout setColumnBorder(String columnBorder)
      Border to show around columns in this PortalLayout

      If this method is called after the component has been drawn/initialized: Sets the columnBorder for to the specified value and updates any drawn columns to reflect this.
      Parameters:
      columnBorder - New border to show around columns. Default value is "1px solid gray"
      Returns:
      PortalLayout instance, for chaining setter calls
    • getColumnBorder

      public String getColumnBorder()
      Border to show around columns in this PortalLayout
      Returns:
      Current columnBorder value. Default value is "1px solid gray"
    • setColumnOverflow

      public PortalLayout setColumnOverflow(Overflow columnOverflow)
      Controls the overflow setting for each column. If set to "auto" (the default) then each column will scroll individually (if its Portlets overflow the column height). You can also use "hidden" to clip overflowing heights, or "visible" to show the overflow. The effect of "visible" will depend on the setting for overflow -- by default, the PortalLayout as a whole will scroll when necessary.

      If this method is called after the component has been drawn/initialized: Sets columnOverflow and updates existing columns to reflect the new setting.

      Note : This is an advanced setting

      Parameters:
      columnOverflow - Overflow setting for columns. Default value is "auto"
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getColumnOverflow

      public Overflow getColumnOverflow()
      Controls the overflow setting for each column. If set to "auto" (the default) then each column will scroll individually (if its Portlets overflow the column height). You can also use "hidden" to clip overflowing heights, or "visible" to show the overflow. The effect of "visible" will depend on the setting for overflow -- by default, the PortalLayout as a whole will scroll when necessary.
      Returns:
      Current columnOverflow value. Default value is "auto"
      See Also:
    • setColumnSpacing

      public PortalLayout setColumnSpacing(Integer columnSpacing)
      The space between portal columns.

      To set spacing between portlets on a row in the same column, see portletHSpacing.

      If this method is called after the component has been drawn/initialized: Sets columnSpacing and reflows the layout to implement it.

      Parameters:
      columnSpacing - The amount of space to apply between columns. Default value is 0
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getColumnSpacing

      public Integer getColumnSpacing()
      The space between portal columns.

      To set spacing between portlets on a row in the same column, see portletHSpacing.

      Returns:
      Current columnSpacing value. Default value is 0
      See Also:
    • setDropTypes

      public PortalLayout setDropTypes(String... dropTypes) throws IllegalStateException
      dropTypes is set to ["PortalColumn"] in order to allow the dragging of columns within the PortalLayout. To control dropTypes when Portlets or other components are dragged into the PortalLayout, use portletDropTypes instead.
      Overrides:
      setDropTypes in class Canvas
      Parameters:
      dropTypes - New dropTypes value. Default value is ["PortalColumn"]
      Returns:
      PortalLayout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • getDropTypes

      public String[] getDropTypes()
      dropTypes is set to ["PortalColumn"] in order to allow the dragging of columns within the PortalLayout. To control dropTypes when Portlets or other components are dragged into the PortalLayout, use portletDropTypes instead.
      Overrides:
      getDropTypes in class Canvas
      Returns:
      Current dropTypes value. Default value is ["PortalColumn"]
      See Also:
    • setNumColumns

      public PortalLayout setNumColumns(int numColumns) throws IllegalStateException
      Initial number of columns to show in this PortalLayout. Note that after initialization columns should be added / removed via addColumn() and removeColumn(). numColumns is ignored if you initialize the portlets attribute, since the portlets attribute will imply how many columns to create.
      Parameters:
      numColumns - New numColumns value. Default value is 2
      Returns:
      PortalLayout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • getNumColumns

      public int getNumColumns()
      Initial number of columns to show in this PortalLayout. Note that after initialization columns should be added / removed via addColumn() and removeColumn(). numColumns is ignored if you initialize the portlets attribute, since the portlets attribute will imply how many columns to create.
      Returns:
      Returns the current number of columns displayed in this PortalLayout. Default value is 2
      See Also:
    • setOverflow

      public PortalLayout setOverflow(Overflow overflow)
      Controls how the PortalLayout reacts when column widths or Portlet widths overflow the width of the PortalLayout. By default, the PortalLayout scrolls when necessary. You can also use overflow: visible or overflow: hidden, with the usual results -- see canResizePortlets for a further explanation of column widths.

      Note that overflowing height is also affected by columnOverflow. By default, each column will scroll individually -- you can change columnOverflow to "auto" to scroll the whole PortalLayout instead.

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

      public Overflow getOverflow()
      Controls how the PortalLayout reacts when column widths or Portlet widths overflow the width of the PortalLayout. By default, the PortalLayout scrolls when necessary. You can also use overflow: visible or overflow: hidden, with the usual results -- see canResizePortlets for a further explanation of column widths.

      Note that overflowing height is also affected by columnOverflow. By default, each column will scroll individually -- you can change columnOverflow to "auto" to scroll the whole PortalLayout instead.

      Overrides:
      getOverflow in class Layout
      Returns:
      Current overflow value. Default value is "auto"
      See Also:
    • setPortletDropTypes

      public PortalLayout setPortletDropTypes(String... portletDropTypes)

      The dropTypes to be applied when dropping Portlets on this PortalLayout, or when dropping other components to be auto-wrapped in a Portlet. If you set this, then you will need to set an equivalent Canvas.dragType on anything to be dragged into this PortalLayout (including Portlets).

      As a convenience, Portlet.dragType defaults to "Portlet". Thus, if you want to allow Portlets to be dropped on this PortalLayout, but disable auto-wrapping of other components, you can set portletDropTypes to ["Portlet"].

      If you want to allow some Portlets to be dropped on this PortalLayout but not others, then set a custom dragType for the Portlets, and set portletDropTypes to match.

      If you want to have different dropTypes for rows and rowLayouts, you can specify dropType on the row or rowLayout autochildren instead.

      For more control over what can be dropped, you can also implement willAcceptPortletDrop().

      If this method is called after the component has been drawn/initialized:

      Sets the portletDropTypes to be applied when dropping Portlets on this PortalLayout, or when dropping other components to be auto-wrapped in a Portlet.

      Parameters:
      portletDropTypes - dropTypes to apply when dropping Portlets. Default value is null
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getPortletDropTypes

      public String[] getPortletDropTypes()

      The dropTypes to be applied when dropping Portlets on this PortalLayout, or when dropping other components to be auto-wrapped in a Portlet. If you set this, then you will need to set an equivalent Canvas.dragType on anything to be dragged into this PortalLayout (including Portlets).

      As a convenience, Portlet.dragType defaults to "Portlet". Thus, if you want to allow Portlets to be dropped on this PortalLayout, but disable auto-wrapping of other components, you can set portletDropTypes to ["Portlet"].

      If you want to allow some Portlets to be dropped on this PortalLayout but not others, then set a custom dragType for the Portlets, and set portletDropTypes to match.

      If you want to have different dropTypes for rows and rowLayouts, you can specify dropType on the row or rowLayout autochildren instead.

      For more control over what can be dropped, you can also implement willAcceptPortletDrop().

      Returns:
      Current portletDropTypes value. Default value is null
      See Also:
    • setPortletHSpacing

      public PortalLayout setPortletHSpacing(Integer portletHSpacing)
      The horizontal space between portlets placed into the same row.

      To set the spacing between portal columns, use columnSpacing.

      If this method is called after the component has been drawn/initialized: Sets portletHSpacing and reflows the layout to implement it.

      Parameters:
      portletHSpacing - The amount of space to apply between portlets in a row. Default value is 3
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getPortletHSpacing

      public Integer getPortletHSpacing()
      The horizontal space between portlets placed into the same row.

      To set the spacing between portal columns, use columnSpacing.

      Returns:
      Current portletHSpacing value. Default value is 3
      See Also:
    • setPortlets

      public PortalLayout setPortlets(Portlet... portlets) throws IllegalStateException
      A convenience attribute which you can use to populate a PortalLayout with Portlets on initialization. After initialization, use addPortlet() or drag-and-drop to add Portlets, and getPortlets() or getPortletArray() to get Portlets.

      To create one column, you can provide an array of Portlets.

      To create multiple columns, provide an array of arrays (where the first level represents columns, and the second represents Portlets).

      To put multiple portlets in the same row, provide a third level to the array.

      Note that numColumns is ignored if you provide the portlets attribute, since the array will indicate how many columns to create. You can provide an empty second-level array to create a blank column, if needed.

      Parameters:
      portlets - New portlets value. Default value is null
      Returns:
      PortalLayout instance, for chaining setter calls
      Throws:
      IllegalStateException - this property cannot be changed after the component has been created
      See Also:
    • setPortletVSpacing

      public PortalLayout setPortletVSpacing(Integer portletVSpacing)
      The vertical space between portal rows.

      If this method is called after the component has been drawn/initialized: Sets portletVSpacing and reflows the layout to implement it.
      Parameters:
      portletVSpacing - The amount of space to apply between rows. Default value is 3
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getPortletVSpacing

      public Integer getPortletVSpacing()
      The vertical space between portal rows.
      Returns:
      Current portletVSpacing value. Default value is 3
      See Also:
    • setPreventColumnUnderflow

      public PortalLayout setPreventColumnUnderflow(Boolean preventColumnUnderflow)
      Controls whether the last Portlet in a column will be stretched to fill the column's height, or left at its specified height.
      Parameters:
      preventColumnUnderflow - New preventColumnUnderflow value. Default value is true
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getPreventColumnUnderflow

      public Boolean getPreventColumnUnderflow()
      Controls whether the last Portlet in a column will be stretched to fill the column's height, or left at its specified height.
      Returns:
      Current preventColumnUnderflow value. Default value is true
      See Also:
    • setPreventRowUnderflow

      public PortalLayout setPreventRowUnderflow(Boolean preventRowUnderflow)
      Controls whether the last Portlet in a row will be stretched to fill the row's width, or left at its specified width.

      If this method is called after the component has been drawn/initialized: Sets preventRowUnderflow and reflows the layout to implement it.
      Parameters:
      preventRowUnderflow - Whether to stretch the last Portlet in a row to to fill the row's width. Default value is true
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getPreventRowUnderflow

      public Boolean getPreventRowUnderflow()
      Controls whether the last Portlet in a row will be stretched to fill the row's width, or left at its specified width.
      Returns:
      Current preventRowUnderflow value. Default value is true
      See Also:
    • setPreventUnderflow

      public PortalLayout setPreventUnderflow(Boolean preventUnderflow)
      Controls whether the last column will be stretched to fill the PortalLayout's width, or left at its specified width.

      If this method is called after the component has been drawn/initialized: Sets preventUnderflow and reflows the layout to implement it.
      Parameters:
      preventUnderflow - Whether to stretch the last column to fill the PortalLayout's width. Default value is true
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getPreventUnderflow

      public Boolean getPreventUnderflow()
      Controls whether the last column will be stretched to fill the PortalLayout's width, or left at its specified width.
      Returns:
      Current preventUnderflow value. Default value is true
      See Also:
    • getRow

      public Layout getRow()
      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.

      Automatically generated horizontal Layout used to create rows of Portlets via createAutoChild(). Since this is an com.smartgwt.client.types.AutoChild, you can use rowDefaults and rowProperties to customize the rows.

      Rows are created inside rowLayouts, which in turn are inside columns.

      Returns:
      null
      See Also:
    • getRowLayout

      public Layout getRowLayout()
      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.

      Automatically generated vertical Layout used to create columns of Portlets via createAutoChild(). Since this is an com.smartgwt.client.types.AutoChild, you can use rowLayoutDefaults and rowLayoutProperties to customize the layout used to contain the rows.

      The rowLayout is the actual container for rows of Portlets. See column for the column as a whole, which may include a menu as well (depending on showColumnMenus). If you want to style the columns as a whole, use columnDefaults or columnProperties, but if you want to style the layout that actually contains the rows, use rowLayoutDefaults or rowLayoutProperties.

      Returns:
      null
      See Also:
    • setShowColumnMenus

      public PortalLayout setShowColumnMenus(Boolean showColumnMenus)
      Should a menu be shown within each column with options to add / remove columns?

      If this method is called after the component has been drawn/initialized: Sets showColumnMenus and updates existing columns to reflect the new setting.
      Parameters:
      showColumnMenus - Whether to show column menus. Default value is true
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getShowColumnMenus

      public Boolean getShowColumnMenus()
      Should a menu be shown within each column with options to add / remove columns?
      Returns:
      Current showColumnMenus value. Default value is true
      See Also:
    • setStretchColumnWidthsProportionally

      public PortalLayout setStretchColumnWidthsProportionally(Boolean stretchColumnWidthsProportionally)
      When stretching column widths, should we stretch all column widths proportionally, or just stretch the columns that need extra width?

      Note that this implies turning off canShrinkColumnWidths.

      If this method is called after the component has been drawn/initialized: Sets stretchColumnWidthsProportionally and reflows to reflect the new setting.

      Note : This is an advanced setting

      Parameters:
      stretchColumnWidthsProportionally - Whether to stretch column widths proportionally. Default value is false
      Returns:
      PortalLayout instance, for chaining setter calls
      See Also:
    • getStretchColumnWidthsProportionally

      public Boolean getStretchColumnWidthsProportionally()
      When stretching column widths, should we stretch all column widths proportionally, or just stretch the columns that need extra width?

      Note that this implies turning off canShrinkColumnWidths.

      Returns:
      Current stretchColumnWidthsProportionally value. Default value is false
      See Also:
    • addColumn

      public void addColumn(int index)
      Adds a new portal column to this layout at the specified position
      Parameters:
      index - target position for the new column
    • getColumnWidth

      public int getColumnWidth(int colNumber)
      Gets the width of a column in the PortalLayout.
      Parameters:
      colNumber - Which column's width to get
      Returns:
      width
      See Also:
    • getPortalPosition

      public PortalPosition getPortalPosition(Portlet portlet)
      Gets the position of the Portlet within this PortalLayout. Returns null if the Portlet is not in this PortalLayout.
      Parameters:
      portlet - the Portlet for which to get the position
      Returns:
      the position of the Portlet
    • removeColumn

      public void removeColumn(int index)
      Removes the specified column from this layout. All portlets displayed within this column will be destroyed when the column is removed.
      Parameters:
      index - column number to remove
    • removePortlet

      public void removePortlet(Portlet portlet)
      Removes a Portlet which is currently rendered in this PortalLayout. Portlet will not be destroyed by default - if this is desired the calling code should do this explicitly.
      Parameters:
      portlet - portlet to remove
    • setColumnPreventUnderflow

      public void setColumnPreventUnderflow(boolean preventColumnUnderflow)
      Sets preventColumnUnderflow and reflows the layout to implement it.
      Parameters:
      preventColumnUnderflow - Whether to stretch the last Portlet in a column to fill the column's height.
      See Also:
    • setDefaultProperties

      public static void setDefaultProperties(PortalLayout portalLayoutProperties)
      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:
      portalLayoutProperties - properties that should be used as new defaults when instances of this class are created
      See Also:
    • onInit

      public void onInit()
      Overrides:
      onInit in class Layout
    • onInit_PortalLayout

      protected void onInit_PortalLayout()
    • willAcceptPortletDrop

      public Boolean willAcceptPortletDrop(Canvas dragTarget, Integer colNum, Integer rowNum, Integer dropPosition)

      Returns true if the dragged Portlet, or other component, can be dropped onto this PortalLayout (other components would be auto-wrapped in a Portlet).

      The default implementation acts like Canvas.willAcceptDrop(), except applying portletDropTypes rather than dropTypes. You can subclass to apply other (or additional) criteria

      Note: This is an override point

      Parameters:
      dragTarget - The Portlet, or other component, being dragged
      colNum - indicates which column the portlet would be dropped on.
      rowNum - indicates the row number being dropped on.
      dropPosition - Drop position within an existing row. If the dropPosition is null, then that means that a new row will be created.
      Returns:
      true if the Portlet or other component being dragged can be dropped on this PortalLayout, false otherwise
    • getDropPortlet

      public Canvas getDropPortlet(Canvas dragTarget, Integer colNum, Integer rowNum, Integer dropPosition)
      This method is called when the user drops components into the rows or columns of this PortalLayout.

      Overriding this method allows you to modify drop behaviour when creating or reordering portlets via drag & drop. You can return the dragTarget for the standard behavior, or null to cancel the drop.

      Otherwise, return the component you want to be dropped (as for Layout.getDropComponent).

      Note: this is an override point.

      Parameters:
      dragTarget - the component being dragged
      colNum - indicates which column the portlet is being dropped on.
      rowNum - indicates the row number being dropped on.
      dropPosition - Drop position within an existing row. If the dropPosition is null, then that means that a new row will be created.
      Returns:
      drop-component or custom Portlet to embed in the portalLayout. Returning null will cancel the drop.
    • getPortlets

      public Portlet[] getPortlets()
      Returns a flat array of all the Portlets in this PortalLayout.
      Returns:
      portlets
    • getPortletArray

      public Portlet[][][] getPortletArray()
      Returns a multi-level array of the Portlets in this PortalLayout, where the first level corresponds to columns, the second to rows, and the third to Portlets within rows.
      Returns:
      portlets
    • addPortlet

      public void addPortlet(Portlet portlet)
      Adds a Portlet instance to this portalLayout in the specified position.
      Parameters:
      portlet - Portlet to add to this layout.
    • addPortlet

      public void addPortlet(Portlet portlet, int colNum, int rowNum)
      Adds a Portlet instance to this portalLayout in the specified position.
      Parameters:
      portlet - Portlet to add to this layout.
      colNum - Column in which the Portlet should be added. If unspecified, defaults to zero.
      rowNum - Position within the column for the Portlet.
    • addPortlet

      public void addPortlet(Portlet portlet, int colNum, int rowNum, int rowOffset)
      Adds a Portlet instance to this portalLayout in the specified position.
      Parameters:
      portlet - Portlet to add to this layout.
      colNum - Column in which the Portlet should be added. If unspecified, defaults to zero.
      rowNum - Position within the column for the Portlet
      rowOffset - Position for the portlet within an existing row. If the row specified by rowNum already exists, the portlet will be added to that row at this position. If rowNum does not already exist, this parameter is ignored
    • setColumnWidth

      public void setColumnWidth(int colNumber, int width)
      Sets the width of a column in the PortalLayout.
      Parameters:
      colNumber - Which column's width to set.
      width - How wide to make the column
    • setColumnWidth

      public void setColumnWidth(int colNumber, String width)
      Sets the width of a column in the PortalLayout.
      Parameters:
      colNumber - Which column's width to set.
      width - How wide to make the column
    • willMaximizePortlet

      public boolean willMaximizePortlet(Portlet portlet)
      Method called when a Portlet in this PortalLayout is about to be maximized. Note that this method is only called when the user explicitly clicks on the portlet's maximize button -- it is not called when programmatically maximizing a portlet via Window.maximize().

      Return false to cancel the action.

      Note: This is an override point

      Parameters:
      portlet - the Portlet which will be maximized
      Returns:
      whether the action should proceed
    • willMinimizePortlet

      public boolean willMinimizePortlet(Portlet portlet)
      Method called when a Portlet in this PortalLayout is about to be minimized. Note that this method is only called when the user explicitly clicks on the portlet's minimize button -- it is not called when programmatically minimizing a portlet via Window.minimize().

      Return false to cancel the action.

      Note: This is an override point

      Parameters:
      portlet - the Portlet which will be minimized
      Returns:
      whether the action should proceed
    • willRestorePortlet

      public boolean willRestorePortlet(Portlet portlet)
      Method called when a Portlet in this PortalLayout is about to be restored to its normal place (after having been maximized. Note that this method is only called when the user explicitly clicks on the portlet's "restore" button -- it is not called when programmatically restoring a portlet via restore().

      Return false to cancel the action.

      Note: This is an override point

      Parameters:
      portlet - the Portlet which will be restored
      Returns:
      whether the action should proceed
    • willClosePortlet

      public boolean willClosePortlet(Portlet portlet)
      Method called when a Portlet in this PortalLayout is about to be closed. Note that this method is only called when the user explicitly clicks on the portlet's "close" button -- it is not called when programmatically removing a portlet via removePortlet().

      Return false to cancel the action.

      Note: This is an override point

      Parameters:
      portlet - the Portlet which will be closed
      Returns:
      whether the action should proceed
    • portletMaximized

      public void portletMaximized(Portlet portlet)
      Notification method called after a Portlet has been maximized (whether by user action or programmatically).

      Note: This is an override point

      Parameters:
      portlet - The portlet which was maximized
      See Also:
    • portletMinimized

      public void portletMinimized(Portlet portlet)
      Notification method called after a Portlet has been minimized (whether by user action or programmatically).

      Note: This is an override point

      Parameters:
      portlet - The portlet which was minimized
      See Also:
    • portletRestored

      public void portletRestored(Portlet portlet)
      Notification method called after a Portlet has been restored to its normal place (after having been maximized). The method is called whether the restore is via user action or done programmatically.

      Note: This is an override point

      Parameters:
      portlet - The portlet which was restored.
      See Also:
    • portletsChanged

      public void portletsChanged()
      Fires at initialization if the PortalLayout has any initial portlets, and then fires whenever portlets are added, removed or reordered.

      Note: This is an override point

      See Also:
      • com.smartgwt.client.widgets.layout.Layout#membersChanged
    • portletsResized

      public void portletsResized()
      Fires when portlets or columns in this PortalLayout are resized. Note that this fires on a short delay -- otherwise, it would fire multiple times for each change, since most portlet size changes will affect multiple portlets. Does not fire when a portlet is maximized or restored.

      Note: This is an override point

    • setLogicalStructure

      public LogicalStructureObject setLogicalStructure(PortalLayoutLogicalStructure 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 Layout