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 目标落下被履行
}});
}
}