拖放 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.    责编:豆豆技术应用

正在加载评论...