自己用

/**创建子节点
  * @param treeItem
  */
 private void createChildTreeItem(TreeItem treeItem,TreeItem linkTreeItem){
  if (treeItem.getItems().length != 0) {
   TreeItem[] childTreeItems = treeItem.getItems();
   for (TreeItem childTreeItem : childTreeItems) {
    TreeItem childItem = new TreeItem(linkTreeItem,SWT.NONE);  
    childItem.setText(childTreeItem.getText());
    createChildTreeItem(childItem,childItem); 
   }
  }
 }

 

 

 

 

Set<File> projectSet = new HashSet<File>();
  SashForm sashForm = new SashForm(parent, SWT.VERTICAL | SWT.SMOOTH);
  Group upGroup = new Group(sashForm, SWT.NONE);
  upGroup.setLayout(new FillLayout());
  upTree = new Tree(upGroup, SWT.SINGLE);
  initProjectFile(file,projectSet);
  showAllProjectFile(projectSet);
  
  
  // 定义拖放源对象
  DragSource dragSource = new DragSource(upTree, DND.DROP_MOVE | DND.DROP_COPY);
 
  // 设置传输的数据为文本型String类型
  dragSource.setTransfer(new Transfer[] { TextTransfer.getInstance() });
  // 注册拖放源时的事件处理
  dragSource.addDragListener(new DragSourceListener() {
   public void dragStart(DragSourceEvent event) {
    if (upTree.getSelectionCount() == 0)
     event.doit = false; 
   }

   public void dragSetData(DragSourceEvent event) {
    if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
     event.data = upTree.getSelection()[0].getText(0);
     /*fileItem = upTree.getSelection(); */
     //event.
    }
   }

   public void dragFinished(DragSourceEvent event) {
   }
  });
  
  
  DropTarget dropTarget = new DropTarget(upTree, DND.DROP_MOVE
    | DND.DROP_DEFAULT | DND.DROP_COPY);
  // 设置目标对象可传输的数据类型
  dropTarget.setTransfer(new Transfer[] { TextTransfer.getInstance() });
  // 注册目标对象的事件处理
  dropTarget.addDropListener(new DropTargetListener() {
   public void dragEnter(DropTargetEvent event) {
    if (event.detail == DND.DROP_DEFAULT)
     event.detail = DND.DROP_COPY;
   }

   public void dragOperationChanged(DropTargetEvent event) {
    if (event.detail == DND.DROP_DEFAULT)
     event.detail = DND.DROP_COPY;
   }

   public void dragOver(DropTargetEvent event) {
    event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SELECT;
   }

   // 当松开鼠标时触发的事件
   public void drop(DropTargetEvent event) {
    if (event.item == null)
     return;
    if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
     
     // 首先获得目标对象节点
     TreeItem eventItem = (TreeItem) event.item;
     
     // 得到当前选中的对象节点
     TreeItem selectTreeItem = upTree.getSelection()[0];
     TreeItem[] childItem = selectTreeItem.getItems();
     if (childItem.length == 0 || childItem == null) {
      return;
     }
     
     if(fileMap.get(eventItem).equals(fileMap.get(selectTreeItem)))
      return ;
     
     String selectTreeItemText = event.data.toString();
     TreeItem treeItem = new TreeItem(eventItem, SWT.NONE);
     treeItem.setText(selectTreeItemText);

     
     createChildTreeItem(selectTreeItem,treeItem);
    }
   }

   public void dragLeave(DropTargetEvent event) {
   }

   public void dropAccept(DropTargetEvent event) {
   }
  });
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值