private void createAndRevealDiagram(
      DefaultMainFrame mainFrame,
      DbJVPackage topMostPackage,
      Controller controller,
      int startJobDone,
      int endJobDone)
      throws DbException {

    controller.checkPoint(startJobDone);
    DbOODiagram topMostDiagram = null;

    // create a diagram for each imported package
    int i = 0, nb = m_importedPackages.size();
    int span = endJobDone - startJobDone;
    for (DbJVPackage pack : m_importedPackages) {
      DbOODiagram diagram = new DbOODiagram(pack);
      CreateMissingGraphicsAction.createOOGraphics(diagram, (Point) null);
      new JVDiagramLayout(diagram, (GraphicComponent[]) null);

      if (pack.equals(topMostPackage)) {
        topMostDiagram = diagram;
      }

      int jobDone = startJobDone + (i * span) / nb;
      controller.checkPoint(jobDone);
      i++;
    } // end for

    if (topMostDiagram != null) {
      mainFrame.addDiagramInternalFrame(topMostDiagram);
      mainFrame.findInExplorer(topMostDiagram);
    }

    controller.checkPoint(endJobDone);
  } // end createAndRevealDiagram()