Package com.smartgwt.client.docs

# Interface PortalLayoutDrop

public interface PortalLayoutDrop

### Drag and Drop behavior within PortalLayouts

PortalLayouts are a special Layout subclass designed to contain `Portlet` windows.

PortalLayouts support drag and drop behavior to add new Portlets to the layout and to reorganize the Portlets, as well as to reorder existing `columns`.

Portlet drop behavior within a PortalLayout is enabled by default, and may be configured per portlet by setting `Portlet.canDragReposition` and `Portlet.canDrop`. Developers wishing to restrict portlet drop capabilities by type may also set `Portlet.dragType` and `PortalLayout.portletDropTypes`, or override `PortalLayout.willAcceptPortletDrop()` for custom restrictions.

Users may drop existing Portlets or any other droppable component into a portalLayout. If something other than a Portlet is dropped into a portalLayout, a `Portlet autoChild` will automatically be created to contain it. Standard `autoChild` configuration patterns may be used to customize these automatically created Portlets.

Users may add portlets to, or move portlets within a PortalLayout via the following interactions:

- If `PortalLayout.canAddColumns` is true, users may add a new column to the PortalLayout by dropping a Portlet or other valid component directly onto the PortalLayout outside of any existing columns, or by dropping within the `PortalLayout.portletHDropOffset` of a column. The dropped component will be rendered inside the new column. This behavior can be turned off using `PortalLayout.canAcceptDrop` or setting `PortalLayout.dropTypes` to explicitly disallow portlet drop.
- The user may add a new row to a column by dropping into the `rowLayout within a column`. This behavior can be turned off by setting `canAcceptDrop` to false in the `portalLayout.rowLayoutProperties`.
- The user may add a Portlet to an existing row by dropping within `PortalLayout.portletHDropOffset` of an existing Portlet in a row. This behavior can be turned off by setting `canAcceptDrop` to false in the defaults for the `row autoChildren` using `portalLayout.rowDefaults`

The actual component to be added to the PortalLayout on drop is returned by the `PortalLayout.getDropPortlet()` method. This method may be overridden to change what components are added to the PortalLayout on drop.

By default when a user drags all the portlets out of a column, leaving it empty, the Column will automatically be removed from the Portlet. This behavior may be configured using `PortalLayout.removeEmptyColumns`.

See Also:
  - `PortalLayout.willAcceptPortletDrop(com.smartgwt.client.widgets.Canvas, java.lang.Integer, java.lang.Integer, java.lang.Integer)`
  - `PortalLayout.getCanAcceptDrop()`
  - `PortalLayout.getDropTypes()`