01: package com.canoo.webtest.plugins.pdftest.htmlunit.pdfbox;
02:
03: import java.util.ArrayList;
04: import java.util.Iterator;
05: import java.util.List;
06:
07: import org.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
08:
09: import com.canoo.webtest.plugins.pdftest.htmlunit.PDFBookmark;
10:
11: /**
12: * Implementation of {@link PDFBookmark} based on
13: * <a href="http://www.pdfbox.org/">PDFBox</a>.
14: * @author Etienne Studer
15: * @author Marc Guillemot
16: */
17: public class PdfBoxPDFBookmark implements PDFBookmark {
18: private final PDOutlineItem nativeBookmark_;
19: private final PdfBoxPDFBookmark parent_;
20: private final List children_;
21:
22: public PdfBoxPDFBookmark(final PDOutlineItem nativeBookmark,
23: final PdfBoxPDFBookmark parent) {
24: nativeBookmark_ = nativeBookmark;
25: parent_ = parent;
26: children_ = readChildren();
27: }
28:
29: protected List readChildren() {
30: final List children = new ArrayList();
31: PDOutlineItem nativeChild = nativeBookmark_.getFirstChild();
32: while (nativeChild != null) {
33: children.add(new PdfBoxPDFBookmark(nativeChild, this ));
34: nativeChild = nativeChild.getNextSibling();
35: }
36:
37: return children;
38: }
39:
40: public String getTitle() {
41: return nativeBookmark_.getTitle();
42: }
43:
44: public PDFBookmark getParent() {
45: return parent_;
46: }
47:
48: public List getchildren() {
49: return children_;
50: }
51:
52: /**
53: * Get all children deep first
54: * @return a list of {@link PDFBookmark}
55: */
56: public List getAllChildren() {
57: final List results = new ArrayList();
58: for (final Iterator iter = getchildren().iterator(); iter
59: .hasNext();) {
60: final PDFBookmark child = (PDFBookmark) iter.next();
61: results.add(child);
62: results.addAll(child.getAllChildren());
63: }
64: return results;
65: }
66: }
|