经过长期调查并阅读了此问题我仍然没有得到解决问题的“好”方案。

我有一个Gef编辑器,我想让用户将这个编辑器中的图形(==模型对象)拖放到我的视角中可用的另一个自定义视图中。

在我的GEF编辑器图形画布上添加带有我自己的拖动传递的DragSource可以实现这一点。但是作为副作用,我不希望出现这种副作用,这使您无法通过拖放操作将图形移动到编辑器内部。

经过调查,我发现此在Eclipse论坛上的帖子,但该解决方案对我来说不可接受。因此,我更深入地研究了以下纯SWT代码段,该代码段显示,一旦添加了拖动源,就不再触发MouseMove事件(gef用于支持在INSIDE编辑器中进行拖动的事件)。 通用标签

我猜这是从SWT的角度来看的正常行为。你确认吗?

此外,我真的在寻找解决此问题的方法,除了在Eclipse论坛上提出的一种方法,即仅在满足给定条件(例如Shift)的情况下才激活我的DragSource(这是在DragSourceListener.dragStart方法中完成的)通过将event.doit设置为false)

欢迎任何帮助,建议和评论。

预先感谢

Manu

有帮助吗?

解决方案

您很可能希望扩展常规GEF拖放以包含图像拖动支持。

当您在GEF编辑器中拖动项目时,可以将它们拖动为Figures(实际上有点复杂,它使用Request-Command模式)。但是,当拖动超出编辑器边界时,您需要能够提供ie。图片来自此数据。

SWT为多种不同的拖动数据传输提供支持,如下所示: 通用标签

因此,我相信您想在GEF DragTracker中找到一种方法,将该ImageTransfer也包括到OS Drag中。 DragTrackers是GEF处理拖动的方式,并在EditPart的函数getDragTracker()中返回

我不确定该怎么做,但是扩展自己的DragTracker(也可以提供操作系统级别的Image)应该可以解决问题。

案例与复制粘贴非常相似,在基本的GMF编辑器中,可以将粘贴项作为图像复制到编辑器之外,并复制到任何接受图像的工具中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top