package org.insightech.er.editor.model; import java.io.IOException; import java.text.MessageFormat; import org.eclipse.core.resources.IResource; import org.eclipse.gef.EditPart; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.insightech.er.Activator; import org.insightech.er.editor.EROneDiagramEditor; import org.insightech.er.editor.model.diagram_contents.element.node.NodeElement; import org.insightech.er.editor.model.diagram_contents.element.node.ermodel.ERModel; import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable; public class ERModelUtil { public static IEditorPart getActiveEditor(){ IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); IWorkbenchPage page = window.getActivePage(); IEditorPart editorPart = page.getActiveEditor(); return editorPart; } public static ERDiagram getDiagram(EditPart editPart) { Object model = editPart.getModel(); if (model instanceof ERModel) { return ((ERModel) model).getDiagram(); } return (ERDiagram) model; } public static boolean refreshDiagram(ERDiagram diagram) { if (diagram == null) { return false; } IEditorPart activeEditor = diagram.getEditor().getActiveEditor(); if (activeEditor instanceof EROneDiagramEditor) { EROneDiagramEditor editor = (EROneDiagramEditor) activeEditor; editor.setContents(diagram.getCurrentErmodel()); diagram.changeAll(); return true; } return false; } public static boolean refreshDiagram(ERDiagram diagram, NodeElement element) { if (refreshDiagram(diagram)) { if (element instanceof ERTable) { IEditorPart activeEditor = diagram.getEditor().getActiveEditor(); if (activeEditor instanceof EROneDiagramEditor) { EROneDiagramEditor editor = (EROneDiagramEditor) activeEditor; editor.reveal((ERTable) element); } } return true; } return false; } public static void openDirectory(IResource resource) { String directory = resource.getLocation().toString().replaceAll("/", "\\\\"); String target = "c:\\windows\\explorer.exe" + " " + "/n, /select, {0}"; target = MessageFormat.format(target, new Object[]{ directory }); try { Runtime.getRuntime().exec(target); } catch (IOException e) { Activator.log(e); } } }