Exemplo n.º 1
0
  private void sortOutlineNodes(TreeMap<Integer, OutlineNode<?>> nodesToProcess, int level) {
    if (nodesToProcess.isEmpty()) {
      return;
    }

    int currentLine = -1;
    for (; ; ) {

      final Map.Entry<Integer, OutlineNode<?>> currentEntry =
          nodesToProcess.higherEntry(currentLine);
      if (currentEntry == null) {
        break;
      }
      final int currentNodeLevel = currentEntry.getValue().getLevel();
      if (currentNodeLevel > level) {
        currentLine = currentEntry.getKey();
      } else if (currentNodeLevel < level) {
        // was already processed; process its children
        sortOutlineNodes(currentEntry.getValue().getContentMap(), level);
        currentLine = currentEntry.getKey();
      } else {
        final OutlineNode<?> currentNode = currentEntry.getValue();
        int continueAfter = currentNode.createContentMap(nodesToProcess);
        nodesToProcess.keySet().removeAll(currentNode.getContentMap().keySet());
        currentLine = continueAfter;
      }
    }
  }