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/javascript/JS_Context.h"
15 #include "../../include/javascript/JS_Runtime.h"
16 #include "../../include/javascript/Document.h"
17 #include "../../include/javascript/color.h"
18 #include "../../include/javascript/PublicMethods.h"
19 #include "../../include/javascript/Icon.h"
22 /* ---------------------- Field ---------------------- */
24 BEGIN_JS_STATIC_CONST(CJS_Field)
27 BEGIN_JS_STATIC_PROP(CJS_Field)
28 JS_STATIC_PROP_ENTRY(alignment)
29 JS_STATIC_PROP_ENTRY(borderStyle)
30 JS_STATIC_PROP_ENTRY(buttonAlignX)
31 JS_STATIC_PROP_ENTRY(buttonAlignY)
32 JS_STATIC_PROP_ENTRY(buttonFitBounds)
33 JS_STATIC_PROP_ENTRY(buttonPosition)
34 JS_STATIC_PROP_ENTRY(buttonScaleHow)
35 JS_STATIC_PROP_ENTRY(buttonScaleWhen)
36 JS_STATIC_PROP_ENTRY(calcOrderIndex)
37 JS_STATIC_PROP_ENTRY(charLimit)
38 JS_STATIC_PROP_ENTRY(comb)
39 JS_STATIC_PROP_ENTRY(commitOnSelChange)
40 JS_STATIC_PROP_ENTRY(currentValueIndices)
41 JS_STATIC_PROP_ENTRY(defaultStyle)
42 JS_STATIC_PROP_ENTRY(defaultValue)
43 JS_STATIC_PROP_ENTRY(doNotScroll)
44 JS_STATIC_PROP_ENTRY(doNotSpellCheck)
45 JS_STATIC_PROP_ENTRY(delay)
46 JS_STATIC_PROP_ENTRY(display)
47 JS_STATIC_PROP_ENTRY(doc)
48 JS_STATIC_PROP_ENTRY(editable)
49 JS_STATIC_PROP_ENTRY(exportValues)
50 JS_STATIC_PROP_ENTRY(hidden)
51 JS_STATIC_PROP_ENTRY(fileSelect)
52 JS_STATIC_PROP_ENTRY(fillColor)
53 JS_STATIC_PROP_ENTRY(lineWidth)
54 JS_STATIC_PROP_ENTRY(highlight)
55 JS_STATIC_PROP_ENTRY(multiline)
56 JS_STATIC_PROP_ENTRY(multipleSelection)
57 JS_STATIC_PROP_ENTRY(name)
58 JS_STATIC_PROP_ENTRY(numItems)
59 JS_STATIC_PROP_ENTRY(page)
60 JS_STATIC_PROP_ENTRY(password)
61 JS_STATIC_PROP_ENTRY(print)
62 JS_STATIC_PROP_ENTRY(radiosInUnison)
63 JS_STATIC_PROP_ENTRY(readonly)
64 JS_STATIC_PROP_ENTRY(rect)
65 JS_STATIC_PROP_ENTRY(required)
66 JS_STATIC_PROP_ENTRY(richText)
67 JS_STATIC_PROP_ENTRY(richValue)
68 JS_STATIC_PROP_ENTRY(rotation)
69 JS_STATIC_PROP_ENTRY(strokeColor)
70 JS_STATIC_PROP_ENTRY(style)
71 JS_STATIC_PROP_ENTRY(submitName)
72 JS_STATIC_PROP_ENTRY(textColor)
73 JS_STATIC_PROP_ENTRY(textFont)
74 JS_STATIC_PROP_ENTRY(textSize)
75 JS_STATIC_PROP_ENTRY(type)
76 JS_STATIC_PROP_ENTRY(userName)
77 JS_STATIC_PROP_ENTRY(value)
78 JS_STATIC_PROP_ENTRY(valueAsString)
79 JS_STATIC_PROP_ENTRY(source)
82 BEGIN_JS_STATIC_METHOD(CJS_Field)
83 JS_STATIC_METHOD_ENTRY(browseForFileToSubmit)
84 JS_STATIC_METHOD_ENTRY(buttonGetCaption)
85 JS_STATIC_METHOD_ENTRY(buttonGetIcon)
86 JS_STATIC_METHOD_ENTRY(buttonImportIcon)
87 JS_STATIC_METHOD_ENTRY(buttonSetCaption)
88 JS_STATIC_METHOD_ENTRY(buttonSetIcon)
89 JS_STATIC_METHOD_ENTRY(checkThisBox)
90 JS_STATIC_METHOD_ENTRY(clearItems)
91 JS_STATIC_METHOD_ENTRY(defaultIsChecked)
92 JS_STATIC_METHOD_ENTRY(deleteItemAt)
93 JS_STATIC_METHOD_ENTRY(getArray )
94 JS_STATIC_METHOD_ENTRY(getItemAt)
95 JS_STATIC_METHOD_ENTRY(getLock)
96 JS_STATIC_METHOD_ENTRY(insertItemAt)
97 JS_STATIC_METHOD_ENTRY(isBoxChecked)
98 JS_STATIC_METHOD_ENTRY(isDefaultChecked)
99 JS_STATIC_METHOD_ENTRY(setAction)
100 JS_STATIC_METHOD_ENTRY(setFocus)
101 JS_STATIC_METHOD_ENTRY(setItems)
102 JS_STATIC_METHOD_ENTRY(setLock)
103 JS_STATIC_METHOD_ENTRY(signatureGetModifications)
104 JS_STATIC_METHOD_ENTRY(signatureGetSeedValue)
105 JS_STATIC_METHOD_ENTRY(signatureInfo)
106 JS_STATIC_METHOD_ENTRY(signatureSetSeedValue)
107 JS_STATIC_METHOD_ENTRY(signatureSign)
108 JS_STATIC_METHOD_ENTRY(signatureValidate)
109 END_JS_STATIC_METHOD()
111 IMPLEMENT_JS_CLASS(CJS_Field, Field)
113 FX_BOOL CJS_Field::InitInstance(IFXJS_Context* cc)
115 CJS_Context* pContext = (CJS_Context*)cc;
116 ASSERT(pContext != NULL);
118 Field* pField = (Field*)GetEmbedObject();
119 ASSERT(pField != NULL);
121 pField->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
126 Field::Field(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject),
129 m_nFormControlIndex(-1),
140 //note: iControlNo = -1, means not a widget.
141 void Field::ParseFieldName(const std::wstring &strFieldNameParsed,std::wstring &strFieldName,int & iControlNo)
143 int iStart = strFieldNameParsed.find_last_of(L'.');
146 strFieldName = strFieldNameParsed;
150 std::wstring suffixal = strFieldNameParsed.substr(iStart+1);
151 iControlNo = FXSYS_wtoi(suffixal.c_str());
155 while((iStart = suffixal.find_last_of(L" ")) != -1)
157 suffixal.erase(iStart,1);
160 if (suffixal.compare(L"0") != 0)
162 strFieldName = strFieldNameParsed;
168 strFieldName = strFieldNameParsed.substr(0,iStart);
171 FX_BOOL Field::AttachField(Document* pDocument, const CFX_WideString& csFieldName)
173 ASSERT(pDocument != NULL);
174 m_pJSDoc = pDocument;
176 m_pDocument = pDocument->GetReaderDoc();
177 ASSERT(m_pDocument != NULL);
179 m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) ||
180 m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
181 m_pDocument->GetPermissions(FPDFPERM_MODIFY);
183 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
184 ASSERT(pRDInterForm != NULL);
186 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
187 ASSERT(pInterForm != NULL);
189 CFX_WideString swFieldNameTemp = csFieldName;
190 swFieldNameTemp.Replace(L"..", L".");
192 if (pInterForm->CountFields(swFieldNameTemp) <= 0)
194 std::wstring strFieldName;
196 ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
197 if (iControlNo == -1) return FALSE;
199 m_FieldName = strFieldName.c_str();
200 m_nFormControlIndex = iControlNo;
204 m_FieldName = swFieldNameTemp;
205 m_nFormControlIndex = -1;
210 void Field::GetFormFields(CPDFSDK_Document* pDocument, const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
212 ASSERT(pDocument != NULL);
214 CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm();
215 ASSERT(pReaderInterForm != NULL);
217 CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
218 ASSERT(pInterForm != NULL);
220 ASSERT(FieldArray.GetSize() == 0);
222 for (int i=0,sz=pInterForm->CountFields(csFieldName); i<sz; i++)
224 if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
225 FieldArray.Add((void*)pFormField);
229 void Field::GetFormFields(const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
231 ASSERT(m_pDocument != NULL);
233 Field::GetFormFields(m_pDocument, csFieldName, FieldArray);
236 void Field::UpdateFormField(CPDFSDK_Document* pDocument, CPDF_FormField* pFormField,
237 FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
239 ASSERT(pDocument != NULL);
240 ASSERT(pFormField != NULL);
242 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
243 ASSERT(pInterForm != NULL);
245 CFX_PtrArray widgets;
246 pInterForm->GetWidgets(pFormField, widgets);
250 int nFieldType = pFormField->GetFieldType();
251 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
253 for (int i=0,sz=widgets.GetSize(); i<sz; i++)
255 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
256 ASSERT(pWidget != NULL);
258 FX_BOOL bFormated = FALSE;
259 CFX_WideString sValue = pWidget->OnFormat(0, bFormated);
261 pWidget->ResetAppearance(sValue.c_str(), FALSE);
263 pWidget->ResetAppearance(NULL, FALSE);
268 for (int i=0,sz=widgets.GetSize(); i<sz; i++)
270 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
271 ASSERT(pWidget != NULL);
273 pWidget->ResetAppearance(NULL, FALSE);
280 for (int i=0,sz=widgets.GetSize(); i<sz; i++)
282 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
283 ASSERT(pWidget != NULL);
285 CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
286 CPDFSDK_Document* pDoc = pInterForm->GetDocument();
287 // CReader_Page* pPage = pWidget->GetPage();
288 ASSERT(pDoc != NULL);
289 pDoc->UpdateAllViews(NULL, pWidget);
294 pDocument->SetChangeMark();
297 void Field::UpdateFormControl(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl,
298 FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
300 ASSERT(pDocument != NULL);
301 ASSERT(pFormControl != NULL);
303 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
304 ASSERT(pInterForm != NULL);
306 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl);
312 int nFieldType = pWidget->GetFieldType();
313 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
315 FX_BOOL bFormated = FALSE;
316 CFX_WideString sValue = pWidget->OnFormat(0, bFormated);
318 pWidget->ResetAppearance(sValue.c_str(), FALSE);
320 pWidget->ResetAppearance(NULL, FALSE);
324 pWidget->ResetAppearance(NULL, FALSE);
330 CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
331 CPDFSDK_Document* pDoc = pInterForm->GetDocument();
332 ASSERT(pDoc != NULL);
333 pDoc->UpdateAllViews(NULL, pWidget);
339 pDocument->SetChangeMark();
342 CPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl)
344 ASSERT(pDocument != NULL);
345 ASSERT(pFormControl != NULL);
347 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
348 ASSERT(pInterForm != NULL);
350 return pInterForm->GetWidget(pFormControl);
353 FX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, CFX_WideString csOptLabel)
355 ASSERT(pFormField != NULL);
357 for (int i=0,sz = pFormField->CountOptions(); i < sz; i++)
359 if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0)
366 CPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField)
368 ASSERT(pFormField != NULL);
369 if(!pFormField->CountControls() || m_nFormControlIndex>=pFormField->CountControls()) return NULL;
371 if (m_nFormControlIndex<0)
372 return pFormField->GetControl(0);
374 return pFormField->GetControl(m_nFormControlIndex);
377 /* ---------------------------------------- property ---------------------------------------- */
379 FX_BOOL Field::alignment(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
381 ASSERT(m_pDocument != NULL);
385 if (!m_bCanSet) return FALSE;
387 CFX_ByteString alignStr;
392 AddDelay_String(FP_ALIGNMENT, alignStr);
396 Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex, alignStr);
401 CFX_PtrArray FieldArray;
402 GetFormFields(m_FieldName, FieldArray);
403 if (FieldArray.GetSize() <= 0) return FALSE;
405 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
406 ASSERT(pFormField != NULL);
408 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
411 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
412 if (!pFormControl)return FALSE;
414 switch (pFormControl->GetControlAlignment())
433 void Field::SetAlignment(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
434 const CFX_ByteString& string)
439 FX_BOOL Field::borderStyle(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
441 ASSERT(m_pDocument != NULL);
445 if (!m_bCanSet) return FALSE;
447 CFX_ByteString strType = "";
452 AddDelay_String(FP_BORDERSTYLE, strType);
456 Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex, strType);
461 CFX_PtrArray FieldArray;
462 GetFormFields(m_FieldName, FieldArray);
463 if (FieldArray.GetSize() <= 0) return FALSE;
465 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
466 if (!pFormField) return FALSE;
468 CPDFSDK_Widget* pWidget = GetWidget(m_pDocument, GetSmartFieldControl(pFormField));
469 if (!pWidget) return FALSE;
471 int nBorderstyle = pWidget->GetBorderStyle();
473 switch (nBorderstyle)
499 void Field::SetBorderStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
500 const CFX_ByteString& string)
502 ASSERT(pDocument != NULL);
504 int nBorderStyle = 0;
506 if (string == "solid")
507 nBorderStyle = BBS_SOLID;
508 else if (string == "beveled")
509 nBorderStyle = BBS_BEVELED;
510 else if (string == "dashed")
511 nBorderStyle = BBS_DASH;
512 else if (string == "inset")
513 nBorderStyle = BBS_INSET;
514 else if (string == "underline")
515 nBorderStyle = BBS_UNDERLINE;
518 CFX_PtrArray FieldArray;
519 GetFormFields(pDocument, swFieldName, FieldArray);
521 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
523 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
524 ASSERT(pFormField != NULL);
526 if (nControlIndex < 0)
528 FX_BOOL bSet = FALSE;
529 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
531 if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormField->GetControl(j)))
533 if (pWidget->GetBorderStyle() != nBorderStyle)
535 pWidget->SetBorderStyle(nBorderStyle);
540 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
544 if(nControlIndex >= pFormField->CountControls()) return;
545 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
547 if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormControl))
549 if (pWidget->GetBorderStyle() != nBorderStyle)
551 pWidget->SetBorderStyle(nBorderStyle);
552 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
560 FX_BOOL Field::buttonAlignX(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
562 ASSERT(m_pDocument != NULL);
566 if (!m_bCanSet) return FALSE;
573 AddDelay_Int(FP_BUTTONALIGNX, nVP);
577 Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
582 CFX_PtrArray FieldArray;
583 GetFormFields(m_FieldName,FieldArray);
584 if (FieldArray.GetSize() <= 0) return FALSE;
586 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
587 ASSERT(pFormField != NULL);
589 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
592 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
593 if (!pFormControl)return FALSE;
595 CPDF_IconFit IconFit = pFormControl->GetIconFit();
597 FX_FLOAT fLeft,fBottom;
598 IconFit.GetIconPosition(fLeft,fBottom);
600 vp << (int32_t)fLeft;
606 void Field::SetButtonAlignX(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
611 FX_BOOL Field::buttonAlignY(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
613 ASSERT(m_pDocument != NULL);
617 if (!m_bCanSet) return FALSE;
624 AddDelay_Int(FP_BUTTONALIGNY, nVP);
628 Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
633 CFX_PtrArray FieldArray;
634 GetFormFields(m_FieldName,FieldArray);
635 if (FieldArray.GetSize() <= 0) return FALSE;
637 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
638 ASSERT(pFormField != NULL);
640 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
643 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
644 if (!pFormControl)return FALSE;
646 CPDF_IconFit IconFit = pFormControl->GetIconFit();
648 FX_FLOAT fLeft,fBottom;
649 IconFit.GetIconPosition(fLeft,fBottom);
651 vp << (int32_t)fBottom;
657 void Field::SetButtonAlignY(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
662 FX_BOOL Field::buttonFitBounds(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
664 ASSERT(m_pDocument != NULL);
668 if (!m_bCanSet) return FALSE;
675 AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP);
679 Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
684 CFX_PtrArray FieldArray;
685 GetFormFields(m_FieldName,FieldArray);
686 if (FieldArray.GetSize() <= 0) return FALSE;
688 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
689 ASSERT(pFormField != NULL);
691 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
694 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
695 if (!pFormControl)return FALSE;
697 CPDF_IconFit IconFit = pFormControl->GetIconFit();
698 vp << IconFit.GetFittingBounds();
704 void Field::SetButtonFitBounds(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
709 FX_BOOL Field::buttonPosition(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
711 ASSERT(m_pDocument != NULL);
715 if (!m_bCanSet) return FALSE;
722 AddDelay_Int(FP_BUTTONPOSITION, nVP);
726 Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
731 CFX_PtrArray FieldArray;
732 GetFormFields(m_FieldName,FieldArray);
733 if (FieldArray.GetSize() <= 0) return FALSE;
735 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
736 ASSERT(pFormField != NULL);
738 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
741 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
742 if (!pFormControl)return FALSE;
744 vp << pFormControl->GetTextPosition();
749 void Field::SetButtonPosition(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
754 FX_BOOL Field::buttonScaleHow(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
756 ASSERT(m_pDocument != NULL);
760 if (!m_bCanSet) return FALSE;
767 AddDelay_Int(FP_BUTTONSCALEHOW, nVP);
771 Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
776 CFX_PtrArray FieldArray;
777 GetFormFields(m_FieldName, FieldArray);
778 if (FieldArray.GetSize() <= 0) return FALSE;
780 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
781 ASSERT(pFormField != NULL);
783 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
786 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
787 if (!pFormControl)return FALSE;
789 CPDF_IconFit IconFit = pFormControl->GetIconFit();
790 if (IconFit.IsProportionalScale())
799 void Field::SetButtonScaleHow(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
804 FX_BOOL Field::buttonScaleWhen(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
806 ASSERT(m_pDocument != NULL);
810 if (!m_bCanSet) return FALSE;
817 AddDelay_Int(FP_BUTTONSCALEWHEN, nVP);
821 Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
826 CFX_PtrArray FieldArray;
827 GetFormFields(m_FieldName,FieldArray);
828 if (FieldArray.GetSize() <= 0) return FALSE;
830 CPDF_FormField* pFormField = (CPDF_FormField*) FieldArray.ElementAt(0);
831 ASSERT(pFormField != NULL);
833 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
836 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
837 if (!pFormControl) return FALSE;
839 CPDF_IconFit IconFit = pFormControl->GetIconFit();
840 int ScaleM = IconFit.GetScaleMethod();
843 case CPDF_IconFit::Always :
844 vp << (int32_t) CPDF_IconFit::Always;
846 case CPDF_IconFit::Bigger :
847 vp << (int32_t) CPDF_IconFit::Bigger;
849 case CPDF_IconFit::Never :
850 vp << (int32_t) CPDF_IconFit::Never;
852 case CPDF_IconFit::Smaller :
853 vp << (int32_t) CPDF_IconFit::Smaller;
861 void Field::SetButtonScaleWhen(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
866 FX_BOOL Field::calcOrderIndex(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
868 ASSERT(m_pDocument != NULL);
872 if (!m_bCanSet) return FALSE;
879 AddDelay_Int(FP_CALCORDERINDEX, nVP);
883 Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
888 CFX_PtrArray FieldArray;
889 GetFormFields(m_FieldName, FieldArray);
890 if (FieldArray.GetSize() <= 0) return FALSE;
892 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
893 ASSERT(pFormField != NULL);
895 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
898 CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
899 ASSERT(pRDInterForm != NULL);
901 CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
902 ASSERT(pInterForm != NULL);
904 vp << (int32_t)pInterForm->FindFieldInCalculationOrder(pFormField);
910 void Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
915 FX_BOOL Field::charLimit(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
917 ASSERT(m_pDocument != NULL);
921 if (!m_bCanSet) return FALSE;
928 AddDelay_Int(FP_CHARLIMIT, nVP);
932 Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
937 CFX_PtrArray FieldArray;
938 GetFormFields(m_FieldName, FieldArray);
939 if (FieldArray.GetSize() <= 0) return FALSE;
941 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
942 ASSERT(pFormField != NULL);
944 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
947 vp << (int32_t)pFormField->GetMaxLen();
952 void Field::SetCharLimit(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
957 FX_BOOL Field::comb(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
959 ASSERT(m_pDocument != NULL);
963 if (!m_bCanSet) return FALSE;
970 AddDelay_Bool(FP_COMB, bVP);
974 Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
979 CFX_PtrArray FieldArray;
980 GetFormFields(m_FieldName,FieldArray);
981 if (FieldArray.GetSize() <= 0) return FALSE;
983 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
984 ASSERT(pFormField != NULL);
986 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
989 if (pFormField->GetFieldFlags() & FIELDFLAG_COMB)
998 void Field::SetComb(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1003 FX_BOOL Field::commitOnSelChange(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1005 ASSERT(m_pDocument != NULL);
1009 if (!m_bCanSet) return FALSE;
1016 AddDelay_Bool(FP_COMMITONSELCHANGE, bVP);
1020 Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1025 CFX_PtrArray FieldArray;
1026 GetFormFields(m_FieldName,FieldArray);
1027 if (FieldArray.GetSize() <= 0) return FALSE;
1029 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1030 ASSERT(pFormField != NULL);
1032 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1035 if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE)
1044 void Field::SetCommitOnSelChange(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1049 FX_BOOL Field::currentValueIndices(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1051 ASSERT(m_pDocument != NULL);
1055 if (!m_bCanSet) return FALSE;
1057 CFX_DWordArray array;
1059 if (vp.GetType() == VT_number)
1063 array.Add(iSelecting);
1065 else if (vp.IsArrayObject())
1067 CJS_Array SelArray(m_isolate);
1068 CJS_Value SelValue(m_isolate);
1071 for (int i=0,sz=SelArray.GetLength(); i<sz; i++)
1073 SelArray.GetElement(i,SelValue);
1074 iSelecting = SelValue.ToInt();
1075 array.Add(iSelecting);
1081 AddDelay_WordArray(FP_CURRENTVALUEINDICES, array);
1085 Field::SetCurrentValueIndices(m_pDocument, m_FieldName, m_nFormControlIndex, array);
1090 CFX_PtrArray FieldArray;
1091 GetFormFields(m_FieldName,FieldArray);
1092 if (FieldArray.GetSize() <= 0) return FALSE;
1094 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1095 ASSERT(pFormField != NULL);
1097 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1100 if (pFormField->CountSelectedItems() == 1)
1101 vp << pFormField->GetSelectedIndex(0);
1102 else if (pFormField->CountSelectedItems() > 1)
1104 CJS_Array SelArray(m_isolate);
1105 for (int i=0,sz=pFormField->CountSelectedItems(); i<sz; i++)
1107 SelArray.SetElement(i, CJS_Value(m_isolate,pFormField->GetSelectedIndex(i)));
1118 void Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
1119 const CFX_DWordArray& array)
1121 ASSERT(pDocument != NULL);
1123 CFX_PtrArray FieldArray;
1124 GetFormFields(pDocument, swFieldName, FieldArray);
1126 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1128 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1129 ASSERT(pFormField != NULL);
1131 int nFieldType = pFormField->GetFieldType();
1132 if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX)
1134 FX_DWORD dwFieldFlags = pFormField->GetFieldFlags();
1135 pFormField->ClearSelection(TRUE);
1137 for (int i=0,sz=array.GetSize(); i<sz; i++)
1139 if (i>0 && !(dwFieldFlags & (1<<21)))
1144 int iSelecting = (int32_t)array.GetAt(i);
1145 if (iSelecting < pFormField->CountOptions() && !pFormField->IsItemSelected(iSelecting))
1146 pFormField->SetItemSelection(iSelecting, TRUE);
1149 UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
1154 FX_BOOL Field::defaultStyle(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1156 // MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT);
1161 if (!m_bCanSet) return FALSE;
1172 void Field::SetDefaultStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
1177 FX_BOOL Field::defaultValue(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1179 ASSERT(m_pDocument != NULL);
1183 if (!m_bCanSet) return FALSE;
1185 CFX_WideString WideStr;
1190 AddDelay_WideString(FP_DEFAULTVALUE, WideStr);
1194 Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex, WideStr);
1199 CFX_PtrArray FieldArray;
1200 GetFormFields(m_FieldName,FieldArray);
1201 if (FieldArray.GetSize() <= 0) return FALSE;
1203 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1204 ASSERT(pFormField != NULL);
1206 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON ||
1207 pFormField->GetFieldType() == FIELDTYPE_SIGNATURE)
1210 vp << pFormField->GetDefaultValue();
1215 void Field::SetDefaultValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
1216 const CFX_WideString& string)
1221 FX_BOOL Field::doNotScroll(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1223 ASSERT(m_pDocument != NULL);
1227 if (!m_bCanSet) return FALSE;
1234 AddDelay_Bool(FP_DONOTSCROLL, bVP);
1238 Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1243 CFX_PtrArray FieldArray;
1244 GetFormFields(m_FieldName,FieldArray);
1245 if (FieldArray.GetSize() <= 0) return FALSE;
1247 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1248 ASSERT(pFormField != NULL);
1250 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1253 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL)
1262 void Field::SetDoNotScroll(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1267 FX_BOOL Field::doNotSpellCheck(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1269 ASSERT(m_pDocument != NULL);
1273 if (!m_bCanSet) return FALSE;
1280 CFX_PtrArray FieldArray;
1281 GetFormFields(m_FieldName,FieldArray);
1282 if (FieldArray.GetSize() <= 0) return FALSE;
1284 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1285 ASSERT(pFormField != NULL);
1287 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD &&
1288 pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
1291 if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK)
1300 void Field::SetDelay(FX_BOOL bDelay)
1307 m_pJSDoc->DoFieldDelay(m_FieldName, m_nFormControlIndex);
1311 FX_BOOL Field::delay(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1315 if (!m_bCanSet) return FALSE;
1329 FX_BOOL Field::display(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1331 ASSERT(m_pDocument != NULL);
1335 if (!m_bCanSet) return FALSE;
1342 AddDelay_Int(FP_DISPLAY, nVP);
1346 Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
1351 CFX_PtrArray FieldArray;
1352 GetFormFields(m_FieldName,FieldArray);
1353 if (FieldArray.GetSize() <= 0) return FALSE;
1355 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1356 ASSERT(pFormField != NULL);
1358 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1359 ASSERT(pInterForm != NULL);
1361 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1362 if (!pWidget)return FALSE;
1364 FX_DWORD dwFlag = pWidget->GetFlags();
1366 if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag)
1372 if (ANNOTFLAG_PRINT & dwFlag)
1374 if (ANNOTFLAG_NOVIEW & dwFlag)
1393 void Field::SetDisplay(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
1395 ASSERT(pDocument != NULL);
1397 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1398 ASSERT(pInterForm != NULL);
1400 CFX_PtrArray FieldArray;
1401 GetFormFields(pDocument, swFieldName, FieldArray);
1403 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1405 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1406 ASSERT(pFormField != NULL);
1408 if (nControlIndex < 0)
1410 FX_BOOL bSet = FALSE;
1411 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
1413 CPDF_FormControl* pFormControl = pFormField->GetControl(j);
1414 ASSERT(pFormControl != NULL);
1416 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1418 FX_DWORD dwFlag = pWidget->GetFlags();
1422 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1423 dwFlag &= (~ANNOTFLAG_HIDDEN);
1424 dwFlag &= (~ANNOTFLAG_NOVIEW);
1425 dwFlag |= ANNOTFLAG_PRINT;
1428 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1429 dwFlag &= (~ANNOTFLAG_NOVIEW);
1430 dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1433 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1434 dwFlag &= (~ANNOTFLAG_PRINT);
1435 dwFlag &= (~ANNOTFLAG_HIDDEN);
1436 dwFlag &= (~ANNOTFLAG_NOVIEW);
1439 dwFlag |= ANNOTFLAG_NOVIEW;
1440 dwFlag |= ANNOTFLAG_PRINT;
1441 dwFlag &= (~ANNOTFLAG_HIDDEN);
1445 if (dwFlag != pWidget->GetFlags())
1447 pWidget->SetFlags(dwFlag);
1453 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
1457 if(nControlIndex >= pFormField->CountControls()) return;
1458 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1460 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1463 FX_DWORD dwFlag = pWidget->GetFlags();
1467 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1468 dwFlag &= (~ANNOTFLAG_HIDDEN);
1469 dwFlag &= (~ANNOTFLAG_NOVIEW);
1470 dwFlag |= ANNOTFLAG_PRINT;
1473 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1474 dwFlag &= (~ANNOTFLAG_NOVIEW);
1475 dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1478 dwFlag &= (~ANNOTFLAG_INVISIBLE);
1479 dwFlag &= (~ANNOTFLAG_PRINT);
1480 dwFlag &= (~ANNOTFLAG_HIDDEN);
1481 dwFlag &= (~ANNOTFLAG_NOVIEW);
1484 dwFlag |= ANNOTFLAG_NOVIEW;
1485 dwFlag |= ANNOTFLAG_PRINT;
1486 dwFlag &= (~ANNOTFLAG_HIDDEN);
1489 if (dwFlag != pWidget->GetFlags())
1491 pWidget->SetFlags(dwFlag);
1492 UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
1500 FX_BOOL Field::doc(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1502 if (!vp.IsGetting()) {
1505 vp << m_pJSDoc->GetCJSDoc();
1509 FX_BOOL Field::editable(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1511 ASSERT(m_pDocument != NULL);
1514 if (!m_bCanSet) return FALSE;
1521 CFX_PtrArray FieldArray;
1522 GetFormFields(m_FieldName, FieldArray);
1523 if (FieldArray.GetSize() <= 0) return FALSE;
1525 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1526 ASSERT(pFormField != NULL);
1528 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
1531 if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT)
1540 FX_BOOL Field::exportValues(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1542 ASSERT(m_pDocument != NULL);
1544 CFX_PtrArray FieldArray;
1545 GetFormFields(m_FieldName,FieldArray);
1546 if (FieldArray.GetSize() <= 0) return FALSE;
1548 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1549 ASSERT(pFormField != NULL);
1551 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
1552 pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
1557 if (!m_bCanSet) return FALSE;
1558 if (!vp.IsArrayObject())return FALSE;
1562 CJS_Array ExportValusArray(m_isolate);
1564 if (m_nFormControlIndex < 0)
1566 for (int i=0,sz=pFormField->CountControls(); i<sz; i++)
1568 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1569 ASSERT(pFormControl != NULL);
1571 ExportValusArray.SetElement(i, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
1576 if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE;
1577 CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex);
1578 if (!pFormControl) return FALSE;
1580 ExportValusArray.SetElement(0, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
1583 vp << ExportValusArray;
1589 FX_BOOL Field::fileSelect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1591 ASSERT(m_pDocument != NULL);
1593 CFX_PtrArray FieldArray;
1594 GetFormFields(m_FieldName, FieldArray);
1595 if (FieldArray.GetSize() <= 0) return FALSE;
1597 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1598 ASSERT(pFormField != NULL);
1600 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1605 if (!m_bCanSet) return FALSE;
1613 if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT)
1622 FX_BOOL Field::fillColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1624 ASSERT(m_pDocument != NULL);
1626 CJS_Array crArray(m_isolate);
1628 CFX_PtrArray FieldArray;
1629 GetFormFields(m_FieldName,FieldArray);
1630 if (FieldArray.GetSize() <= 0) return FALSE;
1634 if (!m_bCanSet) return FALSE;
1635 if (!vp.IsArrayObject()) return FALSE;
1640 color::ConvertArrayToPWLColor(crArray, color);
1644 AddDelay_Color(FP_FILLCOLOR, color);
1648 Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
1653 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1654 ASSERT(pFormField != NULL);
1656 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1657 if (!pFormControl)return FALSE;
1660 pFormControl->GetBackgroundColor(iColorType);
1664 if (iColorType == COLORTYPE_TRANSPARENT)
1666 color = CPWL_Color(COLORTYPE_TRANSPARENT);
1668 else if (iColorType == COLORTYPE_GRAY)
1670 color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBackgroundColor(0));
1672 else if (iColorType == COLORTYPE_RGB)
1674 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0),
1675 pFormControl->GetOriginalBackgroundColor(1),
1676 pFormControl->GetOriginalBackgroundColor(2));
1678 else if (iColorType == COLORTYPE_CMYK)
1680 color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBackgroundColor(0),
1681 pFormControl->GetOriginalBackgroundColor(1),
1682 pFormControl->GetOriginalBackgroundColor(2),
1683 pFormControl->GetOriginalBackgroundColor(3));
1688 color::ConvertPWLColorToArray(color, crArray);
1695 void Field::SetFillColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
1700 FX_BOOL Field::hidden(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1702 ASSERT(m_pDocument != NULL);
1706 if (!m_bCanSet) return FALSE;
1713 AddDelay_Bool(FP_HIDDEN, bVP);
1717 Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1722 CFX_PtrArray FieldArray;
1723 GetFormFields(m_FieldName,FieldArray);
1724 if (FieldArray.GetSize() <= 0) return FALSE;
1726 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1727 ASSERT(pFormField != NULL);
1729 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1730 ASSERT(pInterForm != NULL);
1732 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1733 if (!pWidget) return FALSE;
1735 FX_DWORD dwFlags = pWidget->GetFlags();
1737 if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags)
1748 void Field::SetHidden(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1750 ASSERT(pDocument != NULL);
1752 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1753 ASSERT(pInterForm != NULL);
1755 CFX_PtrArray FieldArray;
1756 GetFormFields(pDocument, swFieldName, FieldArray);
1758 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1760 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1761 ASSERT(pFormField != NULL);
1763 if (nControlIndex < 0)
1765 FX_BOOL bSet = FALSE;
1766 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
1768 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
1770 FX_DWORD dwFlags = pWidget->GetFlags();
1774 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1775 dwFlags &= (~ANNOTFLAG_NOVIEW);
1776 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1780 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1781 dwFlags &= (~ANNOTFLAG_HIDDEN);
1782 dwFlags &= (~ANNOTFLAG_NOVIEW);
1783 dwFlags |= ANNOTFLAG_PRINT;
1786 if (dwFlags != pWidget->GetFlags())
1788 pWidget->SetFlags(dwFlags);
1795 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
1799 if(nControlIndex >= pFormField->CountControls()) return;
1800 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1802 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1804 FX_DWORD dwFlags = pWidget->GetFlags();
1808 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1809 dwFlags &= (~ANNOTFLAG_NOVIEW);
1810 dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1814 dwFlags &= (~ANNOTFLAG_INVISIBLE);
1815 dwFlags &= (~ANNOTFLAG_HIDDEN);
1816 dwFlags &= (~ANNOTFLAG_NOVIEW);
1817 dwFlags |= ANNOTFLAG_PRINT;
1820 if (dwFlags != pWidget->GetFlags())
1822 pWidget->SetFlags(dwFlags);
1823 UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
1831 FX_BOOL Field::highlight(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1833 ASSERT(m_pDocument != NULL);
1837 if (!m_bCanSet) return FALSE;
1839 CFX_ByteString strMode;
1844 AddDelay_String(FP_HIGHLIGHT, strMode);
1848 Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex, strMode);
1853 CFX_PtrArray FieldArray;
1854 GetFormFields(m_FieldName,FieldArray);
1855 if (FieldArray.GetSize() <= 0) return FALSE;
1857 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1858 ASSERT(pFormField != NULL);
1860 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
1863 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1864 if (!pFormControl) return FALSE;
1866 int eHM = pFormControl->GetHighlightingMode();
1869 case CPDF_FormControl::None:
1872 case CPDF_FormControl::Push:
1875 case CPDF_FormControl::Invert:
1878 case CPDF_FormControl::Outline:
1881 case CPDF_FormControl::Toggle:
1890 void Field::SetHighlight(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
1895 FX_BOOL Field::lineWidth(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1897 ASSERT(m_pDocument != NULL);
1901 if (!m_bCanSet) return FALSE;
1908 AddDelay_Int(FP_LINEWIDTH, iWidth);
1912 Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex, iWidth);
1917 CFX_PtrArray FieldArray;
1918 GetFormFields(m_FieldName,FieldArray);
1919 if (FieldArray.GetSize() <= 0) return FALSE;
1921 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1922 ASSERT(pFormField != NULL);
1924 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1925 if (!pFormControl) return FALSE;
1927 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1928 ASSERT(pInterForm != NULL);
1930 if(!pFormField->CountControls()) return FALSE;
1932 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
1933 if (!pWidget) return FALSE;
1935 vp << (int32_t)pWidget->GetBorderWidth();
1941 void Field::SetLineWidth(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
1943 ASSERT(pDocument != NULL);
1945 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1946 ASSERT(pInterForm != NULL);
1948 CFX_PtrArray FieldArray;
1949 GetFormFields(pDocument, swFieldName, FieldArray);
1951 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1953 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1954 ASSERT(pFormField != NULL);
1956 if (nControlIndex < 0)
1958 FX_BOOL bSet = FALSE;
1959 for (int j=0,jsz=pFormField->CountControls(); j<jsz; j++)
1961 CPDF_FormControl* pFormControl = pFormField->GetControl(j);
1962 ASSERT(pFormControl != NULL);
1964 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1966 if (number != pWidget->GetBorderWidth())
1968 pWidget->SetBorderWidth(number);
1973 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
1977 if(nControlIndex >= pFormField->CountControls()) return;
1978 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1980 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1982 if (number != pWidget->GetBorderWidth())
1984 pWidget->SetBorderWidth(number);
1985 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
1993 FX_BOOL Field::multiline(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
1995 ASSERT(m_pDocument != NULL);
1999 if (!m_bCanSet) return FALSE;
2006 AddDelay_Bool(FP_MULTILINE, bVP);
2010 Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2015 CFX_PtrArray FieldArray;
2016 GetFormFields(m_FieldName, FieldArray);
2017 if (FieldArray.GetSize() <= 0) return FALSE;
2019 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2020 ASSERT(pFormField != NULL);
2022 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2025 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE)
2034 void Field::SetMultiline(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2039 FX_BOOL Field::multipleSelection(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2041 ASSERT(m_pDocument != NULL);
2045 if (!m_bCanSet) return FALSE;
2052 AddDelay_Bool(FP_MULTIPLESELECTION, bVP);
2056 Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2061 CFX_PtrArray FieldArray;
2062 GetFormFields(m_FieldName,FieldArray);
2063 if (FieldArray.GetSize() <= 0) return FALSE;
2065 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2066 ASSERT(pFormField != NULL);
2068 if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
2071 if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT)
2080 void Field::SetMultipleSelection(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2085 FX_BOOL Field::name(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2087 if (!vp.IsGetting()) return FALSE;
2089 CFX_PtrArray FieldArray;
2090 GetFormFields(m_FieldName, FieldArray);
2091 if (FieldArray.GetSize() <= 0) return FALSE;
2098 FX_BOOL Field::numItems(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2100 CFX_PtrArray FieldArray;
2101 GetFormFields(m_FieldName, FieldArray);
2102 if (FieldArray.GetSize() <= 0) return FALSE;
2104 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2105 ASSERT(pFormField != NULL);
2107 if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
2108 pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
2111 if (!vp.IsGetting()) return FALSE;
2113 vp << (int32_t)pFormField->CountOptions();
2118 FX_BOOL Field::page(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2120 if (!vp.IsGetting()) return FALSE;
2122 CFX_PtrArray FieldArray;
2123 GetFormFields(m_FieldName, FieldArray);
2124 if (FieldArray.GetSize() <= 0) return FALSE;
2126 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2127 if (!pFormField) return FALSE;
2129 ASSERT(m_pDocument != NULL);
2131 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2132 ASSERT(pInterForm != NULL);
2134 CFX_PtrArray widgetArray;
2135 pInterForm->GetWidgets(pFormField, widgetArray);
2137 if (widgetArray.GetSize() > 0)
2139 CJS_Array PageArray(m_isolate);
2141 for (int i=0,sz=widgetArray.GetSize(); i<sz; i++)
2143 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgetArray.GetAt(i);
2144 ASSERT(pWidget != NULL);
2146 CPDFSDK_PageView* pPageView = pWidget->GetPageView();
2150 PageArray.SetElement(i, CJS_Value(m_isolate,(int32_t)pPageView->GetPageIndex()));
2163 FX_BOOL Field::password(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2165 ASSERT(m_pDocument != NULL);
2169 if (!m_bCanSet) return FALSE;
2176 AddDelay_Bool(FP_PASSWORD, bVP);
2180 Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2185 CFX_PtrArray FieldArray;
2186 GetFormFields(m_FieldName,FieldArray);
2187 if (FieldArray.GetSize() <= 0) return FALSE;
2189 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2190 ASSERT(pFormField != NULL);
2192 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2195 if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD)
2204 void Field::SetPassword(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2209 FX_BOOL Field::print(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2211 ASSERT(m_pDocument != NULL);
2213 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2214 ASSERT(pInterForm != NULL);
2216 CFX_PtrArray FieldArray;
2217 GetFormFields(m_FieldName, FieldArray);
2218 if (FieldArray.GetSize() <= 0) return FALSE;
2222 if (!m_bCanSet) return FALSE;
2227 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
2229 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2230 ASSERT(pFormField != NULL);
2232 if (m_nFormControlIndex < 0)
2234 FX_BOOL bSet = FALSE;
2235 for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
2237 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
2239 FX_DWORD dwFlags = pWidget->GetFlags();
2241 dwFlags |= ANNOTFLAG_PRINT;
2243 dwFlags &= ~ANNOTFLAG_PRINT;
2245 if (dwFlags != pWidget->GetFlags())
2247 pWidget->SetFlags(dwFlags);
2254 UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE);
2258 if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE;
2259 if (CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex))
2261 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2263 FX_DWORD dwFlags = pWidget->GetFlags();
2265 dwFlags |= ANNOTFLAG_PRINT;
2267 dwFlags &= ~ANNOTFLAG_PRINT;
2269 if (dwFlags != pWidget->GetFlags())
2271 pWidget->SetFlags(dwFlags);
2272 UpdateFormControl(m_pDocument, pFormField->GetControl(m_nFormControlIndex), TRUE, FALSE, TRUE);
2281 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2282 ASSERT(pFormField != NULL);
2284 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2285 if (!pWidget) return FALSE;
2287 if (pWidget->GetFlags() & ANNOTFLAG_PRINT)
2296 FX_BOOL Field::radiosInUnison(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2298 ASSERT(m_pDocument != NULL);
2300 CFX_PtrArray FieldArray;
2301 GetFormFields(m_FieldName,FieldArray);
2302 if (FieldArray.GetSize() <= 0) return FALSE;
2306 if (!m_bCanSet) return FALSE;
2314 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2315 ASSERT(pFormField != NULL);
2317 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
2320 if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)
2329 FX_BOOL Field::readonly(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2331 ASSERT(m_pDocument != NULL);
2333 CFX_PtrArray FieldArray;
2334 GetFormFields(m_FieldName,FieldArray);
2335 if (FieldArray.GetSize() <= 0) return FALSE;
2339 if (!m_bCanSet) return FALSE;
2347 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2348 ASSERT(pFormField != NULL);
2350 if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY)
2359 FX_BOOL Field::rect(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2361 ASSERT(m_pDocument != NULL);
2365 if (!m_bCanSet) return FALSE;
2366 if (!vp.IsArrayObject())return FALSE;
2368 CJS_Array rcArray(m_isolate);
2370 CJS_Value Upper_Leftx(m_isolate), Upper_Lefty(m_isolate), Lower_Rightx(m_isolate), Lower_Righty(m_isolate);
2371 rcArray.GetElement(0, Upper_Leftx);
2372 rcArray.GetElement(1, Upper_Lefty);
2373 rcArray.GetElement(2, Lower_Rightx);
2374 rcArray.GetElement(3, Lower_Righty);
2376 FX_FLOAT pArray[4] = {0.0f,0.0f,0.0f,0.0f};
2377 pArray[0] = (FX_FLOAT)Upper_Leftx.ToInt();
2378 pArray[1] = (FX_FLOAT)Lower_Righty.ToInt();
2379 pArray[2] = (FX_FLOAT)Lower_Rightx.ToInt();
2380 pArray[3] = (FX_FLOAT)Upper_Lefty.ToInt();
2382 CPDF_Rect crRect(pArray);
2386 AddDelay_Rect(FP_RECT, crRect);
2390 Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect);
2395 CFX_PtrArray FieldArray;
2396 GetFormFields(m_FieldName,FieldArray);
2397 if (FieldArray.GetSize() <= 0) return FALSE;
2399 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2400 ASSERT(pFormField != NULL);
2402 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2403 ASSERT(pInterForm != NULL);
2405 CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2406 if (!pWidget) return FALSE;
2408 CFX_FloatRect crRect = pWidget->GetRect();
2409 CJS_Value Upper_Leftx(m_isolate),Upper_Lefty(m_isolate),Lower_Rightx(m_isolate),Lower_Righty(m_isolate);
2410 Upper_Leftx = (int32_t)crRect.left;
2411 Upper_Lefty = (int32_t)crRect.top;
2412 Lower_Rightx = (int32_t)crRect.right;
2413 Lower_Righty = (int32_t)crRect.bottom;
2415 CJS_Array rcArray(m_isolate);
2416 rcArray.SetElement(0,Upper_Leftx);
2417 rcArray.SetElement(1,Upper_Lefty);
2418 rcArray.SetElement(2,Lower_Rightx);
2419 rcArray.SetElement(3,Lower_Righty);
2427 void Field::SetRect(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPDF_Rect& rect)
2429 ASSERT(pDocument != NULL);
2431 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
2432 ASSERT(pInterForm != NULL);
2434 CFX_PtrArray FieldArray;
2435 GetFormFields(pDocument, swFieldName, FieldArray);
2437 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
2439 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2440 ASSERT(pFormField != NULL);
2442 if (nControlIndex < 0)
2444 FX_BOOL bSet = FALSE;
2445 for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
2447 CPDF_FormControl* pFormControl = pFormField->GetControl(i);
2448 ASSERT(pFormControl != NULL);
2450 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2452 CPDF_Rect crRect = rect;
2454 CPDF_Page* pPDFPage = pWidget->GetPDFPage();
2455 ASSERT(pPDFPage != NULL);
2457 // CPDF_Page* pPDFPage = pPage->GetPage();
2458 // ASSERT(pPDFPage != NULL);
2460 crRect.Intersect(pPDFPage->GetPageBBox());
2462 if (!crRect.IsEmpty())
2464 CPDF_Rect rcOld = pWidget->GetRect();
2465 if (crRect.left != rcOld.left ||
2466 crRect.right != rcOld.right ||
2467 crRect.top != rcOld.top ||
2468 crRect.bottom != rcOld.bottom)
2470 pWidget->SetRect(crRect);
2477 if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
2481 if(nControlIndex >= pFormField->CountControls()) return;
2482 if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
2484 if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2486 CPDF_Rect crRect = rect;
2488 CPDF_Page* pPDFPage = pWidget->GetPDFPage();
2489 ASSERT(pPDFPage != NULL);
2491 // CPDF_Page* pPDFPage = pPage->GetPage();
2492 // ASSERT(pPDFPage != NULL);
2494 crRect.Intersect(pPDFPage->GetPageBBox());
2496 if (!crRect.IsEmpty())
2498 CPDF_Rect rcOld = pWidget->GetRect();
2499 if (crRect.left != rcOld.left ||
2500 crRect.right != rcOld.right ||
2501 crRect.top != rcOld.top ||
2502 crRect.bottom != rcOld.bottom)
2504 pWidget->SetRect(crRect);
2505 UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
2514 FX_BOOL Field::required(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2516 ASSERT(m_pDocument != NULL);
2518 CFX_PtrArray FieldArray;
2519 GetFormFields(m_FieldName,FieldArray);
2520 if (FieldArray.GetSize() <= 0) return FALSE;
2524 if (!m_bCanSet) return FALSE;
2533 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2534 ASSERT(pFormField != NULL);
2536 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
2539 if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED)
2548 FX_BOOL Field::richText(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2550 ASSERT(m_pDocument != NULL);
2554 if (!m_bCanSet) return FALSE;
2561 AddDelay_Bool(FP_RICHTEXT, bVP);
2565 Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2570 CFX_PtrArray FieldArray;
2571 GetFormFields(m_FieldName,FieldArray);
2572 if (FieldArray.GetSize() <= 0) return FALSE;
2574 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2575 ASSERT(pFormField != NULL);
2577 if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2580 if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT)
2589 void Field::SetRichText(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2594 FX_BOOL Field::richValue(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2599 if (!m_bCanSet) return FALSE;
2609 void Field::SetRichValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
2614 FX_BOOL Field::rotation(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2616 ASSERT(m_pDocument != NULL);
2620 if (!m_bCanSet) return FALSE;
2627 AddDelay_Int(FP_ROTATION, nVP);
2631 Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2636 CFX_PtrArray FieldArray;
2637 GetFormFields(m_FieldName,FieldArray);
2638 if (FieldArray.GetSize() <= 0) return FALSE;
2640 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2641 ASSERT(pFormField != NULL);
2643 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2644 if (!pFormControl)return FALSE;
2646 vp << (int32_t)pFormControl->GetRotation();
2652 void Field::SetRotation(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
2657 FX_BOOL Field::strokeColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2659 ASSERT(m_pDocument != NULL);
2663 if (!m_bCanSet) return FALSE;
2665 if (!vp.IsArrayObject())return FALSE;
2667 CJS_Array crArray(m_isolate);
2671 color::ConvertArrayToPWLColor(crArray, color);
2675 AddDelay_Color(FP_STROKECOLOR, color);
2679 Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
2684 CFX_PtrArray FieldArray;
2685 GetFormFields(m_FieldName,FieldArray);
2686 if (FieldArray.GetSize() <= 0) return FALSE;
2688 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2689 ASSERT(pFormField != NULL);
2691 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2692 if (!pFormControl)return FALSE;
2695 pFormControl->GetBorderColor(iColorType);
2699 if (iColorType == COLORTYPE_TRANSPARENT)
2701 color = CPWL_Color(COLORTYPE_TRANSPARENT);
2703 else if (iColorType == COLORTYPE_GRAY)
2705 color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0));
2707 else if (iColorType == COLORTYPE_RGB)
2709 color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0),
2710 pFormControl->GetOriginalBorderColor(1),
2711 pFormControl->GetOriginalBorderColor(2));
2713 else if (iColorType == COLORTYPE_CMYK)
2715 color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0),
2716 pFormControl->GetOriginalBorderColor(1),
2717 pFormControl->GetOriginalBorderColor(2),
2718 pFormControl->GetOriginalBorderColor(3));
2723 CJS_Array crArray(m_isolate);
2724 color::ConvertPWLColorToArray(color, crArray);
2731 void Field::SetStrokeColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
2736 FX_BOOL Field::style(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2738 ASSERT(m_pDocument != NULL);
2742 if (!m_bCanSet) return FALSE;
2744 CFX_ByteString csBCaption;
2749 AddDelay_String(FP_STYLE, csBCaption);
2753 Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex, csBCaption);
2758 CFX_PtrArray FieldArray;
2759 GetFormFields(m_FieldName,FieldArray);
2760 if (FieldArray.GetSize() <= 0) return FALSE;
2762 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2763 ASSERT(pFormField != NULL);
2765 if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON &&
2766 pFormField->GetFieldType() != FIELDTYPE_CHECKBOX)
2769 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2770 if (!pFormControl) return FALSE;
2772 CFX_WideString csWCaption = pFormControl->GetNormalCaption();
2773 CFX_ByteString csBCaption;
2775 switch (csWCaption[0])
2778 csBCaption = "circle";
2781 csBCaption = "cross";
2784 csBCaption = "diamond";
2787 csBCaption = "square";
2790 csBCaption = "star";
2793 csBCaption = "check";
2802 void Field::SetStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
2803 const CFX_ByteString& string)
2808 FX_BOOL Field::submitName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2813 FX_BOOL Field::textColor(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2815 ASSERT(m_pDocument != NULL);
2819 if (!m_bCanSet) return FALSE;
2821 CJS_Array crArray(m_isolate);
2822 if (!vp.IsArrayObject())return FALSE;
2826 color::ConvertArrayToPWLColor(crArray, color);
2830 AddDelay_Color(FP_TEXTCOLOR, color);
2834 Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
2839 CFX_PtrArray FieldArray;
2840 GetFormFields(m_FieldName,FieldArray);
2841 if (FieldArray.GetSize() <= 0) return FALSE;
2843 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2844 ASSERT(pFormField != NULL);
2846 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2847 if (!pFormControl)return FALSE;
2851 CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
2852 FieldAppearance.GetColor(color, iColorType);
2854 ArgbDecode(color, a, r, g, b);
2856 CPWL_Color crRet = CPWL_Color(COLORTYPE_RGB, r / 255.0f,
2860 if (iColorType == COLORTYPE_TRANSPARENT)
2861 crRet = CPWL_Color(COLORTYPE_TRANSPARENT);
2863 CJS_Array crArray(m_isolate);
2864 color::ConvertPWLColorToArray(crRet, crArray);
2871 void Field::SetTextColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
2876 FX_BOOL Field::textFont(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2878 ASSERT(m_pDocument != NULL);
2882 if (!m_bCanSet) return FALSE;
2884 CFX_ByteString csFontName;
2886 if (csFontName.IsEmpty()) return FALSE;
2890 AddDelay_String(FP_TEXTFONT, csFontName);
2894 Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex, csFontName);
2899 CFX_PtrArray FieldArray;
2900 GetFormFields(m_FieldName,FieldArray);
2901 if (FieldArray.GetSize() <= 0) return FALSE;
2903 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2904 ASSERT(pFormField != NULL);
2906 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2907 if (!pFormControl)return FALSE;
2909 int nFieldType = pFormField->GetFieldType();
2911 if (nFieldType == FIELDTYPE_PUSHBUTTON ||
2912 nFieldType == FIELDTYPE_COMBOBOX ||
2913 nFieldType == FIELDTYPE_LISTBOX ||
2914 nFieldType == FIELDTYPE_TEXTFIELD)
2916 CPDF_Font * pFont = pFormControl->GetDefaultControlFont();
2917 if (!pFont) return FALSE;
2919 vp << pFont->GetBaseFont();
2928 void Field::SetTextFont(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
2933 FX_BOOL Field::textSize(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2935 ASSERT(m_pDocument != NULL);
2939 if (!m_bCanSet) return FALSE;
2946 AddDelay_Int(FP_TEXTSIZE, nVP);
2950 Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2955 CFX_PtrArray FieldArray;
2956 GetFormFields(m_FieldName,FieldArray);
2957 if (FieldArray.GetSize() <= 0) return FALSE;
2959 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2960 ASSERT(pFormField != NULL);
2962 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2963 if (!pFormControl)return FALSE;
2965 CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
2967 CFX_ByteString csFontNameTag;
2969 FieldAppearance.GetFont(csFontNameTag,fFontSize);
2971 vp << (int)fFontSize;
2977 void Field::SetTextSize(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
2982 FX_BOOL Field::type(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
2984 ASSERT(m_pDocument != NULL);
2986 if (!vp.IsGetting()) return FALSE;
2988 CFX_PtrArray FieldArray;
2989 GetFormFields(m_FieldName,FieldArray);
2990 if (FieldArray.GetSize() <= 0) return FALSE;
2992 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2993 ASSERT(pFormField != NULL);
2995 switch (pFormField->GetFieldType())
2997 case FIELDTYPE_UNKNOWN:
3000 case FIELDTYPE_PUSHBUTTON:
3003 case FIELDTYPE_CHECKBOX:
3006 case FIELDTYPE_RADIOBUTTON:
3007 vp << L"radiobutton";
3009 case FIELDTYPE_COMBOBOX:
3012 case FIELDTYPE_LISTBOX:
3015 case FIELDTYPE_TEXTFIELD:
3018 case FIELDTYPE_SIGNATURE:
3029 FX_BOOL Field::userName(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
3031 ASSERT(m_pDocument != NULL);
3035 if (!m_bCanSet) return FALSE;
3037 CFX_WideString swName;
3042 AddDelay_WideString(FP_USERNAME, swName);
3046 Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName);
3051 CFX_PtrArray FieldArray;
3052 GetFormFields(m_FieldName,FieldArray);
3053 if (FieldArray.GetSize() <= 0) return FALSE;
3055 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3056 ASSERT(pFormField != NULL);
3058 vp << (CFX_WideString)pFormField->GetAlternateName();
3064 void Field::SetUserName(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_WideString& string)
3069 FX_BOOL Field::value(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
3071 ASSERT(m_pDocument != NULL);
3075 if (!m_bCanSet) return FALSE;
3077 CJS_WideStringArray strArray;
3079 if (vp.IsArrayObject())
3081 CJS_Array ValueArray(m_isolate);
3082 vp.ConvertToArray(ValueArray);
3083 for (int i = 0,sz = ValueArray.GetLength(); i < sz; i++)
3085 CJS_Value ElementValue(m_isolate);
3086 ValueArray.GetElement(i, ElementValue);
3087 strArray.Add(ElementValue.ToCFXWideString());
3092 CFX_WideString swValue;
3095 strArray.Add(swValue);
3100 AddDelay_WideStringArray(FP_VALUE, strArray);
3104 Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray);
3109 CFX_PtrArray FieldArray;
3110 GetFormFields(m_FieldName,FieldArray);
3111 if (FieldArray.GetSize() <= 0) return FALSE;
3113 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3114 ASSERT(pFormField != NULL);
3118 switch (pFormField->GetFieldType())
3120 case FIELDTYPE_PUSHBUTTON:
3122 case FIELDTYPE_COMBOBOX:
3123 case FIELDTYPE_TEXTFIELD:
3125 CFX_WideString swValue = pFormField->GetValue();
3129 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, bDot))
3140 case FIELDTYPE_LISTBOX:
3142 if (pFormField->CountSelectedItems() > 1)
3144 CJS_Array ValueArray(m_isolate);
3145 CJS_Value ElementValue(m_isolate);
3147 for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++)
3149 iIndex = pFormField->GetSelectedIndex(i);
3150 ElementValue = pFormField->GetOptionValue(iIndex).c_str();
3151 if (FXSYS_wcslen(ElementValue.ToCFXWideString().c_str()) == 0)
3152 ElementValue = pFormField->GetOptionLabel(iIndex).c_str();
3153 ValueArray.SetElement(i, ElementValue);
3159 CFX_WideString swValue = pFormField->GetValue();
3163 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, bDot))
3175 case FIELDTYPE_CHECKBOX:
3176 case FIELDTYPE_RADIOBUTTON:
3178 FX_BOOL bFind = FALSE;
3179 for (int i = 0 , sz = pFormField->CountControls(); i < sz; i++)
3181 if (pFormField->GetControl(i)->IsChecked())
3183 CFX_WideString swValue = pFormField->GetControl(i)->GetExportValue();
3186 if (CJS_PublicMethods::ConvertStringToNumber(swValue.c_str(), dRet, bDot))
3207 vp << pFormField->GetValue();
3215 void Field::SetValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName,
3216 int nControlIndex, const CJS_WideStringArray& strArray)
3218 ASSERT(pDocument != NULL);
3220 if (strArray.GetSize() < 1) return;
3222 CFX_PtrArray FieldArray;
3223 GetFormFields(pDocument, swFieldName, FieldArray);
3225 for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
3227 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
3228 ASSERT(pFormField != NULL);
3230 if (pFormField->GetFullName().Compare(swFieldName) != 0)
3233 switch (pFormField->GetFieldType())
3235 case FIELDTYPE_TEXTFIELD:
3236 case FIELDTYPE_COMBOBOX:
3237 if (pFormField->GetValue() != strArray.GetAt(0))
3239 CFX_WideString WideString = strArray.GetAt(0);
3240 pFormField->SetValue(strArray.GetAt(0), TRUE);
3241 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3244 case FIELDTYPE_CHECKBOX: //mantis: 0004493
3245 case FIELDTYPE_RADIOBUTTON:
3247 if (pFormField->GetValue() != strArray.GetAt(0))
3249 pFormField->SetValue(strArray.GetAt(0), TRUE);
3250 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3254 case FIELDTYPE_LISTBOX:
3256 FX_BOOL bModified = FALSE;
3258 for (int i=0,sz=strArray.GetSize(); i<sz; i++)
3260 int iIndex = pFormField->FindOption(strArray.GetAt(i));
3262 if (!pFormField->IsItemSelected(iIndex))
3271 pFormField->ClearSelection(TRUE);
3272 for (int i=0,sz=strArray.GetSize(); i<sz; i++)
3274 int iIndex = pFormField->FindOption(strArray.GetAt(i));
3275 pFormField->SetItemSelection(iIndex, TRUE, TRUE);
3278 UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3288 FX_BOOL Field::valueAsString(IFXJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError)
3290 ASSERT(m_pDocument != NULL);
3292 if (!vp.IsGetting()) return FALSE;
3294 CFX_PtrArray FieldArray;
3295 GetFormFields(m_FieldName,FieldArray);
3296 if (FieldArray.GetSize() <= 0) return FALSE;
3298 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3299 ASSERT(pFormField != NULL);
3301 if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
3304 if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3306 if(!pFormField->CountControls()) return FALSE;
3308 if (pFormField->GetControl(0)->IsChecked())
3313 else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON && !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON))
3315 for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
3317 if (pFormField->GetControl(i)->IsChecked())
3319 vp << pFormField->GetControl(i)->GetExportValue().c_str();
3326 else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX && (pFormField->CountSelectedItems() > 1))
3331 vp << pFormField->GetValue().c_str();
3336 /* --------------------------------- methods --------------------------------- */
3338 FX_BOOL Field::browseForFileToSubmit(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3340 ASSERT(m_pDocument != NULL);
3342 CFX_PtrArray FieldArray;
3343 GetFormFields(m_FieldName, FieldArray);
3344 if (FieldArray.GetSize() <= 0) return FALSE;
3346 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3347 ASSERT(pFormField != NULL);
3349 CPDFDoc_Environment* pApp = m_pDocument->GetEnv();
3350 ASSERT(pApp != NULL);
3352 if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) &&
3353 (pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD))
3355 CFX_WideString wsFileName = pApp->JS_fieldBrowse();
3356 if(!wsFileName.IsEmpty())
3358 pFormField->SetValue(wsFileName);
3359 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
3369 FX_BOOL Field::buttonGetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3371 ASSERT(m_pDocument != NULL);
3374 int iSize = params.size();
3376 nface = params[0].ToInt();
3378 CFX_PtrArray FieldArray;
3379 GetFormFields(m_FieldName,FieldArray);
3380 if (FieldArray.GetSize() <= 0) return FALSE;
3382 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3383 ASSERT(pFormField != NULL);
3385 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3388 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3389 if (!pFormControl)return FALSE;
3392 vRet = pFormControl->GetNormalCaption().c_str();
3393 else if (nface == 1)
3394 vRet = pFormControl->GetDownCaption().c_str();
3395 else if (nface == 2)
3396 vRet = pFormControl->GetRolloverCaption().c_str();
3403 //#pragma warning(disable: 4800)
3405 FX_BOOL Field::buttonGetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3407 ASSERT(m_pDocument != NULL);
3410 int iSize = params.size();
3412 nface = params[0].ToInt();
3414 CFX_PtrArray FieldArray;
3415 GetFormFields(m_FieldName,FieldArray);
3416 if (FieldArray.GetSize() <= 0) return FALSE;
3418 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3419 ASSERT(pFormField != NULL);
3421 if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3424 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3425 if (!pFormControl)return FALSE;
3427 CJS_Context* pContext = (CJS_Context*)cc;
3428 ASSERT(pContext != NULL);
3430 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
3431 ASSERT(pRuntime != NULL);
3433 JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon"));
3434 ASSERT(pObj.IsEmpty() == FALSE);
3436 CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj);
3437 ASSERT(pJS_Icon != NULL);
3439 Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
3440 ASSERT(pIcon != NULL);
3442 CPDF_Stream* pIconStream = NULL;
3444 pIconStream = pFormControl->GetNormalIcon();
3445 else if (nface == 1)
3446 pIconStream = pFormControl->GetDownIcon();
3447 else if (nface == 2)
3448 pIconStream = pFormControl->GetRolloverIcon();
3452 pIcon->SetStream(pIconStream);
3458 //#pragma warning(default: 4800)
3460 FX_BOOL Field::buttonImportIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3463 ASSERT(m_pDocument != NULL);
3465 CFX_PtrArray FieldArray;
3466 GetFormFields(m_FieldName,FieldArray);
3467 if (FieldArray.GetSize() <= 0) return FALSE;
3469 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3470 if (!pFormField)return FALSE;
3472 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
3475 CFX_WideString sIconFileName = pEnv->JS_fieldBrowse();
3476 if (sIconFileName.IsEmpty())
3482 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
3483 ASSERT(pInterForm != NULL);
3485 CPDF_Stream* pStream = pInterForm->LoadImageFromFile(sIconFileName);
3492 CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3493 if (!pFormControl)return FALSE;
3495 pFormControl->SetNormalIcon(pStream);
3496 UpdateFormControl(m_pDocument, pFormControl, TRUE, TRUE, TRUE);
3503 FX_BOOL Field::buttonSetCaption(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3508 FX_BOOL Field::buttonSetIcon(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3513 FX_BOOL Field::checkThisBox(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3515 ASSERT(m_pDocument != NULL);
3517 if (!m_bCanSet) return FALSE;
3519 int iSize = params.size();
3523 int nWidget = params[0].ToInt();
3525 FX_BOOL bCheckit = TRUE;
3527 bCheckit = params[1].ToBool();
3529 CFX_PtrArray FieldArray;
3530 GetFormFields(m_FieldName,FieldArray);
3531 if (FieldArray.GetSize() <= 0) return FALSE;
3533 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3534 ASSERT(pFormField != NULL);
3536 if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
3538 if(nWidget <0 || nWidget >= pFormField->CountControls())
3540 if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)
3541 pFormField->CheckControl(nWidget, bCheckit, TRUE);
3543 pFormField->CheckControl(nWidget, bCheckit, TRUE);
3545 UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
3549 FX_BOOL Field::clearItems(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3554 FX_BOOL Field::defaultIsChecked(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3556 ASSERT(m_pDocument != NULL);
3558 if (!m_bCanSet) return FALSE;
3560 int iSize = params.size();
3564 int nWidget = params[0].ToInt();
3566 CFX_PtrArray FieldArray;
3567 GetFormFields(m_FieldName,FieldArray);
3568 if (FieldArray.GetSize() <= 0) return FALSE;
3570 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3571 ASSERT(pFormField != NULL);
3573 if(nWidget <0 || nWidget >= pFormField->CountControls())
3578 if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3579 || (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
3590 FX_BOOL Field::deleteItemAt(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3595 int JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2)
3597 ASSERT(ps1 != NULL);
3598 ASSERT(ps2 != NULL);
3600 return ps1->Compare(*ps2);
3604 FX_BOOL Field::getArray(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
3606 ASSERT(m_pDocument != NULL);
3608 CFX_PtrArray FieldArray;
3609 GetFormFields(m_FieldName,FieldArray);
3610 if (FieldArray.GetSize() <= 0) return FALSE;
3612 CGW_ArrayTemplate<CFX_WideString*> swSort;
3614 for (int i=0,sz=FieldArray.GetSize(); i<sz; i++)
3616 CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);