Creating/Deleting Presentation

  1. Creating presentations
  2. Deleting presentations

How to create presentations

  1. Obtain models (IElement)
  2. Start Transaction
  3. Specify a diagram by using setDiagram method of each DiagramEditor
  4. Set the model to createXXXmethod of each DiagramEditor and create a presentation(IPresentation)
    Diagram Interface to use
    Class Diagram/Object Diagram ClassDiagramEditor
    UseCase Diagram UseCaseDiagramEditor
    Statemachine Diagram StateMachineDiagramEditor
    Activity Diagram ActivityDiagramEditor
    Sequence Diagram SequenceDiagramEditor
    Composite Structure Diagram CompositeStructureDiagramEditor
    ER Diagram ERDiagramEditor
    Mind Map MindmapEditor
    Requirement Diagram RequirementDiagramEditor

  5. End the transaction
  6. Save a project if necessary

  7. Common Element Presentations

    Example1: Create a Note with text
    public INodePresentation createNotePresentation(IDiagram dgm, String note,
            Point2D location) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        ClassDiagramEditor cde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getClassDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           //set diagram
           cde.setDiagram(dgm);
           //create presentation
           ps = cde.createNote(note, location);
           TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
           e.printStackTrace();
           TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example2: Create a Noteanchor between Note, object and note
    public ILinkPresentation createNoteAnchorPresentation(IDiagram dgm, INodePresentation note,
            IPresentation annotatedElement) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        ILinkPresentation ps = null;
        ClassDiagramEditor cde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getClassDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           //set diagram
           cde.setDiagram(dgm);
           //create presentation
           ps = cde.createNoteAnchor(note, annotatedElement);
           TransactionManager.endTransaction();
         } catch (InvalidEditingException e) {
           e.printStackTrace();
           TransactionManager.abortTransaction();
         }
         return ps;
    }


    ▶ Back to Top


    Class Diagram

    Sample1: Create a Class
    public INodePresentation createClassPresentation(IDiagram dgm, IClass iClass,
            Point2D location) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        ClassDiagramEditor cde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getClassDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           //set diagram
           cde.setDiagram(dgm);
           //create presentation
           ps = cde.createNodePresentation(iClass, location);
           TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example2: Create a Class under the project and create a Class presentation
    public INodePresentation createClassModelAndPresentation(IDiagram dgm, String className, Point2D location)
          throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        BasicModelEditor bme = AstahAPI.getAstahAPI().getProjectAccessor().getModelEditorFactory().getBasicModelEditor();
        ClassDiagramEditor cde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getClassDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           //create model
           IClass iClass = bme.createClass(project, className);
           //set diagram
           cde.setDiagram(dgm);
           //create presentation
           ps = cde.createNodePresentation(iClass, location);
           TransactionManager.endTransaction();
       } catch (InvalidEditingException e) {
           e.printStackTrace();
           TransactionManager.abortTransaction();
       }
       return ps;
    }
    Example3: Create an Association presentation between Class presentations
    public ILinkPresentation createAssociationPresentation(IDiagram dgm, IAssociation iAssociation,
            INodePresentation sourcePs, INodePresentation targetPs) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        ILinkPresentation ps = null;
        ClassDiagramEditor cde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getClassDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           //set diagram
           cde.setDiagram(dgm);
           //create presentation
           ps = cde.createLinkPresentation(iAssociation, sourcePs, targetPs);
           TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
           e.printStackTrace();
           TransactionManager.abortTransaction();
        }
      return ps;
    }


    ▶ Back to Top


    UseCase Diagram

    Example1: Create an UseCase presentation
    public INodePresentation createUseCasePresentation(IDiagram dgm, IUseCase iUseCase,
            Point2D location) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        UseCaseDiagramEditor cde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getUseCaseDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            cde.setDiagram(dgm);
            //create presentation
            ps = cde.createNodePresentation(iUseCase, location);
            TransactionManager.endTransaction();
         } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example2: Create an Extend presentation between UseCases
    public ILinkPresentation createExtendPresentation(IDiagram dgm, IExtend iExtend, INodePresentation sourcePs,
            INodePresentation targetPs) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        ILinkPresentation ps = null;
        UseCaseDiagramEditor cde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getUseCaseDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            cde.setDiagram(dgm);
            //create presentation
            ps = cde.createLinkPresentation(iExtend, sourcePs, targetPs);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }


    ▶ Back to Top


    Statemachine Diagram

    Example1: Create a State presentation with name and its parent presentation
    public INodePresentation createStatePresentation(IDiagram dgm, String stateName, INodePresentation parent,
             Point2D location) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        StateMachineDiagramEditor ste = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getStateMachineDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           //set diagram
           ste.setDiagram(dgm);
           //create presentation
           ps = ste.createState(stateName, parent, location);
           TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
           e.printStackTrace();
           TransactionManager.abortTransaction();
        }
        return ps;
    }
    
    Example2: Create a Transition between source IVertex presentation and target IVertax presentation in specified diagram
    public ILinkPresentation createTransitionPresentation(IDiagram dgm, INodePresentation sourcePs,
             INodePresentation targetPs) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        ILinkPresentation ps = null;
        StateMachineDiagramEditor ste = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getStateMachineDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            ste.setDiagram(dgm);
            //create presentation
            ps = ste.createTransition(sourcePs, targetPs);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
      return ps;
    }


    ▶ Back to Top


    Activity Diagram

    Example: Create an Action name it in specified location
    public INodePresentation createActionPresentation(IDiagram dgm, String name, Point2D location) throws ClassNotFoundException,
            InvalidUsingException {
        INodePresentation ps = null;
        ActivityDiagramEditor ade = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getActivityDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           // set diagram
           ade.setDiagram(dgm);
           // create presentation
           ps = ade.createAction(name, location);
           TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }


    ▶ Back to Top


    Sequence Diagram

    Example1: Create a Lifeline presentation and name it in specified location X
    public INodePresentation createLifelinePresentation(IDiagram dgm, String name, double locX) throws ClassNotFoundException, InvalidUsingException {
        INodePresentation ps = null;
        SequenceDiagramEditor sde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getSequenceDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            // set diagram
            sde.setDiagram(dgm);
            // create presentation
            ps = sde.createLifeline(name, locX);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example2: Create a CombinedFragment and interaction operator in specified location, width and height
    public INodePresentation createCombinedFragmentPresentation(IDiagram dgm, String name, String interactionOperator,
            Point2D location, double width, double height)
        throws ClassNotFoundException, InvalidUsingException {
        INodePresentation ps = null;
        SequenceDiagramEditor sde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getSequenceDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            // set diagram
            sde.setDiagram(dgm);
            // create presentation
            ps = sde.createCombinedFragment(name, interactionOperator, location, width, height);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
      }


    ▶ Back to Top


    Composite Structure Diagram

    Example1: Create a StructuredClass in specified location
    public INodePresentation createClassPresentation(IDiagram dgm, IClass iClass, Point2D location) throws ClassNotFoundException,
            InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        CompositeStructureDiagramEditor cse = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getCompositeStructureDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            cse.setDiagram(dgm);
            //create presentation
            ps = cse.createStructuredClassPresentation(iClass, location);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
             e.printStackTrace();
             TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example2: Create a Part presentation in specified StructuredClass
    public INodePresentation createPartPresentation(IDiagram dgm, IClass parentClass, IClass partBaseClass,
            INodePresentation parentClassPresentation, String partName, Point2D location) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        BasicModelEditor bme = ModelEditorFactory.getBasicModelEditor();
        CompositeStructureDiagramEditor cse = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getCompositeStructureDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            IAssociation asso = bme.createAssociation(parentClass, partBaseClass, "", "", partName);
            IAttribute[] memberEnds = asso.getMemberEnds();
            memberEnds[0].setComposite();
    
            //set diagram
            cse.setDiagram(dgm);
            //create presentation
            ps = cde.createNodePresentation(memberEnds[1], parentClassPresentation, location);
    
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example3: Create an External Part presentation in specified Structured Class
    public INodePresentation createExternalPartPresentation(IDiagram dgm, IClass partBaseClass,
            INodePresentation parentClassPresentation, IClass externalPartBaseClass, IAttribute part1, String externalPartName,
            Point2D location) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        BasicModelEditor bme = ModelEditorFactory.getBasicModelEditor();
        CompositeStructureDiagramEditor cse = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getCompositeStructureDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            IAssociation asso = bme.createAssociation(partBaseClass, externalPartBaseClass, "", "", externalPartName);
            IAttribute[] memberEnds = asso.getMemberEnds();
            IConnector connector = csme.createConnector(part1, null, memberEnds[1], null);
    
            //set diagram
            cse.setDiagram(dgm);
            //create presentation
            ps = cde.createNodePresentation(memberEnds[1], parentClassPresentation, location);
    
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
              e.printStackTrace();
              TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example4: Create a Port presentation in specified Structured Class or Part
    public INodePresentation createPortPresentation(IDiagram dgm, INodePresentation parentNode) throws ClassNotFoundException,
            InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        CompositeStructureDiagramEditor cse = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getCompositeStructureDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            cse.setDiagram(dgm);
            //create presentation
            ps = cse.createPortPresentation(parentNode);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }


    ▶ Back to Top


    ER Diagram

    Example1: Create an ER Entity presentation in specified location
    public INodePresentation createEREntityPresentation(IDiagram dgm, IEREntity iEREntity, Point2D location) throws ClassNotFoundException,
            InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        ERDiagramEditor ede = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getERDiagramEditor();
        try {
           TransactionManager.beginTransaction();
           //set diagram
           ede.setDiagram(dgm);
           //create presentation
           ps = ede.createNodePresentation(iEREntity, location);
           TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
           e.printStackTrace();
           TransactionManager.abortTransaction();
       }
       return ps;
     }
    Example2: Create an ER relationship presentation
    public ILinkPresentation createERRelationshipPresentation(IDiagram dgm, IERRelationship iERRelationship,
             INodePresentation sourcePs, INodePresentation targetPs) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
         ILinkPresentation ps = null;
         ERDiagramEditor ede = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getERDiagramEditor();
         try {
             TransactionManager.beginTransaction();
             //set diagram
             ede.setDiagram(dgm);
             //create presentation
             ps = ede.createLinkPresentation(iERRelationship, sourcePs, targetPs);
             TransactionManager.endTransaction();
         } catch (InvalidEditingException e) {
             e.printStackTrace();
             TransactionManager.abortTransaction();
        }
        return ps;
    }


    ▶ Back to Top


    Mind Map

    Example1: Create a topic presentation with its name under the root topic
    public INodePresentation createTopicPresentation(IMindMapDiagram dgm, String topicName)
        throws InvalidUsingException, ClassNotFoundException {
        INodePresentation ps = null;
        MindmapEditor mme = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getMindmapEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            mme.setDiagram(dgm);
            INodePresentation iRootTopic = dgm.getRoot();
            //create presentation
            ps = mme.addChild(iRootTopic, topicName);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }
    Example2: Create a Topic line between topics
    public ILinkPresentation createMMLinkPresentation(IDiagram dgm, INodePresentation sourcePs,
            INodePresentation targetPs) throws ClassNotFoundException, InvalidUsingException {
        ILinkPresentation ps = null;
        MindmapEditor mme = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getMindmapEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            mme.setDiagram(dgm);
            //create presentation
            ps = mme.createMMLinkPresentation(sourcePs, targetPs);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }


    ▶ Back to Top


    Requirement Diagram

    Example1: Create a Requirement presentation in specified location
    public INodePresentation createRequirementPresentation(IDiagram dgm, IRequirement iRequirement,
            Point2D location) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        INodePresentation ps = null;
        RequirementDiagramEditor rde = AstahAPI.getAstahAPI().getProjectAccessor().getDiagramEditorFactory().getRequirementDiagramEditor();
        try {
            TransactionManager.beginTransaction();
            //set diagram
            rde.setDiagram(dgm);
            //create presentation
            ps = rde.createNodePresentation(iRequirement, location);
            TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
            e.printStackTrace();
            TransactionManager.abortTransaction();
        }
        return ps;
    }


    ▶ Back to Top


    How to delete presentations

    1. Obtain presentation(IPresentation)
    2. Start a Transaction operation
    3. Set a diagram by using setDiagram method of its DiagramEditor
    4. Set a presentation to deletePresentation method of its DiagramEditor and delete it(IPresentation)
    5. End the transaction
    6. Save a project if necessary
    Example
    private void deletePresentation(IDiagram diagram, IPresentation ps) throws ClassNotFoundException, InvalidEditingException, InvalidUsingException {
        ERDiagramEditor editor = DiagramEditorFactory.getERDiagramEditor();
        try {
             TransactionManager.beginTransaction();
             editor.setDiagram(diagram);
             editor.deletePresentation(ps);
             TransactionManager.endTransaction();
        } catch (InvalidEditingException e) {
             e.printStackTrace();
             TransactionManager.abortTransaction();
        }
    }


    ▶ Back to Top