/***************************************************************************** * Copyright (c) 2011 Atos. * * * 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: * Arthur Daussy (Atos) - Initial API and implementation * Arthur Daussy - 371712 : 372745: [ActivityDiagram] Major refactoring group framework * *****************************************************************************/ package org.eclipse.papyrus.uml.diagram.activity.activitygroup.editpolicy; import java.util.List; import org.eclipse.gef.EditPart; import org.eclipse.gef.Request; import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart; import org.eclipse.gmf.runtime.diagram.ui.requests.CreateUnspecifiedTypeRequest; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.papyrus.uml.diagram.activity.activitygroup.IContainerNodeDescriptor; import org.eclipse.papyrus.uml.diagram.activity.providers.UMLElementTypes; public class ActivityContentCompartmentCreationEditPolicy extends GroupCreationEditPolicy { public ActivityContentCompartmentCreationEditPolicy(IContainerNodeDescriptor groupDescriptor) { super(groupDescriptor); } @Override public EditPart getTargetEditPart(Request request) { if(request instanceof CreateUnspecifiedTypeRequest) { CreateUnspecifiedTypeRequest createUnspecifiedTypeRequest = (CreateUnspecifiedTypeRequest)request; if(understandsRequest(request)) { List<?> elementTypes = createUnspecifiedTypeRequest.getElementTypes(); // Treat the case where only one element type is listed // Only take Port element type into account if((elementTypes.size() == 1) && ((IElementType)(elementTypes.get(0)) == UMLElementTypes.ActivityParameterNode_3059)) { // If the target is a compartment replace by its parent edit // part if((getHost() instanceof ShapeCompartmentEditPart)) { return getHost().getParent(); } } } } return super.getTargetEditPart(request); } }