package org.insightech.er.editor.view.action.ermodel; import java.util.ArrayList; import java.util.List; import org.eclipse.draw2d.FigureCanvas; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Event; import org.eclipse.ui.PlatformUI; import org.insightech.er.ResourceString; import org.insightech.er.editor.EROneDiagramEditor; import org.insightech.er.editor.model.ERDiagram; import org.insightech.er.editor.model.diagram_contents.element.node.ermodel.ERModel; import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable; import org.insightech.er.editor.model.diagram_contents.element.node.table.ERVirtualTable; import org.insightech.er.editor.view.action.AbstractBaseAction; public class PlaceTableAction extends AbstractBaseAction { public static final String ID = PlaceTableAction.class.getName(); private EROneDiagramEditor oneEditor; public PlaceTableAction(EROneDiagramEditor editor) { super(ID, ResourceString .getResourceString("action.title.ermodel.place.table"), editor); this.oneEditor = editor; } @Override public void execute(Event event) throws Exception { ERDiagram diagram = this.getDiagram(); ERModel model = oneEditor.getModel(); List<ERTable> input = new ArrayList<ERTable>(); input.addAll(diagram.getDiagramContents().getContents().getTableSet().getList()); NodeSelectionDialog dialog = new NodeSelectionDialog( PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), diagram); FigureCanvas canvas = (FigureCanvas) oneEditor.getGraphicalViewer().getControl(); Point point = new Point( canvas.getHorizontalBar().getSelection() + canvas.getClientArea().width / 2, canvas.getVerticalBar().getSelection() + canvas.getClientArea().height / 2); if (dialog.open() == IDialogConstants.OK_ID) { Object[] results = dialog.getResult(); for (Object result : results) { ERTable curTable = (ERTable) result; ERVirtualTable virtualTable = new ERVirtualTable(model, curTable); virtualTable.setPoint(point.x, point.y); model.addTable(virtualTable); // oneEditor.setContents(model); // oneEditor.refreshContents(); // model.changeAll(); } } } }