/** Opens the diagram which contains the last selected element in the diagram viewer. */
 private void openDiagram() {
   Object object = null;
   DocumentTreeNode documentTreeNode;
   for (int i = documentTreeNodes.size() - 1; i >= 0; --i) {
     documentTreeNode = documentTreeNodes.get(i);
     if (documentTreeNode.getType() != DocumentTreeNodeType.DIAGRAM_CATEGORY) {
       if (!(documentTreeNode.getNodeObject() instanceof Collaboration)
           && !(documentTreeNode.getNodeObject() instanceof ActivityGraph)) {
         object = documentTreeNode.getNodeObject();
         if ((object instanceof GraphElement)
             || (DeployHelper.getGraphElement((ModelElement) object) != null)) {
           break;
         }
         object = null;
       }
     }
   }
   if (object == null) {
     return;
   }
   Diagram diagram = null;
   DiagramView view = DeployHelper.getDiagramView(mainFrame);
   if (object instanceof Diagram) {
     diagram = (Diagram) object;
   } else {
     if (object instanceof ModelElement) {
       List<Diagram> diagrams = DeployHelper.getDiagram((ModelElement) object);
       if ((view != null) && (diagrams.contains(view.getDiagram()))) {
         diagram = view.getDiagram();
       } else {
         if (diagrams.size() > 0) {
           diagram = diagrams.get(0);
         }
       }
     } else {
       diagram = DeployHelper.getDiagram((GraphElement) object);
     }
   }
   if (diagram != null) {
     if (view == null || view.getDiagram() != diagram) {
       DiagramView openedView = mainFrame.getDiagramViewer().openDiagramView(diagram);
       DeployHelper.updateZoomPane(openedView);
     }
   }
 }