/** Contains a CyNetworkView. */
  protected void createContainer(final CyNetworkView view) {
    if (networkViewMap.containsKey(view.getNetwork().getIdentifier())) return;

    // create a new InternalFrame and put the CyNetworkViews Component into
    // it
    final JInternalFrame iframe = new JInternalFrame(view.getTitle(), true, true, true, true);
    iframe.addInternalFrameListener(
        new InternalFrameAdapter() {
          public void internalFrameClosing(InternalFrameEvent e) {
            Cytoscape.destroyNetworkView(view);
          }
        });
    desktopPane.add(iframe);

    // code added to support layered canvas for each CyNetworkView
    if (view instanceof DGraphView) {
      final InternalFrameComponent internalFrameComp =
          new InternalFrameComponent(iframe.getLayeredPane(), (DGraphView) view);

      iframe.getContentPane().add(internalFrameComp);
      internalFrameComponentMap.put(view.getNetwork().getIdentifier(), internalFrameComp);
    } else {
      logger.info("NetworkViewManager.createContainer() - DGraphView not found!");
      iframe.getContentPane().add(view.getComponent());
    }

    iframe.pack();

    int x = 0;
    int y = 0;
    JInternalFrame refFrame = null;
    JInternalFrame[] allFrames = desktopPane.getAllFrames();

    if (allFrames.length > 1) {
      refFrame = allFrames[0];
    }

    if (refFrame != null) {
      x = refFrame.getLocation().x + 20;
      y = refFrame.getLocation().y + 20;
    }

    if (x > (desktopPane.getWidth() - MINIMUM_WIN_WIDTH)) {
      x = desktopPane.getWidth() - MINIMUM_WIN_WIDTH;
    }

    if (y > (desktopPane.getHeight() - MINIMUM_WIN_HEIGHT)) {
      y = desktopPane.getHeight() - MINIMUM_WIN_HEIGHT;
    }

    if (x < 0) {
      x = 0;
    }

    if (y < 0) {
      y = 0;
    }

    iframe.setBounds(x, y, 400, 400);

    // maximize the frame if the specified property is set
    try {
      String max = CytoscapeInit.getProperties().getProperty("maximizeViewOnCreate");

      if ((max != null) && Boolean.parseBoolean(max)) iframe.setMaximum(true);
    } catch (PropertyVetoException pve) {
      logger.warn("Unable to maximize internal frame: " + pve.getMessage());
    }

    iframe.setVisible(true);
    iframe.addInternalFrameListener(this);
    iframe.setResizable(true);

    networkViewMap.put(view.getNetwork().getIdentifier(), iframe);
    componentMap.put(iframe, view.getNetwork().getIdentifier());

    firePropertyChange(
        CytoscapeDesktop.NETWORK_VIEW_FOCUSED, null, view.getNetwork().getIdentifier());
  }