邋遢居

我的Java天堂

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks
    前面一段时间有一个需求就是从swt控件中拖拽对象到图形编辑器中(就是class org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor 的儿子们)编辑器。

后来就想假如我需要从图形编辑器中拖拽对象到swt控件中又该怎么做。
经过一段时间的探索,终于搞定了。

记下如下过程,希望对需要的朋友有点帮助。

首先有了《从SWT控件中托拽对象到GEF编辑器中》文中对addDropTargetListener方法使用的经历,很快就确定我需要对GraphicalViewer添加一个DragSourceListener

想着到这个地方我应该可以很快收工了。但是添加完了以后发现原来的拖动功能都没有了,这个怎么回事。谁在后面搞鬼。

经过一段时间的狂搜滥索终于找到了问题的关键。因为GEF不允许同时有两个活动 DragSource

它本身已经拥有一个DragSource了(编辑器内部的托拽),我们这时候添加一个就会存在多

DragSource了。当我添加一个新的DragSource时候我们新家的DragSource就会被认为是默认的DragSource

他以前的DragSource就失效了。这不是我像看到的。

怎么处理。看到了一个牛人的解决方案。


What I made to fix the problem was to only allow my DragSource to act under certain 
conditions (in my application this happens when you click and drag the mouse AND
 the SHIFT key is pressed). So when the SHIFT key is not pressed my DragSource does
nothing and the editor's internal drag and drop works fine。

public void dragStart(DragSourceEvent event)
{
...

if (!condition.isValid())
event.doit = false;

...
}

我尝试了一下这种状况,一下就搞定了。
在我的项目中,由于还有一些数据需要转化。呵呵,感觉不错。

参考文档:
http://dev.eclipse.org/newslists/news.eclipse.tools.gef/msg15754.html
posted on 2006-11-11 19:56 Jet Geng 阅读(2951) 评论(1)  编辑  收藏 所属分类: EclipseGEF

Feedback

# re: 图形编辑器中拖拽对象到swt控件 2007-03-20 16:53 cjay
我遇到一个关于拖拽的问题:
eclipse中的multipage的editor以及能够象tabFolder那样放下多个view的FolderLayout,都支持将含有多个page的editor经过拖拽,拆分成并排显示的两个page...如何用代码实现上述效果呢?
谢谢  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: