- Obtain models (IElement)
- Start Transaction
- Specify a diagram by using setDiagram method of each DiagramEditor
- 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 |
- End the transaction
- Save a project if necessary
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
- Obtain presentation(IPresentation)
- Start a Transaction operation
- Set a diagram by using setDiagram method of its DiagramEditor
- Set a presentation to deletePresentation method of its DiagramEditor and delete it(IPresentation)
- End the transaction
- 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