/* * (non-Javadoc) * * @see * org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, * java.lang.Object) */ public EditPart createEditPart(EditPart context, Object model) { EditPart ret = null; IConfigurationProviderInternal configurationProvider = getConfigurationProvider(); Map<?, ?> epRegistry = getConfigurationProvider().getDiagramEditor().getGraphicalViewer().getEditPartRegistry(); if (epRegistry != null && epRegistry.containsKey(model)) { T.racer() .warning( "PictogramsEditPartFactory.createEditPart()", "edit part for this model already exists"); //$NON-NLS-1$ //$NON-NLS-2$ } if (model instanceof Shape) { Shape shape = (Shape) model; if (!(shape instanceof Diagram) && !shape.isActive()) { // return ret; // the following is a temorary fix just to make it fly ret = new ShapeEditPart(configurationProvider, shape); } } if (ret == null) { if (model instanceof Diagram) { ret = new DiagramEditPart(configurationProvider, (Diagram) model); } else if (model instanceof ConnectionDecorator) { ret = new ConnectionDecoratorEditPart(configurationProvider, (Shape) model); } else if (model instanceof ContainerShape) { ret = new ContainerShapeEditPart(configurationProvider, (ContainerShape) model); } else if (model instanceof Shape) { ret = new ShapeEditPart(configurationProvider, (Shape) model); } else if (model instanceof ManhattanConnection) { ret = new ManhattanConnectionEditPart( configurationProvider, (ManhattanConnection) model, context); } else if (model instanceof FreeFormConnection) { ret = new FreeFormConnectionEditPart( configurationProvider, (FreeFormConnection) model, context); } else if (model instanceof CurvedConnection) { ret = new CurvedConnectionEditPart(configurationProvider, (CurvedConnection) model, context); } else if (model instanceof CompositeConnection) { ret = new CompositeConnectionEditPart( configurationProvider, (CompositeConnection) model, this, context); } else if (model instanceof AdvancedAnchor) { ret = new AdvancedAnchorEditPart(configurationProvider, (AdvancedAnchor) model); } } // check whether autoswitch to direct editing has been set // if yes: store the affected edit part in the editor for later use in // the refresh method // if (ret instanceof ShapeEditPart) { // IDirectEditingInfo dei = // getConfigurationProvider().getDiagramTypeProvider().getFeatureProvider() // .getDirectEditingInfo(); // if (dei.isActive() && model.equals(dei.getMainPictogramElement())) { // getConfigurationProvider().getDiagramEditor().setDirectEditingEditPart((ShapeEditPart) // ret); // } // } return ret; }