/*****************************************************************************
* Copyright (c) 2009 Atos Origin.
*
*
* 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:
* Atos Origin - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.part;
import java.util.List;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.common.helper.DurationConstraintHelper;
import org.eclipse.papyrus.uml.diagram.common.helper.DurationObservationHelper;
import org.eclipse.papyrus.uml.diagram.common.providers.BaseViewInfo;
import org.eclipse.papyrus.uml.diagram.common.providers.ViewInfo;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ActionExecutionSpecificationEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.BehaviorExecutionSpecificationEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragment2EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentCombinedFragmentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CombinedFragmentEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CommentBodyEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.CommentEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ConsiderIgnoreFragmentEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Constraint2EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ConstraintEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ConstraintNameEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ContinuationEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.ContinuationNameEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DestructionOccurrenceSpecificationEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintInMessageAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintInMessageEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintInMessageLabelEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationConstraintLabelEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationObservationAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationObservationEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.DurationObservationLabelEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.GeneralOrderingAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.GeneralOrderingEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionInteractionCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionNameEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionOperandEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionUseEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionUseName2EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.InteractionUseNameEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineNameEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message2EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message3EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message4EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message5EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message6EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.Message7EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageAsyncAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageCreateAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageDeleteAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageFoundAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageLostAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageName2EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageName3EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageName4EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageName5EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageName6EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageName7EditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageNameEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageReplyAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.MessageSyncAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.PackageEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.StateInvariantEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.StateInvariantNameEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeConstraintAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeConstraintEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeConstraintLabelEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationAppliedStereotypeEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.TimeObservationLabelEditPart;
import org.eclipse.papyrus.uml.diagram.sequence.expressions.UMLOCLFactory;
import org.eclipse.uml2.uml.DurationConstraint;
import org.eclipse.uml2.uml.DurationObservation;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.Message;
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.OccurrenceSpecification;
import org.eclipse.uml2.uml.Package;
import org.eclipse.uml2.uml.UMLPackage;
/**
* This registry is used to determine which type of visual object should be created for the
* corresponding Diagram, Node, ChildNode or Link represented by a domain model object.
*
* @generated
*/
public class UMLVisualIDRegistry {
/**
* @generated
*/
private static final String DEBUG_KEY = "org.eclipse.papyrus.uml.diagram.sequence/debug/visualID"; //$NON-NLS-1$
/**
* @generated
*/
public static int getVisualID(View view) {
if(view instanceof Diagram) {
if(PackageEditPart.MODEL_ID.equals(view.getType())) {
return PackageEditPart.VISUAL_ID;
} else {
return -1;
}
}
return org.eclipse.papyrus.uml.diagram.sequence.part.UMLVisualIDRegistry.getVisualID(view.getType());
}
/**
* @generated
*/
public static String getModelID(View view) {
View diagram = view.getDiagram();
while(view != diagram) {
EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
if(annotation != null) {
return (String)annotation.getDetails().get("modelID"); //$NON-NLS-1$
}
view = (View)view.eContainer();
}
return diagram != null ? diagram.getType() : null;
}
/**
* @generated
*/
public static int getVisualID(String type) {
try {
return Integer.parseInt(type);
} catch (NumberFormatException e) {
if(Boolean.TRUE.toString().equalsIgnoreCase(Platform.getDebugOption(DEBUG_KEY))) {
UMLDiagramEditorPlugin.getInstance().logError("Unable to parse view type as a visualID number: " + type);
}
}
return -1;
}
/**
* @generated
*/
public static String getType(int visualID) {
return Integer.toString(visualID);
}
/**
* @generated
*/
public static int getDiagramVisualID(EObject domainElement) {
if(domainElement == null) {
return -1;
}
if(UMLPackage.eINSTANCE.getPackage().isSuperTypeOf(domainElement.eClass()) && isDiagram((Package)domainElement)) {
return PackageEditPart.VISUAL_ID;
}
return -1;
}
/**
* Generated not for add lifelines on lifeline
*
* @generated NOT (update at each gmf change) lifeline, handle duration constraint/observation on message
*/
public static int getNodeVisualID(View containerView, EObject domainElement) {
if(domainElement == null) {
return -1;
}
String containerModelID = org.eclipse.papyrus.uml.diagram.sequence.part.UMLVisualIDRegistry.getModelID(containerView);
if(!PackageEditPart.MODEL_ID.equals(containerModelID)) {
return -1;
}
int containerVisualID;
if(PackageEditPart.MODEL_ID.equals(containerModelID)) {
containerVisualID = org.eclipse.papyrus.uml.diagram.sequence.part.UMLVisualIDRegistry.getVisualID(containerView);
} else {
if(containerView instanceof Diagram) {
containerVisualID = PackageEditPart.VISUAL_ID;
} else {
return -1;
}
}
switch(containerVisualID) {
case PackageEditPart.VISUAL_ID:
if(UMLPackage.eINSTANCE.getInteraction().isSuperTypeOf(domainElement.eClass())
) {
return InteractionEditPart.VISUAL_ID;
}
break;
case InteractionEditPart.VISUAL_ID:
if(UMLPackage.eINSTANCE.getDurationConstraint().isSuperTypeOf(domainElement.eClass())
) {
return DurationConstraintInMessageEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getDurationObservation().isSuperTypeOf(domainElement.eClass())
) {
return DurationObservationEditPart.VISUAL_ID;
}
break;
case InteractionOperandEditPart.VISUAL_ID:
if(UMLPackage.eINSTANCE.getInteractionUse().isSuperTypeOf(domainElement.eClass())
) {
return InteractionUseEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getConsiderIgnoreFragment().isSuperTypeOf(domainElement.eClass())
) {
return ConsiderIgnoreFragmentEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getCombinedFragment().isSuperTypeOf(domainElement.eClass())
) {
return CombinedFragmentEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getContinuation().isSuperTypeOf(domainElement.eClass())
) {
return ContinuationEditPart.VISUAL_ID;
}
break;
case LifelineEditPart.VISUAL_ID:
if(UMLPackage.eINSTANCE.getActionExecutionSpecification().isSuperTypeOf(domainElement.eClass())
) {
return ActionExecutionSpecificationEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getBehaviorExecutionSpecification().isSuperTypeOf(domainElement.eClass())
) {
return BehaviorExecutionSpecificationEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getStateInvariant().isSuperTypeOf(domainElement.eClass())
) {
return StateInvariantEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getCombinedFragment().isSuperTypeOf(domainElement.eClass())
) {
return CombinedFragment2EditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getTimeConstraint().isSuperTypeOf(domainElement.eClass())
) {
return TimeConstraintEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getTimeObservation().isSuperTypeOf(domainElement.eClass())
) {
return TimeObservationEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getDurationConstraint().isSuperTypeOf(domainElement.eClass())
) {
// handle duration constraint/observation on message
List<Element> occurrences = ((DurationConstraint)domainElement).getConstrainedElements();
if(occurrences.size() >= 2 && occurrences.get(0) instanceof OccurrenceSpecification && occurrences.get(1) instanceof OccurrenceSpecification) {
if(DurationConstraintHelper.endsOfSameMessage((OccurrenceSpecification)occurrences.get(0), (OccurrenceSpecification)occurrences.get(1))) {
return DurationConstraintInMessageEditPart.VISUAL_ID;
}
}
return DurationConstraintEditPart.VISUAL_ID;
}
// handle duration constraint/observation on message
if(UMLPackage.eINSTANCE.getDurationObservation().isSuperTypeOf(domainElement.eClass())
) {
List<NamedElement> occurrences = ((DurationObservation)domainElement).getEvents();
if(occurrences.size() >= 2 && occurrences.get(0) instanceof OccurrenceSpecification && occurrences.get(1) instanceof OccurrenceSpecification) {
if(DurationObservationHelper.endsOfSameMessage((OccurrenceSpecification)occurrences.get(0), (OccurrenceSpecification)occurrences.get(1))) {
return DurationObservationEditPart.VISUAL_ID;
}
}
}
if(UMLPackage.eINSTANCE.getDestructionOccurrenceSpecification().isSuperTypeOf(domainElement.eClass())
) {
return DestructionOccurrenceSpecificationEditPart.VISUAL_ID;
}
// lifeline : add lifelines on lifeline
if(UMLPackage.eINSTANCE.getLifeline().isSuperTypeOf(domainElement.eClass())
) {
return LifelineEditPart.VISUAL_ID;
}
break;
case InteractionInteractionCompartmentEditPart.VISUAL_ID:
if(UMLPackage.eINSTANCE.getConsiderIgnoreFragment().isSuperTypeOf(domainElement.eClass())
) {
return ConsiderIgnoreFragmentEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getCombinedFragment().isSuperTypeOf(domainElement.eClass())
) {
return CombinedFragmentEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getLifeline().isSuperTypeOf(domainElement.eClass())
) {
return LifelineEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getInteractionOperand().isSuperTypeOf(domainElement.eClass())
) {
return InteractionOperandEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getInteractionUse().isSuperTypeOf(domainElement.eClass())
) {
return InteractionUseEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getConstraint().isSuperTypeOf(domainElement.eClass())
) {
return ConstraintEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getComment().isSuperTypeOf(domainElement.eClass())
) {
return CommentEditPart.VISUAL_ID;
}
if (UMLPackage.eINSTANCE.getTimeObservation().isSuperTypeOf(domainElement.eClass())
) {
return TimeObservationEditPart.VISUAL_ID;
}
if (UMLPackage.eINSTANCE.getDurationObservation().isSuperTypeOf(domainElement.eClass())
) {
return DurationObservationEditPart.VISUAL_ID;
}
break;
case CombinedFragmentCombinedFragmentCompartmentEditPart.VISUAL_ID:
if(UMLPackage.eINSTANCE.getInteractionOperand().isSuperTypeOf(domainElement.eClass())
) {
return InteractionOperandEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getContinuation().isSuperTypeOf(domainElement.eClass())
) {
return ContinuationEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getCombinedFragment().isSuperTypeOf(domainElement.eClass())
) {
return CombinedFragmentEditPart.VISUAL_ID;
}
break;
// handle duration constraint/observation on message
case MessageEditPart.VISUAL_ID:
case Message2EditPart.VISUAL_ID:
case Message3EditPart.VISUAL_ID:
case Message4EditPart.VISUAL_ID:
case Message5EditPart.VISUAL_ID:
case Message6EditPart.VISUAL_ID:
case Message7EditPart.VISUAL_ID:
if(UMLPackage.eINSTANCE.getDurationConstraint().isSuperTypeOf(domainElement.eClass())) {
return DurationConstraintInMessageEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getDurationObservation().isSuperTypeOf(domainElement.eClass())) {
return DurationObservationEditPart.VISUAL_ID;
}
break;
}
return -1;
}
/**
* @generated NOT
*/
public static boolean canCreateNode(View containerView, int nodeVisualID) {
String containerModelID = org.eclipse.papyrus.uml.diagram.sequence.part.UMLVisualIDRegistry.getModelID(containerView);
if(!PackageEditPart.MODEL_ID.equals(containerModelID)) {
return false;
}
int containerVisualID;
if(PackageEditPart.MODEL_ID.equals(containerModelID)) {
containerVisualID = org.eclipse.papyrus.uml.diagram.sequence.part.UMLVisualIDRegistry.getVisualID(containerView);
} else {
if(containerView instanceof Diagram) {
containerVisualID = PackageEditPart.VISUAL_ID;
} else {
return false;
}
}
switch(containerVisualID) {
case PackageEditPart.VISUAL_ID:
if(InteractionEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case InteractionEditPart.VISUAL_ID:
if(InteractionNameEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(InteractionInteractionCompartmentEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DurationConstraintInMessageEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DurationObservationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case CombinedFragmentEditPart.VISUAL_ID:
if(CombinedFragmentCombinedFragmentCompartmentEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case InteractionOperandEditPart.VISUAL_ID:
if(InteractionUseEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(ConsiderIgnoreFragmentEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(CombinedFragmentEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(ContinuationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case InteractionUseEditPart.VISUAL_ID:
if(InteractionUseNameEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(InteractionUseName2EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case ContinuationEditPart.VISUAL_ID:
if(ContinuationNameEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case LifelineEditPart.VISUAL_ID:
if(LifelineEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(LifelineNameEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(ActionExecutionSpecificationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(BehaviorExecutionSpecificationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(StateInvariantEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(CombinedFragment2EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(TimeConstraintEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(TimeObservationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DurationConstraintEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DestructionOccurrenceSpecificationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case StateInvariantEditPart.VISUAL_ID:
if(StateInvariantNameEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case TimeConstraintEditPart.VISUAL_ID:
if(TimeConstraintLabelEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(TimeConstraintAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case TimeObservationEditPart.VISUAL_ID:
if(TimeObservationLabelEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(TimeObservationAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case DurationConstraintEditPart.VISUAL_ID:
if(DurationConstraintLabelEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DurationConstraintAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case ConstraintEditPart.VISUAL_ID:
if(ConstraintNameEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(Constraint2EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case CommentEditPart.VISUAL_ID:
if(CommentBodyEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case DurationConstraintInMessageEditPart.VISUAL_ID:
if(DurationConstraintInMessageLabelEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DurationConstraintInMessageAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case DurationObservationEditPart.VISUAL_ID:
if(DurationObservationLabelEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DurationObservationAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case InteractionInteractionCompartmentEditPart.VISUAL_ID:
if(ConsiderIgnoreFragmentEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(CombinedFragmentEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(LifelineEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(InteractionUseEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(ConstraintEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(CommentEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(TimeObservationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(DurationObservationEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case CombinedFragmentCombinedFragmentCompartmentEditPart.VISUAL_ID:
if(InteractionOperandEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case MessageEditPart.VISUAL_ID:
if(MessageNameEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(MessageSyncAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case Message2EditPart.VISUAL_ID:
if(MessageName2EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(MessageAsyncAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case Message3EditPart.VISUAL_ID:
if(MessageName3EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(MessageReplyAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case Message4EditPart.VISUAL_ID:
if(MessageName4EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(MessageCreateAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case Message5EditPart.VISUAL_ID:
if(MessageName5EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(MessageDeleteAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case Message6EditPart.VISUAL_ID:
if(MessageName6EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(MessageLostAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case Message7EditPart.VISUAL_ID:
if(MessageName7EditPart.VISUAL_ID == nodeVisualID) {
return true;
}
if(MessageFoundAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
case GeneralOrderingEditPart.VISUAL_ID:
if(GeneralOrderingAppliedStereotypeEditPart.VISUAL_ID == nodeVisualID) {
return true;
}
break;
}
return false;
}
/**
* @generated
*/
public static int getLinkWithClassVisualID(EObject domainElement) {
if(domainElement == null) {
return -1;
}
if(UMLPackage.eINSTANCE.getMessage().isSuperTypeOf(domainElement.eClass())
&& isMessage_4003((Message)domainElement)
) {
return MessageEditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getMessage().isSuperTypeOf(domainElement.eClass())
&& isMessage_4004((Message)domainElement)
) {
return Message2EditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getMessage().isSuperTypeOf(domainElement.eClass())
&& isMessage_4005((Message)domainElement)
) {
return Message3EditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getMessage().isSuperTypeOf(domainElement.eClass())
&& isMessage_4006((Message)domainElement)
) {
return Message4EditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getMessage().isSuperTypeOf(domainElement.eClass())
&& isMessage_4007((Message)domainElement)
) {
return Message5EditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getMessage().isSuperTypeOf(domainElement.eClass())
&& isMessage_4008((Message)domainElement)
) {
return Message6EditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getMessage().isSuperTypeOf(domainElement.eClass())
&& isMessage_4009((Message)domainElement)
) {
return Message7EditPart.VISUAL_ID;
}
if(UMLPackage.eINSTANCE.getGeneralOrdering().isSuperTypeOf(domainElement.eClass())
) {
return GeneralOrderingEditPart.VISUAL_ID;
}
return -1;
}
/**
* User can change implementation of this method to handle some specific situations not covered
* by default logic.
*
* @generated
*/
private static boolean isDiagram(Package element) {
return true;
}
/**
* @generated
*/
private static boolean isMessage_4003(Message domainElement) {
Object result = UMLOCLFactory.getExpression(1, UMLPackage.eINSTANCE.getMessage(), null).evaluate(domainElement);
return result instanceof Boolean && ((Boolean)result).booleanValue();
}
/**
* @generated
*/
private static boolean isMessage_4004(Message domainElement) {
Object result = UMLOCLFactory.getExpression(4, UMLPackage.eINSTANCE.getMessage(), null).evaluate(domainElement);
return result instanceof Boolean && ((Boolean)result).booleanValue();
}
/**
* @generated
*/
private static boolean isMessage_4005(Message domainElement) {
Object result = UMLOCLFactory.getExpression(7, UMLPackage.eINSTANCE.getMessage(), null).evaluate(domainElement);
return result instanceof Boolean && ((Boolean)result).booleanValue();
}
/**
* @generated
*/
private static boolean isMessage_4006(Message domainElement) {
Object result = UMLOCLFactory.getExpression(10, UMLPackage.eINSTANCE.getMessage(), null).evaluate(domainElement);
return result instanceof Boolean && ((Boolean)result).booleanValue();
}
/**
* @generated
*/
private static boolean isMessage_4007(Message domainElement) {
Object result = UMLOCLFactory.getExpression(13, UMLPackage.eINSTANCE.getMessage(), null).evaluate(domainElement);
return result instanceof Boolean && ((Boolean)result).booleanValue();
}
/**
* @generated
*/
private static boolean isMessage_4008(Message domainElement) {
Object result = UMLOCLFactory.getExpression(16, UMLPackage.eINSTANCE.getMessage(), null).evaluate(domainElement);
return result instanceof Boolean && ((Boolean)result).booleanValue();
}
/**
* @generated
*/
private static boolean isMessage_4009(Message domainElement) {
Object result = UMLOCLFactory.getExpression(19, UMLPackage.eINSTANCE.getMessage(), null).evaluate(domainElement);
return result instanceof Boolean && ((Boolean)result).booleanValue();
}
// test
/**
* @generated
*/
private static ViewInfo diagramViewInfo = null;
/**
* @generated
*/
public static ViewInfo getDiagramViewInfo() {
if(diagramViewInfo == null) {
diagramViewInfo = getPackage_1000ViewInfo();
}
return diagramViewInfo;
}
/**
* @generated
*/
protected static ViewInfo getPackage_1000ViewInfo() {
ViewInfo root = new BaseViewInfo(1000, ViewInfo.Head, "", null, null);
ViewInfo viewInfo = null;
ViewInfo labelInfo = null;
viewInfo = new BaseViewInfo(2001, ViewInfo.Node, "Interaction");
root.addNode(1000, viewInfo);
viewInfo = new BaseViewInfo(4003, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6001, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
labelInfo = new BaseViewInfo(6008, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(4004, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6002, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
labelInfo = new BaseViewInfo(6009, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(4005, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6003, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
labelInfo = new BaseViewInfo(6010, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(4006, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6004, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
labelInfo = new BaseViewInfo(6011, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(4007, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6005, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
labelInfo = new BaseViewInfo(6012, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(4008, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6006, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
labelInfo = new BaseViewInfo(6013, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(4009, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6007, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
labelInfo = new BaseViewInfo(6014, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(4010, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
viewInfo = new BaseViewInfo(4011, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
viewInfo = new BaseViewInfo(4012, ViewInfo.Edge, "");
root.addNode(1000, viewInfo);
labelInfo = new BaseViewInfo(6015, ViewInfo.Label, "", null, viewInfo);
viewInfo.getChildren().add(labelInfo);
viewInfo = new BaseViewInfo(3007, ViewInfo.Node, "ConsiderIgnoreFragment");
root.addNode(7001, viewInfo);
root.addNode(3005, viewInfo);
viewInfo = new BaseViewInfo(3004, ViewInfo.Node, "CombinedFragment");
root.addNode(3005, viewInfo);
root.addNode(7001, viewInfo);
viewInfo = new BaseViewInfo(3005, ViewInfo.Node, "InteractionOperand");
root.addNode(7004, viewInfo);
viewInfo = new BaseViewInfo(3002, ViewInfo.Node, "InteractionUse");
root.addNode(3005, viewInfo);
root.addNode(7001, viewInfo);
viewInfo = new BaseViewInfo(3016, ViewInfo.Node, "Continuation");
root.addNode(3005, viewInfo);
viewInfo = new BaseViewInfo(3001, ViewInfo.Node, "Lifeline");
root.addNode(7001, viewInfo);
viewInfo = new BaseViewInfo(3006, ViewInfo.Node, "ActionExecutionSpecification");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3003, ViewInfo.Node, "BehaviorExecutionSpecification");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3017, ViewInfo.Node, "StateInvariant");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3018, ViewInfo.Node, "CombinedFragment");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3019, ViewInfo.Node, "TimeConstraint");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3020, ViewInfo.Node, "TimeObservation");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3021, ViewInfo.Node, "DurationConstraint");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3022, ViewInfo.Node, "DestructionOccurrenceSpecification");
root.addNode(3001, viewInfo);
viewInfo = new BaseViewInfo(3008, ViewInfo.Node, "Constraint");
root.addNode(7001, viewInfo);
viewInfo = new BaseViewInfo(3009, ViewInfo.Node, "Comment");
root.addNode(7001, viewInfo);
viewInfo = new BaseViewInfo(3023, ViewInfo.Node, "DurationConstraint");
root.addNode(2001, viewInfo);
viewInfo = new BaseViewInfo(3024, ViewInfo.Node, "DurationObservation");
root.addNode(2001, viewInfo);
return root;
}
}