//自定义添加拖拽方法
private void initDragAndDrop() {
int ops = DND.DROP_COPY | DND.DROP_MOVE;
Transfer[] transfers = new Transfer[] {
TextTransfer.getInstance()
};
//拖拽支持
tableViewer.addDragSupport(ops, transfers, new DragSourceListener() {
@Override
public void dragStart(DragSourceEvent event) {
// TODO 自动生成的方法存根
}
@Override
public void dragSetData(DragSourceEvent event) {
// TODO 自动生成的方法存根
ISelection selection = tableViewer.getSelection();
JSONObject jsonObj = JSONObject.fromObject(selection);
JSONObject jsonObj_1 = (JSONObject)jsonObj.get("firstElement");
String PropertyName = jsonObj_1.get("PropertyName").toString();
event.data = PropertyName;
}
@Override
public void dragFinished(DragSourceEvent event) {
// TODO 自动生成的方法存根
}
});
//目标区域的拖拽支持
GraphicalViewer viewer = VisualEditorGlobal.getCurrentActivityVisualEditor().getContentViewer();//GEF编辑器的viewer
viewer.addDropTargetListener(
new ControlDropTargetListener (viewer));
}
//实现拖拽事件监听类
public class ControlDropTargetListener extends AbstractTransferDropTargetListener {
private HomunculeCreateFactory factory = new HomunculeCreateFactory();
public FileDropTargetListener(EditPartViewer viewer, Transfer xfer) {
super(viewer, xfer);
}
public FileDropTargetListener(EditPartViewer viewer) {
super(viewer, TextTransfer.getInstance());
}
@Override
protected void updateTargetRequest() {
}
@Override
protected Request createTargetRequest() {
CreateRequest request = new CreateRequest();
request.setFactory(factory);
return request;
}
}
//实现拖拽事件监听工厂
public class HomunculeCreateFactory implements CreationFactory {
String text;
public Object getNewObject() {
//Homuncule homuncule = new Homuncule(ColorConstants.red,text);
MMainContainer mainC = (MMainContainer)VisualEditorGlobal.getCurrentActivityVisualEditor().getContentViewer().getContents().getModel();
MReportFixedColumnHeader fixColumnH = new MReportFixedColumnHeader();
fixColumnH.frameworkId = mainC.frameworkId;
fixColumnH.useArea = mainC.useArea;
fixColumnH.init();
fixColumnH.initProperties();
return fixColumnH;
}
public Object getObjectType() {
return MReportFixedColumnHeader.class;
}
public void setText(String text){
this.text = text;
}
}