コード例 #1
0
  /*
   * (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;
  }