static String renderToList(Scene scene) {
   boolean hasNoTos = true;
   for (IPath p : scene.getPaths()) {
     if (p.getTo() != null) {
       hasNoTos = false;
       break;
     }
   }
   String sufix = scene.getPaths().isEmpty() ? "] " : hasNoTos ? "#" : " ";
   return (scene.getScenesFrom().isEmpty() ? " [" : " ") + scene.getName() + sufix;
 }
  private void mountListToEnd(int depthNumber, boolean selectScene, Scene sceneToSelect) {
    Collection<Scene> nextDepthScenes = DepthManager.getInstance().getScenesFromDepth(depthNumber);

    JList list = createList();
    list.setModel(createOrderedSceneListModel(nextDepthScenes));
    if (selectScene) {
      for (int i = 0; i < list.getModel().getSize(); i++) {
        Scene s = (Scene) list.getModel().getElementAt(i);
        if (s.equals(sceneToSelect)) {
          list.setSelectedIndex(i);
          break;
        }
      }
    }
    addListToEnd(depthNumber, list);
  }
  protected void listMouseClicked(EventObject e) {
    for (ListLevel listLevelTuple : depthLists) {
      listLevelTuple.list.setCellRenderer(new SceneDepthListCellRender());
    }

    JList list = (JList) e.getSource();
    selectedScene = (Scene) list.getSelectedValue();
    jumpToBt.setEnabled(true);
    jumpToBt.setText("Jump to [" + selectedScene.getName() + "]");

    int idx = depthLists.indexOf(new ListLevel(-1, list));
    assert idx != -1 : "Should have found a scenesList";

    if (idx == 0) {
      JList startList = depthLists.get(1).list;
      startList.setCellRenderer(new ToCellRenderer(selectedScene));
      Util.showComponent(startList);
    } else if (idx > 0) {
      JList fromList = depthLists.get(idx - 1).list;
      logger.debug("Before: " + fromList.getSelectedValue());

      fromList.setCellRenderer(new FromCellRenderer(selectedScene));
      Util.showComponent(fromList);

      if (idx + 1 < depthLists.size()) {
        JList afterList = depthLists.get(idx + 1).list;
        logger.debug("After: " + afterList.getSelectedValue());

        afterList.setCellRenderer(new ToCellRenderer(selectedScene));
        Util.showComponent(afterList);
      }
    }

    Util.showComponent(panel);
  }
 public void printPathDepthsTree(Scene start) {
   tabs = "";
   for (PathDepth pd : start.getPathDepths()) {
     printChildren(pd);
   }
 }