Sequence diagrams using Graph API

Hi all,

I'd like to draw a simple UML sequence diagram using the Graph API. Is there any example explaning how to do this?

My main question is about edges. In struts plugin it is possible to understand connection between nodes and edges, but how do I create a figure similar to a sequence diagram?

Thanks,

Andre

8 comments
Comment actions Permalink

Hi, Andre!

I think you could try to do that:

1. create DataModel, nodes - objects, edges - messages
2. implement NodeRealizer (vertical rectangles)
3. implement your own Layouter (http://www.yworks.com/products/yfiles/doc/developers-guide/layout.html).
Unfortunatly, it isn't easy.

Serega.


0
Comment actions Permalink

Hi Sergey,

Thank you for response. I'll try it!

Andre

0
Comment actions Permalink

Hi Sergey,

Ive tried your tips and implemented all classes using some examples that a have from a plugin I developed.

The problem is with Layouter. Is there any useful examples?

Thanks agains,

Andre

0
Comment actions Permalink

Thank you again Sergey!

I'll try it.

Andre

0
Comment actions Permalink

Sergey,

I adapted your example and created DiagramLayouter. Now I'm encontering this error:

DiagramLayouter layouter = new DiagramLayouter();
if (graph.getNodeArray().length > 0 && layouter.canLayout(graph)) {
GraphManager graphManager = GraphManager.getGraphManager();
graphManager.createBufferedLayouter(layouter).doLayout(graph);
graph.updateViews();
}


java.lang.AssertionError: Can't unwrap interface: interface a.f.ec
at com.intellij.openapi.graph.impl.GraphBase.b(GraphBase.java:58)
at com.intellij.openapi.graph.impl.GraphBase.a(GraphBase.java:82)
at com.intellij.openapi.graph.impl.GraphBase.b(GraphBase.java:1)
at com.intellij.openapi.graph.impl.GraphBase.unwrap(GraphBase.java:80)
at com.intellij.openapi.graph.impl.GraphManagerImpl.createBufferedLayouter(GraphManagerImpl.java:344)
at org.codecompany.plugins.intelliprof.diagram.DiagramGraphDataModel.doLayout(DiagramGraphDataModel.java:115)
at org.codecompany.plugins.intelliprof.diagram.DiagramViewer.createDiagram(DiagramViewer.java:72)
at com.tivo.jipviewer.ProfilerResultViewer.initComponents(ProfilerResultViewer.java:185)
at com.tivo.jipviewer.ProfilerResultViewer.]]>(ProfilerResultViewer.java:117)
at org.codecompany.plugins.intelliprof.component.IntelliPROFProjectComponent.projectOpened(IntelliPROFProjectComponent.java:46)
at com.intellij.openapi.project.impl.ProjectImpl.c(ProjectImpl.java:67)
at com.intellij.openapi.project.impl.ProjectImpl.access$300(ProjectImpl.java:41)
at com.intellij.openapi.project.impl.ProjectImpl$MyProjectManagerListener.projectOpened(ProjectImpl.java:8)
at com.intellij.openapi.project.impl.ProjectManagerImpl$1.projectOpened(ProjectManagerImpl.java:4)
at com.intellij.openapi.project.impl.ProjectManagerImpl.d(ProjectManagerImpl.java:283)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:60)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:157)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:180)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:92)

0
Comment actions Permalink

What to do with this error?

And where is the best place to apply layout? Override PresentationModel.getDefaultLayouter() method? Or the call below in the PresentationModel.customizeSettings() method:

0

Please sign in to leave a comment.