Interface ILinkCapable

All Superinterfaces:
IAdaptable
All Known Subinterfaces:
IELayoutMgr<LAYOUT_PROP>, IELayoutMgrDND<LAYOUT_PROP>, IELayoutMgrSimpleDND<LAYOUT_PROP>, IEUIComp, IEUIContainer, IEUIPanel, IJavaClassLinkEnabler, IJavaInterfaceLinkEnabler, IJavaMethodLinkEnabler, IUIBuilderFromVSLinkEnabler, IUIComponentLinkEnabler, IUICreationFromVS, IVSActionLinkEnabler, IVSFieldLinkEnabler
All Known Implementing Classes:
EAbsoluteLayout, EAccordionLayout, EBorderLayout, ECalendarEvent, ECalendarLayout, EContextMenuLayout, EditorInputProps, EditorOutputColumn, EditorOutputProps, EditorOutputTable, EditorOutputVariable, EditorRESTfulInputProps, EditorResultProps, EditorResultSetProps, EditorScreenFieldProp, EditorVirtualSpace, EditorVSAction, EditorVSField, EditorVSGroup, EditorVSTable, EFlexLayout, EGridLayout, EHeadingLayout, EListLayout, EMapLayout, EMapMarkerProp, EMapMarkers, EMenuBarLayout, EMenuLayout, EMLDefaultItemProp, EMLGroup, EMLGroupLayout, EMList, EMListLayout, EMLItemProp, EMUIHeading, EMUISimpleDialog, EMUISwitch, EMUITabBar, ESwapLayout, ETabBarLayout, ETabLayout, EUIAccordion, EUIButton, EUICalendar, EUICalendarList, EUIChart, EUICheckBox, EUICheckedMenuItem, EUIComboBox, EUIComps, EUIContainer, EUIContextMenu, EUIDateTime, EUIDialog, EUIEmpty, EUIGauge, EUIImage, EUIImage2, EUILabel, EUIMap, EUIMedia, EUIMenu, EUIMenuBar, EUIMenuItem, EUIMenuSeparator, EUIOutput, EUIPanel, EUIPanelPart, EUIPanelPartCnr, EUIProgress, EUIRadioButton, EUIRadioMenuItem, EUISlider, EUISpinner, EUISwapContainer, EUITabContainer, EUITable, EUITableColumn, EUITableLayout, EUIText, EUITextArea, EUITitlePane, JavaElementLinkAdapter

public interface ILinkCapable extends IAdaptable
Interface that property container can implement indicating that they are capable of interacting with the drag-drop link system, Link or Paste-link menu items.

As linking can be done in both ways, e.g. drop a VirtualSpace element in a panel container or on component, or a panel container dropped in a VS group, this interface is versatile.

In order to be able to accommodate new linking partners that are not yet know, this interface allows for inverted actions, i.e. the target is tested for link capabilities. If it doesn't support it, the link operations are collected from the sources, but with the target as their source. If this produces link operations, then these will be used in the linking.

This interface is very powerful as it enables very complex operations, such as dropping an entire VirtualSpace in a panel to create all the UI for it. Of course, this required quite some wizard dialog pages to be presented to the user in order to enable creation of different UI elements for each sub-operation.

Author:
Christopher Mindus
  • Field Details

  • Method Details

    • isLinkCapable

      IStatus isLinkCapable(LinkData data)
      Returns if this property container could potentially be link capable.

      This call is done many times during drag-drop and must be very fast and not cause too much garbage collection.

      Parameters:
      data - The link data.
      Returns:
      The status of capability of the operation.
    • getLinkOperations

      Collection<ILinkOperation> getLinkOperations(LinkData data)
      Called when the drag-drop is to be performed (link or paste-link menu item). The link-capable instance fills in only what it handles.
      Parameters:
      data - The link data.
      Returns:
      The list of operations required.
    • getDragDropText

      String getDragDropText()
      Gets the link text to display when drag-dropping into JavaScript Panel Editor.
      Returns:
      The drag-drop text to use, or null if the method getDragDropHTML() is used instead.
    • getDragDropHTML

      default String getDragDropHTML()
      Gets the link HTML string to display when drag-dropping into JavaScript Panel Editor.