拖放 Eclipse Workbench 标签

http://tech.ddvip.com   2006年11月20日    社区交流

本文详细介绍拖放 Eclipse Workbench 标签

  一种创建拖放源的新方法

  下面让我们为 Display 添加一个拖放检测监听器(用来监听 SWT.DragDetect 类型的事件),如下所示:

  清单 2. 为 Display 添加拖放监听器

PlatformUI.getWorkbench().getDisplay().addFilter(SWT.DragDetect, new Listener()
{
 public void handleEvent(Event event)
 {
 }
});

  不论何时发生拖放操作时,都会调用这个监听器的 handleEvent() 方法,其中 event.widget 指向产生这个事件的控件。在拖动编辑器标签时,event.widget 指向存放这个拖放编辑器标签的 CTabFolder 容器。这样我们现在就可以为这个 CTabFolder 容器创建一个拖放源,如下所示:

  清单 3. 捕获存放编辑器的 Tab 文件夹

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;
  CTabFolder draggedFolder = (CTabFolder)event.widget;
  int operations = DND.DROP_COPY | DND.DROP_DEFAULT;
  final DragSource dragSource = new DragSource(draggedFolder, operations);
  Transfer[] transferTypes = new Transfer[] {EditorInputTransfer.getInstance()};
  dragSource.setTransfer(transferTypes);
  dragSource.addDragListener(new DragSourceListener()
  {
   public void dragStart(DragSourceEvent dsEvent) { }
   public void dragSetData(DragSourceEvent dsEvent)
   {
    //code to perform operation-1 and operation-2
   }
   public void dragFinished(DragSourceEvent dsEvent)
   {
    dragSource.dispose();
   }
  });
 }
});

  现在我们主要关心的是在开始拖放操作之后创建了一个新的拖放源。在开始拖放操作之后创建一个拖放源,这样做是否能够确保这个新的拖放源可以接收现在发生的拖放操作的通知?

来源:IBM    作者:Shiva Kumar H.R.    责编:豆豆技术应用

正在加载评论...