Eclipse插件开发- view to view drag drop

定义Drop:

package public_project.view.dnd;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TransferData;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.TreeItem;

import public_project.view.model.descriptors.ProjectDetail;
import public_project.view.model.descriptors.ProjectGroup;

public class ViewDropListener extends ViewerDropAdapter {
	
	private TreeViewer treeViewer;
	
	public ViewDropListener(Viewer viewer) {
		super(viewer);
		this.treeViewer = (TreeViewer) viewer;
	}
	@Override
	public void drop(DropTargetEvent event) {
		if (event.data == null) {
	          event.detail = DND.DROP_NONE;
	          return;
	        }
	        String [] strData = (String[]) event.data;
	        String text = (String) strData[0];
	        if (event.item == null) {
	         MessageDialog.openWarning(Display.getCurrent().getActiveShell(), "哈哈!!", "哈哈哈!!!!你想多了。!!!功能太鸡肋,不开放!!");
	        } else {
	          TreeItem item = (TreeItem) event.item;
	          Object objItem = item.getData();
	          if(objItem instanceof ProjectGroup){
	        	  ProjectGroup group = (ProjectGroup) objItem;
	        	  ProjectDetail [] details = group.getProjectDetail();
	        	  String addProjectName = text.substring(text.lastIndexOf("\\")+1);
//	        	  genJar(addProjectName);
//	        	  ftpUpload();
	        	  if(details != null && details.length >0){
	        		  //判断是否存在
	        		  for(ProjectDetail detail : details){
	        			  if(addProjectName.equals(detail.getProjectName())){
	    		        	  return;
	        			  }
	        		  }
	        		  ProjectDetail detail1 = new ProjectDetail();
		        	  detail1.setProjectName(addProjectName);
		        	  detail1.setProjectStatus("0");
		        	  group.addProjectDetail(detail1);
		        	  treeViewer.refresh();
	        	  }else{
	        		  ProjectDetail detail1 = new ProjectDetail();
		        	  detail1.setProjectName(addProjectName);
		        	  detail1.setProjectStatus("0");
		        	  group.addProjectDetail(detail1);
		        	  treeViewer.refresh();
	        	  }
	          }
	        }
	      
		
		super.drop(event);
	}

	@Override
	public boolean performDrop(Object data) {
		
		return false;
	}

	@Override
	public boolean validateDrop(Object target, int operation,
			TransferData transferType) {
		return true;
	}

}
定义Drag:

package public_project.view.dnd;

import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;

public class ViewDragListener implements DragSourceListener{

	@Override
	public void dragStart(DragSourceEvent event) {
		System.out.println();
	}

	@Override
	public void dragSetData(DragSourceEvent event) {
		System.out.println();
	}

	@Override
	public void dragFinished(DragSourceEvent event) {
		System.out.println();
	}

}
调用:

int operations = DND.DROP_COPY | DND.DROP_MOVE;
	    Transfer[] transferTypes = new Transfer[]{FileTransfer.getInstance()};
		treeViewer.addDropSupport(operations, transferTypes, new ViewDropListener(treeViewer));
		treeViewer.addDragSupport(operations, transferTypes, new ViewDragListener());

转载于:https://my.oschina.net/liuyi126/blog/157957

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值