kettle8.2使用org.eclipse.swt.dnd.DragSource和org.eclipse.swt.dnd.DropTarget实现拖拽效果

package org.pentaho.di.ui.spoon.delegates;

import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DragSourceListener;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.DropTargetListener;
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.pentaho.di.core.Const;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.dnd.DragAndDropContainer;
import org.pentaho.di.core.dnd.XMLTransfer;
import org.pentaho.di.core.plugins.PluginInterface;
import org.pentaho.di.core.plugins.PluginTypeInterface;
import org.pentaho.di.core.plugins.StepPluginType;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.job.entry.JobEntryCopy;
import org.pentaho.di.repository.LongObjectId;
import org.pentaho.di.repository.RepositoryObject;
import org.pentaho.di.repository.RepositoryObjectType;
import org.pentaho.di.trans.TransHopMeta;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.ui.spoon.TreeSelection;

public class Test {

	//拖动源
	public void dragSource_test() {
            //1、为控件注册一个拖动源,此处控件为Tree对象。每个组件只能注册一个拖动源
            DragSource ddSource = new DragSource( tree, DND.DROP_NONE );
	    //2、制定支持的拖拽类型,此处为kettle自定义类型
	    Transfer[] ttypes = new Transfer[] { XMLTransfer.getInstance() };
	    ddSource.setTransfer( ttypes );
	    //3、添加监听事件
	    ddSource.addDragListener( new DragSourceListener() {

			@Override
			public void dragFinished(DragSourceEvent dragsourceevent) {
				// TODO 放置成功后或者已经中止后调用
				
			}

			@Override
			public void dragSetData(DragSourceEvent dragsourceevent) {
				// TODO 数据来自拖动源
				
			}

			@Override
			public void dragStart(DragSourceEvent dragsourceevent) {
				// TODO 开始拖动组件
				
			}
		} );
	}
	
	//拖动目标
	public void dropTarget_test() {
            //1、为控件注册拖动目标,此处控件为一个Composite对象
            DropTarget ddTarget = new DropTarget( tabComp, DND.DROP_NONE );
            //2、指定支持接收的拖拽类型,此处为kettle自定义类型和文件类型两种
            final XMLTransfer xmlTransfer = XMLTransfer.getInstance();
            final FileTransfer fileTransfer = FileTransfer.getInstance();
	    ddTarget.setTransfer( new Transfer[] { xmlTransfer,fileTransfer } );
	    //3、添加监听事件
	    ddTarget.addDropListener( new DropTargetListener() {

			@Override
			public void dragEnter(DropTargetEvent droptargetevent) {
				// TODO 光标进入目标边界
				
			}

			@Override
			public void dragLeave(DropTargetEvent droptargetevent) {
				// TODO 光标离开目标边界,或者操作取消
				
			}

			@Override
			public void dragOperationChanged(DropTargetEvent droptargetevent) {
				// TODO 正在执行的操作已更改
				
			}

			@Override
			public void dragOver(DropTargetEvent droptargetevent) {
				// TODO 光标移动到目标上
				
			}

			@Override
			public void drop(DropTargetEvent droptargetevent) {
				// TODO 目标落下
				
			}

			@Override
			public void dropAccept(DropTargetEvent droptargetevent) {
				// TODO 目标落下被履行
				
			}});
	  
	}
}


 

 

详细API路径:http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fdnd%2Fpackage-summary.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值