package org.insightech.er.editor.view.drag_drop;
import java.util.List;
import java.util.Map;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.Request;
import org.eclipse.gef.dnd.AbstractTransferDropTargetListener;
import org.eclipse.gef.dnd.TemplateTransfer;
import org.eclipse.gef.requests.DirectEditRequest;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.Transfer;
import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable;
import org.insightech.er.editor.model.diagram_contents.element.node.table.TableView;
import org.insightech.er.editor.model.diagram_contents.element.node.table.column.NormalColumn;
import org.insightech.er.editor.model.diagram_contents.not_element.dictionary.Word;
public class ERDiagramTransferDropTargetListener extends
AbstractTransferDropTargetListener {
public ERDiagramTransferDropTargetListener(EditPartViewer dropTargetViewer,
Transfer xfer) {
super(dropTargetViewer, xfer);
}
@Override
protected void updateTargetRequest() {
}
@Override
public void drop(DropTargetEvent event) {
super.drop(event);
// ERTable curTable = (ERTable) event.data;
// ERDiagramMultiPageEditor editor = curTable.getDiagram().getEditor();
// EROneDiagramEditor modelEditor = (EROneDiagramEditor) editor.getActiveEditor();
//
// Point cursorLocation = Display.getCurrent().getCursorLocation();
// Point point = modelEditor.getGraphicalViewer().getControl().toControl(cursorLocation);
// FigureCanvas canvas = (FigureCanvas) modelEditor.getGraphicalViewer().getControl();
// point.x += canvas.getHorizontalBar().getSelection();
// point.y += canvas.getVerticalBar().getSelection();
//
// PlaceTableCommand command = new PlaceTableCommand(curTable, point);
// command.execute();
// ERTable curTable = (ERTable) event.data;
// ERDiagramMultiPageEditor editor = curTable.getDiagram().getEditor();
// EROneDiagramEditor modelEditor = (EROneDiagramEditor) editor.getActiveEditor();
//
// Point cursorLocation = Display.getCurrent().getCursorLocation();
// Point point = modelEditor.getGraphicalViewer().getControl().toControl(cursorLocation);
// FigureCanvas canvas = (FigureCanvas) modelEditor.getGraphicalViewer().getControl();
// point.x += canvas.getHorizontalBar().getSelection();
// point.y += canvas.getVerticalBar().getSelection();
//
// ERModel model = curTable.getDiagram().getCurrentErmodel();
//
// ERVirtualTable virtualTable = new ERVirtualTable(model, curTable);
// virtualTable.setPoint(point.x, point.y);
// model.addTable(virtualTable);
// modelEditor.setContents(model);
}
@Override
protected Request createTargetRequest() {
Object object = this.getTargetModel();
if (object instanceof Map) {
if (((Map) object)
.get(ERDiagramTransferDragSourceListener.MOVE_COLUMN_GROUP_PARAM_PARENT) instanceof TableView) {
DirectEditRequest request = new DirectEditRequest(
ERDiagramTransferDragSourceListener.REQUEST_TYPE_MOVE_COLUMN_GROUP);
request.setDirectEditFeature(object);
request.setLocation(this.getDropLocation());
return request;
} else {
DirectEditRequest request = new DirectEditRequest(
ERDiagramTransferDragSourceListener.REQUEST_TYPE_ADD_COLUMN_GROUP);
request.setDirectEditFeature(object);
request.setLocation(this.getDropLocation());
return request;
}
} else if (object instanceof Word) {
DirectEditRequest request = new DirectEditRequest(
ERDiagramTransferDragSourceListener.REQUEST_TYPE_ADD_WORD);
request.setDirectEditFeature(object);
request.setLocation(this.getDropLocation());
return request;
} else if (object instanceof NormalColumn) {
DirectEditRequest request = new DirectEditRequest(
ERDiagramTransferDragSourceListener.REQUEST_TYPE_MOVE_COLUMN);
request.setDirectEditFeature(object);
request.setLocation(this.getDropLocation());
return request;
} else if (object instanceof ERTable) {
DirectEditRequest request = new DirectEditRequest(
ERDiagramTransferDragSourceListener.REQUEST_TYPE_PLACE_TABLE);
request.setDirectEditFeature(object);
request.setLocation(this.getDropLocation());
return request;
} else if (object instanceof List) {
DirectEditRequest request = new DirectEditRequest(
ERDiagramTransferDragSourceListener.REQUEST_TYPE_PLACE_TABLE);
request.setDirectEditFeature(object);
request.setLocation(this.getDropLocation());
return request;
}
return super.createTargetRequest();
}
private Object getTargetModel() {
TemplateTransfer transfer = (TemplateTransfer) this.getTransfer();
return transfer.getObject();
}
@Override
public boolean isEnabled(DropTargetEvent event) {
System.out.println("isEnabled");
boolean result = super.isEnabled(event);
System.out.println(result);
return result;
}
@Override
protected Request getTargetRequest() {
System.out.println("getTargetRequest");
Request result = super.getTargetRequest();
System.out.println(result);
return result;
}
}