package org.eclipse.papyrus.uml.diagram.statemachine.custom.parts; import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.papyrus.uml.diagram.common.part.ICustomDiagramUpdater; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.FinalStateEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateChoiceEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateDeepHistoryEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateEntryPointEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateExitPointEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateForkEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateInitialEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateJoinEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateJunctionEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateShallowHistoryEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.PseudostateTerminateEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.edit.parts.StateEditPart; import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLNodeDescriptor; import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLVisualIDRegistry; import org.eclipse.uml2.uml.Region; import org.eclipse.uml2.uml.Vertex; public class RegionCompartmentDiagramUpdater implements ICustomDiagramUpdater { public List<?> getSemanticChildren(View view) { if(false == view.eContainer() instanceof View) { return Collections.emptyList(); } View containerView = (View)view.eContainer(); if(!containerView.isSetElement()) { return Collections.emptyList(); } Region modelElement = (Region)containerView.getElement(); LinkedList<UMLNodeDescriptor> result = new LinkedList<UMLNodeDescriptor>(); for(Iterator<?> it = modelElement.getSubvertices().iterator(); it.hasNext();) { Vertex childElement = (Vertex)it.next(); int visualID = UMLVisualIDRegistry.getNodeVisualID(view, childElement); if(visualID == PseudostateInitialEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateJoinEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateForkEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateChoiceEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateJunctionEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateShallowHistoryEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateDeepHistoryEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateTerminateEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateEntryPointEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == PseudostateExitPointEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == FinalStateEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } if(visualID == StateEditPart.VISUAL_ID) { result.add(new UMLNodeDescriptor(childElement, visualID)); continue; } } return result; } }