001: /**
002: * Copyright (c) 2003-2006, www.pdfbox.org
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without
006: * modification, are permitted provided that the following conditions are met:
007: *
008: * 1. Redistributions of source code must retain the above copyright notice,
009: * this list of conditions and the following disclaimer.
010: * 2. Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: * 3. Neither the name of pdfbox; nor the names of its
014: * contributors may be used to endorse or promote products derived from this
015: * software without specific prior written permission.
016: *
017: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
018: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
019: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
020: * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
021: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
022: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
023: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
024: * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
026: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027: *
028: * http://www.pdfbox.org
029: *
030: */package org.pdfbox.pdmodel.interactive.annotation;
031:
032: import java.io.IOException;
033:
034: import org.pdfbox.cos.COSDictionary;
035: import org.pdfbox.cos.COSName;
036:
037: /**
038: * This is the class that represents a popup annotation.
039: * Introduced in PDF 1.3 specification
040: *
041: * @author Paul King
042: * @version $Revision: 1.2 $
043: */
044: public class PDAnnotationPopup extends PDAnnotation {
045:
046: /**
047: * The type of annotation.
048: */
049: public static final String SUB_TYPE = "Popup";
050:
051: /**
052: * Constructor.
053: */
054: public PDAnnotationPopup() {
055: super ();
056: getDictionary().setItem(COSName.SUBTYPE,
057: COSName.getPDFName(SUB_TYPE));
058: }
059:
060: /**
061: * Creates a popup annotation from a COSDictionary, expected to be a correct
062: * object definition.
063: *
064: * @param field
065: * the PDF objet to represent as a field.
066: */
067: public PDAnnotationPopup(COSDictionary field) {
068: super (field);
069: }
070:
071: /**
072: * This will set inital state of the annotation, open or closed.
073: *
074: * @param open
075: * Boolean value, true = open false = closed.
076: */
077: public void setOpen(boolean open) {
078: getDictionary().setBoolean("Open", open);
079: }
080:
081: /**
082: * This will retrieve the initial state of the annotation, open Or closed
083: * (default closed).
084: *
085: * @return The initial state, true = open false = closed.
086: */
087: public boolean getOpen() {
088: return getDictionary().getBoolean("Open", false);
089: }
090:
091: /**
092: * This will set the markup annotation which this popup relates to.
093: *
094: * @param annot
095: * the markup annotation.
096: */
097: public void setParent(PDAnnotationMarkup annot) {
098: getDictionary().setItem(COSName.PARENT, annot.getDictionary());
099: }
100:
101: /**
102: * This will retrieve the markup annotation which this popup relates to.
103: *
104: * @return The parent markup annotation.
105: */
106: public PDAnnotationMarkup getParent() {
107: PDAnnotationMarkup am = null;
108: try {
109: am = (PDAnnotationMarkup) PDAnnotation
110: .createAnnotation(getDictionary()
111: .getDictionaryObject("Parent", "P"));
112: } catch (IOException ioe) {
113: // Couldn't construct the annotation, so return null i.e. do nothing
114: }
115: return am;
116: }
117:
118: }
|