在jface中的viewer体系中(顶层抽象类org.eclipse.jface.viewers.Viewer),继承自org.eclipse.jface.viewers.StructuredViewer类的所有类都支持拖拽。在eclipse插件开发过程经常会有drag and drop的需求,下面通过一个小例子来说明如何给一个viewer增加拖拽支持。
其实很简单,只要2步:
1. 实现自己的org.eclipse.swt.dnd.DragSourceAdapter(监听drag动作)
2. 调用Viewer的addDragSupport(int operations, Transfer[] transferTypes, DragSourceListener listener)方法。参数1表示drag and drop的操作类型,参数2表示drag所支持的Transfer类型(Transfer是swt提供的一种java数据和平台相关的数据的相互转换的机制),第三个参数就是DragSrourceAdapter的实现。
DragView是一个简单的eclipse view,主要有一个TreeView构成。
public class DragView extends ViewPart {
private TreeViewer viewer;
@Override
public void createPartControl(Composite parent) {
createTreeViewer(parent);
this.initDragAndDrop();
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
private void createTreeViewer(Composite parent) {
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
viewer.setContentProvider(new WidgetContentProvider());
viewer.setLabelProvider(new WidgetLabelProvider());
viewer.setInput(getViewSite());
}
protected void initDragAndDrop() {
int ops = DND.DROP_COPY | DND.DROP_MOVE;
Transfer[] transfers = new Transfer[] {
TextTransfer.getInstance()
};
TreeViewer viewer = this.getViewer();
viewer.addDragSupport(ops, transfers, new WidgetDragAdapter(viewer));
}
public TreeViewer getViewer() {
return viewer;
}
}
initDragAndDrop()方法给TreeView添加了Drag支持。
public class DragAdapter extends DragSourceAdapter {
private ISelectionProvider selectionProvider;
public DragAdapter(ISelectionProvider selectionProvider) {
this.selectionProvider = selectionProvider;
}
@Override
public void dragSetData(DragSourceEvent event) {
if(TextTransfer.getInstance().isSupportedType(event.dataType)) {
event.data = getSelectedString();
return;
}
}
}
DragAdapter非常简单,只要重写dragSetData方法将要传递的数据赋给event.data就可以了(还可以更复杂,这里只实现最基本的drag,可以参考Elcipse projects explore的实现)。
上面两个类实现了对一个Viewer的Drag支持,当然只有drag是不够的,需要有一个drop target来接受drag。上面的TreeView支持TextTransfer,其实任何一个支持接受TextTransfer的目标的view或者编辑器都可以作为drop target,比如wst的xml编辑器支持TextTransfer,因此可以直接从上面的viewer中向wst xml编辑器托文本。
- 大小: 21.9 KB
- 大小: 21.5 KB
分享到:
相关推荐
Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行Debug调试。 同时还提供了在线自动查找源代码,查看Class二进制字节码的...
1.Google已停止对ADT的支持,尤其是JDK8推出后,ADT已经不能使用,报unsupported class file version 52.0等问题 2.网上的adt24.0.2版本对logcat日志有问题 3.里面已经包含...
jQueryWTP一个让Eclipse WTP支持jQuery Javascript代码自动补全功能的Eclipse插件。 支持jquery 1.6
教你如何给eclipse安装maven插件,废话不多说,有图有真相
eclipse 集成 JSON2XML Tree Viewer,json文本可以转换成xml和Tree
Eclipse平台SDK支持的扩展点 Eclipse平台SDK支持的扩展点 Eclipse平台SDK支持的扩展点
解决eclipse4.3kepler工程里的compiler和Project facets没有1.8的问题,支持jdk1.8补的补丁。安装:eclipse菜单-help-install new software-add-archive。安装时不要勾选contact all update sites during install to...
对于我这种用惯了mfc的swing白痴来说,jigloo插件真是非常给力,控件直接拖放,自动生成代码
eclipse-jee-2020-06-R-win32-x86_64,差不多是最后默认支持java8的版本了,后面的版本开始要求要求使用java11才能启动了
eclipse查看API插件,支持一次设置,永久使用,方便初学者查看API。把jar包放到plugin目录下即可安装插件
eclipse6.0注册码支持好几年绝对没问题我用的就是这个
eclipse-jee-2020-06-R-win32-x86_64 最后一版支持JDK1.8的eclipse
本资源是针对eclipse中代码虚线对齐的工具,请参考相应的文档进行修改
我们在编写js的时候,如果采用了jquery框架,当然很希望Eclipse能帮我们完成代码自动完成的功能了,但Eclipse默认只是支持js的代码自动完成,利用这个插件,可以让Eclipse支持jquery的代码自动完成功能(前提:...
Eclipse安装插件支持jQuery智能提示
有钱捧个钱场,没钱捧个人场 清华大学的镜像:https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/epp/downloads/release/2021-06/R/eclipse-jee-2021-06-R-win32-x86_64.zip
eclipse64位版,支持1.7及以上的jdk,eclipse-jee-mars-R-win32-x86_64 JDK 1.7+
eclipse支持jdk 1.8 compiler 支持JDK1.8 project facets 支持JDK1.8 找了很久终于找到了,免安装的,拿过去就可以用,集成svn,maven,git等工具
eclipse+jdk1.8
Eclipse IDE开发平台配置及参数深度优化说明,让Eclipse启动更快,开发编码更流畅