描述:此扩展点用来将放下行为添加到其他插件定义的视图中。
由于插件机制实施的用户界面分层,各视图通常不了解其他视图的内容和性质。这使在插件之间进行拖放操作很困难。例如,人们可能想提供 Java 重分解因子支持,从而用户可将方法从 Java 编辑器的内容轮廓图拖动到资源导航器中的另一 java 文件中。由于资源导航器不了解 Java 内容,当将 java 方法放到其上时,资源导航器不知道该如何处理。类似地,某个 ISV 可能想将其某些内容放到其中一个 Java 查看器中。
平台提供了 org.eclipse.ui.dropActions 扩展点以说明这些情况。此机制授权放下行为返回到拖动操作的起始处。此行为包含在必须实现 org.eclipse.ui.part.IDropActionDelegate 的操作中。作为拖动操作源的查看器必须支持 org.eclipse.ui.part.PluginTransfer 传送类型,并将 org.eclipse.ui.part.PluginTransferData 对象置于拖动事件中。参见 org.eclipse.jface.viewers.StructuredViewer#addDragSupport 以了解如何将拖动支持添加到查看器中。
配置标记:
<!ELEMENT dropContribution (action)*>
<!ELEMENT action*>
<!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 使用。
API 信息:class 属性的值必须是实现 org.eclipse.ui.part.IDropActionDelegate 的 Java 类的全限定名。尽可能迟地装入此类以避免在真正需要整个插件之前就装入该插件。
提供的实现:工作台不提供此扩展点的实现。插件可向此扩展点作添加以将放下行为添加到其他插件定义的视图中。