【编程开发】AspAsp.NetCGIPHPJspXMLPERLC++C#VCVBDelphiPowerBuilderJAVA汇编数据库编程移动开发其它语言

您现在的位置:首页 > 网络学院 > 编程开发 > 数据库编程 > 拖放 Eclipse Workbench 标签

拖放 Eclipse Workbench 标签

来源: 作者: 日期:2006-09-09

【聚杰网数据库编程】拖放 Eclipse Workbench 标签

清单 5. 取消其他拖放操作

public void dragFinished(DragSourceEvent dsEvent) {   dragSource.dispose();      // inhibit the action of CTabFolder's default drag-drop-listeners   draggedFolder.notifyListeners(SWT.MouseUp, null); } 

  对视图标签的拖放行为进行定制

  由于视图通常都存放在 CTabFolder 容器中,因此上面用来定制编辑器的拖放行为的方法也可以用来定制视图的拖放行为。要像上面的 图 1 和 图 2 中所显示的那样对视图的拖放行为进行定制,则需要执行以下操作:当用户拖动一个视图标签时,捕获底层视图的 view-id,并将其设置为拖放过程中正在转移的对象。下面黑色字体表示的代码是应该在上面 清单 3 和 清单 4 的基础上添加的代码。

清单 6. 定制编辑器和视图标签的拖放行为
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.DragDetect, new Listener() {   public void handleEvent(Event event)   {     //ignore drag of widgets other than tab-folders (which host      //editor and view tabs)     if(!(event.widget instanceof CTabFolder))       return;          final CTabFolder draggedFolder = (CTabFolder)event.widget;          //Handle special case where no editors are open but editor area      //(and hence containing tab-folder) are still visible. Now try      //dragging the tab-folder. This drag should be ignored.     if( draggedFolder.getItemCount() < 1 )       return;          int operations = DND.DROP_COPY | DND.DROP_DEFAULT;     final DragSource dragSource = new DragSource(draggedFolder, operations);          //get a reference to the workbench-part that is being dragged     IWorkbenchWindow workbenchWindow =        PlatformUI.getWorkbench().getActiveWorkbenchWindow();     final IWorkbenchPart workbenchPartBeingDragged =        workbenchWindow.getActivePage().getActivePart();          Transfer[] transferTypes = null;     if(workbenchPartBeingDragged instanceof IEditorPart)       transferTypes = new Transfer[] {EditorInputTransfer.getInstance()};     else       transferTypes = new Transfer[] {TextTransfer.getInstance()};     dragSource.setTransfer(transferTypes);          dragSource.addDragListener(new DragSourceListener()     {       public void dragStart(DragSourceEvent dsEvent) { }       public void dragSetData(DragSourceEvent dsEvent)       {         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 };         }         else if(workbenchPartBeingDragged instanceof IViewPart)         {           String viewId = workbenchPartBeingDragged.getSite().getId();           dsEvent.data = viewId;         }       }       public void dragFinished(DragSourceEvent dsEvent)        {         dragSource.dispose();                  // inhibit the action of CTabFolder's default drag-detect-listeners         draggedFolder.notifyListeners(SWT.MouseUp, null);       }     });   } }); 

  

上一页 1 2 3 4 5 下一页

评论   点击查看全部评论
您的评论参与,将为聚杰带来更大的动力!请不要吝啬!
快速回复
请使用文明语言让我们维护健康绿色网络环境!

匿名发表   验证码: