1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
7 #include "../../include/javascript/JavaScript.h"
8 #include "../../include/javascript/IJavaScript.h"
9 #include "../../include/javascript/JS_Define.h"
10 #include "../../include/javascript/JS_Object.h"
11 #include "../../include/javascript/JS_Value.h"
12 #include "../../include/javascript/Field.h"
13 #include "../../include/javascript/JS_EventHandler.h"
14 //#include "../include/JS_ResMgr.h"
15 #include "../../include/javascript/JS_Context.h"
16 #include "../../include/javascript/JS_Runtime.h"
17 #include "../../include/javascript/Document.h"
18 #include "../../include/javascript/color.h"
19 #include "../../include/javascript/PublicMethods.h"
20 #include "../../include/javascript/Icon.h"
23 /* ---------------------- Field ---------------------- */
25 BEGIN_JS_STATIC_CONST(CJS_Field)
28 BEGIN_JS_STATIC_PROP(CJS_Field)
29 JS_STATIC_PROP_ENTRY(alignment)
30 JS_STATIC_PROP_ENTRY(borderStyle)
31 JS_STATIC_PROP_ENTRY(buttonAlignX)
32 JS_STATIC_PROP_ENTRY(buttonAlignY)
33 JS_STATIC_PROP_ENTRY(buttonFitBounds)
34 JS_STATIC_PROP_ENTRY(buttonPosition)
35 JS_STATIC_PROP_ENTRY(buttonScaleHow)
36 JS_STATIC_PROP_ENTRY(buttonScaleWhen)
37 JS_STATIC_PROP_ENTRY(calcOrderIndex)
38 JS_STATIC_PROP_ENTRY(charLimit)
39 JS_STATIC_PROP_ENTRY(comb)
40 JS_STATIC_PROP_ENTRY(commitOnSelChange)
41 JS_STATIC_PROP_ENTRY(currentValueIndices)
42 JS_STATIC_PROP_ENTRY(defaultStyle)
43 JS_STATIC_PROP_ENTRY(defaultValue)
44 JS_STATIC_PROP_ENTRY(doNotScroll)
45 JS_STATIC_PROP_ENTRY(doNotSpellCheck)
46 JS_STATIC_PROP_ENTRY(delay)
47 JS_STATIC_PROP_ENTRY(display)
48 JS_STATIC_PROP_ENTRY(doc)
49 JS_STATIC_PROP_ENTRY(editable)
50 JS_STATIC_PROP_ENTRY(exportValues)
51 JS_STATIC_PROP_ENTRY(hidden)
52 JS_STATIC_PROP_ENTRY(fileSelect)
53 JS_STATIC_PROP_ENTRY(fillColor)
54 JS_STATIC_PROP_ENTRY(lineWidth)
55 JS_STATIC_PROP_ENTRY(highlight)
56 JS_STATIC_PROP_ENTRY(multiline)
57 JS_STATIC_PROP_ENTRY(multipleSelection)
58 JS_STATIC_PROP_ENTRY(name)
59 JS_STATIC_PROP_ENTRY(numItems)
60 JS_STATIC_PROP_ENTRY(page)
61 JS_STATIC_PROP_ENTRY(password)
62 JS_STATIC_PROP_ENTRY(print)
63 JS_STATIC_PROP_ENTRY(radiosInUnison)
64 JS_STATIC_PROP_ENTRY(readonly)
65 JS_STATIC_PROP_ENTRY(rect)
66 JS_STATIC_PROP_ENTRY(required)
67 JS_STATIC_PROP_ENTRY(richText)
68 JS_STATIC_PROP_ENTRY(richValue)
69 JS_STATIC_PROP_ENTRY(rotation)
70 JS_STATIC_PROP_ENTRY(strokeColor)
71 JS_STATIC_PROP_ENTRY(style)
72 JS_STATIC_PROP_ENTRY(submitName)
73 JS_STATIC_PROP_ENTRY(textColor)
74 JS_STATIC_PROP_ENTRY(textFont)
75 JS_STATIC_PROP_ENTRY(textSize)
76 JS_STATIC_PROP_ENTRY(type)
77 JS_STATIC_PROP_ENTRY(userName)
78 JS_STATIC_PROP_ENTRY(value)
79 JS_STATIC_PROP_ENTRY(valueAsString)
80 JS_STATIC_PROP_ENTRY(source)
83 BEGIN_JS_STATIC_METHOD(CJS_Field)
84 JS_STATIC_METHOD_ENTRY(browseForFileToSubmit, 0)
85 JS_STATIC_METHOD_ENTRY(buttonGetCaption, 1)
86 JS_STATIC_METHOD_ENTRY(buttonGetIcon, 1)
87 JS_STATIC_METHOD_ENTRY(buttonImportIcon, 0)
88 JS_STATIC_METHOD_ENTRY(buttonSetCaption, 2)
89 JS_STATIC_METHOD_ENTRY(buttonSetIcon, 2)
90 JS_STATIC_METHOD_ENTRY(checkThisBox, 2)
91 JS_STATIC_METHOD_ENTRY(clearItems, 0)
92 JS_STATIC_METHOD_ENTRY(defaultIsChecked, 2)
93 JS_STATIC_METHOD_ENTRY(deleteItemAt, 1)
94 JS_STATIC_METHOD_ENTRY(getArray , 0)
95 JS_STATIC_METHOD_ENTRY(getItemAt, 0)
96 JS_STATIC_METHOD_ENTRY(getLock, 0)
97 JS_STATIC_METHOD_ENTRY(insertItemAt, 0)
98 JS_STATIC_METHOD_ENTRY(isBoxChecked, 1)
99 JS_STATIC_METHOD_ENTRY(isDefaultChecked, 1)
100 JS_STATIC_METHOD_ENTRY(setAction, 2)
101 JS_STATIC_METHOD_ENTRY(setFocus, 0)
102 JS_STATIC_METHOD_ENTRY(setItems, 1)
103 JS_STATIC_METHOD_ENTRY(setLock, 0)
104 JS_STATIC_METHOD_ENTRY(signatureGetModifications, 0)
105 JS_STATIC_METHOD_ENTRY(signatureGetSeedValue, 0)
106 JS_STATIC_METHOD_ENTRY(signatureInfo, 0)
107 JS_STATIC_METHOD_ENTRY(signatureSetSeedValue, 0)
108 JS_STATIC_METHOD_ENTRY(signatureSign, 0)
109 JS_STATIC_METHOD_ENTRY(signatureValidate, 0)
110 END_JS_STATIC_METHOD()
112 IMPLEMENT_JS_CLASS(CJS_Field, Field)
114 FX_BOOL CJS_Field::InitInstance(IFXJS_Context* cc)
116 CJS_Context* pContext = (CJS_Context*)cc;
117 ASSERT(pContext != NULL);
119 Field* pField = (Field*)GetEmbedObject();
120 ASSERT(pField != NULL);
122 pField->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
127 Field::Field(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject),
130 m_nFormControlIndex(-1),
141 //note: iControlNo = -1, means not a widget.
142 void Field::ParseFieldName(const std::wstring &strFieldNameParsed,std::wstring &strFieldName,int & iControlNo)
144 int iStart = strFieldNameParsed.find_last_of(L'.');
147 strFieldName = strFieldNameParsed;
151 std::wstring suffixal = strFieldNameParsed.substr(iStart+1);
152 iControlNo = FXSYS_wtoi(suffixal.c_str());
156 while((iStart = suffixal.find_last_of(L" ")) != -1)
158 suffixal.erase(iStart,1);
161 if (suffixal.compare(L"0") != 0)
163 strFieldName = strFieldNameParsed;
169 strFieldName = strFieldNameParsed.substr(0,iStart);
172 FX_BOOL Field::AttachField(Document* pDocument, const CFX_WideString& csFieldName)
174 ASSERT(pDocument != NULL);
175 m_pJSDoc = pDocument;
177 m_pDocument = pDocument->GetReaderDoc();
178 ASSERT(m_pDocument != NULL);
180 m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) ||
181 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
182 m_pDocument->GetPermissions(FPDFPERM_MODIFY);
184 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
185 ASSERT(pRDInterForm != NULL);
187 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
188 ASSERT(pInterForm != NULL);
190 CFX_WideString swFieldNameTemp = csFieldName;
191 swFieldNameTemp.Replace(L"..", L".");
193 if (pInterForm->CountFields(swFieldNameTemp) <= 0)
195 std::wstring strFieldName;
197 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
198 if (iControlNo == -1) return FALSE;
200 m_FieldName = strFieldName.c_str();
201 m_nFormControlIndex = iControlNo;
205 m_FieldName = swFieldNameTemp;
206 m_nFormControlIndex = -1;
211 void Field::GetFormFields(CPDFSDK_Document* pDocument, const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
213 ASSERT(pDocument != NULL);
215 CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm();
216 ASSERT(pReaderInterForm != NULL);
218 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
219 ASSERT(pInterForm != NULL);
221 ASSERT(FieldArray.GetSize() == 0);
223 for (int i=0,sz=pInterForm->CountFields(csFieldName); i<sz; i++)
225 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
226 FieldArray.Add((void*)pFormField);
230 void Field::GetFormFields(const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
232 ASSERT(m_pDocument != NULL);
234 Field::GetFormFields(m_pDocument, csFieldName, FieldArray);
237 void Field::UpdateFormField(CPDFSDK_Document* pDocument, CPDF_FormField* pFormField,
238 FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
240 ASSERT(pDocument != NULL);
241 ASSERT(pFormField != NULL);
243 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
244 ASSERT(pInterForm != NULL);
246 CFX_PtrArray widgets;
247 pInterForm->GetWidgets(pFormField, widgets);
251 int nFieldType = pFormField->GetFieldType();
252 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
254 for (int i=0,sz=widgets.GetSize(); i<sz; i++)
256 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
257 ASSERT(pWidget != NULL);
259 FX_BOOL bFormated = FALSE;
260 CFX_WideString sValue = pWidget->OnFormat(0, bFormated);
262 pWidget->ResetAppearance(sValue, FALSE);
264 pWidget->ResetAppearance(NULL, FALSE);
269 for (int i=0,sz=widgets.GetSize(); i<sz; i++)
271 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
272 ASSERT(pWidget != NULL);
274 pWidget->ResetAppearance(NULL, FALSE);
281 for (int i=0,sz=widgets.GetSize(); i<sz; i++)
283 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
284 ASSERT(pWidget != NULL);
286 CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
287 CPDFSDK_Document* pDoc = pInterForm->GetDocument();
288 // CReader_Page* pPage = pWidget->GetPage();
289 ASSERT(pDoc != NULL);
290 pDoc->UpdateAllViews(NULL, pWidget);
295 pDocument->SetChangeMark();
298 void Field::UpdateFormControl(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl,
299 FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
301 ASSERT(pDocument != NULL);
302 ASSERT(pFormControl != NULL);
304 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
305 ASSERT(pInterForm != NULL);
307 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl);
313 int nFieldType = pWidget->GetFieldType();
314 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
316 FX_BOOL bFormated = FALSE;
317 CFX_WideString sValue = pWidget->OnFormat(0, bFormated);
319 pWidget->ResetAppearance(sValue, FALSE);
321 pWidget->ResetAppearance(NULL, FALSE);
325 pWidget->ResetAppearance(NULL, FALSE);
331 CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
332 CPDFSDK_Document* pDoc = pInterForm->GetDocument();
333 ASSERT(pDoc != NULL);
334 pDoc->UpdateAllViews(NULL, pWidget);
340 pDocument->SetChangeMark();
343 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl)
345 ASSERT(pDocument != NULL);
346 ASSERT(pFormControl != NULL);
348 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
349 ASSERT(pInterForm != NULL);
351 return pInterForm->GetWidget(pFormControl);
354 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, CFX_WideString csOptLabel)
356 ASSERT(pFormField != NULL);
358 for (int i=0,sz = pFormField->CountOptions(); i < sz; i++)
360 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0)
367 CPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField)
369 ASSERT(pFormField != NULL);
370 if(!pFormField->CountControls() || m_nFormControlIndex>=pFormField->CountControls()) return NULL;
372 if (m_nFormControlIndex<0)
373 return pFormField->GetControl(0);
375 return pFormField->GetControl(m_nFormControlIndex);
378 /* ---------------------------------------- property ---------------------------------------- */
380 FX_BOOL Field::alignment(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
382 ASSERT(m_pDocument != NULL);
386 if (!m_bCanSet) return FALSE;
388 CFX_ByteString alignStr;
393 AddDelay_String(FP_ALIGNMENT, alignStr);
397 Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex, alignStr);
402 CFX_PtrArray FieldArray;
403 GetFormFields(m_FieldName, FieldArray);
404 if (FieldArray.GetSize() <= 0) return FALSE;
406 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
407 ASSERT(pFormField != NULL);
409 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
412 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
413 if (!pFormControl)return FALSE;
415 switch (pFormControl->GetControlAlignment())
434 void Field::SetAlignment(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
435 const CFX_ByteString& string)
440 FX_BOOL Field::borderStyle(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
442 ASSERT(m_pDocument != NULL);
446 if (!m_bCanSet) return FALSE;
448 CFX_ByteString strType = "";
453 AddDelay_String(FP_BORDERSTYLE, strType);
457 Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex, strType);
462 CFX_PtrArray FieldArray;
463 GetFormFields(m_FieldName, FieldArray);
464 if (FieldArray.GetSize() <= 0) return FALSE;
466 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
467 if (!pFormField) return FALSE;
469 CPDFSDK_Widget* pWidget = GetWidget(m_pDocument, GetSmartFieldControl(pFormField));
470 if (!pWidget) return FALSE;
472 int nBorderstyle = pWidget->GetBorderStyle();
474 switch (nBorderstyle)
500 void Field::SetBorderStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
501 const CFX_ByteString& string)
503 ASSERT(pDocument != NULL);
505 int nBorderStyle = 0;
507 if (string == "solid")
508 nBorderStyle = BBS_SOLID;
509 else if (string == "beveled")
510 nBorderStyle = BBS_BEVELED;
511 else if (string == "dashed")
512 nBorderStyle = BBS_DASH;
513 else if (string == "inset")
514 nBorderStyle = BBS_INSET;
515 else if (string == "underline")
516 nBorderStyle = BBS_UNDERLINE;
519 CFX_PtrArray FieldArray;
520 GetFormFields(pDocument, swFieldName, FieldArray);
522 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
524 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
525 ASSERT(pFormField != NULL);
527 if (nControlIndex < 0)
529 FX_BOOL bSet = FALSE;
530 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
532 if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormField->GetControl(j)))
534 if (pWidget->GetBorderStyle() != nBorderStyle)
536 pWidget->SetBorderStyle(nBorderStyle);
541 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
545 if(nControlIndex >= pFormField->CountControls()) return;
546 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
548 if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormControl))
550 if (pWidget->GetBorderStyle() != nBorderStyle)
552 pWidget->SetBorderStyle(nBorderStyle);
553 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
561 FX_BOOL Field::buttonAlignX(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
563 ASSERT(m_pDocument != NULL);
567 if (!m_bCanSet) return FALSE;
574 AddDelay_Int(FP_BUTTONALIGNX, nVP);
578 Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
583 CFX_PtrArray FieldArray;
584 GetFormFields(m_FieldName,FieldArray);
585 if (FieldArray.GetSize() <= 0) return FALSE;
587 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
588 ASSERT(pFormField != NULL);
590 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
593 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
594 if (!pFormControl)return FALSE;
596 CPDF_IconFit IconFit = pFormControl->GetIconFit();
598 FX_FLOAT fLeft,fBottom;
599 IconFit.GetIconPosition(fLeft,fBottom);
601 vp << (FX_INT32)fLeft;
607 void Field::SetButtonAlignX(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
612 FX_BOOL Field::buttonAlignY(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
614 ASSERT(m_pDocument != NULL);
618 if (!m_bCanSet) return FALSE;
625 AddDelay_Int(FP_BUTTONALIGNY, nVP);
629 Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
634 CFX_PtrArray FieldArray;
635 GetFormFields(m_FieldName,FieldArray);
636 if (FieldArray.GetSize() <= 0) return FALSE;
638 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
639 ASSERT(pFormField != NULL);
641 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
644 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
645 if (!pFormControl)return FALSE;
647 CPDF_IconFit IconFit = pFormControl->GetIconFit();
649 FX_FLOAT fLeft,fBottom;
650 IconFit.GetIconPosition(fLeft,fBottom);
652 vp << (FX_INT32)fBottom;
658 void Field::SetButtonAlignY(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
663 FX_BOOL Field::buttonFitBounds(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
665 ASSERT(m_pDocument != NULL);
669 if (!m_bCanSet) return FALSE;
676 AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP);
680 Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
685 CFX_PtrArray FieldArray;
686 GetFormFields(m_FieldName,FieldArray);
687 if (FieldArray.GetSize() <= 0) return FALSE;
689 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
690 ASSERT(pFormField != NULL);
692 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
695 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
696 if (!pFormControl)return FALSE;
698 CPDF_IconFit IconFit = pFormControl->GetIconFit();
699 vp << IconFit.GetFittingBounds();
705 void Field::SetButtonFitBounds(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
710 FX_BOOL Field::buttonPosition(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
712 ASSERT(m_pDocument != NULL);
716 if (!m_bCanSet) return FALSE;
723 AddDelay_Int(FP_BUTTONPOSITION, nVP);
727 Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
732 CFX_PtrArray FieldArray;
733 GetFormFields(m_FieldName,FieldArray);
734 if (FieldArray.GetSize() <= 0) return FALSE;
736 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
737 ASSERT(pFormField != NULL);
739 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
742 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
743 if (!pFormControl)return FALSE;
745 vp << pFormControl->GetTextPosition();
750 void Field::SetButtonPosition(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
755 FX_BOOL Field::buttonScaleHow(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
757 ASSERT(m_pDocument != NULL);
761 if (!m_bCanSet) return FALSE;
768 AddDelay_Int(FP_BUTTONSCALEHOW, nVP);
772 Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
777 CFX_PtrArray FieldArray;
778 GetFormFields(m_FieldName, FieldArray);
779 if (FieldArray.GetSize() <= 0) return FALSE;
781 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
782 ASSERT(pFormField != NULL);
784 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
787 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
788 if (!pFormControl)return FALSE;
790 CPDF_IconFit IconFit = pFormControl->GetIconFit();
791 if (IconFit.IsProportionalScale())
800 void Field::SetButtonScaleHow(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
805 FX_BOOL Field::buttonScaleWhen(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
807 ASSERT(m_pDocument != NULL);
811 if (!m_bCanSet) return FALSE;
818 AddDelay_Int(FP_BUTTONSCALEWHEN, nVP);
822 Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
827 CFX_PtrArray FieldArray;
828 GetFormFields(m_FieldName,FieldArray);
829 if (FieldArray.GetSize() <= 0) return FALSE;
831 CPDF_FormField* pFormField = (CPDF_FormField*) FieldArray.ElementAt(0);
832 ASSERT(pFormField != NULL);
834 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
837 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
838 if (!pFormControl) return FALSE;
840 CPDF_IconFit IconFit = pFormControl->GetIconFit();
841 int ScaleM = IconFit.GetScaleMethod();
844 case CPDF_IconFit::Always :
845 vp << (FX_INT32) CPDF_IconFit::Always;
847 case CPDF_IconFit::Bigger :
848 vp << (FX_INT32) CPDF_IconFit::Bigger;
850 case CPDF_IconFit::Never :
851 vp << (FX_INT32) CPDF_IconFit::Never;
853 case CPDF_IconFit::Smaller :
854 vp << (FX_INT32) CPDF_IconFit::Smaller;
862 void Field::SetButtonScaleWhen(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
867 FX_BOOL Field::calcOrderIndex(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
869 ASSERT(m_pDocument != NULL);
873 if (!m_bCanSet) return FALSE;
880 AddDelay_Int(FP_CALCORDERINDEX, nVP);
884 Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
889 CFX_PtrArray FieldArray;
890 GetFormFields(m_FieldName, FieldArray);
891 if (FieldArray.GetSize() <= 0) return FALSE;
893 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
894 ASSERT(pFormField != NULL);
896 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
899 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
900 ASSERT(pRDInterForm != NULL);
902 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
903 ASSERT(pInterForm != NULL);
905 vp << (FX_INT32)pInterForm->FindFieldInCalculationOrder(pFormField);
911 void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
916 FX_BOOL Field::charLimit(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
918 ASSERT(m_pDocument != NULL);
922 if (!m_bCanSet) return FALSE;
929 AddDelay_Int(FP_CHARLIMIT, nVP);
933 Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
938 CFX_PtrArray FieldArray;
939 GetFormFields(m_FieldName, FieldArray);
940 if (FieldArray.GetSize() <= 0) return FALSE;
942 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
943 ASSERT(pFormField != NULL);
945 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
948 vp << (FX_INT32)pFormField->GetMaxLen();
953 void Field::SetCharLimit(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
958 FX_BOOL Field::comb(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
960 ASSERT(m_pDocument != NULL);
964 if (!m_bCanSet) return FALSE;
971 AddDelay_Bool(FP_COMB, bVP);
975 Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
980 CFX_PtrArray FieldArray;
981 GetFormFields(m_FieldName,FieldArray);
982 if (FieldArray.GetSize() <= 0) return FALSE;
984 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
985 ASSERT(pFormField != NULL);
987 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
990 if (pFormField->GetFieldFlags() & FIELDFLAG_COMB)
999 void Field::SetComb(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1004 FX_BOOL Field::commitOnSelChange(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1006 ASSERT(m_pDocument != NULL);
1010 if (!m_bCanSet) return FALSE;
1017 AddDelay_Bool(FP_COMMITONSELCHANGE, bVP);
1021 Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1026 CFX_PtrArray FieldArray;
1027 GetFormFields(m_FieldName,FieldArray);
1028 if (FieldArray.GetSize() <= 0) return FALSE;
1030 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1031 ASSERT(pFormField != NULL);
1033 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1036 if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE)
1045 void Field::SetCommitOnSelChange(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1050 FX_BOOL Field::currentValueIndices(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1052 ASSERT(m_pDocument != NULL);
1056 if (!m_bCanSet) return FALSE;
1058 CFX_DWordArray array;
1060 if (vp.GetType() == VT_number)
1064 array.Add(iSelecting);
1066 else if (vp.IsArrayObject())
1068 CJS_Array SelArray(m_isolate);
1069 CJS_Value SelValue(m_isolate);
1072 for (int i=0,sz=SelArray.GetLength(); i<sz; i++)
1074 SelArray.GetElement(i,SelValue);
1075 iSelecting = (FX_INT32)SelValue;
1076 array.Add(iSelecting);
1082 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array);
1086 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, m_nFormControlIndex, array);
1091 CFX_PtrArray FieldArray;
1092 GetFormFields(m_FieldName,FieldArray);
1093 if (FieldArray.GetSize() <= 0) return FALSE;
1095 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1096 ASSERT(pFormField != NULL);
1098 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1101 if (pFormField->CountSelectedItems() == 1)
1102 vp << pFormField->GetSelectedIndex(0);
1103 else if (pFormField->CountSelectedItems() > 1)
1105 CJS_Array SelArray(m_isolate);
1106 for (int i=0,sz=pFormField->CountSelectedItems(); i<sz; i++)
1108 SelArray.SetElement(i, CJS_Value(m_isolate,pFormField->GetSelectedIndex(i)));
1119 void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
1120 const CFX_DWordArray& array)
1122 ASSERT(pDocument != NULL);
1124 CFX_PtrArray FieldArray;
1125 GetFormFields(pDocument, swFieldName, FieldArray);
1127 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1129 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1130 ASSERT(pFormField != NULL);
1132 int nFieldType = pFormField->GetFieldType();
1133 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX)
1135 FX_DWORD dwFieldFlags = pFormField->GetFieldFlags();
1136 pFormField->ClearSelection(TRUE);
1138 for (int i=0,sz=array.GetSize(); i<sz; i++)
1140 if (i>0 && !(dwFieldFlags & (1<<21)))
1145 int iSelecting = (FX_INT32)array.GetAt(i);
1146 if (iSelecting < pFormField->CountOptions() && !pFormField->IsItemSelected(iSelecting))
1147 pFormField->SetItemSelection(iSelecting, TRUE);
1150 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
1155 FX_BOOL Field::defaultStyle(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1157 // MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT);
1162 if (!m_bCanSet) return FALSE;
1173 void Field::SetDefaultStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
1178 FX_BOOL Field::defaultValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1180 ASSERT(m_pDocument != NULL);
1184 if (!m_bCanSet) return FALSE;
1186 CFX_WideString WideStr;
1191 AddDelay_WideString(FP_DEFAULTVALUE, WideStr);
1195 Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex, WideStr);
1200 CFX_PtrArray FieldArray;
1201 GetFormFields(m_FieldName,FieldArray);
1202 if (FieldArray.GetSize() <= 0) return FALSE;
1204 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1205 ASSERT(pFormField != NULL);
1207 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON ||
1208 pFormField->GetFieldType() == FIELDTYPE_SIGNATURE)
1211 vp << pFormField->GetDefaultValue();
1216 void Field::SetDefaultValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
1217 const CFX_WideString& string)
1222 FX_BOOL Field::doNotScroll(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1224 ASSERT(m_pDocument != NULL);
1228 if (!m_bCanSet) return FALSE;
1235 AddDelay_Bool(FP_DONOTSCROLL, bVP);
1239 Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1244 CFX_PtrArray FieldArray;
1245 GetFormFields(m_FieldName,FieldArray);
1246 if (FieldArray.GetSize() <= 0) return FALSE;
1248 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1249 ASSERT(pFormField != NULL);
1251 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1254 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL)
1263 void Field::SetDoNotScroll(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1268 FX_BOOL Field::doNotSpellCheck(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1270 ASSERT(m_pDocument != NULL);
1274 if (!m_bCanSet) return FALSE;
1281 CFX_PtrArray FieldArray;
1282 GetFormFields(m_FieldName,FieldArray);
1283 if (FieldArray.GetSize() <= 0) return FALSE;
1285 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1286 ASSERT(pFormField != NULL);
1288 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD &&
1289 pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
1292 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK)
1301 void Field::SetDelay(FX_BOOL bDelay)
1308 m_pJSDoc->DoFieldDelay(m_FieldName, m_nFormControlIndex);
1312 FX_BOOL Field::delay(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1316 if (!m_bCanSet) return FALSE;
1330 FX_BOOL Field::display(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1332 ASSERT(m_pDocument != NULL);
1336 if (!m_bCanSet) return FALSE;
1343 AddDelay_Int(FP_DISPLAY, nVP);
1347 Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
1352 CFX_PtrArray FieldArray;
1353 GetFormFields(m_FieldName,FieldArray);
1354 if (FieldArray.GetSize() <= 0) return FALSE;
1356 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1357 ASSERT(pFormField != NULL);
1359 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1360 ASSERT(pInterForm != NULL);
1362 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1363 if (!pWidget)return FALSE;
1365 FX_DWORD dwFlag = pWidget->GetFlags();
1367 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag)
1373 if (ANNOTFLAG_PRINT & dwFlag)
1375 if (ANNOTFLAG_NOVIEW & dwFlag)
1394 void Field::SetDisplay(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
1396 ASSERT(pDocument != NULL);
1398 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1399 ASSERT(pInterForm != NULL);
1401 CFX_PtrArray FieldArray;
1402 GetFormFields(pDocument, swFieldName, FieldArray);
1404 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1406 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1407 ASSERT(pFormField != NULL);
1409 if (nControlIndex < 0)
1411 FX_BOOL bSet = FALSE;
1412 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
1414 CPDF_FormControl* pFormControl = pFormField->GetControl(j);
1415 ASSERT(pFormControl != NULL);
1417 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1419 FX_DWORD dwFlag = pWidget->GetFlags();
1423 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1424 dwFlag &= (~ANNOTFLAG_HIDDEN);
1425 dwFlag &= (~ANNOTFLAG_NOVIEW);
1426 dwFlag |= ANNOTFLAG_PRINT;
1429 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1430 dwFlag &= (~ANNOTFLAG_NOVIEW);
1431 dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1434 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1435 dwFlag &= (~ANNOTFLAG_PRINT);
1436 dwFlag &= (~ANNOTFLAG_HIDDEN);
1437 dwFlag &= (~ANNOTFLAG_NOVIEW);
1440 dwFlag |= ANNOTFLAG_NOVIEW;
1441 dwFlag |= ANNOTFLAG_PRINT;
1442 dwFlag &= (~ANNOTFLAG_HIDDEN);
1446 if (dwFlag != pWidget->GetFlags())
1448 pWidget->SetFlags(dwFlag);
1454 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
1458 if(nControlIndex >= pFormField->CountControls()) return;
1459 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1461 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1464 FX_DWORD dwFlag = pWidget->GetFlags();
1468 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1469 dwFlag &= (~ANNOTFLAG_HIDDEN);
1470 dwFlag &= (~ANNOTFLAG_NOVIEW);
1471 dwFlag |= ANNOTFLAG_PRINT;
1474 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1475 dwFlag &= (~ANNOTFLAG_NOVIEW);
1476 dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1479 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1480 dwFlag &= (~ANNOTFLAG_PRINT);
1481 dwFlag &= (~ANNOTFLAG_HIDDEN);
1482 dwFlag &= (~ANNOTFLAG_NOVIEW);
1485 dwFlag |= ANNOTFLAG_NOVIEW;
1486 dwFlag |= ANNOTFLAG_PRINT;
1487 dwFlag &= (~ANNOTFLAG_HIDDEN);
1490 if (dwFlag != pWidget->GetFlags())
1492 pWidget->SetFlags(dwFlag);
1493 UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
1501 FX_BOOL Field::doc(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1503 ASSERT(m_pJSDoc != NULL);
1505 if (!vp.IsGetting())return FALSE;
1507 vp << (CJS_Object*)(*m_pJSDoc);
1512 FX_BOOL Field::editable(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1514 ASSERT(m_pDocument != NULL);
1518 if (!m_bCanSet) return FALSE;
1526 CFX_PtrArray FieldArray;
1527 GetFormFields(m_FieldName, FieldArray);
1528 if (FieldArray.GetSize() <= 0) return FALSE;
1530 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1531 ASSERT(pFormField != NULL);
1533 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
1536 if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT)
1545 FX_BOOL Field::exportValues(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1547 ASSERT(m_pDocument != NULL);
1549 CFX_PtrArray FieldArray;
1550 GetFormFields(m_FieldName,FieldArray);
1551 if (FieldArray.GetSize() <= 0) return FALSE;
1553 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1554 ASSERT(pFormField != NULL);
1556 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
1557 pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
1562 if (!m_bCanSet) return FALSE;
1563 if (!vp.IsArrayObject())return FALSE;
1567 CJS_Array ExportValusArray(m_isolate);
1569 if (m_nFormControlIndex < 0)
1571 for (int i=0,sz=pFormField->CountControls(); i<sz; i++)
1573 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1574 ASSERT(pFormControl != NULL);
1576 ExportValusArray.SetElement(i, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
1581 if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE;
1582 CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex);
1583 if (!pFormControl) return FALSE;
1585 ExportValusArray.SetElement(0, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
1588 vp << ExportValusArray;
1594 FX_BOOL Field::fileSelect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1596 ASSERT(m_pDocument != NULL);
1598 CFX_PtrArray FieldArray;
1599 GetFormFields(m_FieldName, FieldArray);
1600 if (FieldArray.GetSize() <= 0) return FALSE;
1602 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1603 ASSERT(pFormField != NULL);
1605 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1610 if (!m_bCanSet) return FALSE;
1618 if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT)
1627 FX_BOOL Field::fillColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1629 ASSERT(m_pDocument != NULL);
1631 CJS_Array crArray(m_isolate);
1633 CFX_PtrArray FieldArray;
1634 GetFormFields(m_FieldName,FieldArray);
1635 if (FieldArray.GetSize() <= 0) return FALSE;
1639 if (!m_bCanSet) return FALSE;
1640 if (!vp.IsArrayObject()) return FALSE;
1645 color::ConvertArrayToPWLColor(crArray, color);
1649 AddDelay_Color(FP_FILLCOLOR, color);
1653 Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
1658 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1659 ASSERT(pFormField != NULL);
1661 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1662 if (!pFormControl)return FALSE;
1665 pFormControl->GetBackgroundColor(iColorType);
1669 if (iColorType == COLORTYPE_TRANSPARENT)
1671 color = CPWL_Color(COLORTYPE_TRANSPARENT);
1673 else if (iColorType == COLORTYPE_GRAY)
1675 color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBackgroundColor(0));
1677 else if (iColorType == COLORTYPE_RGB)
1679 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0),
1680 pFormControl->GetOriginalBackgroundColor(1),
1681 pFormControl->GetOriginalBackgroundColor(2));
1683 else if (iColorType == COLORTYPE_CMYK)
1685 color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBackgroundColor(0),
1686 pFormControl->GetOriginalBackgroundColor(1),
1687 pFormControl->GetOriginalBackgroundColor(2),
1688 pFormControl->GetOriginalBackgroundColor(3));
1693 color::ConvertPWLColorToArray(color, crArray);
1700 void Field::SetFillColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
1705 FX_BOOL Field::hidden(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1707 ASSERT(m_pDocument != NULL);
1711 if (!m_bCanSet) return FALSE;
1718 AddDelay_Bool(FP_HIDDEN, bVP);
1722 Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1727 CFX_PtrArray FieldArray;
1728 GetFormFields(m_FieldName,FieldArray);
1729 if (FieldArray.GetSize() <= 0) return FALSE;
1731 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1732 ASSERT(pFormField != NULL);
1734 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1735 ASSERT(pInterForm != NULL);
1737 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1738 if (!pWidget) return FALSE;
1740 FX_DWORD dwFlags = pWidget->GetFlags();
1742 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags)
1753 void Field::SetHidden(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1755 ASSERT(pDocument != NULL);
1757 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1758 ASSERT(pInterForm != NULL);
1760 CFX_PtrArray FieldArray;
1761 GetFormFields(pDocument, swFieldName, FieldArray);
1763 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1765 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1766 ASSERT(pFormField != NULL);
1768 if (nControlIndex < 0)
1770 FX_BOOL bSet = FALSE;
1771 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
1773 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
1775 FX_DWORD dwFlags = pWidget->GetFlags();
1779 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1780 dwFlags &= (~ANNOTFLAG_NOVIEW);
1781 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1785 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1786 dwFlags &= (~ANNOTFLAG_HIDDEN);
1787 dwFlags &= (~ANNOTFLAG_NOVIEW);
1788 dwFlags |= ANNOTFLAG_PRINT;
1791 if (dwFlags != pWidget->GetFlags())
1793 pWidget->SetFlags(dwFlags);
1800 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
1804 if(nControlIndex >= pFormField->CountControls()) return;
1805 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1807 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1809 FX_DWORD dwFlags = pWidget->GetFlags();
1813 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1814 dwFlags &= (~ANNOTFLAG_NOVIEW);
1815 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1819 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1820 dwFlags &= (~ANNOTFLAG_HIDDEN);
1821 dwFlags &= (~ANNOTFLAG_NOVIEW);
1822 dwFlags |= ANNOTFLAG_PRINT;
1825 if (dwFlags != pWidget->GetFlags())
1827 pWidget->SetFlags(dwFlags);
1828 UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
1836 FX_BOOL Field::highlight(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1838 ASSERT(m_pDocument != NULL);
1842 if (!m_bCanSet) return FALSE;
1844 CFX_ByteString strMode;
1849 AddDelay_String(FP_HIGHLIGHT, strMode);
1853 Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex, strMode);
1858 CFX_PtrArray FieldArray;
1859 GetFormFields(m_FieldName,FieldArray);
1860 if (FieldArray.GetSize() <= 0) return FALSE;
1862 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1863 ASSERT(pFormField != NULL);
1865 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
1868 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1869 if (!pFormControl) return FALSE;
1871 int eHM = pFormControl->GetHighlightingMode();
1874 case CPDF_FormControl::None:
1877 case CPDF_FormControl::Push:
1880 case CPDF_FormControl::Invert:
1883 case CPDF_FormControl::Outline:
1886 case CPDF_FormControl::Toggle:
1895 void Field::SetHighlight(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
1900 FX_BOOL Field::lineWidth(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
1902 ASSERT(m_pDocument != NULL);
1906 if (!m_bCanSet) return FALSE;
1913 AddDelay_Int(FP_LINEWIDTH, iWidth);
1917 Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex, iWidth);
1922 CFX_PtrArray FieldArray;
1923 GetFormFields(m_FieldName,FieldArray);
1924 if (FieldArray.GetSize() <= 0) return FALSE;
1926 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1927 ASSERT(pFormField != NULL);
1929 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1930 if (!pFormControl) return FALSE;
1932 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1933 ASSERT(pInterForm != NULL);
1935 if(!pFormField->CountControls()) return FALSE;
1937 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
1938 if (!pWidget) return FALSE;
1940 vp << (FX_INT32)pWidget->GetBorderWidth();
1946 void Field::SetLineWidth(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
1948 ASSERT(pDocument != NULL);
1950 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1951 ASSERT(pInterForm != NULL);
1953 CFX_PtrArray FieldArray;
1954 GetFormFields(pDocument, swFieldName, FieldArray);
1956 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1958 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1959 ASSERT(pFormField != NULL);
1961 if (nControlIndex < 0)
1963 FX_BOOL bSet = FALSE;
1964 for (int j=0,jsz=pFormField->CountControls(); j<jsz; j++)
1966 CPDF_FormControl* pFormControl = pFormField->GetControl(j);
1967 ASSERT(pFormControl != NULL);
1969 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1971 if (number != pWidget->GetBorderWidth())
1973 pWidget->SetBorderWidth(number);
1978 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
1982 if(nControlIndex >= pFormField->CountControls()) return;
1983 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1985 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1987 if (number != pWidget->GetBorderWidth())
1989 pWidget->SetBorderWidth(number);
1990 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
1998 FX_BOOL Field::multiline(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2000 ASSERT(m_pDocument != NULL);
2004 if (!m_bCanSet) return FALSE;
2011 AddDelay_Bool(FP_MULTILINE, bVP);
2015 Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2020 CFX_PtrArray FieldArray;
2021 GetFormFields(m_FieldName, FieldArray);
2022 if (FieldArray.GetSize() <= 0) return FALSE;
2024 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2025 ASSERT(pFormField != NULL);
2027 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2030 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE)
2039 void Field::SetMultiline(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2044 FX_BOOL Field::multipleSelection(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2046 ASSERT(m_pDocument != NULL);
2050 if (!m_bCanSet) return FALSE;
2057 AddDelay_Bool(FP_MULTIPLESELECTION, bVP);
2061 Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2066 CFX_PtrArray FieldArray;
2067 GetFormFields(m_FieldName,FieldArray);
2068 if (FieldArray.GetSize() <= 0) return FALSE;
2070 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2071 ASSERT(pFormField != NULL);
2073 if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
2076 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT)
2085 void Field::SetMultipleSelection(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2090 FX_BOOL Field::name(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2092 if (!vp.IsGetting()) return FALSE;
2094 CFX_PtrArray FieldArray;
2095 GetFormFields(m_FieldName, FieldArray);
2096 if (FieldArray.GetSize() <= 0) return FALSE;
2103 FX_BOOL Field::numItems(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2105 CFX_PtrArray FieldArray;
2106 GetFormFields(m_FieldName, FieldArray);
2107 if (FieldArray.GetSize() <= 0) return FALSE;
2109 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2110 ASSERT(pFormField != NULL);
2112 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
2113 pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
2116 if (!vp.IsGetting()) return FALSE;
2118 vp << (FX_INT32)pFormField->CountOptions();
2123 FX_BOOL Field::page(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2125 if (!vp.IsGetting()) return FALSE;
2127 CFX_PtrArray FieldArray;
2128 GetFormFields(m_FieldName, FieldArray);
2129 if (FieldArray.GetSize() <= 0) return FALSE;
2131 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2132 if (!pFormField) return FALSE;
2134 ASSERT(m_pDocument != NULL);
2136 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2137 ASSERT(pInterForm != NULL);
2139 CFX_PtrArray widgetArray;
2140 pInterForm->GetWidgets(pFormField, widgetArray);
2142 if (widgetArray.GetSize() > 0)
2144 CJS_Array PageArray(m_isolate);
2146 for (int i=0,sz=widgetArray.GetSize(); i<sz; i++)
2148 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgetArray.GetAt(i);
2149 ASSERT(pWidget != NULL);
2151 CPDFSDK_PageView* pPageView = pWidget->GetPageView();
2155 PageArray.SetElement(i, CJS_Value(m_isolate,(FX_INT32)pPageView->GetPageIndex()));
2162 vp << (FX_INT32) -1;
2168 FX_BOOL Field::password(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2170 ASSERT(m_pDocument != NULL);
2174 if (!m_bCanSet) return FALSE;
2181 AddDelay_Bool(FP_PASSWORD, bVP);
2185 Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2190 CFX_PtrArray FieldArray;
2191 GetFormFields(m_FieldName,FieldArray);
2192 if (FieldArray.GetSize() <= 0) return FALSE;
2194 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2195 ASSERT(pFormField != NULL);
2197 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2200 if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD)
2209 void Field::SetPassword(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2214 FX_BOOL Field::print(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2216 ASSERT(m_pDocument != NULL);
2218 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2219 ASSERT(pInterForm != NULL);
2221 CFX_PtrArray FieldArray;
2222 GetFormFields(m_FieldName, FieldArray);
2223 if (FieldArray.GetSize() <= 0) return FALSE;
2227 if (!m_bCanSet) return FALSE;
2232 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
2234 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2235 ASSERT(pFormField != NULL);
2237 if (m_nFormControlIndex < 0)
2239 FX_BOOL bSet = FALSE;
2240 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
2242 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
2244 FX_DWORD dwFlags = pWidget->GetFlags();
2246 dwFlags |= ANNOTFLAG_PRINT;
2248 dwFlags &= ~ANNOTFLAG_PRINT;
2250 if (dwFlags != pWidget->GetFlags())
2252 pWidget->SetFlags(dwFlags);
2259 UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE);
2263 if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE;
2264 if (CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex))
2266 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2268 FX_DWORD dwFlags = pWidget->GetFlags();
2270 dwFlags |= ANNOTFLAG_PRINT;
2272 dwFlags &= ~ANNOTFLAG_PRINT;
2274 if (dwFlags != pWidget->GetFlags())
2276 pWidget->SetFlags(dwFlags);
2277 UpdateFormControl(m_pDocument, pFormField->GetControl(m_nFormControlIndex), TRUE, FALSE, TRUE);
2286 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2287 ASSERT(pFormField != NULL);
2289 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2290 if (!pWidget) return FALSE;
2292 if (pWidget->GetFlags() & ANNOTFLAG_PRINT)
2301 FX_BOOL Field::radiosInUnison(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2303 ASSERT(m_pDocument != NULL);
2305 CFX_PtrArray FieldArray;
2306 GetFormFields(m_FieldName,FieldArray);
2307 if (FieldArray.GetSize() <= 0) return FALSE;
2311 if (!m_bCanSet) return FALSE;
2319 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2320 ASSERT(pFormField != NULL);
2322 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
2325 if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)
2334 FX_BOOL Field::readonly(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2336 ASSERT(m_pDocument != NULL);
2338 CFX_PtrArray FieldArray;
2339 GetFormFields(m_FieldName,FieldArray);
2340 if (FieldArray.GetSize() <= 0) return FALSE;
2344 if (!m_bCanSet) return FALSE;
2352 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2353 ASSERT(pFormField != NULL);
2355 if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY)
2364 FX_BOOL Field::rect(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2366 ASSERT(m_pDocument != NULL);
2370 if (!m_bCanSet) return FALSE;
2371 if (!vp.IsArrayObject())return FALSE;
2373 CJS_Array rcArray(m_isolate);
2375 CJS_Value Upper_Leftx(m_isolate), Upper_Lefty(m_isolate), Lower_Rightx(m_isolate), Lower_Righty(m_isolate);
2376 rcArray.GetElement(0, Upper_Leftx);
2377 rcArray.GetElement(1, Upper_Lefty);
2378 rcArray.GetElement(2, Lower_Rightx);
2379 rcArray.GetElement(3, Lower_Righty);
2381 FX_FLOAT pArray[4] = {0.0f,0.0f,0.0f,0.0f};
2382 pArray[0] = (FX_FLOAT)(FX_INT32)Upper_Leftx;
2383 pArray[1] = (FX_FLOAT)(FX_INT32)Lower_Righty;
2384 pArray[2] = (FX_FLOAT)(FX_INT32)Lower_Rightx;
2385 pArray[3] = (FX_FLOAT)(FX_INT32)Upper_Lefty;
2387 CPDF_Rect crRect(pArray);
2391 AddDelay_Rect(FP_RECT, crRect);
2395 Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect);
2400 CFX_PtrArray FieldArray;
2401 GetFormFields(m_FieldName,FieldArray);
2402 if (FieldArray.GetSize() <= 0) return FALSE;
2404 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2405 ASSERT(pFormField != NULL);
2407 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2408 ASSERT(pInterForm != NULL);
2410 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2411 if (!pWidget) return FALSE;
2413 CFX_FloatRect crRect = pWidget->GetRect();
2414 CJS_Value Upper_Leftx(m_isolate),Upper_Lefty(m_isolate),Lower_Rightx(m_isolate),Lower_Righty(m_isolate);
2415 Upper_Leftx = (FX_INT32)crRect.left;
2416 Upper_Lefty = (FX_INT32)crRect.top;
2417 Lower_Rightx = (FX_INT32)crRect.right;
2418 Lower_Righty = (FX_INT32)crRect.bottom;
2420 CJS_Array rcArray(m_isolate);
2421 rcArray.SetElement(0,Upper_Leftx);
2422 rcArray.SetElement(1,Upper_Lefty);
2423 rcArray.SetElement(2,Lower_Rightx);
2424 rcArray.SetElement(3,Lower_Righty);
2432 void Field::SetRect(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPDF_Rect& rect)
2434 ASSERT(pDocument != NULL);
2436 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
2437 ASSERT(pInterForm != NULL);
2439 CFX_PtrArray FieldArray;
2440 GetFormFields(pDocument, swFieldName, FieldArray);
2442 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
2444 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2445 ASSERT(pFormField != NULL);
2447 if (nControlIndex < 0)
2449 FX_BOOL bSet = FALSE;
2450 for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
2452 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
2453 ASSERT(pFormControl != NULL);
2455 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2457 CPDF_Rect crRect = rect;
2459 CPDF_Page* pPDFPage = pWidget->GetPDFPage();
2460 ASSERT(pPDFPage != NULL);
2462 // CPDF_Page* pPDFPage = pPage->GetPage();
2463 // ASSERT(pPDFPage != NULL);
2465 crRect.Intersect(pPDFPage->GetPageBBox());
2467 if (!crRect.IsEmpty())
2469 CPDF_Rect rcOld = pWidget->GetRect();
2470 if (crRect.left != rcOld.left ||
2471 crRect.right != rcOld.right ||
2472 crRect.top != rcOld.top ||
2473 crRect.bottom != rcOld.bottom)
2475 pWidget->SetRect(crRect);
2482 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
2486 if(nControlIndex >= pFormField->CountControls()) return;
2487 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
2489 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2491 CPDF_Rect crRect = rect;
2493 CPDF_Page* pPDFPage = pWidget->GetPDFPage();
2494 ASSERT(pPDFPage != NULL);
2496 // CPDF_Page* pPDFPage = pPage->GetPage();
2497 // ASSERT(pPDFPage != NULL);
2499 crRect.Intersect(pPDFPage->GetPageBBox());
2501 if (!crRect.IsEmpty())
2503 CPDF_Rect rcOld = pWidget->GetRect();
2504 if (crRect.left != rcOld.left ||
2505 crRect.right != rcOld.right ||
2506 crRect.top != rcOld.top ||
2507 crRect.bottom != rcOld.bottom)
2509 pWidget->SetRect(crRect);
2510 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
2519 FX_BOOL Field::required(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2521 ASSERT(m_pDocument != NULL);
2523 CFX_PtrArray FieldArray;
2524 GetFormFields(m_FieldName,FieldArray);
2525 if (FieldArray.GetSize() <= 0) return FALSE;
2529 if (!m_bCanSet) return FALSE;
2538 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2539 ASSERT(pFormField != NULL);
2541 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
2544 if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED)
2553 FX_BOOL Field::richText(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2555 ASSERT(m_pDocument != NULL);
2559 if (!m_bCanSet) return FALSE;
2566 AddDelay_Bool(FP_RICHTEXT, bVP);
2570 Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2575 CFX_PtrArray FieldArray;
2576 GetFormFields(m_FieldName,FieldArray);
2577 if (FieldArray.GetSize() <= 0) return FALSE;
2579 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2580 ASSERT(pFormField != NULL);
2582 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2585 if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT)
2594 void Field::SetRichText(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2599 FX_BOOL Field::richValue(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2604 if (!m_bCanSet) return FALSE;
2614 void Field::SetRichValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
2619 FX_BOOL Field::rotation(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2621 ASSERT(m_pDocument != NULL);
2625 if (!m_bCanSet) return FALSE;
2632 AddDelay_Int(FP_ROTATION, nVP);
2636 Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2641 CFX_PtrArray FieldArray;
2642 GetFormFields(m_FieldName,FieldArray);
2643 if (FieldArray.GetSize() <= 0) return FALSE;
2645 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2646 ASSERT(pFormField != NULL);
2648 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2649 if (!pFormControl)return FALSE;
2651 vp << (FX_INT32)pFormControl->GetRotation();
2657 void Field::SetRotation(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
2662 FX_BOOL Field::strokeColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2664 ASSERT(m_pDocument != NULL);
2668 if (!m_bCanSet) return FALSE;
2670 if (!vp.IsArrayObject())return FALSE;
2672 CJS_Array crArray(m_isolate);
2676 color::ConvertArrayToPWLColor(crArray, color);
2680 AddDelay_Color(FP_STROKECOLOR, color);
2684 Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
2689 CFX_PtrArray FieldArray;
2690 GetFormFields(m_FieldName,FieldArray);
2691 if (FieldArray.GetSize() <= 0) return FALSE;
2693 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2694 ASSERT(pFormField != NULL);
2696 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2697 if (!pFormControl)return FALSE;
2700 pFormControl->GetBorderColor(iColorType);
2704 if (iColorType == COLORTYPE_TRANSPARENT)
2706 color = CPWL_Color(COLORTYPE_TRANSPARENT);
2708 else if (iColorType == COLORTYPE_GRAY)
2710 color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0));
2712 else if (iColorType == COLORTYPE_RGB)
2714 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0),
2715 pFormControl->GetOriginalBorderColor(1),
2716 pFormControl->GetOriginalBorderColor(2));
2718 else if (iColorType == COLORTYPE_CMYK)
2720 color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0),
2721 pFormControl->GetOriginalBorderColor(1),
2722 pFormControl->GetOriginalBorderColor(2),
2723 pFormControl->GetOriginalBorderColor(3));
2728 CJS_Array crArray(m_isolate);
2729 color::ConvertPWLColorToArray(color, crArray);
2736 void Field::SetStrokeColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
2741 FX_BOOL Field::style(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2743 ASSERT(m_pDocument != NULL);
2747 if (!m_bCanSet) return FALSE;
2749 CFX_ByteString csBCaption;
2754 AddDelay_String(FP_STYLE, csBCaption);
2758 Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex, csBCaption);
2763 CFX_PtrArray FieldArray;
2764 GetFormFields(m_FieldName,FieldArray);
2765 if (FieldArray.GetSize() <= 0) return FALSE;
2767 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2768 ASSERT(pFormField != NULL);
2770 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON &&
2771 pFormField->GetFieldType() != FIELDTYPE_CHECKBOX)
2774 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2775 if (!pFormControl) return FALSE;
2777 CFX_WideString csWCaption = pFormControl->GetNormalCaption();
2778 CFX_ByteString csBCaption;
2780 switch (csWCaption[0])
2783 csBCaption = "circle";
2786 csBCaption = "cross";
2789 csBCaption = "diamond";
2792 csBCaption = "square";
2795 csBCaption = "star";
2798 csBCaption = "check";
2807 void Field::SetStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
2808 const CFX_ByteString& string)
2813 FX_BOOL Field::submitName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2818 FX_BOOL Field::textColor(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2820 ASSERT(m_pDocument != NULL);
2824 if (!m_bCanSet) return FALSE;
2826 CJS_Array crArray(m_isolate);
2827 if (!vp.IsArrayObject())return FALSE;
2831 color::ConvertArrayToPWLColor(crArray, color);
2835 AddDelay_Color(FP_TEXTCOLOR, color);
2839 Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
2844 CFX_PtrArray FieldArray;
2845 GetFormFields(m_FieldName,FieldArray);
2846 if (FieldArray.GetSize() <= 0) return FALSE;
2848 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2849 ASSERT(pFormField != NULL);
2851 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2852 if (!pFormControl)return FALSE;
2856 CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
2857 FieldAppearance.GetColor(color, iColorType);
2859 ArgbDecode(color, a, r, g, b);
2861 CPWL_Color crRet = CPWL_Color(COLORTYPE_RGB, r / 255.0f,
2865 if (iColorType == COLORTYPE_TRANSPARENT)
2866 crRet = CPWL_Color(COLORTYPE_TRANSPARENT);
2868 CJS_Array crArray(m_isolate);
2869 color::ConvertPWLColorToArray(crRet, crArray);
2876 void Field::SetTextColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
2881 FX_BOOL Field::textFont(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2883 ASSERT(m_pDocument != NULL);
2887 if (!m_bCanSet) return FALSE;
2889 CFX_ByteString csFontName;
2891 if (csFontName.IsEmpty()) return FALSE;
2895 AddDelay_String(FP_TEXTFONT, csFontName);
2899 Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex, csFontName);
2904 CFX_PtrArray FieldArray;
2905 GetFormFields(m_FieldName,FieldArray);
2906 if (FieldArray.GetSize() <= 0) return FALSE;
2908 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2909 ASSERT(pFormField != NULL);
2911 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2912 if (!pFormControl)return FALSE;
2914 int nFieldType = pFormField->GetFieldType();
2916 if (nFieldType == FIELDTYPE_PUSHBUTTON ||
2917 nFieldType == FIELDTYPE_COMBOBOX ||
2918 nFieldType == FIELDTYPE_LISTBOX ||
2919 nFieldType == FIELDTYPE_TEXTFIELD)
2921 CPDF_Font * pFont = pFormControl->GetDefaultControlFont();
2922 if (!pFont) return FALSE;
2924 vp << pFont->GetBaseFont();
2933 void Field::SetTextFont(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
2938 FX_BOOL Field::textSize(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2940 ASSERT(m_pDocument != NULL);
2944 if (!m_bCanSet) return FALSE;
2951 AddDelay_Int(FP_TEXTSIZE, nVP);
2955 Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2960 CFX_PtrArray FieldArray;
2961 GetFormFields(m_FieldName,FieldArray);
2962 if (FieldArray.GetSize() <= 0) return FALSE;
2964 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2965 ASSERT(pFormField != NULL);
2967 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2968 if (!pFormControl)return FALSE;
2970 CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
2972 CFX_ByteString csFontNameTag;
2974 FieldAppearance.GetFont(csFontNameTag,fFontSize);
2976 vp << (int)fFontSize;
2982 void Field::SetTextSize(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
2987 FX_BOOL Field::type(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
2989 ASSERT(m_pDocument != NULL);
2991 if (!vp.IsGetting()) return FALSE;
2993 CFX_PtrArray FieldArray;
2994 GetFormFields(m_FieldName,FieldArray);
2995 if (FieldArray.GetSize() <= 0) return FALSE;
2997 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2998 ASSERT(pFormField != NULL);
3000 switch (pFormField->GetFieldType())
3002 case FIELDTYPE_UNKNOWN:
3005 case FIELDTYPE_PUSHBUTTON:
3008 case FIELDTYPE_CHECKBOX:
3011 case FIELDTYPE_RADIOBUTTON:
3012 vp << L"radiobutton";
3014 case FIELDTYPE_COMBOBOX:
3017 case FIELDTYPE_LISTBOX:
3020 case FIELDTYPE_TEXTFIELD:
3023 case FIELDTYPE_SIGNATURE:
3034 FX_BOOL Field::userName(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
3036 ASSERT(m_pDocument != NULL);
3040 if (!m_bCanSet) return FALSE;
3042 CFX_WideString swName;
3047 AddDelay_WideString(FP_USERNAME, swName);
3051 Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName);
3056 CFX_PtrArray FieldArray;
3057 GetFormFields(m_FieldName,FieldArray);
3058 if (FieldArray.GetSize() <= 0) return FALSE;
3060 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3061 ASSERT(pFormField != NULL);
3063 vp << (CFX_WideString)pFormField->GetAlternateName();
3069 void Field::SetUserName(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_WideString& string)
3074 FX_BOOL Field::value(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
3076 ASSERT(m_pDocument != NULL);
3080 if (!m_bCanSet) return FALSE;
3082 CJS_WideStringArray strArray;
3084 if (vp.IsArrayObject())
3086 CJS_Array ValueArray(m_isolate);
3087 vp.ConvertToArray(ValueArray);
3088 for (int i = 0,sz = ValueArray.GetLength(); i < sz; i++)
3090 CJS_Value ElementValue(m_isolate);
3091 ValueArray.GetElement(i, ElementValue);
3092 strArray.Add(ElementValue.operator CFX_WideString());
3097 CFX_WideString swValue;
3100 strArray.Add(swValue);
3105 AddDelay_WideStringArray(FP_VALUE, strArray);
3109 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray);
3114 CFX_PtrArray FieldArray;
3115 GetFormFields(m_FieldName,FieldArray);
3116 if (FieldArray.GetSize() <= 0) return FALSE;
3118 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3119 ASSERT(pFormField != NULL);
3123 switch (pFormField->GetFieldType())
3125 case FIELDTYPE_PUSHBUTTON:
3127 case FIELDTYPE_COMBOBOX:
3128 case FIELDTYPE_TEXTFIELD:
3130 CFX_WideString swValue = pFormField->GetValue();
3134 if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot))
3145 case FIELDTYPE_LISTBOX:
3147 if (pFormField->CountSelectedItems() > 1)
3149 CJS_Array ValueArray(m_isolate);
3150 CJS_Value ElementValue(m_isolate);
3152 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++)
3154 iIndex = pFormField->GetSelectedIndex(i);
3155 ElementValue = pFormField->GetOptionValue(iIndex);
3156 if (FXSYS_wcslen((FX_LPCWSTR)ElementValue.operator CFX_WideString()) == 0)
3157 ElementValue = pFormField->GetOptionLabel(iIndex);
3158 ValueArray.SetElement(i, ElementValue);
3164 CFX_WideString swValue = pFormField->GetValue();
3168 if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot))
3180 case FIELDTYPE_CHECKBOX:
3181 case FIELDTYPE_RADIOBUTTON:
3183 FX_BOOL bFind = FALSE;
3184 for (int i = 0 , sz = pFormField->CountControls(); i < sz; i++)
3186 if (pFormField->GetControl(i)->IsChecked())
3188 CFX_WideString swValue = pFormField->GetControl(i)->GetExportValue();
3192 if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot))
3213 vp << pFormField->GetValue();
3221 void Field::SetValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName,
3222 int nControlIndex, const CJS_WideStringArray& strArray)
3224 ASSERT(pDocument != NULL);
3226 if (strArray.GetSize() < 1) return;
3228 CFX_PtrArray FieldArray;
3229 GetFormFields(pDocument, swFieldName, FieldArray);
3231 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
3233 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
3234 ASSERT(pFormField != NULL);
3236 if (pFormField->GetFullName().Compare(swFieldName) != 0)
3239 switch (pFormField->GetFieldType())
3241 case FIELDTYPE_TEXTFIELD:
3242 case FIELDTYPE_COMBOBOX:
3243 if (pFormField->GetValue() != strArray.GetAt(0))
3245 CFX_WideString WideString = strArray.GetAt(0);
3246 pFormField->SetValue(strArray.GetAt(0), TRUE);
3247 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3250 case FIELDTYPE_CHECKBOX: //mantis: 0004493
3251 case FIELDTYPE_RADIOBUTTON:
3253 if (pFormField->GetValue() != strArray.GetAt(0))
3255 pFormField->SetValue(strArray.GetAt(0), TRUE);
3256 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3260 case FIELDTYPE_LISTBOX:
3262 FX_BOOL bModified = FALSE;
3264 for (int i=0,sz=strArray.GetSize(); i<sz; i++)
3266 int iIndex = pFormField->FindOption(strArray.GetAt(i));
3268 if (!pFormField->IsItemSelected(iIndex))
3277 pFormField->ClearSelection(TRUE);
3278 for (int i=0,sz=strArray.GetSize(); i<sz; i++)
3280 int iIndex = pFormField->FindOption(strArray.GetAt(i));
3281 pFormField->SetItemSelection(iIndex, TRUE, TRUE);
3284 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3294 FX_BOOL Field::valueAsString(IFXJS_Context* cc, CJS_PropValue& vp, JS_ErrorString& sError)
3296 ASSERT(m_pDocument != NULL);
3298 if (!vp.IsGetting()) return FALSE;
3300 CFX_PtrArray FieldArray;
3301 GetFormFields(m_FieldName,FieldArray);
3302 if (FieldArray.GetSize() <= 0) return FALSE;
3304 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3305 ASSERT(pFormField != NULL);
3307 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
3310 if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3312 if(!pFormField->CountControls()) return FALSE;
3314 if (pFormField->GetControl(0)->IsChecked())
3319 else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON && !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON))
3321 for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
3323 if (pFormField->GetControl(i)->IsChecked())
3325 vp << pFormField->GetControl(i)->GetExportValue().c_str();
3332 else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX && (pFormField->CountSelectedItems() > 1))
3337 vp << pFormField->GetValue().c_str();
3342 /* --------------------------------- methods --------------------------------- */
3344 FX_BOOL Field::browseForFileToSubmit(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3346 ASSERT(m_pDocument != NULL);
3348 CFX_PtrArray FieldArray;
3349 GetFormFields(m_FieldName, FieldArray);
3350 if (FieldArray.GetSize() <= 0) return FALSE;
3352 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3353 ASSERT(pFormField != NULL);
3355 CPDFDoc_Environment* pApp = m_pDocument->GetEnv();
3356 ASSERT(pApp != NULL);
3358 if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) &&
3359 (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD))
3361 CFX_WideString wsFileName = pApp->JS_fieldBrowse();
3362 if(!wsFileName.IsEmpty())
3364 pFormField->SetValue(wsFileName);
3365 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
3375 FX_BOOL Field::buttonGetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3377 ASSERT(m_pDocument != NULL);
3380 int iSize = params.size();
3382 nface = (FX_INT32) params[0];
3384 CFX_PtrArray FieldArray;
3385 GetFormFields(m_FieldName,FieldArray);
3386 if (FieldArray.GetSize() <= 0) return FALSE;
3388 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3389 ASSERT(pFormField != NULL);
3391 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3394 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3395 if (!pFormControl)return FALSE;
3398 vRet = pFormControl->GetNormalCaption();
3399 else if (nface == 1)
3400 vRet = pFormControl->GetDownCaption();
3401 else if (nface == 2)
3402 vRet = pFormControl->GetRolloverCaption();
3409 //#pragma warning(disable: 4800)
3411 FX_BOOL Field::buttonGetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3413 ASSERT(m_pDocument != NULL);
3416 int iSize = params.size();
3418 nface = (FX_INT32) params[0];
3420 CFX_PtrArray FieldArray;
3421 GetFormFields(m_FieldName,FieldArray);
3422 if (FieldArray.GetSize() <= 0) return FALSE;
3424 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3425 ASSERT(pFormField != NULL);
3427 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3430 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3431 if (!pFormControl)return FALSE;
3433 CJS_Context* pContext = (CJS_Context*)cc;
3434 ASSERT(pContext != NULL);
3436 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
3437 ASSERT(pRuntime != NULL);
3439 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon"));
3440 ASSERT(pObj.IsEmpty() == FALSE);
3442 CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj);
3443 ASSERT(pJS_Icon != NULL);
3445 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
3446 ASSERT(pIcon != NULL);
3448 CPDF_Stream* pIconStream = NULL;
3450 pIconStream = pFormControl->GetNormalIcon();
3451 else if (nface == 1)
3452 pIconStream = pFormControl->GetDownIcon();
3453 else if (nface == 2)
3454 pIconStream = pFormControl->GetRolloverIcon();
3458 pIcon->SetStream(pIconStream);
3464 //#pragma warning(default: 4800)
3466 FX_BOOL Field::buttonImportIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3469 ASSERT(m_pDocument != NULL);
3471 CFX_PtrArray FieldArray;
3472 GetFormFields(m_FieldName,FieldArray);
3473 if (FieldArray.GetSize() <= 0) return FALSE;
3475 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3476 if (!pFormField)return FALSE;
3478 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
3481 CFX_WideString sIconFileName = pEnv->JS_fieldBrowse();
3482 if (sIconFileName.IsEmpty())
3488 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
3489 ASSERT(pInterForm != NULL);
3491 CPDF_Stream* pStream = pInterForm->LoadImageFromFile(sIconFileName);
3498 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3499 if (!pFormControl)return FALSE;
3501 pFormControl->SetNormalIcon(pStream);
3502 UpdateFormControl(m_pDocument, pFormControl, TRUE, TRUE, TRUE);
3509 FX_BOOL Field::buttonSetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3514 FX_BOOL Field::buttonSetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3519 FX_BOOL Field::checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3521 ASSERT(m_pDocument != NULL);
3523 if (!m_bCanSet) return FALSE;
3525 int iSize = params.size();
3528 nWidget= (FX_INT32) params[0];
3531 FX_BOOL bCheckit = TRUE;
3533 bCheckit = params[1];
3536 CFX_PtrArray FieldArray;
3537 GetFormFields(m_FieldName,FieldArray);
3538 if (FieldArray.GetSize() <= 0) return FALSE;
3540 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3541 ASSERT(pFormField != NULL);
3543 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
3545 if(nWidget <0 || nWidget >= pFormField->CountControls())
3547 if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)
3548 pFormField->CheckControl(nWidget, bCheckit, TRUE);
3550 pFormField->CheckControl(nWidget, bCheckit, TRUE);
3552 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
3557 FX_BOOL Field::clearItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3562 FX_BOOL Field::defaultIsChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3564 ASSERT(m_pDocument != NULL);
3566 if (!m_bCanSet) return FALSE;
3568 int iSize = params.size();
3571 nWidget= (FX_INT32) params[0];
3574 //FX_BOOL bIsDefaultChecked = TRUE;
3576 // bIsDefaultChecked = params[1];
3578 CFX_PtrArray FieldArray;
3579 GetFormFields(m_FieldName,FieldArray);
3580 if (FieldArray.GetSize() <= 0) return FALSE;
3582 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3583 ASSERT(pFormField != NULL);
3585 if(nWidget <0 || nWidget >= pFormField->CountControls())
3590 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3591 || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
3602 FX_BOOL Field::deleteItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3607 int JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2)
3609 ASSERT(ps1 != NULL);
3610 ASSERT(ps2 != NULL);
3612 return ps1->Compare(*ps2);
3616 FX_BOOL Field::getArray(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, JS_ErrorString& sError)
3618 ASSERT(m_pDocument != NULL);
3620 CFX_PtrArray FieldArray;
3621 GetFormFields(m_FieldName,FieldArray);
3622 if (FieldArray.GetSize() <= 0) return FALSE;
3624 CGW_ArrayTemplate<CFX_WideString*> swSort;
3626 for (int i=0,sz=FieldArray.GetSize(); i<sz; i++)