/* Soot - a J*va Optimization Framework * Copyright (C) 2005 Jennifer Lhotak * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ package ca.mcgill.sable.graph; import org.eclipse.core.resources.IMarker; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.*; import org.eclipse.gef.ui.parts.*; import org.eclipse.gef.*; import org.eclipse.gef.editparts.*; import ca.mcgill.sable.graph.model.*; import ca.mcgill.sable.graph.editparts.*; import org.eclipse.gef.palette.*; import org.eclipse.jface.action.*; import org.eclipse.gef.ui.actions.*; import ca.mcgill.sable.graph.actions.*; import java.util.*; public class GraphEditor extends GraphicalEditor { private Graph graph; /** * */ public GraphEditor() { DefaultEditDomain defaultEditDomain = new DefaultEditDomain(this); setEditDomain(defaultEditDomain); } /* (non-Javadoc) * @see org.eclipse.gef.ui.parts.GraphicalEditor#initializeGraphicalViewer() */ protected void initializeGraphicalViewer() { getGraphicalViewer().setContents(graph); } protected void configureGraphicalViewer() { super.configureGraphicalViewer(); ScalableRootEditPart root = new ScalableRootEditPart(); getGraphicalViewer().setRootEditPart(root); ZoomManager zManager = root.getZoomManager(); double [] zoomLevels = new double[10]; for (int i = 0; i < zoomLevels.length; i++){ zoomLevels[i] = (i + 1) * 0.25; } zManager.setZoomLevels(zoomLevels); IAction zoomIn = new ZoomInAction(zManager); IAction zoomOut = new ZoomOutAction(((ScalableRootEditPart)getGraphicalViewer().getRootEditPart()).getZoomManager()); getActionRegistry().registerAction(zoomIn); getActionRegistry().registerAction(zoomOut); IAction printAction = new PrintAction(this); getActionRegistry().registerAction(printAction); getSite().getKeyBindingService().registerAction(zoomIn); getSite().getKeyBindingService().registerAction(zoomOut); getGraphicalViewer().setEditPartFactory(new PartFactory()); getGraphicalViewer().setKeyHandler(new GraphicalViewerKeyHandler(getGraphicalViewer())); } public void setMenuProvider(ContextMenuProvider prov){ getGraphicalViewer().setContextMenu(prov); getSite().registerContextMenu(prov, getGraphicalViewer()); } public void setPartFactory(PartFactory factory){ getGraphicalViewer().setEditPartFactory(factory); } protected void setInput(IEditorInput input){ super.setInput(input); if (input instanceof Graph){ setGraph((Graph)input); } } /* (non-Javadoc) * @see org.eclipse.ui.ISaveablePart#doSave(org.eclipse.core.runtime.IProgressMonitor) */ public void doSave(IProgressMonitor monitor) { } /* (non-Javadoc) * @see org.eclipse.ui.ISaveablePart#doSaveAs() */ public void doSaveAs() { } /* (non-Javadoc) * @see org.eclipse.ui.IEditorPart#gotoMarker(org.eclipse.core.resources.IMarker) */ public void gotoMarker(IMarker marker) { } /* (non-Javadoc) * @see org.eclipse.ui.ISaveablePart#isDirty() */ public boolean isDirty() { return false; } /* (non-Javadoc) * @see org.eclipse.ui.ISaveablePart#isSaveAsAllowed() */ public boolean isSaveAsAllowed() { return false; } /** * @return */ public Graph getGraph() { return graph; } /** * @param graph */ public void setGraph(Graph g) { graph = g; } public void setTitle(String name){ super.setTitle(name); } public void setTitleTooltip(String text){ super.setTitleToolTip(text); } public void createActions(){ super.createActions(); ActionRegistry registry = getActionRegistry(); IAction action = new SimpleSelectAction(this); registry.registerAction(action); getSelectionActions().add(action.getId()); } public ActionRegistry getGraphEditorActionRegistry(){ return getActionRegistry(); } public GraphicalViewer getGraphEditorGraphicalViewer(){ return getGraphicalViewer(); } public List getGraphEditorSelectionActions(){ return getSelectionActions(); } public String getToolTipText(){ return getTitle(); } public String getTitleToolTip(){ return super.getTitleToolTip(); } }