/* * Copyright (c) 2012-2016 Marsha Chechik, Alessio Di Sandro, Michalis Famelis, * Rick Salay. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Alessio Di Sandro - Implementation. */ package edu.toronto.cs.se.mmint.mid.diagram.edit.policies; import org.eclipse.gef.EditPart; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; import org.eclipse.gmf.runtime.notation.HintedDiagramLinkStyle; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.Style; import org.eclipse.gmf.runtime.notation.View; import edu.toronto.cs.se.mmint.mid.diagram.edit.commands.ModelOpenEditorCommand; /** * The open editor edit policy for models. * * @author Alessio Di Sandro * */ public class ModelOpenEditorEditPolicy extends ModelOpenDiagramEditPolicy { /** * Gets the command to open a model editor. * * @param req * The request. * @return The executable command. */ @Override protected Command getOpenCommand(Request request) { EditPart targetEditPart = getTargetEditPart(request); if (false == targetEditPart.getModel() instanceof View) { return null; } View view = (View) targetEditPart.getModel(); Style link = view.getStyle(NotationPackage.eINSTANCE .getHintedDiagramLinkStyle()); if (false == link instanceof HintedDiagramLinkStyle) { return null; } return new ICommandProxy(new ModelOpenEditorCommand( (HintedDiagramLinkStyle) link)); } }