放下操作

org.eclipse.ui.dropActions

此扩展点用来将放下行为添加到其它插件定义的视图中。

由于插件机制实施的用户界面分层,各视图通常不了解其它视图的内容和性质。这使在插件之间进行拖放操作很困难。例如,人们可能想提供 Java 重构支持,从而用户可将方法从 Java 编辑器的内容大纲窗口拖动到资源导航器中的另一个 java 文件中。由于资源导航器不了解 Java 内容,当将 java 方法放到其上时,资源导航器不知道该如何处理。类似地,某个 ISV 可能想将其某些内容放到其中一个 Java 查看器中。

平台提供了 org.eclipse.ui.dropActions 扩展点以解决这些情况。此机制授权放下行为返回到拖动操作的起始处。此行为包含在必须实现 org.eclipse.ui.part.IDropActionDelegate 的操作中。作为拖动操作源的查看器必须支持 org.eclipse.ui.part.PluginTransfer 传输类型,并将 PluginTransferData 对象置于拖动事件中。请参阅 org.eclipse.jface.viewers.StructuredViewer#addDragSupport 以了解如何将拖动支持添加到查看器中。

<!ELEMENT extension (action*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT action EMPTY>

<!ATTLIST action

id    CDATA #REQUIRED

class CDATA #REQUIRED>


以下是放下操作扩展的一个示例:

    

<extension point=

"org.eclipse.ui.dropActions"

>

<action id=

"my_drop_action"

class=

"com.xyz.eclipse.TestDropAction"

>

</action>

</extension>

以下是利用上面所定义的放下操作的拖动侦听器一个示例。

 
class MyDragListener extends DragSourceAdapter { 
    public void dragSetData(DragSourceEvent event) { 
        if (PluginTransfer.getInstance().isSupportedType(event.dataType)) { 
            byte[] dataToSend = ...//enter the data to be sent. 
            event.data = new PluginTransferData( 
                "my_drop_action", dataToSend); 
        } 
    } 
} 

有关较完整的示例,请参阅“平台”自述文件示例。在该示例中,放下操作是在 ReadmeDropActionDelegate 中定义的,且由 ReadmeContentOutlineDragListener 使用。

class 属性的值必须是用来实现 org.eclipse.ui.part.IDropActionDelegate 的 Java 类的标准名称。装入此类的时间尽可能迟一些,以避免在真正需要整个插件之前就装入该插件

工作台不提供此扩展点的实现。插件可向此扩展点作添加以将放下行为添加到其它插件定义的视图中。