`
defrag_sly
  • 浏览: 128136 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Drag & Drop eclipse Viewer to GMF Editor

阅读更多
1,添加Viewer的Drag support
private void addDragSupport(final TreeViewer viewer) {
		DelegatingDragAdapter dragAdapter = new DelegatingDragAdapter();
		dragAdapter.addDragSourceListener(new TransferDragSourceListener() {
			public Transfer getTransfer() {
				return ResourceTransfer.getInstance();
			}
			public void dragStart(DragSourceEvent event) {
				if (!viewer.getSelection().isEmpty()) {
					event.doit = true;
					return;
				}
				event.doit = false;
			}
			public void dragSetData(DragSourceEvent event) {
			}
			public void dragFinished(DragSourceEvent event) {
			}
		});
		viewer.addDragSupport(DND.DROP_MOVE, dragAdapter.getTransfers(),
				dragAdapter);
	}

2,创建的DROPListener。
public class GMFDropListener extends DiagramDropTargetListener {

	public GMFDropListener(EditPartViewer viewer, Transfer xfer) {
		super(viewer, xfer);		
	}

	@Override
	protected void handleDragOver() {
		updateTargetRequest();
		updateTargetEditPart();
		showTargetFeedback();
	}

	@Override
	protected List getObjectsBeingDropped() {
		//need sub
		return null;
	}
}

3,配置Editor的DropListener
protected void configureGraphicalViewer() {		
	super.configureGraphicalViewer();
	IDiagramGraphicalViewer viewer = getDiagramGraphicalViewer();	
	viewer.addDropTargetListener(new GMFDropListener(viewer,
				ResourceTransfer.getInstance()));
}

4,创建处理editPolicy
public class DropObjectEditPolicy extends GraphicalEditPolicy implements
		EditPolicy {
	public Command getCommand(Request request) {
		if (RequestConstants.REQ_DROP_OBJECTS.equals(request.getType())) {
			DropObjectsRequest dndRequest = (DropObjectsRequest) request;
			return getDropCommand(dndRequest);
		}
		return null;
	}

	private Command getDropCommand(DropObjectsRequest dndRequest) {
		//need sub
		return null;
	}

	public boolean understandsRequest(Request request) {
		return RequestConstants.REQ_DROP_OBJECTS.equals(request.getType())
				&& request instanceof DropObjectsRequest;
	}
}

5,为目标EditPart安装editPolicy
installEditPolicy("Drop_Objects_EditPolicy", new DropObjectEditPolicy());

ps:如果是Package Explorer等Viewer,便不需要增加drag support。
分享到:
评论

相关推荐

    深度VMware6.0完美精简汉化版+Drag&Drop_FixPatch

    【深度VMware6.0完美精简汉化版+Drag&Drop_FixPatch】是一款针对VMware Workstation 6.0的专业优化版本,它结合了深度定制和汉化,为用户提供更加符合中文用户习惯的操作界面。VMware Workstation是一款强大的虚拟机...

    VMware6.0深度完美汉化版+vmtools+Drag&Drop_FixPatch(1)

    而且我已经把windows和linux的vmtools包,以及解决拖拽的问题脚本Drag&Drop_FixPatch一并加入进来,欢迎大家下载使用。 注意:因为大小问题,我分为两卷: VMware6.0深度完美汉化版+vmtools+Drag&Drop_FixPatch(1) ...

    Drag&Drop VCL for Delphi

    《Delphi中的Drag&Drop VCL技术详解》 在Delphi编程环境中,实现Windows应用程序的交互性和用户友好性,往往离不开“拖放”(Drag & Drop)功能的支持。Drag&Drop VCL是针对这一需求而设计的一套组件库,它基于...

    使用Drag&Drop接受文件名的输入框(13KB)

    "使用Drag&Drop接受文件名的输入框"是一种创新的交互方式,它允许用户通过简单的拖放操作来输入文件路径或文件名,提高了用户体验和工作效率。这种功能在多种应用中都非常实用,比如文件管理器、编辑器或者上传服务...

    VMware6.0深度完美汉化版+vmtools+Drag&Drop_FixPatch(2)

    而且我已经把windows和linux的vmtools包,以及解决拖拽的问题脚本Drag&Drop_FixPatch一并加入进来,欢迎大家下载使用。 注意:因为大小问题,我分为两卷: VMware6.0深度完美汉化版+vmtools+Drag&Drop_FixPatch(1) ...

    eclipse rcp drag&drop

    在Eclipse RCP应用中,Drag & Drop功能是提升用户体验的重要特性,让用户能够通过简单的鼠标操作移动或复制对象。 拖放(Drag & Drop)在Eclipse RCP中的实现涉及到多个组件和接口,主要包括以下几个关键知识点: ...

    HTML5实践Drag&Drop

    HTML5实践Drag&Drop HTML5作为现代网页开发的标准,引入了许多新的特性和API,其中一项就是拖放(Drag&Drop)功能。这项技术允许用户通过鼠标或触控设备将元素从一个位置拖动到另一个位置,极大地提升了用户体验。...

    Blender插件-多格式文件拖拽导入插件 Drag & Drop Import V1

    Optimize your workflow with Drag and Drop Import for Blender. Quickly and easily import files by dragging them from your file explorer and dropping them into Blender’s 3D Viewport or Outliner. No ...

    一个很不错的drag & drop

    标题中的“一个很不错的drag & drop”指的是使用拖放(Drag & Drop)技术的一个应用程序或功能,这在网页设计和开发中非常常见。拖放功能允许用户通过鼠标将元素从一处拖到另一处,实现数据的移动、拷贝或者进行其他...

    Drag & Drop Files to Delete.zip

    标题“Drag & Drop Files to Delete.zip”提示我们这是一个与JavaScript相关的项目,可能涉及到文件操作,特别是拖放(Drag & Drop)功能,用于删除文件。在Web开发中,这种功能允许用户通过简单的拖放操作来处理...

    WPF Drag&Drop

    在Windows Presentation Foundation (WPF) 中,拖放(Drag&Drop)功能是一种常见的用户交互方式,允许用户通过鼠标操作将项目从一个位置移动到另一个位置。在这个特定的场景中,"WPF Drag&Drop"指的是在两个DataGrid...

    Drag & drop source code android

    在Android开发中,拖放(Drag & Drop)功能是一种用户友好的交互方式,允许用户通过手势将一个元素从一处移动到另一处。本资源提供的"Drag & Drop source code android"包含了一个实现Android拖放功能的源代码示例,...

    Window下拖放操作Drag & Drop 全解析

    Window 下拖放操作 Drag & Drop 全解析 Windows 操作系统中拖放操作(Drag & Drop)是一种常用的用户交互方式,允许用户在不同的程序窗口之间、同一个程序的不同窗口之间或同一程序同一窗口的不同控件之间进行移动...

    Drag & Drop in Javascript.zip

    JavaScript中的拖放(Drag & Drop)功能是一种交互式技术,允许用户通过鼠标操作将元素从一个位置拖动到另一个位置,常用于文件管理、界面构建和游戏开发等场景。在这个"Drag & Drop in JavaScript"项目中,我们可能...

    【类库与框架】★★★★★-DragKit - an iOS framework for enabling drag & drop

    【类库与框架】★★★★★-DragKit - an iOS framework for enabling drag & drop【类库与框架】★★★★★-DragKit - an iOS framework for enabling drag & drop 1.适合学生学习研究参考 2.适合个人学习研究参考 3...

    Drag & Drop Modules

    "Drag & Drop Modules" 是一个关于使用拖放功能在JavaScript虚拟机2(JSVM2)中构建模块化应用的示例。这个主题涉及到前端开发中的交互设计和模块化编程两个重要概念。 首先,让我们深入了解“Drag & Drop”技术。...

    Drag&drop.zip

    在我们的例子中,“Drag&drop.zip”项目包含了一个测试示例,展示了如何在两个列表框(QListWidget)之间进行拖放操作。 在Qt 5.6中,启用拖放功能通常需要以下步骤: 1. **启用拖放功能**:对于每个列表框,需要...

    WPF listbox之间拖动 drag&drop

    本教程将详细讲解如何在两个`ListBox`之间实现拖放(Drag & Drop)功能,以及如何添加上下按钮来控制`ListBox`内部元素的移动,并在拖动时改变边框颜色,提升用户体验。 首先,我们要了解`ListBox`的基本用法。`...

    VMware拖放剪贴板支持组件

    【Drag&Drop_FixPatch.exe】很可能是这个补丁程序的执行文件,它的主要任务就是为VMware添加拖放支持。当用户安装并运行这个补丁后,应该能够在虚拟机和宿主机之间自由地拖放文件,无需再通过繁琐的复制粘贴或者借助...

Global site tag (gtag.js) - Google Analytics