/**
*
*/
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();
}
}
}