You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2015/01/27 20:46:05 UTC

svn commit: r1655137 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java

Author: msahyoun
Date: Tue Jan 27 19:46:05 2015
New Revision: 1655137

URL: http://svn.apache.org/r1655137
Log:
PDFBOX-2333 update appearance when value has been set

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java?rev=1655137&r1=1655136&r2=1655137&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java Tue Jan 27 19:46:05 2015
@@ -23,6 +23,8 @@ import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceEntry;
 
 /**
  * Radio button fields contain a set of related buttons that can each be on or off.
@@ -166,20 +168,23 @@ public final class PDRadioButton extends
         }
         else
         {
-            setInheritableAttribute(COSName.V, COSName.getPDFName(fieldValue));
+            COSName nameForValue = COSName.getPDFName(fieldValue);
+            setInheritableAttribute(COSName.V, nameForValue);
             List<COSObjectable> kids = getKids();
             for (COSObjectable kid : kids)
             {
-                if (kid instanceof PDCheckbox)
+                if (kid instanceof PDAnnotationWidget)
                 {
-                    PDCheckbox btn = (PDCheckbox) kid;
-                    if (btn.getOnValue().equals(fieldValue))
+                    PDAppearanceEntry appearanceEntry = ((PDAnnotationWidget) kid).getAppearance()
+                            .getNormalAppearance();
+                    
+                    if (((COSDictionary) appearanceEntry.getCOSObject()).containsKey(nameForValue))
                     {
-                        btn.check();
+                        ((COSDictionary) kid.getCOSObject()).setName(COSName.AS, fieldValue);
                     }
                     else
                     {
-                        btn.unCheck();
+                        ((COSDictionary) kid.getCOSObject()).setName(COSName.AS, "Off");
                     }
                 }
             }