001: /*
002: * Copyright (c) 2007, intarsys consulting GmbH
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * - Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * - 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: *
014: * - Neither the name of intarsys nor the names of its contributors may be used
015: * to endorse or promote products derived from this software without specific
016: * prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
022: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
024: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
025: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
026: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
027: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
028: * POSSIBILITY OF SUCH DAMAGE.
029: */
030: package de.intarsys.pdf.pd;
031:
032: import de.intarsys.pdf.cos.COSBasedObject;
033: import de.intarsys.pdf.cos.COSName;
034: import de.intarsys.pdf.cos.COSObject;
035: import de.intarsys.pdf.cos.COSString;
036: import de.intarsys.tools.string.StringTools;
037:
038: /**
039: * A logical text field within an AcroForm.
040: *
041: */
042: public class PDAFTextField extends PDAcroFormField {
043: /**
044: * The meta class implementation
045: */
046: static public class MetaClass extends PDAcroFormField.MetaClass {
047: protected MetaClass(Class instanceClass) {
048: super (instanceClass);
049: }
050:
051: protected COSBasedObject doCreateCOSBasedObject(COSObject object) {
052: return new PDAFTextField(object);
053: }
054: }
055:
056: /** The meta class instance */
057: static public final MetaClass META = new MetaClass(MetaClass.class
058: .getDeclaringClass());
059:
060: protected PDAFTextField(COSObject object) {
061: super (object);
062: }
063:
064: /*
065: * (non-Javadoc)
066: *
067: * @see de.intarsys.pdf.pd.PDAcroFormField#cosGetExpectedFieldType()
068: */
069: public COSName cosGetExpectedFieldType() {
070: return CN_FT_Tx;
071: }
072:
073: /*
074: * (non-Javadoc)
075: *
076: * @see de.intarsys.pdf.pd.PDAcroFormField#setValueString(java.lang.String)
077: */
078: public void setValueString(String value) {
079: if (value == null) {
080: super .setValueString(value);
081: return;
082: }
083: // set V field of field dict
084: cosSetValue(COSString.createMultiLine(value));
085: }
086:
087: public void setDefaultValue(String value) {
088: if (value == null) {
089: super .setDefaultValue(value);
090: return;
091: }
092: // set /DV field of field dict
093: cosSetDefaultValue(COSString.createMultiLine(value));
094: }
095:
096: /*
097: * (non-Javadoc)
098: *
099: * @see de.intarsys.pdf.pd.PDAcroFormField#getValueString()
100: */
101: public String getValueString() {
102: COSObject value = cosGetValue();
103: if (value.isNull()) {
104: return null;
105: }
106: if (value instanceof COSString) {
107: return ((COSString) value).multiLineStringValue();
108: }
109: return value.stringValue();
110: }
111:
112: /*
113: * (non-Javadoc)
114: *
115: * @see de.intarsys.pdf.pd.PDAcroFormField#getDefaultValueString()
116: */
117: public String getDefaultValueString() {
118: COSObject value = cosGetDefaultValue();
119: if (value.isNull()) {
120: return null;
121: }
122: if (value instanceof COSString) {
123: return ((COSString) value).multiLineStringValue();
124: }
125: return value.stringValue();
126: }
127:
128: /*
129: * (non-Javadoc)
130: *
131: * @see de.intarsys.pdf.pd.PDAcroFormField#isTypeTx()
132: */
133: public boolean isTypeTx() {
134: return true;
135: }
136:
137: /*
138: * (non-Javadoc)
139: *
140: * @see de.intarsys.pdf.pd.PDAcroFormField#reset()
141: */
142: public void reset() {
143: //
144: COSObject value = cosGetDefaultValue();
145: if (value.isNull()) {
146: value = COSString.create(StringTools.EMPTY);
147: } else {
148: value = value.copyOptional();
149: }
150: cosSetValue(value);
151: }
152: }
|