拖放 Eclipse Workbench 标签
http://tech.ddvip.com 2006年11月20日 社区交流
本文详细介绍拖放 Eclipse Workbench 标签
下图以图形方式显示了这些操作:
图 3. 拖放编辑器标签的序列图

注意,在 dragFinished() 方法中(参见上面的 清单 3),我们对在 CTabFolder 容器上创建的 drag-source 进行了处理。实际上这是因为为每次拖放操作都创建了一个 drag-source,我们并没有对原来的 drag-source 进行处理,这会使问题变得更加复杂。对 drag-source 的处理还从 CTabFolder 的事件监听器表中删除了 drag-listener-x(它是在创建 drag-source 时添加的),如上面的 图 3 所示。
如何捕获所拖放编辑器的 IEditorInput 和 Editor ID?
下面让我们来看一下怎样在 dragSetData() 方法中实现 操作 1 和 操作 2。
由于编辑器与包含它的 CTabFolder 之间的映射并没有公开,因此可以依靠 IWorkbenchPage.getActivePart() 来获得正在拖放的工作台部分,从中可以很容易地提取出所需的信息,如下面的代码所示:
清单 4. 捕获所拖放编辑器的 editor-input 和 editor-id
public void dragSetData(DragSourceEvent dsEvent)
{
IWorkbenchWindow workbenchWindow =
PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPart workbenchPartBeingDragged =
workbenchWindow.getActivePage().getActivePart();
if(workbenchPartBeingDragged instanceof IEditorPart)
{
String editorId = workbenchPartBeingDragged.getSite().getId();
IEditorInput editorInput =
((IEditorPart)workbenchPartBeingDragged).getEditorInput();
EditorInputTransfer.EditorInputData data =
EditorInputTransfer.createEditorInputData(editorId, editorInput);
dsEvent.data = new EditorInputTransfer.EditorInputData[] { data };
}
}限制 tab 文件夹的默认拖放监听器的行为
来源:IBM 作者:Shiva Kumar H.R. 责编:豆豆技术应用
正在加载评论...