1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JavaScript.h"
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/IJavaScript.h"
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Define.h"
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Object.h"
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Value.h"
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/Field.h"
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_EventHandler.h"
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//#include "../include/JS_ResMgr.h"
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Context.h"
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Runtime.h"
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/Document.h"
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/color.h"
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/PublicMethods.h"
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/Icon.h"
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ---------------------- Field ---------------------- */
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovBEGIN_JS_STATIC_CONST(CJS_Field)
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovEND_JS_STATIC_CONST()
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovBEGIN_JS_STATIC_PROP(CJS_Field)
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(alignment)
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(borderStyle)
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(buttonAlignX)
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(buttonAlignY)
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(buttonFitBounds)
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(buttonPosition)
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(buttonScaleHow)
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(buttonScaleWhen)
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(calcOrderIndex)
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(charLimit)
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(comb)
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(commitOnSelChange)
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(currentValueIndices)
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(defaultStyle)
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(defaultValue)
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(doNotScroll)
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(doNotSpellCheck)
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(delay)
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(display)
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(doc)
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(editable)
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(exportValues)
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(hidden)
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(fileSelect)
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(fillColor)
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(lineWidth)
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(highlight)
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(multiline)
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(multipleSelection)
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(name)
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(numItems)
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(page)
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(password)
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(print)
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(radiosInUnison)
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(readonly)
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(rect)
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(required)
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(richText)
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(richValue)
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(rotation)
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(strokeColor)
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(style)
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(submitName)
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(textColor)
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(textFont)
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(textSize)
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(type)
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(userName)
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(value)
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(valueAsString)
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(source)
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovEND_JS_STATIC_PROP()
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovBEGIN_JS_STATIC_METHOD(CJS_Field)
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(browseForFileToSubmit,      0)
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(buttonGetCaption,           1)
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(buttonGetIcon,              1)
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(buttonImportIcon,           0)
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(buttonSetCaption,           2)
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(buttonSetIcon,              2)
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(checkThisBox,               2)
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(clearItems,                 0)
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(defaultIsChecked,           2)
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(deleteItemAt,               1)
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(getArray ,                  0)
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(getItemAt,                  0)
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(getLock,                    0)
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(insertItemAt,               0)
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(isBoxChecked,               1)
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(isDefaultChecked,           1)
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(setAction,                  2)
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(setFocus,                   0)
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(setItems,                   1)
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(setLock,                    0)
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(signatureGetModifications,  0)
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(signatureGetSeedValue,      0)
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(signatureInfo,              0)
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(signatureSetSeedValue,      0)
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(signatureSign,              0)
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(signatureValidate,          0)
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovEND_JS_STATIC_METHOD()
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIMPLEMENT_JS_CLASS(CJS_Field, Field)
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL	CJS_Field::InitInstance(IFXJS_Context* cc)
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Context* pContext = (CJS_Context*)cc;
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pContext != NULL);
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	Field* pField = (Field*)GetEmbedObject();
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pField != NULL);
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pField->SetIsolate(pContext->GetJSRuntime()->GetIsolate());
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovField::Field(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject),
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc(NULL),
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pDocument(NULL),
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_nFormControlIndex(-1),
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bCanSet(FALSE),
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bDelay(FALSE),
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_isolate(NULL)
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovField::~Field()
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//note: iControlNo = -1, means not a widget.
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::ParseFieldName(const std::wstring &strFieldNameParsed,std::wstring &strFieldName,int & iControlNo)
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int iStart = strFieldNameParsed.find_last_of(L'.');
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (iStart == -1)
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		strFieldName = strFieldNameParsed;
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		iControlNo = -1;
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return;
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	std::wstring suffixal = strFieldNameParsed.substr(iStart+1);
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	iControlNo = FXSYS_wtoi((FX_LPCWSTR)suffixal.c_str());
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (iControlNo == 0)
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int iStart;
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		while((iStart = suffixal.find_last_of(L" ")) != -1)
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			suffixal.erase(iStart,1);
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (suffixal.compare(L"0") != 0)
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			strFieldName = strFieldNameParsed;
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			iControlNo = -1;
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return;
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	strFieldName = strFieldNameParsed.substr(0,iStart);
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::AttachField(Document* pDocument, const CFX_WideString& csFieldName)
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc = pDocument;
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pDocument = pDocument->GetReaderDoc();
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bCanSet = m_pDocument->GetPermissions(FPDFPERM_FILL_FORM) ||
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		m_pDocument->GetPermissions(FPDFPERM_ANNOT_FORM) ||
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		m_pDocument->GetPermissions(FPDFPERM_MODIFY);
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pRDInterForm != NULL);
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_WideString swFieldNameTemp = csFieldName;
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	swFieldNameTemp.Replace((FX_LPCWSTR)L"..", (FX_LPCWSTR)L".");
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pInterForm->CountFields(swFieldNameTemp) <= 0)
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		std::wstring strFieldName;
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int iControlNo = -1;
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ParseFieldName((wchar_t*)(FX_LPCWSTR)swFieldNameTemp, strFieldName, iControlNo);
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (iControlNo == -1) return FALSE;
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		m_FieldName = strFieldName.c_str();
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		m_nFormControlIndex = iControlNo;
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return TRUE;
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_FieldName = swFieldNameTemp;
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_nFormControlIndex = -1;
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::GetFormFields(CPDFSDK_Document* pDocument, const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pReaderInterForm = pDocument->GetInterForm();
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pReaderInterForm != NULL);
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_InterForm* pInterForm = pReaderInterForm->GetInterForm();
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(FieldArray.GetSize() == 0);
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,sz=pInterForm->CountFields(csFieldName); i<sz; i++)
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (CPDF_FormField* pFormField = pInterForm->GetField(i, csFieldName))
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			FieldArray.Add((void*)pFormField);
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::GetFormFields(const CFX_WideString& csFieldName, CFX_PtrArray& FieldArray)
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	Field::GetFormFields(m_pDocument, csFieldName, FieldArray);
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::UpdateFormField(CPDFSDK_Document* pDocument, CPDF_FormField* pFormField,
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray widgets;
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pInterForm->GetWidgets(pFormField, widgets);
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (bResetAP)
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nFieldType = pFormField->GetFieldType();
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i=0,sz=widgets.GetSize(); i<sz; i++)
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ASSERT(pWidget != NULL);
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				FX_BOOL bFormated = FALSE;
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CFX_WideString sValue = pWidget->OnFormat(0, bFormated);
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (bFormated)
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					pWidget->ResetAppearance(sValue, FALSE);
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				else
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					pWidget->ResetAppearance(NULL, FALSE);
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i=0,sz=widgets.GetSize(); i<sz; i++)
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ASSERT(pWidget != NULL);
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pWidget->ResetAppearance(NULL, FALSE);
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (bRefresh)
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		for (int i=0,sz=widgets.GetSize(); i<sz; i++)
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgets.GetAt(i);
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			ASSERT(pWidget != NULL);
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDFSDK_Document* pDoc = pInterForm->GetDocument();
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 			CReader_Page* pPage = pWidget->GetPage();
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 			ASSERT(pDoc != NULL);
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			pDoc->UpdateAllViews(NULL, pWidget);
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (bChangeMark)
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pDocument->SetChangeMark();
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::UpdateFormControl(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl,
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							FX_BOOL bChangeMark, FX_BOOL bResetAP, FX_BOOL bRefresh)
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormControl != NULL);
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl);
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pWidget)
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (bResetAP)
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			int nFieldType = pWidget->GetFieldType();
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_TEXTFIELD)
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				FX_BOOL bFormated = FALSE;
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CFX_WideString sValue = pWidget->OnFormat(0, bFormated);
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (bFormated)
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					pWidget->ResetAppearance(sValue, FALSE);
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				else
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					pWidget->ResetAppearance(NULL, FALSE);
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			else
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pWidget->ResetAppearance(NULL, FALSE);
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (bRefresh)
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDFSDK_InterForm * pInterForm = pWidget->GetInterForm();
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDFSDK_Document* pDoc = pInterForm->GetDocument();
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			ASSERT(pDoc != NULL);
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			pDoc->UpdateAllViews(NULL, pWidget);
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (bChangeMark)
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pDocument->SetChangeMark();
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Widget* Field::GetWidget(CPDFSDK_Document* pDocument, CPDF_FormControl* pFormControl)
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormControl != NULL);
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return pInterForm->GetWidget(pFormControl);
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::ValueIsOccur(CPDF_FormField* pFormField, CFX_WideString csOptLabel)
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,sz = pFormField->CountOptions(); i < sz; i++)
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (csOptLabel.Compare(pFormField->GetOptionLabel(i)) == 0)
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return TRUE;
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_FormControl* Field::GetSmartFieldControl(CPDF_FormField* pFormField)
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if(!pFormField->CountControls() || m_nFormControlIndex>=pFormField->CountControls()) return NULL;
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (m_nFormControlIndex<0)
373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return pFormField->GetControl(0);
374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return pFormField->GetControl(m_nFormControlIndex);
376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ---------------------------------------- property ---------------------------------------- */
379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
380ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::alignment(OBJ_PROP_PARAMS)
381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_ByteString alignStr;
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> alignStr;
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_String(FP_ALIGNMENT, alignStr);
394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetAlignment(m_pDocument, m_FieldName, m_nFormControlIndex, alignStr);
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName, FieldArray);
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		switch (pFormControl->GetControlAlignment())
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case 1:
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"center";
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case 0:
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"left";
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case 2:
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"right";
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			default:
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"";
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetAlignment(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						 const CFX_ByteString& string)
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::borderStyle(OBJ_PROP_PARAMS)
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_ByteString strType = "";
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> strType;
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_String(FP_BORDERSTYLE, strType);
454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetBorderStyle(m_pDocument, m_FieldName, m_nFormControlIndex, strType);
458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName, FieldArray);
464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormField) return FALSE;
468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_Widget* pWidget = GetWidget(m_pDocument, GetSmartFieldControl(pFormField));
470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pWidget) return FALSE;
471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nBorderstyle = pWidget->GetBorderStyle();
473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		switch (nBorderstyle)
475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case BBS_SOLID:
477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"solid";
478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case BBS_DASH:
480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"dashed";
481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case BBS_BEVELED:
483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"beveled";
484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case BBS_INSET:
486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"inset";
487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case BBS_UNDERLINE:
489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"underline";
490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			default:
492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"";
493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetBorderStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						   const CFX_ByteString& string)
502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nBorderStyle = 0;
506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (string == "solid")
508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nBorderStyle = BBS_SOLID;
509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (string == "beveled")
510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nBorderStyle = BBS_BEVELED;
511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (string == "dashed")
512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nBorderStyle = BBS_DASH;
513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (string == "inset")
514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nBorderStyle = BBS_INSET;
515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (string == "underline")
516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nBorderStyle = BBS_UNDERLINE;
517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else return;
518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(pDocument, swFieldName, FieldArray);
521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nControlIndex < 0)
528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			FX_BOOL bSet = FALSE;
530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormField->GetControl(j)))
533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (pWidget->GetBorderStyle() != nBorderStyle)
535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetBorderStyle(nBorderStyle);
537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						bSet = TRUE;
538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if(nControlIndex >= pFormField->CountControls()) return;
546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = GetWidget(pDocument, pFormControl))
549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (pWidget->GetBorderStyle() != nBorderStyle)
551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetBorderStyle(nBorderStyle);
553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
561ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonAlignX(OBJ_PROP_PARAMS)
562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_BUTTONALIGNX, nVP);
575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetButtonAlignX(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_IconFit IconFit = pFormControl->GetIconFit();
597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_FLOAT fLeft,fBottom;
599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		IconFit.GetIconPosition(fLeft,fBottom);
600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_INT32)fLeft;
602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetButtonAlignX(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
612ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonAlignY(OBJ_PROP_PARAMS)
613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_BUTTONALIGNY, nVP);
626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetButtonAlignY(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_IconFit IconFit = pFormControl->GetIconFit();
648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_FLOAT fLeft,fBottom;
650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		IconFit.GetIconPosition(fLeft,fBottom);
651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp <<  (FX_INT32)fBottom;
653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetButtonAlignY(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
663ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonFitBounds(OBJ_PROP_PARAMS)
664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_BUTTONFITBOUNDS, bVP);
677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetButtonFitBounds(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_IconFit IconFit = pFormControl->GetIconFit();
699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << IconFit.GetFittingBounds();
700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetButtonFitBounds(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
710ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonPosition(OBJ_PROP_PARAMS)
711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_BUTTONPOSITION, nVP);
724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetButtonPosition(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp <<  pFormControl->GetTextPosition();
746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetButtonPosition(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
755ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonScaleHow(OBJ_PROP_PARAMS)
756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_BUTTONSCALEHOW, nVP);
769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetButtonScaleHow(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName, FieldArray);
779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_IconFit IconFit = pFormControl->GetIconFit();
791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (IconFit.IsProportionalScale())
792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_INT32)0;
793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_INT32)1;
795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetButtonScaleHow(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
805ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonScaleWhen(OBJ_PROP_PARAMS)
806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_BUTTONSCALEWHEN, nVP);
819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetButtonScaleWhen(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*) FieldArray.ElementAt(0);
832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl) return FALSE;
839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_IconFit IconFit = pFormControl->GetIconFit();
841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int ScaleM = IconFit.GetScaleMethod();
842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		switch (ScaleM)
843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case CPDF_IconFit::Always :
845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp <<  (FX_INT32) CPDF_IconFit::Always;
846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case CPDF_IconFit::Bigger :
848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp <<  (FX_INT32) CPDF_IconFit::Bigger;
849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case CPDF_IconFit::Never :
851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp <<  (FX_INT32) CPDF_IconFit::Never;
852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case CPDF_IconFit::Smaller :
854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp <<  (FX_INT32) CPDF_IconFit::Smaller;
855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetButtonScaleWhen(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
867ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::calcOrderIndex(OBJ_PROP_PARAMS)
868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_CALCORDERINDEX, nVP);
881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetCalcOrderIndex(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName, FieldArray);
891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_InterForm* pRDInterForm = m_pDocument->GetInterForm();
900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pRDInterForm != NULL);
901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_InterForm* pInterForm = pRDInterForm->GetInterForm();
903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pInterForm != NULL);
904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_INT32)pInterForm->FindFieldInCalculationOrder(pFormField);
906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetCalcOrderIndex(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
916ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::charLimit(OBJ_PROP_PARAMS)
917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_CHARLIMIT, nVP);
930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetCharLimit(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName, FieldArray);
940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_INT32)pFormField->GetMaxLen();
949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetCharLimit(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
958ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::comb(OBJ_PROP_PARAMS)
959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_COMB, bVP);
972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetComb(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_COMB)
991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetComb(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
1002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1004ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::commitOnSelChange(OBJ_PROP_PARAMS)
1005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
1013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
1014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_COMMITONSELCHANGE, bVP);
1018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetCommitOnSelChange(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_COMMITONSELCHANGE)
1037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
1038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
1040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetCommitOnSelChange(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
1048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1050ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::currentValueIndices(OBJ_PROP_PARAMS)
1051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_DWordArray array;
1059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (vp.GetType() == VT_number)
1061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			int iSelecting = 0;
1063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp >> iSelecting;
1064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			array.Add(iSelecting);
1065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (vp.IsArrayObject())
1067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CJS_Array SelArray(m_isolate);
1069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CJS_Value SelValue(m_isolate);
1070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			int iSelecting;
1071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp >> SelArray;
1072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i=0,sz=SelArray.GetLength(); i<sz; i++)
1073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				SelArray.GetElement(i,SelValue);
1075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				iSelecting = (FX_INT32)SelValue;
1076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				array.Add(iSelecting);
1077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_WordArray(FP_CURRENTVALUEINDICES, array);
1083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetCurrentValueIndices(m_pDocument, m_FieldName, m_nFormControlIndex, array);
1087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX && pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
1099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->CountSelectedItems() == 1)
1102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << pFormField->GetSelectedIndex(0);
1103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (pFormField->CountSelectedItems() > 1)
1104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CJS_Array SelArray(m_isolate);
1106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i=0,sz=pFormField->CountSelectedItems(); i<sz; i++)
1107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				SelArray.SetElement(i, CJS_Value(m_isolate,pFormField->GetSelectedIndex(i)));
1109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << SelArray;
1111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << -1;
1114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetCurrentValueIndices(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
1120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								   const CFX_DWordArray& array)
1121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
1123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
1125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(pDocument, swFieldName, FieldArray);
1126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nFieldType = pFormField->GetFieldType();
1133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nFieldType == FIELDTYPE_COMBOBOX || nFieldType == FIELDTYPE_LISTBOX)
1134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			FX_DWORD dwFieldFlags = pFormField->GetFieldFlags();
1136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			pFormField->ClearSelection(TRUE);
1137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i=0,sz=array.GetSize(); i<sz; i++)
1139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (i>0 && !(dwFieldFlags & (1<<21)))
1141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					break;
1143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				int iSelecting = (FX_INT32)array.GetAt(i);
1146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (iSelecting < pFormField->CountOptions() && !pFormField->IsItemSelected(iSelecting))
1147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					pFormField->SetItemSelection(iSelecting, TRUE);
1148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
1151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1155ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::defaultStyle(OBJ_PROP_PARAMS)
1156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	// MQG sError = JSGetStringFromID(IDS_STRING_NOTSUPPORT);
1158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
1159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		;
1165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		;
1169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetDefaultStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
1174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
1176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1178ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::defaultValue(OBJ_PROP_PARAMS)
1179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_WideString WideStr;
1187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> WideStr;
1188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_WideString(FP_DEFAULTVALUE, WideStr);
1192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetDefaultValue(m_pDocument, m_FieldName, m_nFormControlIndex, WideStr);
1196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON ||
1208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			pFormField->GetFieldType() == FIELDTYPE_SIGNATURE)
1209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << pFormField->GetDefaultValue();
1212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetDefaultValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
1217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							const CFX_WideString& string)
1218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
1220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1222ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::doNotScroll(OBJ_PROP_PARAMS)
1223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
1231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
1232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_DONOTSCROLL, bVP);
1236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetDoNotScroll(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSCROLL)
1255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
1256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
1258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetDoNotScroll(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
1266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1268ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::doNotSpellCheck(OBJ_PROP_PARAMS)
1269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
1277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
1278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD &&
1289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
1290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_DONOTSPELLCHECK)
1293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
1294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
1296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetDelay(FX_BOOL bDelay)
1302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_bDelay = bDelay;
1304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!m_bDelay)
1306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_pJSDoc)
1308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			m_pJSDoc->DoFieldDelay(m_FieldName, m_nFormControlIndex);
1309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1312ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::delay(OBJ_PROP_PARAMS)
1313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
1319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
1320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		SetDelay(bVP);
1322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << m_bDelay;
1326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1330ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::display(OBJ_PROP_PARAMS)
1331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
1339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
1340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_DISPLAY, nVP);
1344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetDisplay(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
1348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pInterForm != NULL);
1361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pWidget)return FALSE;
1364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_DWORD dwFlag = pWidget->GetFlags();
1366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (ANNOTFLAG_INVISIBLE & dwFlag || ANNOTFLAG_HIDDEN & dwFlag)
1368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_INT32)1;
1370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (ANNOTFLAG_PRINT & dwFlag)
1374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (ANNOTFLAG_NOVIEW & dwFlag)
1376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					vp << (FX_INT32)3;
1378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				else
1380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					vp << (FX_INT32)0;
1382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			else
1385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_INT32)2;
1387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetDisplay(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
1395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
1397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
1400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
1402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(pDocument, swFieldName, FieldArray);
1403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nControlIndex < 0)
1410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			FX_BOOL bSet = FALSE;
1412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
1413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CPDF_FormControl* pFormControl = pFormField->GetControl(j);
1415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ASSERT(pFormControl != NULL);
1416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					FX_DWORD dwFlag = pWidget->GetFlags();
1420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					switch (number)
1421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 0:
1423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_INVISIBLE);
1424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_HIDDEN);
1425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_NOVIEW);
1426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= ANNOTFLAG_PRINT;
1427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 1:
1429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_INVISIBLE);
1430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_NOVIEW);
1431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 2:
1434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_INVISIBLE);
1435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_PRINT);
1436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_HIDDEN);
1437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_NOVIEW);
1438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 3:
1440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= ANNOTFLAG_NOVIEW;
1441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= ANNOTFLAG_PRINT;
1442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_HIDDEN);
1443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (dwFlag != pWidget->GetFlags())
1447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetFlags(dwFlag);
1449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						bSet = TRUE;
1450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (bSet) UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
1455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if(nControlIndex >= pFormField->CountControls()) return;
1459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					FX_DWORD dwFlag = pWidget->GetFlags();
1465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					switch (number)
1466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 0:
1468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_INVISIBLE);
1469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_HIDDEN);
1470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_NOVIEW);
1471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= ANNOTFLAG_PRINT;
1472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 1:
1474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_INVISIBLE);
1475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_NOVIEW);
1476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 2:
1479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_INVISIBLE);
1480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_PRINT);
1481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_HIDDEN);
1482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_NOVIEW);
1483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					case 3:
1485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= ANNOTFLAG_NOVIEW;
1486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag |= ANNOTFLAG_PRINT;
1487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlag &= (~ANNOTFLAG_HIDDEN);
1488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
1489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (dwFlag != pWidget->GetFlags())
1491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetFlags(dwFlag);
1493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
1494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1501ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::doc(OBJ_PROP_PARAMS)
1502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
1504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!vp.IsGetting())return FALSE;
1506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	vp << (CJS_Object*)(*m_pJSDoc);
1508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1512ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::editable(OBJ_PROP_PARAMS)
1513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
1521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
1522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName, FieldArray);
1528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX)
1534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_EDIT)
1537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
1538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
1540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1545ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::exportValues(OBJ_PROP_PARAMS)
1546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
1550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
1551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
1552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
1555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX &&
1557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
1558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
1559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!vp.IsArrayObject())return FALSE;
1564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array ExportValusArray(m_isolate);
1568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_nFormControlIndex < 0)
1570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i=0,sz=pFormField->CountControls(); i<sz; i++)
1572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CPDF_FormControl* pFormControl = pFormField->GetControl(i);
1574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ASSERT(pFormControl != NULL);
1575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ExportValusArray.SetElement(i, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue()));
1577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE;
1582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex);
1583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (!pFormControl) return FALSE;
1584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			ExportValusArray.SetElement(0, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue()));
1586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << ExportValusArray;
1589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1594ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::fileSelect(OBJ_PROP_PARAMS)
1595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
1599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName, FieldArray);
1600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
1601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
1604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
1606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
1607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
1613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
1614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT)
1619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
1620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
1622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1627ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::fillColor(OBJ_PROP_PARAMS)
1628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Array crArray(m_isolate);
1632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
1634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
1635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
1636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!vp.IsArrayObject()) return FALSE;
1641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> crArray;
1643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPWL_Color color;
1645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color::ConvertArrayToPWLColor(crArray, color);
1646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Color(FP_FILLCOLOR, color);
1650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetFillColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
1654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
1663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int iColorType;
1665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pFormControl->GetBackgroundColor(iColorType);
1666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPWL_Color color;
1668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (iColorType == COLORTYPE_TRANSPARENT)
1670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_TRANSPARENT);
1672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (iColorType == COLORTYPE_GRAY)
1674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBackgroundColor(0));
1676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (iColorType == COLORTYPE_RGB)
1678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBackgroundColor(0),
1680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBackgroundColor(1),
1681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBackgroundColor(2));
1682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (iColorType == COLORTYPE_CMYK)
1684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBackgroundColor(0),
1686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBackgroundColor(1),
1687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBackgroundColor(2),
1688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBackgroundColor(3));
1689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color::ConvertPWLColorToArray(color, crArray);
1694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        vp  <<  crArray;
1695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetFillColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
1701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
1703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1705ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::hidden(OBJ_PROP_PARAMS)
1706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
1714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
1715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_HIDDEN, bVP);
1719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetHidden(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
1723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pInterForm != NULL);
1736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
1738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pWidget) return FALSE;
1739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_DWORD dwFlags = pWidget->GetFlags();
1741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (ANNOTFLAG_INVISIBLE & dwFlags || ANNOTFLAG_HIDDEN & dwFlags)
1743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
1745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
1748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetHidden(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
1754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
1756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
1759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
1761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(pDocument, swFieldName, FieldArray);
1762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nControlIndex < 0)
1769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			FX_BOOL bSet = FALSE;
1771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
1772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
1774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					FX_DWORD dwFlags = pWidget->GetFlags();
1776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (b)
1778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_INVISIBLE);
1780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_NOVIEW);
1781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					else
1784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_INVISIBLE);
1786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_HIDDEN);
1787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_NOVIEW);
1788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags |= ANNOTFLAG_PRINT;
1789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (dwFlags != pWidget->GetFlags())
1792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetFlags(dwFlags);
1794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						bSet = TRUE;
1795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (bSet)
1800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
1801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if(nControlIndex >= pFormField->CountControls()) return;
1805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					FX_DWORD dwFlags = pWidget->GetFlags();
1810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (b)
1812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_INVISIBLE);
1814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_NOVIEW);
1815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags |= (ANNOTFLAG_HIDDEN | ANNOTFLAG_PRINT);
1816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					else
1818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_INVISIBLE);
1820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_HIDDEN);
1821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags &= (~ANNOTFLAG_NOVIEW);
1822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						dwFlags |= ANNOTFLAG_PRINT;
1823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (dwFlags != pWidget->GetFlags())
1826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetFlags(dwFlags);
1828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						UpdateFormControl(pDocument, pFormControl, TRUE, FALSE, TRUE);
1829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1836ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::highlight(OBJ_PROP_PARAMS)
1837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_ByteString strMode;
1845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> strMode;
1846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_String(FP_HIGHLIGHT, strMode);
1850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetHighlight(m_pDocument, m_FieldName, m_nFormControlIndex, strMode);
1854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
1866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
1867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl) return FALSE;
1870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int eHM = pFormControl->GetHighlightingMode();
1872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		switch (eHM)
1873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case CPDF_FormControl::None:
1875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp  <<  (FX_LPCWSTR)L"none";
1876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
1877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case CPDF_FormControl::Push:
1878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp  <<  (FX_LPCWSTR)L"push";
1879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
1880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case CPDF_FormControl::Invert:
1881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp  <<  (FX_LPCWSTR)L"invert";
1882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
1883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case CPDF_FormControl::Outline:
1884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp  <<  (FX_LPCWSTR)L"outline";
1885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
1886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case CPDF_FormControl::Toggle:
1887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			 vp  <<  (FX_LPCWSTR)L"toggle";
1888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			 break;
1889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetHighlight(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
1896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
1898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1900ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::lineWidth(OBJ_PROP_PARAMS)
1901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
1903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
1905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
1907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int iWidth;
1909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> iWidth;
1910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
1912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_LINEWIDTH, iWidth);
1914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetLineWidth(m_pDocument, m_FieldName, m_nFormControlIndex, iWidth);
1918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
1921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
1923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
1924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
1925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
1927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
1930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl) return FALSE;
1931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
1933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pInterForm != NULL);
1934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if(!pFormField->CountControls()) return FALSE;
1936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
1938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pWidget) return FALSE;
1939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_INT32)pWidget->GetBorderWidth();
1941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
1944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetLineWidth(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
1947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
1949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
1951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
1952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
1954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(pDocument, swFieldName, FieldArray);
1955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
1957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
1958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
1959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
1960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nControlIndex < 0)
1962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			FX_BOOL bSet = FALSE;
1964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int j=0,jsz=pFormField->CountControls(); j<jsz; j++)
1965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CPDF_FormControl* pFormControl = pFormField->GetControl(j);
1967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ASSERT(pFormControl != NULL);
1968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (number != pWidget->GetBorderWidth())
1972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetBorderWidth(number);
1974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						bSet = TRUE;
1975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
1979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
1981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
1982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if(nControlIndex >= pFormField->CountControls()) return;
1983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
1984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
1985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
1986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
1987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (number != pWidget->GetBorderWidth())
1988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
1989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget->SetBorderWidth(number);
1990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
1991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
1992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
1993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
1994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
1995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
1996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1998ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::multiline(OBJ_PROP_PARAMS)
1999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_MULTILINE, bVP);
2012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetMultiline(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName, FieldArray);
2022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_MULTILINE)
2031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetMultiline(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2044ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::multipleSelection(OBJ_PROP_PARAMS)
2045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_MULTIPLESELECTION, bVP);
2058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetMultipleSelection(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
2074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_MULTISELECT)
2077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetMultipleSelection(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2090ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::name(OBJ_PROP_PARAMS)
2091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!vp.IsGetting()) return FALSE;
2093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName, FieldArray);
2096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   	vp << m_FieldName;
2099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2103ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::numItems(OBJ_PROP_PARAMS)
2104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName, FieldArray);
2107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
2111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() != FIELDTYPE_COMBOBOX &&
2113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pFormField->GetFieldType() != FIELDTYPE_LISTBOX)
2114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
2115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!vp.IsGetting()) return FALSE;
2117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	vp << (FX_INT32)pFormField->CountOptions();
2119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2123ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::page(OBJ_PROP_PARAMS)
2124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!vp.IsGetting()) return FALSE;
2126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName, FieldArray);
2129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!pFormField) return FALSE;
2133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
2138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray widgetArray;
2140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pInterForm->GetWidgets(pFormField, widgetArray);
2141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (widgetArray.GetSize() > 0)
2143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array PageArray(m_isolate);
2145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		for (int i=0,sz=widgetArray.GetSize(); i<sz; i++)
2147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)widgetArray.GetAt(i);
2149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			ASSERT(pWidget != NULL);
2150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDFSDK_PageView* pPageView = pWidget->GetPageView();
2152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if(!pPageView)
2153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				return FALSE;
2154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			PageArray.SetElement(i, CJS_Value(m_isolate,(FX_INT32)pPageView->GetPageIndex()));
2156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << PageArray;
2159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_INT32) -1;
2163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2168ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::password(OBJ_PROP_PARAMS)
2169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_PASSWORD, bVP);
2182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetPassword(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_PASSWORD)
2201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetPassword(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2214ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::print(OBJ_PROP_PARAMS)
2215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
2220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName, FieldArray);
2223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
2233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			ASSERT(pFormField != NULL);
2236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (m_nFormControlIndex < 0)
2238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
2239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				FX_BOOL bSet = FALSE;
2240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				for (int j=0,jsz = pFormField->CountControls(); j<jsz; j++)
2241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
2242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormField->GetControl(j)))
2243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
2244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						FX_DWORD dwFlags = pWidget->GetFlags();
2245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (bVP)
2246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							dwFlags |= ANNOTFLAG_PRINT;
2247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						else
2248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							dwFlags &= ~ANNOTFLAG_PRINT;
2249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (dwFlags != pWidget->GetFlags())
2251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						{
2252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							pWidget->SetFlags(dwFlags);
2253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							bSet = TRUE;
2254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						}
2255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
2256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
2257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (bSet)
2259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					UpdateFormField(m_pDocument, pFormField, TRUE, FALSE, TRUE);
2260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
2261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			else
2262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
2263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if(m_nFormControlIndex >= pFormField->CountControls()) return FALSE;
2264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex))
2265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
2266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
2268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						FX_DWORD dwFlags = pWidget->GetFlags();
2269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (bVP)
2270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							dwFlags |= ANNOTFLAG_PRINT;
2271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						else
2272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							dwFlags &= ~ANNOTFLAG_PRINT;
2273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (dwFlags != pWidget->GetFlags())
2275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						{
2276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							pWidget->SetFlags(dwFlags);
2277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							UpdateFormControl(m_pDocument, pFormField->GetControl(m_nFormControlIndex), TRUE, FALSE, TRUE);
2278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						}
2279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
2280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
2281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
2282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pWidget) return FALSE;
2291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pWidget->GetFlags() & ANNOTFLAG_PRINT)
2293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2301ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::radiosInUnison(OBJ_PROP_PARAMS)
2302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
2307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
2323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON)
2326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2334ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::readonly(OBJ_PROP_PARAMS)
2335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
2340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_READONLY)
2356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2364ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::rect(OBJ_PROP_PARAMS)
2365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!vp.IsArrayObject())return FALSE;
2372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array rcArray(m_isolate);
2374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> rcArray;
2375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Value Upper_Leftx(m_isolate), Upper_Lefty(m_isolate), Lower_Rightx(m_isolate), Lower_Righty(m_isolate);
2376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.GetElement(0, Upper_Leftx);
2377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.GetElement(1, Upper_Lefty);
2378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.GetElement(2, Lower_Rightx);
2379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.GetElement(3, Lower_Righty);
2380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_FLOAT pArray[4] = {0.0f,0.0f,0.0f,0.0f};
2382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pArray[0] = (FX_FLOAT)(FX_INT32)Upper_Leftx;
2383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pArray[1] = (FX_FLOAT)(FX_INT32)Lower_Righty;
2384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pArray[2] = (FX_FLOAT)(FX_INT32)Lower_Rightx;
2385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pArray[3] = (FX_FLOAT)(FX_INT32)Upper_Lefty;
2386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_Rect crRect(pArray);
2388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Rect(FP_RECT, crRect);
2392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetRect(m_pDocument, m_FieldName, m_nFormControlIndex, crRect);
2396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
2408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pInterForm != NULL);
2409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFSDK_Widget* pWidget = pInterForm->GetWidget(GetSmartFieldControl(pFormField));
2411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pWidget) return FALSE;
2412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_FloatRect crRect = pWidget->GetRect();
2414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Value Upper_Leftx(m_isolate),Upper_Lefty(m_isolate),Lower_Rightx(m_isolate),Lower_Righty(m_isolate);
2415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Upper_Leftx = (FX_INT32)crRect.left;
2416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Upper_Lefty = (FX_INT32)crRect.top;
2417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Lower_Rightx = (FX_INT32)crRect.right;
2418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Lower_Righty = (FX_INT32)crRect.bottom;
2419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array rcArray(m_isolate);
2421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.SetElement(0,Upper_Leftx);
2422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.SetElement(1,Upper_Lefty);
2423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.SetElement(2,Lower_Rightx);
2424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		rcArray.SetElement(3,Lower_Righty);
2425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp  <<  rcArray;
2427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetRect(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPDF_Rect& rect)
2433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
2435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pDocument->GetInterForm();
2437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
2438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(pDocument, swFieldName, FieldArray);
2441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
2443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
2445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nControlIndex < 0)
2448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			FX_BOOL bSet = FALSE;
2450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
2451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
2452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CPDF_FormControl* pFormControl = pFormField->GetControl(i);
2453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ASSERT(pFormControl != NULL);
2454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
2457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					CPDF_Rect crRect = rect;
2458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					CPDF_Page* pPDFPage = pWidget->GetPDFPage();
2460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					ASSERT(pPDFPage != NULL);
2461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 					CPDF_Page* pPDFPage = pPage->GetPage();
2463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 					ASSERT(pPDFPage != NULL);
2464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					crRect.Intersect(pPDFPage->GetPageBBox());
2466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (!crRect.IsEmpty())
2468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
2469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						CPDF_Rect rcOld = pWidget->GetRect();
2470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (crRect.left != rcOld.left ||
2471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							crRect.right != rcOld.right ||
2472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							crRect.top != rcOld.top ||
2473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							crRect.bottom != rcOld.bottom)
2474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						{
2475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							pWidget->SetRect(crRect);
2476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							bSet = TRUE;
2477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						}
2478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
2479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
2480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
2481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (bSet) UpdateFormField(pDocument, pFormField, TRUE, TRUE, TRUE);
2483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if(nControlIndex >= pFormField->CountControls()) return;
2487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (CPDF_FormControl* pFormControl = pFormField->GetControl(nControlIndex))
2488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
2489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pWidget = pInterForm->GetWidget(pFormControl))
2490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
2491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					CPDF_Rect crRect = rect;
2492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					CPDF_Page* pPDFPage = pWidget->GetPDFPage();
2494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					ASSERT(pPDFPage != NULL);
2495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 					CPDF_Page* pPDFPage = pPage->GetPage();
2497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 					ASSERT(pPDFPage != NULL);
2498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					crRect.Intersect(pPDFPage->GetPageBBox());
2500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (!crRect.IsEmpty())
2502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
2503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						CPDF_Rect rcOld = pWidget->GetRect();
2504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (crRect.left != rcOld.left ||
2505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							crRect.right != rcOld.right ||
2506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							crRect.top != rcOld.top ||
2507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							crRect.bottom != rcOld.bottom)
2508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						{
2509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							pWidget->SetRect(crRect);
2510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							UpdateFormControl(pDocument, pFormControl, TRUE, TRUE, TRUE);
2511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						}
2512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
2513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
2514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
2515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2519ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::required(OBJ_PROP_PARAMS)
2520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
2525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
2542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_REQUIRED)
2545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2553ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::richText(OBJ_PROP_PARAMS)
2554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bool bVP;
2562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> bVP;
2563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Bool(FP_RICHTEXT, bVP);
2567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetRichText(m_pDocument, m_FieldName, m_nFormControlIndex, bVP);
2571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_TEXTFIELD)
2583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldFlags() & FIELDFLAG_RICHTEXT)
2586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << true;
2587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << false;
2589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetRichText(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, bool b)
2595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2599ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::richValue(OBJ_PROP_PARAMS)
2600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		;
2606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		;
2610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetRichValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex)
2615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2619ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::rotation(OBJ_PROP_PARAMS)
2620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
2628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
2629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_ROTATION, nVP);
2633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetRotation(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
2650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_INT32)pFormControl->GetRotation();
2652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetRotation(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
2658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2662ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::strokeColor(OBJ_PROP_PARAMS)
2663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!vp.IsArrayObject())return FALSE;
2671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array crArray(m_isolate);
2673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> crArray;
2674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPWL_Color color;
2676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color::ConvertArrayToPWLColor(crArray, color);
2677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Color(FP_STROKECOLOR, color);
2681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetStrokeColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
2685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
2698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int iColorType;
2700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pFormControl->GetBorderColor(iColorType);
2701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPWL_Color color;
2703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (iColorType == COLORTYPE_TRANSPARENT)
2705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_TRANSPARENT);
2707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (iColorType == COLORTYPE_GRAY)
2709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_GRAY, pFormControl->GetOriginalBorderColor(0));
2711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (iColorType == COLORTYPE_RGB)
2713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_RGB, pFormControl->GetOriginalBorderColor(0),
2715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBorderColor(1),
2716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBorderColor(2));
2717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else if (iColorType == COLORTYPE_CMYK)
2719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			color = CPWL_Color(COLORTYPE_CMYK, pFormControl->GetOriginalBorderColor(0),
2721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBorderColor(1),
2722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBorderColor(2),
2723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormControl->GetOriginalBorderColor(3));
2724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array crArray(m_isolate);
2729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color::ConvertPWLColorToArray(color, crArray);
2730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        vp  <<  crArray;
2731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetStrokeColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
2737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2741ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::style(OBJ_PROP_PARAMS)
2742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_ByteString csBCaption;
2750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> csBCaption;
2751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_String(FP_STYLE, csBCaption);
2755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetStyle(m_pDocument, m_FieldName, m_nFormControlIndex, csBCaption);
2759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON &&
2771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			pFormField->GetFieldType() != FIELDTYPE_CHECKBOX)
2772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl) return FALSE;
2776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_WideString csWCaption = pFormControl->GetNormalCaption();
2778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_ByteString csBCaption;
2779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		switch (csWCaption[0])
2781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case L'l':
2783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				csBCaption = "circle";
2784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
2785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case L'8':
2786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				csBCaption = "cross";
2787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
2788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case L'u':
2789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				csBCaption = "diamond";
2790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
2791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case L'n':
2792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				csBCaption = "square";
2793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
2794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			case L'H':
2795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				csBCaption = "star";
2796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
2797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			default: //L'4'
2798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				csBCaption = "check";
2799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
2800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << csBCaption;
2802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetStyle(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex,
2808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					 const CFX_ByteString& string)
2809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2813ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::submitName(OBJ_PROP_PARAMS)
2814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2818ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::textColor(OBJ_PROP_PARAMS)
2819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array crArray(m_isolate);
2827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!vp.IsArrayObject())return FALSE;
2828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> crArray;
2829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPWL_Color color;
2831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color::ConvertArrayToPWLColor(crArray, color);
2832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Color(FP_TEXTCOLOR, color);
2836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetTextColor(m_pDocument, m_FieldName, m_nFormControlIndex, color);
2840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
2853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int iColorType;
2855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_ARGB color;
2856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
2857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FieldAppearance.GetColor(color, iColorType);
2858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_INT32 a,r,g,b;
2859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ArgbDecode(color, a, r, g, b);
2860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPWL_Color crRet = CPWL_Color(COLORTYPE_RGB, r / 255.0f,
2862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				g / 255.0f,
2863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				b / 255.0f);
2864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (iColorType == COLORTYPE_TRANSPARENT)
2866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			crRet = CPWL_Color(COLORTYPE_TRANSPARENT);
2867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array crArray(m_isolate);
2869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color::ConvertPWLColorToArray(crRet, crArray);
2870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        vp  <<  crArray;
2871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetTextColor(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CPWL_Color& color)
2877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2881ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::textFont(OBJ_PROP_PARAMS)
2882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_ByteString csFontName;
2890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> csFontName;
2891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (csFontName.IsEmpty()) return FALSE;
2892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_String(FP_TEXTFONT, csFontName);
2896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetTextFont(m_pDocument, m_FieldName, m_nFormControlIndex, csFontName);
2900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
2913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nFieldType = pFormField->GetFieldType();
2915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nFieldType == FIELDTYPE_PUSHBUTTON ||
2917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			nFieldType == FIELDTYPE_COMBOBOX ||
2918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			nFieldType == FIELDTYPE_LISTBOX ||
2919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			nFieldType == FIELDTYPE_TEXTFIELD)
2920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CPDF_Font * pFont = pFormControl->GetDefaultControlFont();
2922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (!pFont) return FALSE;
2923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << pFont->GetBaseFont();
2925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
2928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetTextFont(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_ByteString& string)
2934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2938ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::textSize(OBJ_PROP_PARAMS)
2939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
2943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
2945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		int nVP;
2947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> nVP;
2948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
2950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_Int(FP_TEXTSIZE, nVP);
2952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
2954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
2955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetTextSize(m_pDocument, m_FieldName, m_nFormControlIndex, nVP);
2956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
2957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
2959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
2960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
2961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
2962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
2963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
2966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
2968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!pFormControl)return FALSE;
2969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_DefaultAppearance FieldAppearance = pFormControl->GetDefaultAppearance();
2971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_ByteString csFontNameTag;
2973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FX_FLOAT fFontSize;
2974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FieldAppearance.GetFont(csFontNameTag,fFontSize);
2975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (int)fFontSize;
2977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
2978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
2980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetTextSize(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, int number)
2983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
2985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
2986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2987ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::type(OBJ_PROP_PARAMS)
2988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
2989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
2990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!vp.IsGetting()) return FALSE;
2992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
2994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
2995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
2996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
2997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
2998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
2999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	switch (pFormField->GetFieldType())
3001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_UNKNOWN:
3003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"unknown";
3004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_PUSHBUTTON:
3006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"button";
3007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_CHECKBOX:
3009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"checkbox";
3010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_RADIOBUTTON:
3012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"radiobutton";
3013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_COMBOBOX:
3015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"combobox";
3016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_LISTBOX:
3018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"listbox";
3019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_TEXTFIELD:
3021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"text";
3022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_SIGNATURE:
3024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"signature";
3025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		default :
3027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"unknown";
3028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3034ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::userName(OBJ_PROP_PARAMS)
3035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  	if (vp.IsSetting())
3039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
3041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_WideString swName;
3043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp >> swName;
3044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
3046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_WideString(FP_USERNAME, swName);
3048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
3050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetUserName(m_pDocument, m_FieldName, m_nFormControlIndex, swName);
3052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
3057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
3058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
3059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
3062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (CFX_WideString)pFormField->GetAlternateName();
3064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetUserName(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName, int nControlIndex, const CFX_WideString& string)
3070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
3072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3074ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::value(OBJ_PROP_PARAMS)
3075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsSetting())
3079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!m_bCanSet) return FALSE;
3081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_WideStringArray strArray;
3083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (vp.IsArrayObject())
3085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CJS_Array ValueArray(m_isolate);
3087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp.ConvertToArray(ValueArray);
3088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (int i = 0,sz = ValueArray.GetLength(); i < sz; i++)
3089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CJS_Value ElementValue(m_isolate);
3091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				ValueArray.GetElement(i, ElementValue);
3092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				strArray.Add(ElementValue.operator CFX_WideString());
3093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
3096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CFX_WideString swValue;
3098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp >> swValue;
3099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			strArray.Add(swValue);
3101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (m_bDelay)
3104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			AddDelay_WideStringArray(FP_VALUE, strArray);
3106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
3108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			Field::SetValue(m_pDocument, m_FieldName, m_nFormControlIndex, strArray);
3110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_PtrArray FieldArray;
3115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		GetFormFields(m_FieldName,FieldArray);
3116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (FieldArray.GetSize() <= 0) return FALSE;
3117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
3120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		switch (pFormField->GetFieldType())
3124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_PUSHBUTTON:
3126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
3127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_COMBOBOX:
3128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_TEXTFIELD:
3129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CFX_WideString swValue = pFormField->GetValue();
3131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				double dRet;
3133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				FX_BOOL bDot;
3134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot))
3135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (bDot)
3137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						vp << dRet;
3138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					else
3139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						vp << dRet;
3140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				else
3142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					vp << swValue;
3143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_LISTBOX:
3146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (pFormField->CountSelectedItems() > 1)
3148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					CJS_Array ValueArray(m_isolate);
3150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					CJS_Value ElementValue(m_isolate);
3151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					int iIndex;
3152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					for (int i = 0, sz = pFormField->CountSelectedItems(); i < sz; i++)
3153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
3154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						iIndex = pFormField->GetSelectedIndex(i);
3155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						ElementValue = pFormField->GetOptionValue(iIndex);
3156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (FXSYS_wcslen((FX_LPCWSTR)ElementValue.operator CFX_WideString()) == 0)
3157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							ElementValue = pFormField->GetOptionLabel(iIndex);
3158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						ValueArray.SetElement(i, ElementValue);
3159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
3160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					vp << ValueArray;
3161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				else
3163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					CFX_WideString swValue = pFormField->GetValue();
3165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					double dRet;
3167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					FX_BOOL bDot;
3168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot))
3169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
3170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (bDot)
3171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							vp << dRet;
3172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						else
3173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							vp << dRet;
3174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
3175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					else
3176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						vp << swValue;
3177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_CHECKBOX:
3181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_RADIOBUTTON:
3182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				FX_BOOL bFind = FALSE;
3184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				for (int i = 0 , sz = pFormField->CountControls(); i < sz; i++)
3185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (pFormField->GetControl(i)->IsChecked())
3187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
3188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						CFX_WideString swValue = pFormField->GetControl(i)->GetExportValue();
3189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						double dRet;
3191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						FX_BOOL bDot;
3192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						if (CJS_PublicMethods::ConvertStringToNumber(swValue,dRet,bDot))
3193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						{
3194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							if (bDot)
3195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								vp << dRet;
3196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							else
3197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov								vp << dRet;
3198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						}
3199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						else
3200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							vp << swValue;
3201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						bFind = TRUE;
3203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
3204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
3205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					else
3206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						continue;
3207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (!bFind)
3209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					vp << (FX_LPCWSTR)L"Off";
3210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		default:
3213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << pFormField->GetValue();
3214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::SetValue(CPDFSDK_Document* pDocument, const CFX_WideString& swFieldName,
3222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					 int nControlIndex, const CJS_WideStringArray& strArray)
3223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
3225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (strArray.GetSize() < 1) return;
3227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(pDocument, swFieldName, FieldArray);
3230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,isz=FieldArray.GetSize(); i<isz; i++)
3232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
3234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
3235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetFullName().Compare(swFieldName) != 0)
3237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			continue;
3238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		switch (pFormField->GetFieldType())
3240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_TEXTFIELD:
3242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_COMBOBOX:
3243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (pFormField->GetValue() != strArray.GetAt(0))
3244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				CFX_WideString WideString = strArray.GetAt(0);
3246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				pFormField->SetValue(strArray.GetAt(0), TRUE);
3247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_CHECKBOX: //mantis: 0004493
3251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_RADIOBUTTON:
3252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (pFormField->GetValue() != strArray.GetAt(0))
3254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					pFormField->SetValue(strArray.GetAt(0), TRUE);
3256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		case FIELDTYPE_LISTBOX:
3261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				FX_BOOL bModified = FALSE;
3263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				for (int i=0,sz=strArray.GetSize(); i<sz; i++)
3265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					int iIndex = pFormField->FindOption(strArray.GetAt(i));
3267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (!pFormField->IsItemSelected(iIndex))
3269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
3270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						bModified = TRUE;
3271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
3272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
3273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (bModified)
3276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					pFormField->ClearSelection(TRUE);
3278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					for (int i=0,sz=strArray.GetSize(); i<sz; i++)
3279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
3280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						int iIndex = pFormField->FindOption(strArray.GetAt(i));
3281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pFormField->SetItemSelection(iIndex, TRUE, TRUE);
3282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
3283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					UpdateFormField(pDocument, pFormField, TRUE, FALSE, TRUE);
3285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		default:
3289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			break;
3290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3294ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::valueAsString(OBJ_PROP_PARAMS)
3295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!vp.IsGetting()) return FALSE;
3299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() == FIELDTYPE_PUSHBUTTON)
3308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if(!pFormField->CountControls()) return FALSE;
3313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetControl(0)->IsChecked())
3315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"Yes";
3316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
3317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vp << (FX_LPCWSTR)L"Off";
3318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON && !(pFormField->GetFieldFlags() & FIELDFLAG_RADIOSINUNISON))
3320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		for (int i=0, sz=pFormField->CountControls(); i<sz; i++)
3322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (pFormField->GetControl(i)->IsChecked())
3324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)pFormField->GetControl(i)->GetExportValue();
3326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				break;
3327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			else
3329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vp << (FX_LPCWSTR)L"Off";
3330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (pFormField->GetFieldType() == FIELDTYPE_LISTBOX && (pFormField->CountSelectedItems() > 1))
3333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_LPCWSTR)L"";
3335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (FX_LPCWSTR)pFormField->GetValue();
3338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* --------------------------------- methods --------------------------------- */
3343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3344ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::browseForFileToSubmit(OBJ_METHOD_PARAMS)
3345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName, FieldArray);
3350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 	CPDFDoc_Environment* pApp = m_pDocument->GetEnv();
3356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 	ASSERT(pApp != NULL);
3357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ((pFormField->GetFieldFlags() & FIELDFLAG_FILESELECT) &&
3359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		(pFormField->GetFieldType() == FIELDTYPE_TEXTFIELD))
3360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_WideString wsFileName = pApp->JS_fieldBrowse();
3362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if(!wsFileName.IsEmpty())
3363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 			pFormField->SetValue(wsFileName);
3365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 			UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
3366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov         }
3367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3375ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonGetCaption(OBJ_METHOD_PARAMS)
3376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nface = 0;
3380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int iSize = params.size();
3381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ( iSize >= 1)
3382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nface = (FX_INT32) params[0];
3383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!pFormControl)return FALSE;
3396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nface == 0)
3398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = pFormControl->GetNormalCaption();
3399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (nface == 1)
3400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = pFormControl->GetDownCaption();
3401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (nface == 2)
3402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = pFormControl->GetRolloverCaption();
3403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//#pragma warning(disable: 4800)
3410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3411ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonGetIcon(OBJ_METHOD_PARAMS)
3412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nface = 0;
3416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int iSize = params.size();
3417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ( iSize >= 1)
3418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nface = (FX_INT32) params[0];
3419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() != FIELDTYPE_PUSHBUTTON)
3428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!pFormControl)return FALSE;
3432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Context* pContext = (CJS_Context*)cc;
3434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pContext != NULL);
3435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Runtime* pRuntime = pContext->GetJSRuntime();
3437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pRuntime != NULL);
3438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Icon"));
3440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pObj.IsEmpty() == FALSE);
3441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Icon* pJS_Icon = (CJS_Icon*)JS_GetPrivate(pObj);
3443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pJS_Icon != NULL);
3444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
3446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pIcon != NULL);
3447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Stream* pIconStream = NULL;
3449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nface == 0)
3450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pIconStream = pFormControl->GetNormalIcon();
3451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (nface == 1)
3452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pIconStream = pFormControl->GetDownIcon();
3453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (nface == 2)
3454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pIconStream = pFormControl->GetRolloverIcon();
3455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pIcon->SetStream(pIconStream);
3459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	vRet = pJS_Icon;
3460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//#pragma warning(default: 4800)
3465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3466ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonImportIcon(OBJ_METHOD_PARAMS)
3467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if 0
3469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!pFormField)return FALSE;
3477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
3479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pEnv);
3480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_WideString sIconFileName = pEnv->JS_fieldBrowse();
3482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (sIconFileName.IsEmpty())
3483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = 1;
3485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return TRUE;
3486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
3489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
3490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_Stream* pStream = pInterForm->LoadImageFromFile(sIconFileName);
3492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!pStream)
3493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = -1;
3495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return TRUE;
3496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormControl* pFormControl = GetSmartFieldControl(pFormField);
3499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!pFormControl)return FALSE;
3500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pFormControl->SetNormalIcon(pStream);
3502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	UpdateFormControl(m_pDocument, pFormControl, TRUE, TRUE, TRUE);
3503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	vRet = 0;
3505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif // 0
3506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3509ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonSetCaption(OBJ_METHOD_PARAMS)
3510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3514ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::buttonSetIcon(OBJ_METHOD_PARAMS)
3515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3519ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::checkThisBox(OBJ_METHOD_PARAMS)
3520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!m_bCanSet) return FALSE;
3524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int iSize = params.size();
3526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nWidget = -1;
3527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ( iSize >= 1)
3528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nWidget= (FX_INT32) params[0];
3529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL bCheckit = TRUE;
3532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ( iSize >= 2)
3533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bCheckit = params[1];
3534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() != FIELDTYPE_CHECKBOX && pFormField->GetFieldType() != FIELDTYPE_RADIOBUTTON)
3544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if(nWidget <0 || nWidget >= pFormField->CountControls())
3546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON)
3548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pFormField->CheckControl(nWidget, bCheckit, TRUE);
3549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pFormField->CheckControl(nWidget, bCheckit, TRUE);
3551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	UpdateFormField(m_pDocument, pFormField, TRUE, TRUE, TRUE);
3553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3557ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::clearItems(OBJ_METHOD_PARAMS)
3558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3562ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::defaultIsChecked(OBJ_METHOD_PARAMS)
3563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!m_bCanSet) return FALSE;
3567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int iSize = params.size();
3569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nWidget = -1;
3570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ( iSize >= 1)
3571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nWidget= (FX_INT32) params[0];
3572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//FX_BOOL bIsDefaultChecked = TRUE;
3575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//if ( iSize >= 2)
3576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//	bIsDefaultChecked =  params[1];
3577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if(nWidget <0 || nWidget >= pFormField->CountControls())
3586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = FALSE;
3588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		|| (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
3592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = TRUE;
3595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = FALSE;
3598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3602ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::deleteItemAt(OBJ_METHOD_PARAMS)
3603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint JS_COMPARESTRING(CFX_WideString* ps1, CFX_WideString* ps2)
3608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(ps1 != NULL);
3610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(ps2 != NULL);
3611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return ps1->Compare(*ps2);
3613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3616ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::getArray(OBJ_METHOD_PARAMS)
3617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CGW_ArrayTemplate<CFX_WideString*> swSort;
3625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,sz=FieldArray.GetSize(); i<sz; i++)
3627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(i);
3629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pFormField != NULL);
3630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		swSort.Add(new CFX_WideString(pFormField->GetFullName()));
3632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	swSort.Sort(JS_COMPARESTRING);
3635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Context* pContext = (CJS_Context*)cc;
3637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pContext != NULL);
3638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Runtime* pRuntime = pContext->GetJSRuntime();
3639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pRuntime != NULL);
3640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Array FormFieldArray(m_isolate);
3642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int j=0,jsz = swSort.GetSize(); j<jsz; j++)
3643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CFX_WideString* pStr = swSort.GetAt(j);
3645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		JSFXObject pObj = JS_NewFxDynamicObj(*pRuntime, pContext, JS_GetObjDefnID(*pRuntime, L"Field"));
3647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pObj.IsEmpty() == FALSE);
3648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Field* pJSField = (CJS_Field*)JS_GetPrivate(pObj);
3650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pJSField != NULL);
3651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field* pField = (Field*)pJSField->GetEmbedObject();
3653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pField != NULL);
3654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pField->AttachField(this->m_pJSDoc, *pStr);
3656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Value FormFieldValue(m_isolate);
3658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FormFieldValue = pJSField;
3659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		FormFieldArray.SetElement(j, FormFieldValue);
3660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		delete pStr;
3662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	vRet = FormFieldArray;
3665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	swSort.RemoveAll();
3666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3669ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::getItemAt(OBJ_METHOD_PARAMS)
3670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nIdx = -1;
3674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (params.size() >=1)
3675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nIdx = (FX_INT32) params[0];
3676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_BOOL bExport = TRUE;
3677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int iSize = params.size();
3678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ( iSize >= 2)
3679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		bExport =(FX_BOOL) params[1];
3681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ((pFormField->GetFieldType() == FIELDTYPE_LISTBOX)
3691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		|| (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX))
3692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (nIdx == -1 || nIdx > pFormField->CountOptions())
3694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			nIdx = pFormField->CountOptions() -1;
3695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (bExport)
3696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			CFX_WideString strval = pFormField->GetOptionValue(nIdx);
3698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			if (strval.IsEmpty())
3699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vRet = pFormField->GetOptionLabel(nIdx);
3700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			else
3701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				vRet = strval;
3702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
3704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vRet = pFormField->GetOptionLabel(nIdx);
3705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3712ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::getLock(OBJ_METHOD_PARAMS)
3713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3717ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::insertItemAt(OBJ_METHOD_PARAMS)
3718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3722ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::isBoxChecked(OBJ_METHOD_PARAMS)
3723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nIndex = -1;
3727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (params.size() >=1)
3728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nIndex = (FX_INT32) params[0];
3729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if(nIndex <0 || nIndex >= pFormField->CountControls())
3738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = FALSE;
3740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		|| (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
3745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetControl(nIndex)->IsChecked() !=0 )
3747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vRet = TRUE;
3748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
3749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vRet = FALSE;
3750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = FALSE;
3753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3757ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::isDefaultChecked(OBJ_METHOD_PARAMS)
3758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nIndex = -1;
3762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (params.size() >=1)
3763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nIndex = (FX_INT32) params[0];
3764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if(nIndex <0 || nIndex >= pFormField->CountControls())
3773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = FALSE;
3775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		return FALSE;
3776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if ((pFormField->GetFieldType() == FIELDTYPE_CHECKBOX)
3778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		|| (pFormField->GetFieldType() == FIELDTYPE_RADIOBUTTON))
3779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (pFormField->GetControl(nIndex)->IsDefaultChecked() != 0)
3781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vRet = TRUE;
3782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		else
3783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			vRet = FALSE;
3784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vRet = FALSE;
3787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3791ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::setAction(OBJ_METHOD_PARAMS)
3792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3796ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::setFocus(OBJ_METHOD_PARAMS)
3797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pDocument != NULL);
3799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_PtrArray FieldArray;
3801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	GetFormFields(m_FieldName,FieldArray);
3802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (FieldArray.GetSize() <= 0) return FALSE;
3803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDF_FormField* pFormField = (CPDF_FormField*)FieldArray.ElementAt(0);
3805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pFormField != NULL);
3806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	FX_INT32 nCount = pFormField->CountControls();
3808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nCount < 1) return FALSE;
3810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)m_pDocument->GetInterForm();
3812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pInterForm != NULL);
3813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPDFSDK_Widget* pWidget = NULL;
3815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nCount == 1)
3816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pWidget = pInterForm->GetWidget(pFormField->GetControl(0));
3818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else
3820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDFDoc_Environment* pEnv = m_pDocument->GetEnv();
3822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ASSERT(pEnv);
3823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CPDF_Page* pPage = (CPDF_Page*)pEnv->FFI_GetCurrentPage(m_pDocument->GetDocument());
3824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if(!pPage)
3825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			return FALSE;
3826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (CPDFSDK_PageView* pCurPageView = m_pDocument->GetPageView(pPage))
3827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		{
3828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			for (FX_INT32 i=0; i<nCount; i++)
3829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			{
3830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				if (CPDFSDK_Widget* pTempWidget =  pInterForm->GetWidget(pFormField->GetControl(i)))
3831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				{
3832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					if (pTempWidget->GetPDFPage() == pCurPageView->GetPDFPage())
3833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					{
3834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						pWidget = pTempWidget;
3835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov						break;
3836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov					}
3837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov				}
3838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov			}
3839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		}
3840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (pWidget)
3843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		m_pDocument->SetFocusAnnot(pWidget);
3845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3850ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::setItems(OBJ_METHOD_PARAMS)
3851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3855ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::setLock(OBJ_METHOD_PARAMS)
3856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3860ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::signatureGetModifications(OBJ_METHOD_PARAMS)
3861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3865ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::signatureGetSeedValue(OBJ_METHOD_PARAMS)
3866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3870ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::signatureInfo(OBJ_METHOD_PARAMS)
3871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3875ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::signatureSetSeedValue(OBJ_METHOD_PARAMS)
3876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3880ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::signatureSign(OBJ_METHOD_PARAMS)
3881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3885ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::signatureValidate(OBJ_METHOD_PARAMS)
3886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return FALSE;
3888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3890ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL Field::source(OBJ_PROP_PARAMS)
3891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsGetting())
3893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
3894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << (CJS_Object*)NULL;
3895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
3896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
3898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/////////////////////////////////////////// delay /////////////////////////////////////////////
3901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_Int(enum FIELD_PROP prop, FX_INT32 n)
3903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
3907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
3908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
3909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
3910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->num = n;
3911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
3913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_Bool(enum FIELD_PROP prop,bool b)
3916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
3920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
3921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
3922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
3923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->b = b;
3924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
3926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_String(enum FIELD_PROP prop, const CFX_ByteString& string)
3929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
3933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
3934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
3935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
3936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->string = string;
3937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
3939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_WideString(enum FIELD_PROP prop, const CFX_WideString& string)
3942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
3946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
3947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
3948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
3949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->widestring = string;
3950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
3952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_Rect(enum FIELD_PROP prop, const CPDF_Rect& rect)
3955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
3959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
3960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
3961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
3962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->rect = rect;
3963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
3965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_Color(enum FIELD_PROP prop, const CPWL_Color& color)
3968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
3972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
3973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
3974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
3975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->color = color;
3976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
3978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_WordArray(enum FIELD_PROP prop, const CFX_DWordArray& array)
3981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
3985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
3986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
3987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
3988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,sz=array.GetSize(); i<sz; i++)
3990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pNewData->wordarray.Add(array.GetAt(i));
3991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
3993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
3994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddDelay_WideStringArray(enum FIELD_PROP prop, const CJS_WideStringArray& array)
3996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
3997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(m_pJSDoc != NULL);
3998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
3999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_DelayData* pNewData = new CJS_DelayData;
4000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->sFieldName = m_FieldName;
4001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->nControlIndex = m_nFormControlIndex;
4002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	pNewData->eProp = prop;
4003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	for (int i=0,sz=array.GetSize(); i<sz; i++)
4004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		pNewData->widestringarray.Add(array.GetAt(i));
4005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
4006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_pJSDoc->AddDelayData(pNewData);
4007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
4008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
4009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::DoDelay(CPDFSDK_Document* pDocument, CJS_DelayData* pData)
4010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
4011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pDocument != NULL);
4012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pData != NULL);
4013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
4014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	switch (pData->eProp)
4015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
4016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_ALIGNMENT:
4017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetAlignment(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
4018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_BORDERSTYLE:
4020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetBorderStyle(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
4021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_BUTTONALIGNX:
4023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetButtonAlignX(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_BUTTONALIGNY:
4026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetButtonAlignY(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_BUTTONFITBOUNDS:
4029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetButtonFitBounds(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_BUTTONPOSITION:
4032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetButtonPosition(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_BUTTONSCALEHOW:
4035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetButtonScaleHow(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_BUTTONSCALEWHEN:
4038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetButtonScaleWhen(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_CALCORDERINDEX:
4041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetCalcOrderIndex(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_CHARLIMIT:
4044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetCharLimit(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_COMB:
4047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetComb(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_COMMITONSELCHANGE:
4050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetCommitOnSelChange(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_CURRENTVALUEINDICES:
4053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetCurrentValueIndices(pDocument, pData->sFieldName, pData->nControlIndex, pData->wordarray);
4054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_DEFAULTVALUE:
4056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetDefaultValue(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestring);
4057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_DONOTSCROLL:
4059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetDoNotScroll(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_DISPLAY:
4062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetDisplay(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_FILLCOLOR:
4065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetFillColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color);
4066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_HIDDEN:
4068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetHidden(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_HIGHLIGHT:
4071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetHighlight(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
4072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_LINEWIDTH:
4074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetLineWidth(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_MULTILINE:
4077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetMultiline(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_MULTIPLESELECTION:
4080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetMultipleSelection(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_PASSWORD:
4083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetPassword(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_RECT:
4086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetRect(pDocument, pData->sFieldName, pData->nControlIndex, pData->rect);
4087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_RICHTEXT:
4089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetRichText(pDocument, pData->sFieldName, pData->nControlIndex, pData->b);
4090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_RICHVALUE:
4092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_ROTATION:
4094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetRotation(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_STROKECOLOR:
4097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetStrokeColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color);
4098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_STYLE:
4100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetStyle(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
4101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_TEXTCOLOR:
4103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetTextColor(pDocument, pData->sFieldName, pData->nControlIndex, pData->color);
4104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_TEXTFONT:
4106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetTextFont(pDocument, pData->sFieldName, pData->nControlIndex, pData->string);
4107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_TEXTSIZE:
4109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetTextSize(pDocument, pData->sFieldName, pData->nControlIndex, pData->num);
4110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_USERNAME:
4112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetUserName(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestring);
4113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case FP_VALUE:
4115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		Field::SetValue(pDocument, pData->sFieldName, pData->nControlIndex, pData->widestringarray);
4116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
4117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
4118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
4119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
4120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JS_FIELD_MINWIDTH	1
4121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JS_FIELD_MINHEIGHT	1
4122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
4123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid Field::AddField(CPDFSDK_Document* pDocument, int nPageIndex, int nFieldType,
4124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov							const CFX_WideString& sName, const CPDF_Rect& rcCoords)
4125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
4126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	//Not supported.
4127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
4128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
4129