/** * */ package se.sics.kompics.ide.editor; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.draw2d.ConnectionLayer; import org.eclipse.draw2d.ViewportAwareConnectionLayerClippingStrategy; import org.eclipse.gef.DefaultEditDomain; import org.eclipse.gef.LayerConstants; import org.eclipse.gef.editparts.ScalableFreeformRootEditPart; import org.eclipse.gef.editparts.ZoomManager; import org.eclipse.gef.palette.PaletteRoot; import org.eclipse.gef.ui.actions.ZoomInAction; import org.eclipse.gef.ui.actions.ZoomOutAction; import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette; import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer; import org.eclipse.jface.action.IAction; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.ui.actions.ActionFactory; import se.sics.kompics.ide.Model; import se.sics.kompics.ide.editor.part.KompicsPartFactory; import se.sics.kompics.ide.editor.part.ModelPart; /** * The <code>KompicsModelEditor</code> . * * @author Lars Kroll <lkr@lars-kroll.com> * @version $Id: $ * */ public class KompicsModelEditor extends GraphicalEditorWithFlyoutPalette { /** * The ID of the view as specified by the extension. */ public static final String ID = "se.sics.kompics.ide.editor.KompicsModelEditor"; public KompicsModelEditor() { setEditDomain(new DefaultEditDomain(this)); } @Override protected void initializeGraphicalViewer() { super.initializeGraphicalViewer(); getGraphicalViewer().setContents(Model.eINSTANCE); } @Override protected void configureGraphicalViewer() { super.configureGraphicalViewer(); ScrollingGraphicalViewer viewer = (ScrollingGraphicalViewer) getGraphicalViewer(); ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart(); // set clipping strategy for connection layer ConnectionLayer connectionLayer = (ConnectionLayer) root .getLayer(LayerConstants.CONNECTION_LAYER); connectionLayer.setClippingStrategy(new ViewportAwareConnectionLayerClippingStrategy( connectionLayer)); List zoomLevels = new ArrayList(3); zoomLevels.add(ZoomManager.FIT_ALL); zoomLevels.add(ZoomManager.FIT_WIDTH); zoomLevels.add(ZoomManager.FIT_HEIGHT); root.getZoomManager().setZoomLevelContributions(zoomLevels); IAction zoomIn = new ZoomInAction(root.getZoomManager()); IAction zoomOut = new ZoomOutAction(root.getZoomManager()); getActionRegistry().registerAction(zoomIn); getActionRegistry().registerAction(zoomOut); viewer.setRootEditPart(root); viewer.setEditPartFactory(new KompicsPartFactory()); Listener listener = new Listener() { public void handleEvent(Event event) { handleActivationChanged(event); } }; getGraphicalControl().addListener(SWT.Activate, listener); getGraphicalControl().addListener(SWT.Deactivate, listener); } @Override protected PaletteRoot getPaletteRoot() { // TODO Auto-generated method stub return null; } @Override public void doSave(IProgressMonitor monitor) { // TODO Auto-generated method stub } protected void handleActivationChanged(Event event) { IAction copy = null; if (event.type == SWT.Deactivate) copy = getActionRegistry().getAction(ActionFactory.COPY.getId()); if (getEditorSite().getActionBars().getGlobalActionHandler( ActionFactory.COPY.getId()) != copy) { getEditorSite().getActionBars().setGlobalActionHandler( ActionFactory.COPY.getId(), copy); getEditorSite().getActionBars().updateActionBars(); } } }