深入 Common Navigator Framework 之 Drag and Drop Support

7.1 概述

顾名思义,Drag and Drop Support指的就是节点的拖放操作。在CNF中提供了标准的拖拽操作支持,与其他功能不同,这个功能是由两个扩展点共同实现的。

 

7.2 扩展点

7.2.1 Drag

扩展点org.eclipse.ui.navigator.viewer/dragAssistant,这个扩展点提供“拖”操作的支持,位于org.eclipse.ui.navigator.viewer扩展点下。


 
这两个属性很简单,分别为指定的实现类和对应的视图的ID。类必须继承自org.eclipse.ui.navigator.CommonDragAdapterAssistant,主要方法为:

  •  getSupportedTransferTypes():指定支持的操作资源类型
  •  setDragData(DragSourceEvent anEvent, IStructuredSelection aSelection),根据选择的节点设置拖的内容

 

7.2.2 Drop

扩展点org.eclipse.ui.navigator.navigatorContent/navigatorContent/dropAssistant,这个扩展点只能在navigatorContent里面声明,大概是因为Drop操作不能在不同的navigatorContent之间共享的缘故。
 
与Drag类似,需要指定实现的类和ID,类必须继承自org.eclipse.ui.navigator.CommonDropAdapterAssistant,主要方法为:

  •  validateDrop(Object target, int operation, TransferData transferType):校验“放”的状态
  • handleDrop(CommonDropAdapter aDropAdapter,

            DropTargetEvent aDropTargetEvent, Object aTarget):处理放的操作。

 

7.3 Eclipse实现

Eclipse中的Explorer Viewer实现了拖放操作的支持,对应的实现代码位于插件“org.eclipse.ui.navigator.resources”中。
Drag的实现代码类为org.eclipse.ui.navigator.resources.ResourceDragAdapterAssistant ,Drop的实现代码为org.eclipse.ui.navigator.resources.ResourceDropAdapterAssistant
简单的提一下,它们是通过IResource进行交互的,每次将Drag时候选中的节点(ISelection),封装为TransferData,然后交由Drop的类处理。对于实现细节,就不再进行一一描述了,自己去看看代码。

 

7.4 说明

Drag是在org.eclipse.ui.navigator.viewer中声明的,而且还需要一个Viewer的ID,而Drop在org.eclipse.ui.navigator.navigatorContent/navigatorContent中声明,这说明,一个提供了Drag支持的Viewer,允许有多个不同的Drop实现的navigatorContent。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值