/*****************************************************************************
* 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:
* Atos - Initial API and implementation
* Arthur Daussy Bug 366026 - [ActivityDiagram] Refactoring in order to try respect Generation Gap Pattern
* Bug 366159 - [ActivityDiagram] Activity Diagram should be able to handle correctly Interruptible Edge
* Bug 367279 - [Activity Diagram] Activity Diagram should be able to handle correctly Exception Handler element
* Bug 368932 - [ActivitiyDiagram] Prevent Compartment of Activity group to be selected
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.activity.edit.part;
import org.eclipse.gef.EditPart;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.activity.edit.part.ActivityGroup.CustomActivityPartitionActivityPartitionContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.part.ActivityGroup.CustomConditionalNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.part.ActivityGroup.CustomExpansionRegionStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.part.ActivityGroup.CustomInterruptibleActivityRegionInterruptibleActivityRegionContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.part.ActivityGroup.CustomLoopNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.part.ActivityGroup.CustomSequenceNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.part.ActivityGroup.CustomStructuredActivityNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ActivityActivityContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ActivityPartitionActivityPartitionContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ConditionalNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ControlFlowEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ControlFlowInterruptibleIconEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ExceptionHandlerIconEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ExpansionRegionStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.InterruptibleActivityRegionInterruptibleActivityRegionContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.LoopNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ObjectFlowEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ObjectFlowInterruptibleIconEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ObjectFlowSelectionEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.ObjectFlowTransformationEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.SequenceNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.StructuredActivityNodeStructuredActivityNodeContentCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.activity.edit.parts.UMLEditPartFactory;
import org.eclipse.papyrus.uml.diagram.activity.part.UMLVisualIDRegistry;
public class CustomUMLEditPartFactory extends UMLEditPartFactory {
@Override
public EditPart createEditPart(EditPart context, Object model) {
if(model instanceof View) {
View view = (View)model;
switch(UMLVisualIDRegistry.getVisualID(view)) {
case ControlFlowEditPart.VISUAL_ID:
/*
* To implement InterruptibleEdge interface
*/
return new CustomControlFlowEditPart(view);
case ObjectFlowSelectionEditPart.VISUAL_ID:
/*
* Customization to handle special image label
*/
return new CustomObjectFlowSelectionEditPart(view);
case ObjectFlowTransformationEditPart.VISUAL_ID:
/*
* Customization to handle special image label
*/
return new CustomObjectFlowTransformationEditPart(view);
case ControlFlowInterruptibleIconEditPart.VISUAL_ID:
/*
* Customization to handle special image label
*/
return new CustomControlFlowInterruptibleIconEditPart(view);
case ObjectFlowEditPart.VISUAL_ID:
/*
* To implement InterruptibleEdge interface
*/
return new CustomObjectFlowEditPart(view);
case ObjectFlowInterruptibleIconEditPart.VISUAL_ID:
/*
* Customization to handle special image label
*/
return new CustomObjectFlowInterruptibleIconEditPart(view);
case ExceptionHandlerIconEditPart.VISUAL_ID:
/*
* Customization to handle special image label
*/
return new CustomExceptionHandlerIconEditPart(view);
case ActivityPartitionActivityPartitionContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomActivityPartitionActivityPartitionContentCompartmentEditPart(view);
case StructuredActivityNodeStructuredActivityNodeContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomStructuredActivityNodeStructuredActivityNodeContentCompartmentEditPart(view);
case ExpansionRegionStructuredActivityNodeContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomExpansionRegionStructuredActivityNodeContentCompartmentEditPart(view);
case LoopNodeStructuredActivityNodeContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomLoopNodeStructuredActivityNodeContentCompartmentEditPart(view);
case SequenceNodeStructuredActivityNodeContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomSequenceNodeStructuredActivityNodeContentCompartmentEditPart(view);
case ConditionalNodeStructuredActivityNodeContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomConditionalNodeStructuredActivityNodeContentCompartmentEditPart(view);
case InterruptibleActivityRegionInterruptibleActivityRegionContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomInterruptibleActivityRegionInterruptibleActivityRegionContentCompartmentEditPart(view);
case ActivityActivityContentCompartmentEditPart.VISUAL_ID:
/*
* Customization in order to make this compartment not selectable
* Custom figure
*/
return new CustomActivityActivityContentCompartmentEditPart(view);
}
}
return super.createEditPart(context, model);
}
}