/**
   * @param dotGraph IDotGraph
   * @param contents Draw2dGraph
   * @return Draw2dGraph
   */
  private Draw2dGraph createGraph(final IDotGraph dotGraph, final Draw2dGraph contents) {
    for (final IVertex node : dotGraph.allVertices()) {
      buildNodeFigure(contents, node);
    }

    for (final Iterator<IEdge> iter = dotGraph.edgeIterator(); iter.hasNext(); ) {
      final IEdge edge = iter.next();
      buildEdgeFigure(contents, edge);
    }

    return contents;
  }
  /**
   * Creates a <em>basic node</em>.
   *
   * @param node Node
   * @return IVertex
   */
  private IVertex addNode(final Node node) {
    final String name = node.getName();
    final IVertex vertex = dotGraph.newVertex(name, node);

    if (node.equals(startNode)) {
      setVertexPreferences(vertex, "start");
    } else if (node.hasAttributes(Node.ATTR_MAIN_NODE)) {
      setVertexPreferences(vertex, "main");
    } else if (node.hasAttributes(Node.ATTR_MISSING_NODE)) {
      setVertexPreferences(vertex, "missing");
    } else {
      setVertexPreferences(vertex, "default");
    }

    if (node.getDescription() != null) {
      vertex.setAttr(DESCRIPTION_ATTR, node.getDescription());
    }

    if (useBusRouting) {
      final GrandUiPrefStore preferenceStore = Application.getInstance().getPreferenceStore();
      vertex.setAttr("inthreshold", preferenceStore.getInt(PreferenceKeys.GRAPH_BUS_IN_THRESHOLD));
      vertex.setAttr(
          "outthreshold", preferenceStore.getInt(PreferenceKeys.GRAPH_BUS_OUT_THRESHOLD));
    }

    vertexLUT.put(name, vertex);
    nameDimensions.put(name, vertex);
    return vertex;
  }
 /**
  * Creates a basic link.
  *
  * @param link Link
  * @return IEdge
  */
 private IEdge addLink(final Link link) {
   final IEdge edge =
       dotGraph.newEdge(
           vertexLUT.get(link.getStartNode().getName()),
           vertexLUT.get(link.getEndNode().getName()),
           currentLinkName,
           link);
   final GrandUiPrefStore preferenceStore = Application.getInstance().getPreferenceStore();
   if (link.hasAttributes(Link.ATTR_WEAK_LINK)) {
     edge.setAttr(DRAW2DFGCOLOR_ATTR, preferenceStore.getColor(PreferenceKeys.LINK_WEAK_COLOR));
     edge.setAttr(
         DRAW2DLINEWIDTH_ATTR, preferenceStore.getInt(PreferenceKeys.LINK_WEAK_LINEWIDTH));
   } else {
     edge.setAttr(DRAW2DFGCOLOR_ATTR, preferenceStore.getColor(PreferenceKeys.LINK_DEFAULT_COLOR));
     edge.setAttr(
         DRAW2DLINEWIDTH_ATTR, preferenceStore.getInt(PreferenceKeys.LINK_DEFAULT_LINEWIDTH));
   }
   return edge;
 }