You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/08/25 20:33:11 UTC
svn commit: r1620405 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form:
PDChoice.java PDComboBox.java PDListBox.java
Author: lehmi
Date: Mon Aug 25 18:33:10 2014
New Revision: 1620405
URL: http://svn.apache.org/r1620405
Log:
PDFBOX-2261: added choice specific field flags, support multiple values for V
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDChoice.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDComboBox.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDListBox.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDChoice.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDChoice.java?rev=1620405&r1=1620404&r2=1620405&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDChoice.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDChoice.java Mon Aug 25 18:33:10 2014
@@ -123,6 +123,109 @@ public abstract class PDChoice extends P
}
}
+ /**
+ * Determines if Sort is set.
+ *
+ * @return true if the options are sorted.
+ */
+ public boolean isSort()
+ {
+ return getDictionary().getFlag( COSName.FF, FLAG_SORT );
+ }
+
+ /**
+ * Set the Sort bit.
+ *
+ * @param sort The value for Sort.
+ */
+ public void setSort( boolean sort )
+ {
+ getDictionary().setFlag( COSName.FF, FLAG_SORT, sort );
+ }
+
+ /**
+ * Determines if MultiSelect is set.
+ *
+ * @return true if multi select is allowed.
+ */
+ public boolean isMultiSelect()
+ {
+ return getDictionary().getFlag( COSName.FF, FLAG_MULTI_SELECT );
+ }
+
+ /**
+ * Set the MultiSelect bit.
+ *
+ * @param multiSelect The value for MultiSelect.
+ */
+ public void setMultiSelect( boolean multiSelect )
+ {
+ getDictionary().setFlag( COSName.FF, FLAG_MULTI_SELECT, multiSelect );
+ }
+
+ /**
+ * Determines if DoNotSpellCheck is set.
+ *
+ * @return true if spell checker is disabled.
+ */
+ public boolean isDoNotSpellCheck()
+ {
+ return getDictionary().getFlag( COSName.FF, FLAG_DO_NOT_SPELL_CHECK );
+ }
+
+ /**
+ * Set the DoNotSpellCheck bit.
+ *
+ * @param doNotSpellCheck The value for DoNotSpellCheck.
+ */
+ public void setDoNotSpellCheck( boolean doNotSpellCheck )
+ {
+ getDictionary().setFlag( COSName.FF, FLAG_DO_NOT_SPELL_CHECK, doNotSpellCheck );
+ }
+
+ /**
+ * Determines if CommitOnSelChange is set.
+ *
+ * @return true if value shall be committed as soon as a selection is made.
+ */
+ public boolean isCommitOnSelChange()
+ {
+ return getDictionary().getFlag( COSName.FF, FLAG_COMMIT_ON_SEL_CHANGE );
+ }
+
+ /**
+ * Set the CommitOnSelChange bit.
+ *
+ * @param commitOnSelChange The value for CommitOnSelChange.
+ */
+ public void setCommitOnSelChange( boolean commitOnSelChange )
+ {
+ getDictionary().setFlag( COSName.FF, FLAG_COMMIT_ON_SEL_CHANGE, commitOnSelChange );
+ }
+
+ /**
+ * getValue gets the value of the "V" entry.
+ *
+ * @return The value of this entry.
+ *
+ */
+ @Override
+ public COSArray getValue()
+ {
+ COSBase value = getDictionary().getDictionaryObject( COSName.V);
+ if (value instanceof COSString)
+ {
+ COSArray array = new COSArray();
+ array.add(value);
+ return array;
+ }
+ else if (value instanceof COSArray)
+ {
+ return (COSArray)value;
+ }
+ return null;
+ }
+
// returns the "Opt" index for the given string
protected int getSelectedIndex(String optionValue)
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDComboBox.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDComboBox.java?rev=1620405&r1=1620404&r2=1620405&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDComboBox.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDComboBox.java Mon Aug 25 18:33:10 2014
@@ -17,7 +17,6 @@
package org.apache.pdfbox.pdmodel.interactive.form;
import org.apache.pdfbox.cos.COSArray;
-import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSString;
@@ -43,29 +42,6 @@ public final class PDComboBox extends PD
}
/**
- * getValue gets the value of the "V" entry.
- *
- * @return The value of this entry.
- *
- */
- @Override
- public COSArray getValue()
- {
- COSBase value = getDictionary().getDictionaryObject( COSName.V);
- if (value instanceof COSString)
- {
- COSArray array = new COSArray();
- array.add(value);
- return array;
- }
- else if (value instanceof COSArray)
- {
- return (COSArray)value;
- }
- return null;
- }
-
- /**
* setValue sets the entry "V" to the given value.
*
* @param value the value
@@ -74,6 +50,7 @@ public final class PDComboBox extends PD
@Override
public void setValue(Object value)
{
+ // TODO move to superclass PDCoice??
if ((getFieldFlags() & FLAG_EDIT) != 0)
{
throw new IllegalArgumentException("The combo box isn't editable.");
@@ -82,6 +59,7 @@ public final class PDComboBox extends PD
{
if (value instanceof String)
{
+ getDictionary().setString(COSName.V, (String)value);
int index = getSelectedIndex((String)value);
if (index == -1)
{
@@ -91,7 +69,17 @@ public final class PDComboBox extends PD
}
if (value instanceof String[])
{
- // TODO multiple values
+ if (!isMultiSelect())
+ {
+ throw new IllegalArgumentException("The combo box does allow multiple selection.");
+ }
+ String[] stringValues = (String[])value;
+ COSArray stringArray = new COSArray();
+ for (int i =0; i<stringValues.length;i++)
+ {
+ stringArray.add(new COSString(stringValues[i]));
+ }
+ getDictionary().setItem(COSName.V, stringArray);
}
}
else
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDListBox.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDListBox.java?rev=1620405&r1=1620404&r2=1620405&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDListBox.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDListBox.java Mon Aug 25 18:33:10 2014
@@ -17,7 +17,6 @@
package org.apache.pdfbox.pdmodel.interactive.form;
import org.apache.pdfbox.cos.COSArray;
-import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSString;
@@ -42,29 +41,6 @@ public final class PDListBox extends PDC
}
/**
- * getValue gets the value of the "V" entry.
- *
- * @return The value of this entry.
- *
- */
- @Override
- public COSArray getValue()
- {
- COSBase value = getDictionary().getDictionaryObject(COSName.V);
- if (value instanceof COSString)
- {
- COSArray array = new COSArray();
- array.add(value);
- return array;
- }
- else if (value instanceof COSArray)
- {
- return (COSArray) value;
- }
- return null;
- }
-
- /**
* setValue sets the entry "V" to the given value.
*
* @param value the value
@@ -73,25 +49,37 @@ public final class PDListBox extends PDC
@Override
public void setValue(Object value)
{
+ // TODO move to superclass PDCoice??
if ((getFieldFlags() & FLAG_EDIT) != 0)
{
- throw new IllegalArgumentException("The combo box isn't editable.");
+ throw new IllegalArgumentException("The list box isn't editable.");
}
if (value != null)
{
if (value instanceof String)
{
+ getDictionary().setString(COSName.V, (String)value);
int index = getSelectedIndex((String) value);
if (index == -1)
{
throw new IllegalArgumentException(
- "The combo box does not contain the given value.");
+ "The list box does not contain the given value.");
}
selectMultiple(index);
}
if (value instanceof String[])
{
- // TODO multiple values
+ if (!isMultiSelect())
+ {
+ throw new IllegalArgumentException("The list box does allow multiple selection.");
+ }
+ String[] stringValues = (String[])value;
+ COSArray stringArray = new COSArray();
+ for (int i =0; i<stringValues.length;i++)
+ {
+ stringArray.add(new COSString(stringValues[i]));
+ }
+ getDictionary().setItem(COSName.V, stringArray);
}
}
else