xref: /trunk/main/cui/source/options/optcolor.cxx (revision c47da6ea)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_cui.hxx"
26 
27 // include ---------------------------------------------------------------
28 #include <svtools/colorcfg.hxx>
29 #include <svtools/extcolorcfg.hxx>
30 #include <svtools/headbar.hxx>
31 #include <svtools/ctrlbox.hxx>
32 #include <vcl/scrbar.hxx>
33 #include <svx/xtable.hxx>
34 #include <unotools/moduleoptions.hxx>
35 #include <unotools/pathoptions.hxx>
36 #include <vcl/msgbox.hxx>
37 #include <boost/shared_ptr.hpp>
38 #include <svx/svxdlg.hxx>
39 #include <helpid.hrc>
40 #include <dialmgr.hxx>
41 #include "optcolor.hxx"
42 #include <cuires.hrc>
43 #include "optcolor.hrc"
44 #include <svx/dlgutil.hxx>
45 
46 using namespace ::com::sun::star;
47 using namespace ::svtools;
48 
49 #define GROUP_COUNT     7
50 #define GROUP_UNKNOWN   -1
51 #define GROUP_GENERAL   0
52 #define GROUP_WRITER    1
53 #define GROUP_HTML      2
54 #define GROUP_CALC      3
55 #define GROUP_DRAW      4
56 #define GROUP_BASIC     5
57 #define GROUP_SQL		6
58 
59 const char* aColorLBHids[ColorConfigEntryCount] =
60 {
61      HID_COLORPAGE_DOCCOLOR_LB,
62      HID_COLORPAGE_DOCBOUNDARIES_LB,
63      HID_COLORPAGE_APPBACKGROUND_LB,
64      HID_COLORPAGE_OBJECTBOUNDARIES_LB,
65      HID_COLORPAGE_TABLEBOUNDARIES_LB,
66      HID_COLORPAGE_FONTCOLOR_LB,
67      HID_COLORPAGE_LINKS_LB,
68      HID_COLORPAGE_LINKSVISITED_LB,
69      HID_COLORPAGE_ANCHOR_LB,
70      HID_COLORPAGE_SPELL_LB,
71 	 HID_COLORPAGE_SMARTTAGS_LB,
72 	 HID_COLORPAGE_WRITERTEXTGRID_LB,
73      HID_COLORPAGE_WRITERFIELDSHADINGS_LB,
74      HID_COLORPAGE_WRITERIDXSHADINGS_LB,
75      HID_COLORPAGE_WRITERDIRECTCURSOR_LB,
76      HID_COLORPAGE_WRITERSCRIPTINDICATOR_LB,
77      HID_COLORPAGE_WRITERSECTIONBOUNDARIES_LB,
78      HID_COLORPAGE_WRITERPAGEBREAKS_LB,
79      HID_COLORPAGE_HTMLSGML_LB,
80      HID_COLORPAGE_HTMLCOMMENT_LB,
81      HID_COLORPAGE_HTMLKEYWORD_LB,
82      HID_COLORPAGE_HTMLUNKNOWN_LB,
83      HID_COLORPAGE_CALCGRID_LB,
84      HID_COLORPAGE_CALCPAGEBREAK_LB,
85      HID_COLORPAGE_CALCPAGEBREAKMANUAL_LB,
86      HID_COLORPAGE_CALCPAGEBREAKAUTOMATIC_LB,
87      HID_COLORPAGE_CALCDETECTIVE_LB,
88      HID_COLORPAGE_CALCDETECTIVEERROR_LB,
89      HID_COLORPAGE_CALCREFERENCE_LB,
90      HID_COLORPAGE_CALCNOTESBACKGROUND_LB,
91      HID_COLORPAGE_DRAWGRID_LB,
92      HID_COLORPAGE_DRAWDRAWING_LB,
93      HID_COLORPAGE_DRAWFILL_LB,
94      HID_COLORPAGE_BASICIDENTIFIER_LB,
95      HID_COLORPAGE_BASICCOMMENT_LB,
96      HID_COLORPAGE_BASICNUMBER_LB,
97      HID_COLORPAGE_BASICSTRING_LB,
98      HID_COLORPAGE_BASICOPERATOR_LB,
99      HID_COLORPAGE_BASICKEYWORD_LB,
100      HID_COLORPAGE_BASICERROR_LB
101      HID_COLORPAGE_SQLIDENTIFIER_LB,
102      HID_COLORPAGE_SQLNUMBER_LB,
103      HID_COLORPAGE_SQLSTRING_LB,
104      HID_COLORPAGE_SQLOPERATOR_LB,
105      HID_COLORPAGE_SQLKEYWORD_LB,
106      HID_COLORPAGE_SQLPARAMETER_LB,
107      HID_COLORPAGE_SQLCOMMENT_LB
108 };
109 
110 const char* aColorCBHids[ColorConfigEntryCount] =
111 {
112      HID_COLORPAGE_DOCCOLOR_CB,
113      HID_COLORPAGE_DOCBOUNDARIES_CB,
114      HID_COLORPAGE_APPBACKGROUND_CB,
115      HID_COLORPAGE_OBJECTBOUNDARIES_CB,
116      HID_COLORPAGE_TABLEBOUNDARIES_CB,
117      HID_COLORPAGE_FONTCOLOR_CB,
118      HID_COLORPAGE_LINKS_CB,
119      HID_COLORPAGE_LINKSVISITED_CB,
120      HID_COLORPAGE_ANCHOR_CB,
121      HID_COLORPAGE_SPELL_CB,
122 	 HID_COLORPAGE_SMARTTAGS_CB,
123      HID_COLORPAGE_WRITERTEXTGRID_CB,
124      HID_COLORPAGE_WRITERFIELDSHADINGS_CB,
125      HID_COLORPAGE_WRITERIDXSHADINGS_CB,
126      HID_COLORPAGE_WRITERDIRECTCURSOR_CB,
127      HID_COLORPAGE_WRITERSCRIPTINDICATOR_CB,
128      HID_COLORPAGE_WRITERSECTIONBOUNDARIES_CB,
129      HID_COLORPAGE_WRITERPAGEBREAKS_CB,
130      HID_COLORPAGE_HTMLSGML_CB,
131      HID_COLORPAGE_HTMLCOMMENT_CB,
132      HID_COLORPAGE_HTMLKEYWORD_CB,
133      HID_COLORPAGE_HTMLUNKNOWN_CB,
134      HID_COLORPAGE_CALCGRID_CB,
135      HID_COLORPAGE_CALCPAGEBREAK_CB,
136      HID_COLORPAGE_CALCPAGEBREAKMANUAL_CB,
137      HID_COLORPAGE_CALCPAGEBREAKAUTOMATIC_CB,
138      HID_COLORPAGE_CALCDETECTIVE_CB,
139      HID_COLORPAGE_CALCDETECTIVEERROR_CB,
140      HID_COLORPAGE_CALCREFERENCE_CB,
141      HID_COLORPAGE_CALCNOTESBACKGROUND_CB,
142      HID_COLORPAGE_DRAWGRID_CB,
143      HID_COLORPAGE_DRAWDRAWING_CB,
144      HID_COLORPAGE_DRAWFILL_CB,
145      HID_COLORPAGE_BASICIDENTIFIER_CB,
146      HID_COLORPAGE_BASICCOMMENT_CB,
147      HID_COLORPAGE_BASICNUMBER_CB,
148      HID_COLORPAGE_BASICSTRING_CB,
149      HID_COLORPAGE_BASICOPERATOR_CB,
150      HID_COLORPAGE_BASICKEYWORD_CB,
151      HID_COLORPAGE_BASICERROR_CB
152      HID_COLORPAGE_SQLIDENTIFIER_CB,
153      HID_COLORPAGE_SQLNUMBER_CB,
154      HID_COLORPAGE_SQLSTRING_CB,
155      HID_COLORPAGE_SQLOPERATOR_CB,
156      HID_COLORPAGE_SQLKEYWORD_CB,
157      HID_COLORPAGE_SQLPARAMETER_CB,
158      HID_COLORPAGE_SQLCOMMENT_CB
159 };
160 
161 /* -----------------------------2002/06/26 10:48------------------------------
162 
163  ---------------------------------------------------------------------------*/
164 
165 class SvxExtFixedText_Impl : public FixedText
166 {
167 private:
168     long            m_nGroupHeight;
169 
170 protected:
171     virtual void    DataChanged( const DataChangedEvent& rDCEvt );
172 
173 public:
SvxExtFixedText_Impl(Window * pParent,const ResId & rResId)174     SvxExtFixedText_Impl(Window* pParent, const ResId& rResId) :
175         FixedText(pParent, rResId), m_nGroupHeight(0) {}
176 
GetGroupHeight()177     inline long     GetGroupHeight() { return m_nGroupHeight; }
SetGroupHeight(long _nHeight)178     inline void     SetGroupHeight( long _nHeight ) { m_nGroupHeight = _nHeight; }
179 };
180 
181 /* -----------------------------25.03.2002 15:48------------------------------
182 
183  ---------------------------------------------------------------------------*/
184 class ColorConfigCtrl_Impl;
185 class ColorConfigWindow_Impl : public Window
186 {
187     friend class ColorConfigCtrl_Impl;
188     Window          aGeneralBackWN;
189     SvxExtFixedText_Impl    aGeneralFT;
190     FixedText       aDocColorFT;
191     ColorListBox    aDocColorLB;
192     Window          aDocColorWN;
193     CheckBox        aDocBoundCB;
194     ColorListBox    aDocBoundLB;
195     Window          aDocBoundWN;
196     FixedText       aAppBackFT;
197     ColorListBox    aAppBackLB;
198     Window          aAppBackWN;
199     CheckBox        aObjBoundCB;
200     ColorListBox    aObjBoundLB;
201     Window          aObjBoundWN;
202     CheckBox        aTableBoundCB;
203     ColorListBox    aTableBoundLB;
204     Window          aTableBoundWN;
205     FixedText       aFontColorFT;
206     ColorListBox    aFontColorLB;
207     Window          aFontColorWN;
208     CheckBox        aLinksCB;
209     ColorListBox    aLinksLB;
210     Window          aLinksWN;
211     CheckBox        aLinksVisitedCB;
212     ColorListBox    aLinksVisitedLB;
213     Window          aLinksVisitedWN;
214     FixedText       aSpellFT;
215     ColorListBox    aSpellLB;
216     Window          aSpellWN;
217     FixedText       aSmarttagsFT;
218     ColorListBox    aSmarttagsLB;
219     Window          aSmarttagsWN;
220     Window          aWriterBackWN;
221     SvxExtFixedText_Impl    aWriterFT;
222     FixedText       aWrtTextGridFT;
223     ColorListBox    aWrtTextGridLB;
224     Window          aWrtTextGridWN;
225     CheckBox        aWrtFieldCB;
226     ColorListBox    aWrtFieldLB;
227     Window          aWrtFieldWN;
228     CheckBox        aWrtIdxShadingBackCB;
229     ColorListBox    aWrtIdxShadingBackLB;
230     Window          aWrtIdxShadingBackWN;
231     FixedText       aWrtScriptIndicatorFT;
232     ColorListBox    aWrtScriptIndicatorLB;
233     Window          aWrtScriptIndicatorWN;
234     CheckBox        aWrtSectionBoundCB;
235     ColorListBox    aWrtSectionBoundLB;
236     Window          aWrtSectionBoundWN;
237     FixedText       aWrtPageBreaksFT;
238     ColorListBox    aWrtPageBreaksLB;
239     Window          aWrtPageBreaksWN;
240     FixedText       aWrtDirectCrsrFT;
241     ColorListBox    aWrtDirectCrsrLB;
242     Window          aWrtDirectCrsrWN;
243     Window          aHTMLBackWN;
244     SvxExtFixedText_Impl    aHTMLFT;
245     FixedText       aHTMLSGMLFT;
246     ColorListBox    aHTMLSGMLLB;
247     Window          aHTMLSGMLWN;
248     FixedText       aHTMLCommentFT;
249     ColorListBox    aHTMLCommentLB;
250     Window          aHTMLCommentWN;
251     FixedText       aHTMLKeywdFT;
252     ColorListBox    aHTMLKeywdLB;
253     Window          aHTMLKeywdWN;
254     FixedText       aHTMLUnknownFT;
255     ColorListBox    aHTMLUnknownLB;
256     Window          aHTMLUnknownWN;
257     Window          aCalcBackWN;
258     SvxExtFixedText_Impl    aCalcFT;
259     FixedText       aCalcGridFT;
260     ColorListBox    aCalcGridLB;
261     Window          aCalcGridWN;
262     FixedText       aCalcPageBreakFT;
263     ColorListBox    aCalcPageBreakLB;
264     Window          aCalcPageBreakWN;
265     FixedText       aCalcPageBreakManualFT;
266     ColorListBox    aCalcPageBreakManualLB;
267     Window          aCalcPageBreakManualWN;
268     FixedText       aCalcPageBreakAutoFT;
269     ColorListBox    aCalcPageBreakAutoLB;
270     Window          aCalcPageBreakAutoWN;
271     FixedText       aCalcDetectiveFT;
272     ColorListBox    aCalcDetectiveLB;
273     Window          aCalcDetectiveWN;
274     FixedText       aCalcDetectiveErrorFT;
275     ColorListBox    aCalcDetectiveErrorLB;
276     Window          aCalcDetectiveErrorWN;
277     FixedText       aCalcReferenceFT;
278     ColorListBox    aCalcReferenceLB;
279     Window          aCalcReferenceWN;
280     FixedText       aCalcNotesBackFT;
281     ColorListBox    aCalcNotesBackLB;
282     Window          aCalcNotesBackWN;
283     Window          aDrawBackWN;
284     SvxExtFixedText_Impl    aDrawFT;
285     FixedText       aDrawGridFT;
286     ColorListBox    aDrawGridLB;
287     Window          aDrawGridWN;
288     Window          aBasicBackWN;
289     SvxExtFixedText_Impl    aBasicFT;
290     FixedText       aBasicIdentifierFT;
291     ColorListBox    aBasicIdentifierLB;
292     Window          aBasicIdentifierWN;
293     FixedText       aBasicCommentFT;
294     ColorListBox    aBasicCommentLB;
295     Window          aBasicCommentWN;
296     FixedText       aBasicNumberFT;
297     ColorListBox    aBasicNumberLB;
298     Window          aBasicNumberWN;
299     FixedText       aBasicStringFT;
300     ColorListBox    aBasicStringLB;
301     Window          aBasicStringWN;
302     FixedText       aBasicOperatorFT;
303     ColorListBox    aBasicOperatorLB;
304     Window          aBasicOperatorWN;
305     FixedText       aBasicKeywordFT;
306     ColorListBox    aBasicKeywordLB;
307     Window          aBasicKeywordWN;
308     FixedText       aBasicErrorFT;
309     ColorListBox    aBasicErrorLB;
310     Window          aBasicErrorWN;
311 	Window          aSQLBackWN;
312 	SvxExtFixedText_Impl    aSQLFT;
313 	FixedText       aSQLIdentifierFT;
314     ColorListBox    aSQLIdentifierLB;
315     Window          aSQLIdentifierWN;
316 	FixedText       aSQLNumberFT;
317     ColorListBox    aSQLNumberLB;
318     Window          aSQLNumberWN;
319 	FixedText       aSQLStringFT;
320     ColorListBox    aSQLStringLB;
321     Window          aSQLStringWN;
322 	FixedText       aSQLOperatorFT;
323     ColorListBox    aSQLOperatorLB;
324     Window          aSQLOperatorWN;
325 	FixedText       aSQLKeywordFT;
326     ColorListBox    aSQLKeywordLB;
327     Window          aSQLKeywordWN;
328 	FixedText       aSQLParameterFT;
329     ColorListBox    aSQLParameterLB;
330     Window          aSQLParameterWN;
331 	FixedText       aSQLCommentFT;
332     ColorListBox    aSQLCommentLB;
333     Window          aSQLCommentWN;
334 
335     ::std::vector< SvxExtFixedText_Impl*>	aChapters;
336 	::std::vector< Window* >				aChapterWins;
337 	::std::vector< FixedText* >				aFixedTexts;
338     ::std::vector< CheckBox* >				aCheckBoxes;
339     ::std::vector< ColorListBox* >			aColorBoxes;
340     ::std::vector< Window* >				aWindows; // [ColorConfigEntryCount]
341 	::std::vector< ::boost::shared_ptr<SvxExtFixedText_Impl> >	m_aExtensionTitles;
342 
343     SvtModuleOptions    m_aModuleOptions;
344 
345     void            SetNewPosition( sal_Int32 _nFeature, Window* _pWin );
346 
347     virtual void    Command( const CommandEvent& rCEvt );
348     virtual void    DataChanged( const DataChangedEvent& rDCEvt );
349 
350 public:
351     ColorConfigWindow_Impl(Window* pParent, const ResId& rResId);
352     ~ColorConfigWindow_Impl();
353 
GetModuleOptions() const354     inline const SvtModuleOptions&  GetModuleOptions() const { return m_aModuleOptions; }
355 };
356 
lcl_isGroupVisible(sal_Int32 _nGroup,const SvtModuleOptions & _rModOptions)357 sal_Bool lcl_isGroupVisible( sal_Int32 _nGroup, const SvtModuleOptions& _rModOptions )
358 {
359     sal_Bool bRet = sal_True;
360 
361     switch ( _nGroup )
362     {
363         case GROUP_WRITER :
364         case GROUP_HTML :
365         {
366             bRet = _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SWRITER );
367             break;
368         }
369 
370         case GROUP_CALC :
371         {
372             bRet = _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SCALC );
373             break;
374         }
375 
376         case GROUP_DRAW :
377         {
378             bRet = ( _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SDRAW ) ||
379                      _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SIMPRESS ) );
380             break;
381         }
382 		case GROUP_SQL :
383 		{
384 			bRet = _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SDATABASE );
385 			break;
386 		}
387     }
388 
389     return bRet;
390 }
391 
lcl_getGroup(sal_Int32 _nFeature)392 sal_Int16 lcl_getGroup( sal_Int32 _nFeature )
393 {
394     if ( _nFeature >= ColorConfigEntryCount )
395         return GROUP_COUNT; // feature of an extension
396 
397     sal_Int16 nRet = GROUP_UNKNOWN;
398 
399     switch ( _nFeature )
400     {
401         case DOCCOLOR :
402         case DOCBOUNDARIES :
403         case APPBACKGROUND :
404         case OBJECTBOUNDARIES :
405         case TABLEBOUNDARIES :
406         case FONTCOLOR :
407         case LINKS :
408         case LINKSVISITED :
409         case ANCHOR :
410         case SPELL :
411         case SMARTTAGS :
412         {
413             nRet = GROUP_GENERAL;
414             break;
415         }
416 
417         case WRITERTEXTGRID :
418         case WRITERFIELDSHADINGS :
419         case WRITERIDXSHADINGS :
420         case WRITERDIRECTCURSOR :
421         case WRITERSCRIPTINDICATOR :
422         case WRITERSECTIONBOUNDARIES :
423         case WRITERPAGEBREAKS :
424         {
425             nRet = GROUP_WRITER;
426             break;
427         }
428 
429         case HTMLSGML :
430         case HTMLCOMMENT :
431         case HTMLKEYWORD :
432         case HTMLUNKNOWN :
433         {
434             nRet = GROUP_HTML;
435             break;
436         }
437 
438         case CALCGRID :
439         case CALCPAGEBREAK :
440         case CALCPAGEBREAKMANUAL :
441         case CALCPAGEBREAKAUTOMATIC :
442         case CALCDETECTIVE :
443         case CALCDETECTIVEERROR :
444         case CALCREFERENCE :
445         case CALCNOTESBACKGROUND :
446         {
447             nRet = GROUP_CALC;
448             break;
449         }
450 
451         case DRAWGRID :
452         case DRAWDRAWING :
453         case DRAWFILL :
454         {
455             nRet = GROUP_DRAW;
456             break;
457         }
458 
459         case BASICIDENTIFIER :
460         case BASICCOMMENT :
461         case BASICNUMBER :
462         case BASICSTRING :
463         case BASICOPERATOR :
464         case BASICKEYWORD :
465         case BASICERROR :
466         {
467             nRet = GROUP_BASIC;
468             break;
469         }
470 		case SQLIDENTIFIER :
471 		case SQLNUMBER:
472 		case SQLSTRING:
473 		case SQLOPERATOR:
474 		case SQLKEYWORD:
475 		case SQLPARAMETER:
476 		case SQLCOMMENT:
477 		{
478 			nRet = GROUP_SQL;
479             break;
480 		}
481     }
482     return nRet;
483 }
484 
485 /* -----------------------------25.03.2002 17:05------------------------------
486 
487  ---------------------------------------------------------------------------*/
ColorConfigWindow_Impl(Window * pParent,const ResId & rResId)488 ColorConfigWindow_Impl::ColorConfigWindow_Impl(Window* pParent, const ResId& rResId) :
489         Window(pParent, rResId),
490         aGeneralBackWN(this),
491         aGeneralFT(&aGeneralBackWN,  ResId( FT_GENERAL, *rResId.GetResMgr() )),
492         aDocColorFT(this, ResId(        FT_DOCCOLOR, *rResId.GetResMgr())),
493         aDocColorLB(this, ResId(        LB_DOCCOLOR, *rResId.GetResMgr())),
494         aDocColorWN(this, ResId(        WN_DOCCOLOR, *rResId.GetResMgr())),
495         aDocBoundCB(this, ResId(        CB_DOCBOUND, *rResId.GetResMgr())),
496         aDocBoundLB(this, ResId(        LB_DOCBOUND, *rResId.GetResMgr())),
497         aDocBoundWN(this, ResId(      WN_DOCBOUND, *rResId.GetResMgr())),
498         aAppBackFT(this, ResId(         FT_APPBACKGROUND, *rResId.GetResMgr())),
499         aAppBackLB(this, ResId(         LB_APPBACKGROUND, *rResId.GetResMgr())),
500         aAppBackWN(this, ResId(         WN_APPBACKGROUND, *rResId.GetResMgr())),
501         aObjBoundCB(this, ResId(        CB_OBJECTBOUNDARIES, *rResId.GetResMgr())),
502         aObjBoundLB(this, ResId(        LB_OBJECTBOUNDARIES, *rResId.GetResMgr())),
503         aObjBoundWN(this, ResId(        WN_OBJECTBOUNDARIES, *rResId.GetResMgr())),
504         aTableBoundCB(this, ResId(      CB_TABLEBOUNDARIES, *rResId.GetResMgr())),
505         aTableBoundLB(this, ResId(      LB_TABLEBOUNDARIES, *rResId.GetResMgr())),
506         aTableBoundWN(this, ResId(      WN_TABLEBOUNDARIES, *rResId.GetResMgr())),
507         aFontColorFT(this, ResId(       FT_FONTCOLOR, *rResId.GetResMgr())),
508         aFontColorLB(this, ResId(       LB_FONTCOLOR, *rResId.GetResMgr())),
509         aFontColorWN(this, ResId(       WN_FONTCOLOR, *rResId.GetResMgr())),
510         aLinksCB(this, ResId(           CB_LINKS, *rResId.GetResMgr())),
511         aLinksLB(this, ResId(           LB_LINKS, *rResId.GetResMgr())),
512         aLinksWN(this, ResId(           WN_LINKS, *rResId.GetResMgr())),
513         aLinksVisitedCB(this, ResId(    CB_LINKSVISITED, *rResId.GetResMgr())),
514         aLinksVisitedLB(this, ResId(    LB_LINKSVISITED, *rResId.GetResMgr())),
515         aLinksVisitedWN(this, ResId(    WN_LINKSVISITED, *rResId.GetResMgr())),
516         aSpellFT(this, ResId(        FT_SPELL, *rResId.GetResMgr())),
517         aSpellLB(this, ResId(        LB_SPELL, *rResId.GetResMgr())),
518         aSpellWN(this, ResId(        WN_SPELL, *rResId.GetResMgr())),
519         aSmarttagsFT(this, ResId(        FT_SMARTTAGS, *rResId.GetResMgr() )),
520         aSmarttagsLB(this, ResId(        LB_SMARTTAGS, *rResId.GetResMgr() )),
521         aSmarttagsWN(this, ResId(        WN_SMARTTAGS, *rResId.GetResMgr() )),
522         aWriterBackWN(this),
523         aWriterFT(this, ResId(FT_WRITER, *rResId.GetResMgr())),
524         aWrtTextGridFT(this, ResId(     FT_WRITERTEXTGRID, *rResId.GetResMgr())),
525         aWrtTextGridLB(this, ResId(     LB_WRITERTEXTGRID, *rResId.GetResMgr())),
526         aWrtTextGridWN(this, ResId(     WN_WRITERTEXTGRID, *rResId.GetResMgr())),
527         aWrtFieldCB(this, ResId(        CB_WRITERFIELDSHADINGS, *rResId.GetResMgr())),
528         aWrtFieldLB(this, ResId(        LB_WRITERFIELDSHADINGS, *rResId.GetResMgr())),
529         aWrtFieldWN(this, ResId(        WN_WRITERFIELDSHADINGS, *rResId.GetResMgr())),
530         aWrtIdxShadingBackCB(this, ResId(  CB_WRITERIDXSHADINGS, *rResId.GetResMgr())),
531         aWrtIdxShadingBackLB(this, ResId(  LB_WRITERIDXSHADINGS, *rResId.GetResMgr())),
532         aWrtIdxShadingBackWN(this, ResId(  WN_WRITERIDXSHADINGS, *rResId.GetResMgr())),
533         aWrtScriptIndicatorFT(this, ResId(      FT_WRITERSCRIPTINDICATOR, *rResId.GetResMgr())),
534         aWrtScriptIndicatorLB(this, ResId(      LB_WRITERSCRIPTINDICATOR, *rResId.GetResMgr())),
535         aWrtScriptIndicatorWN(this, ResId(      WN_WRITERSCRIPTINDICATOR, *rResId.GetResMgr())),
536         aWrtSectionBoundCB(this, ResId(      CB_WRITERSECTIONBOUNDARIES, *rResId.GetResMgr())),
537         aWrtSectionBoundLB(this, ResId(      LB_WRITERSECTIONBOUNDARIES, *rResId.GetResMgr())),
538         aWrtSectionBoundWN(this, ResId(      WN_WRITERSECTIONBOUNDARIES, *rResId.GetResMgr())),
539         aWrtPageBreaksFT(this, ResId(      FT_WRITERPAGEBREAKS, *rResId.GetResMgr())),
540         aWrtPageBreaksLB(this, ResId(      LB_WRITERPAGEBREAKS, *rResId.GetResMgr())),
541         aWrtPageBreaksWN(this, ResId(      WN_WRITERPAGEBREAKS, *rResId.GetResMgr())),
542         aWrtDirectCrsrFT(this, ResId(      FT_WRITERDIRECTCURSOR, *rResId.GetResMgr())),
543         aWrtDirectCrsrLB(this, ResId(      LB_WRITERDIRECTCURSOR, *rResId.GetResMgr())),
544         aWrtDirectCrsrWN(this, ResId(      WN_WRITERDIRECTCURSOR, *rResId.GetResMgr())),
545         aHTMLBackWN(this),
546         aHTMLFT(this, ResId(            FT_HTML, *rResId.GetResMgr())),
547         aHTMLSGMLFT(this, ResId(        FT_HTMLSGML, *rResId.GetResMgr())),
548         aHTMLSGMLLB(this, ResId(        LB_HTMLSGML, *rResId.GetResMgr())),
549         aHTMLSGMLWN(this, ResId(        WN_HTMLSGML, *rResId.GetResMgr())),
550         aHTMLCommentFT(this, ResId(     FT_HTMLCOMMENT, *rResId.GetResMgr())),
551         aHTMLCommentLB(this, ResId(     LB_HTMLCOMMENT, *rResId.GetResMgr())),
552         aHTMLCommentWN(this, ResId(     WN_HTMLCOMMENT, *rResId.GetResMgr())),
553         aHTMLKeywdFT(this, ResId(       FT_HTMLKEYWORD, *rResId.GetResMgr())),
554         aHTMLKeywdLB(this, ResId(       LB_HTMLKEYWORD, *rResId.GetResMgr())),
555         aHTMLKeywdWN(this, ResId(       WN_HTMLKEYWORD, *rResId.GetResMgr())),
556         aHTMLUnknownFT(this, ResId(     FT_HTMLUNKNOWN, *rResId.GetResMgr())),
557         aHTMLUnknownLB(this, ResId(     LB_HTMLUNKNOWN, *rResId.GetResMgr())),
558         aHTMLUnknownWN(this, ResId(     WN_HTMLUNKNOWN, *rResId.GetResMgr())),
559         aCalcBackWN(this),
560         aCalcFT(this, ResId(    FT_CALC, *rResId.GetResMgr())),
561         aCalcGridFT(this, ResId(        FT_CALCGRID, *rResId.GetResMgr())),
562         aCalcGridLB(this, ResId(        LB_CALCGRID, *rResId.GetResMgr())),
563         aCalcGridWN(this, ResId(        WN_CALCGRID, *rResId.GetResMgr())),
564         aCalcPageBreakFT(this, ResId(   FT_CALCPAGEBREAK, *rResId.GetResMgr())),
565         aCalcPageBreakLB(this, ResId(   LB_CALCPAGEBREAK, *rResId.GetResMgr())),
566         aCalcPageBreakWN(this, ResId(   WN_CALCPAGEBREAK, *rResId.GetResMgr())),
567         aCalcPageBreakManualFT(this, ResId(   FT_CALCPAGEBREAKMANUAL, *rResId.GetResMgr())),
568         aCalcPageBreakManualLB(this, ResId(   LB_CALCPAGEBREAKMANUAL, *rResId.GetResMgr())),
569         aCalcPageBreakManualWN(this, ResId(   WN_CALCPAGEBREAKMANUAL, *rResId.GetResMgr())),
570         aCalcPageBreakAutoFT(this, ResId(   FT_CALCPAGEBREAKAUTO, *rResId.GetResMgr())),
571         aCalcPageBreakAutoLB(this, ResId(   LB_CALCPAGEBREAKAUTO, *rResId.GetResMgr())),
572         aCalcPageBreakAutoWN(this, ResId(   WN_CALCPAGEBREAKAUTO, *rResId.GetResMgr())),
573         aCalcDetectiveFT(this, ResId(   FT_CALCDETECTIVE, *rResId.GetResMgr())),
574         aCalcDetectiveLB(this, ResId(   LB_CALCDETECTIVE, *rResId.GetResMgr())),
575         aCalcDetectiveWN(this, ResId(   WN_CALCDETECTIVE, *rResId.GetResMgr())),
576         aCalcDetectiveErrorFT(this, ResId(   FT_CALCDETECTIVEERROR, *rResId.GetResMgr())),
577         aCalcDetectiveErrorLB(this, ResId(   LB_CALCDETECTIVEERROR, *rResId.GetResMgr())),
578         aCalcDetectiveErrorWN(this, ResId(   WN_CALCDETECTIVEERROR, *rResId.GetResMgr())),
579         aCalcReferenceFT(this, ResId(   FT_CALCREFERENCE, *rResId.GetResMgr())),
580         aCalcReferenceLB(this, ResId(   LB_CALCREFERENCE, *rResId.GetResMgr())),
581         aCalcReferenceWN(this, ResId(   WN_CALCREFERENCE, *rResId.GetResMgr())),
582         aCalcNotesBackFT(this, ResId(   FT_CALCNOTESBACKGROUND, *rResId.GetResMgr())),
583         aCalcNotesBackLB(this, ResId(   LB_CALCNOTESBACKGROUND, *rResId.GetResMgr())),
584         aCalcNotesBackWN(this, ResId(   WN_CALCNOTESBACKGROUND, *rResId.GetResMgr())),
585         aDrawBackWN(this),
586         aDrawFT(this, ResId(            FT_DRAW, *rResId.GetResMgr())),
587         aDrawGridFT(this, ResId(        FT_DRAWGRID, *rResId.GetResMgr())),
588         aDrawGridLB(this, ResId(        LB_DRAWGRID, *rResId.GetResMgr())),
589         aDrawGridWN(this, ResId(        WN_DRAWGRID, *rResId.GetResMgr())),
590         aBasicBackWN(this),
591         aBasicFT(this, ResId(            FT_BASIC, *rResId.GetResMgr())),
592         aBasicIdentifierFT(this, ResId( FT_BASICIDENTIFIER, *rResId.GetResMgr())),
593         aBasicIdentifierLB(this, ResId( LB_BASICIDENTIFIER, *rResId.GetResMgr())),
594         aBasicIdentifierWN(this, ResId( WN_BASICIDENTIFIER, *rResId.GetResMgr())),
595         aBasicCommentFT(this, ResId( FT_BASICCOMMENT, *rResId.GetResMgr())),
596         aBasicCommentLB(this, ResId( LB_BASICCOMMENT, *rResId.GetResMgr())),
597         aBasicCommentWN(this, ResId( WN_BASICCOMMENT, *rResId.GetResMgr())),
598         aBasicNumberFT(this, ResId( FT_BASICNUMBER, *rResId.GetResMgr())),
599         aBasicNumberLB(this, ResId( LB_BASICNUMBER, *rResId.GetResMgr())),
600         aBasicNumberWN(this, ResId( WN_BASICNUMBER, *rResId.GetResMgr())),
601         aBasicStringFT(this, ResId( FT_BASICSTRING, *rResId.GetResMgr())),
602         aBasicStringLB(this, ResId( LB_BASICSTRING, *rResId.GetResMgr())),
603         aBasicStringWN(this, ResId( WN_BASICSTRING, *rResId.GetResMgr())),
604         aBasicOperatorFT(this, ResId( FT_BASICOPERATOR, *rResId.GetResMgr())),
605         aBasicOperatorLB(this, ResId( LB_BASICOPERATOR, *rResId.GetResMgr())),
606         aBasicOperatorWN(this, ResId( WN_BASICOPERATOR, *rResId.GetResMgr())),
607         aBasicKeywordFT(this, ResId( FT_BASICKEYWORD, *rResId.GetResMgr())),
608         aBasicKeywordLB(this, ResId( LB_BASICKEYWORD, *rResId.GetResMgr())),
609         aBasicKeywordWN(this, ResId( WN_BASICKEYWORD, *rResId.GetResMgr())),
610         aBasicErrorFT(this, ResId( FT_BASICERROR, *rResId.GetResMgr())),
611         aBasicErrorLB(this, ResId( LB_BASICERROR, *rResId.GetResMgr())),
612         aBasicErrorWN(this, ResId( WN_BASICERROR, *rResId.GetResMgr())),
613 
614 		aSQLBackWN(this),
615 		aSQLFT(this, ResId(            FT_SQL_COMMAND, *rResId.GetResMgr())),
616 		aSQLIdentifierFT(this, ResId( FT_SQLIDENTIFIER, *rResId.GetResMgr())),
617         aSQLIdentifierLB(this, ResId( LB_SQLIDENTIFIER, *rResId.GetResMgr())),
618         aSQLIdentifierWN(this, ResId( WN_SQLIDENTIFIER, *rResId.GetResMgr())),
619 
620 		aSQLNumberFT(this, ResId( FT_SQLNUMBER, *rResId.GetResMgr())),
621         aSQLNumberLB(this, ResId( LB_SQLNUMBER, *rResId.GetResMgr())),
622         aSQLNumberWN(this, ResId( WN_SQLNUMBER, *rResId.GetResMgr())),
623 
624 		aSQLStringFT(this, ResId( FT_SQLSTRING, *rResId.GetResMgr())),
625         aSQLStringLB(this, ResId( LB_SQLSTRING, *rResId.GetResMgr())),
626         aSQLStringWN(this, ResId( WN_SQLSTRING, *rResId.GetResMgr())),
627 
628 		aSQLOperatorFT(this, ResId( FT_SQLOPERATOR, *rResId.GetResMgr())),
629         aSQLOperatorLB(this, ResId( LB_SQLOPERATOR, *rResId.GetResMgr())),
630         aSQLOperatorWN(this, ResId( WN_SQLOPERATOR, *rResId.GetResMgr())),
631 
632 		aSQLKeywordFT(this, ResId( FT_SQLKEYWORD, *rResId.GetResMgr())),
633         aSQLKeywordLB(this, ResId( LB_SQLKEYWORD, *rResId.GetResMgr())),
634         aSQLKeywordWN(this, ResId( WN_SQLKEYWORD, *rResId.GetResMgr())),
635 
636 		aSQLParameterFT(this, ResId( FT_SQLPARAMETER, *rResId.GetResMgr())),
637         aSQLParameterLB(this, ResId( LB_SQLPARAMETER, *rResId.GetResMgr())),
638         aSQLParameterWN(this, ResId( WN_SQLPARAMETER, *rResId.GetResMgr())),
639 
640 		aSQLCommentFT(this, ResId( FT_SQLCOMMENT, *rResId.GetResMgr())),
641         aSQLCommentLB(this, ResId( LB_SQLCOMMENT, *rResId.GetResMgr())),
642         aSQLCommentWN(this, ResId( WN_SQLCOMMENT, *rResId.GetResMgr()))
643 {
644 	aFixedTexts.resize(ColorConfigEntryCount);
645 	aCheckBoxes.resize(ColorConfigEntryCount);
646 	aColorBoxes.resize(ColorConfigEntryCount);
647 	aWindows.resize(ColorConfigEntryCount);
648 
649     aFixedTexts[DOCCOLOR         ] = &aDocColorFT;
650     aCheckBoxes[DOCBOUNDARIES       ] = &aDocBoundCB             ;
651     aFixedTexts[APPBACKGROUND    ] = &aAppBackFT;
652     aCheckBoxes[OBJECTBOUNDARIES    ] = &aObjBoundCB             ;
653     aCheckBoxes[TABLEBOUNDARIES     ] = &aTableBoundCB           ;
654     aFixedTexts[FONTCOLOR           ] = &aFontColorFT            ;
655     aCheckBoxes[LINKS               ] = &aLinksCB                ;
656     aCheckBoxes[LINKSVISITED        ] = &aLinksVisitedCB         ;
657     aFixedTexts[SPELL            ]=& aSpellFT;
658     aFixedTexts[SMARTTAGS        ]=& aSmarttagsFT;
659     aFixedTexts[WRITERTEXTGRID   ]=& aWrtTextGridFT;
660     aCheckBoxes[WRITERFIELDSHADINGS ] = &aWrtFieldCB             ;
661     aCheckBoxes[WRITERIDXSHADINGS   ] = &aWrtIdxShadingBackCB       ;
662     aFixedTexts[WRITERDIRECTCURSOR  ]=& aWrtDirectCrsrFT;
663     aFixedTexts[WRITERSCRIPTINDICATOR   ]=& aWrtScriptIndicatorFT;
664     aCheckBoxes[WRITERSECTIONBOUNDARIES ]=& aWrtSectionBoundCB;
665     aFixedTexts[HTMLSGML         ]=& aHTMLSGMLFT;
666     aFixedTexts[HTMLCOMMENT      ]=& aHTMLCommentFT;
667     aFixedTexts[HTMLKEYWORD      ]=& aHTMLKeywdFT;
668     aFixedTexts[HTMLUNKNOWN      ]=& aHTMLUnknownFT;
669     aFixedTexts[CALCGRID            ] = &aCalcGridFT             ;
670     aFixedTexts[CALCPAGEBREAK    ] = &aCalcPageBreakFT;
671     aFixedTexts[CALCPAGEBREAKMANUAL    ] = &aCalcPageBreakManualFT;
672     aFixedTexts[CALCPAGEBREAKAUTOMATIC ] = &aCalcPageBreakAutoFT;
673     aFixedTexts[CALCDETECTIVE    ]=& aCalcDetectiveFT;
674     aFixedTexts[CALCDETECTIVEERROR    ]=& aCalcDetectiveErrorFT;
675     aFixedTexts[CALCREFERENCE    ]=& aCalcReferenceFT;
676     aFixedTexts[CALCNOTESBACKGROUND  ]=& aCalcNotesBackFT;
677     aFixedTexts[WRITERPAGEBREAKS] = &aWrtPageBreaksFT;
678     aFixedTexts[DRAWGRID            ] = &aDrawGridFT             ;
679     aFixedTexts[BASICIDENTIFIER ] = &aBasicIdentifierFT;
680     aFixedTexts[BASICCOMMENT    ] = &aBasicCommentFT;
681     aFixedTexts[BASICNUMBER     ] = &aBasicNumberFT;
682     aFixedTexts[BASICSTRING     ] = &aBasicStringFT;
683     aFixedTexts[BASICOPERATOR   ] = &aBasicOperatorFT;
684     aFixedTexts[BASICKEYWORD    ] = &aBasicKeywordFT;
685     aFixedTexts[BASICERROR		] = &aBasicErrorFT;
686 	aFixedTexts[SQLIDENTIFIER	] = &aSQLIdentifierFT;
687 	aFixedTexts[SQLNUMBER		] = &aSQLNumberFT;
688 	aFixedTexts[SQLSTRING		] = &aSQLStringFT;
689 	aFixedTexts[SQLOPERATOR		] = &aSQLOperatorFT;
690 	aFixedTexts[SQLKEYWORD		] = &aSQLKeywordFT;
691 	aFixedTexts[SQLPARAMETER	] = &aSQLParameterFT;
692 	aFixedTexts[SQLCOMMENT		] = &aSQLCommentFT;
693 
694 	aColorBoxes[DOCCOLOR            ] = &aDocColorLB             ;
695     aColorBoxes[DOCBOUNDARIES       ] = &aDocBoundLB             ;
696     aColorBoxes[APPBACKGROUND       ] = &aAppBackLB              ;
697     aColorBoxes[OBJECTBOUNDARIES    ] = &aObjBoundLB             ;
698     aColorBoxes[TABLEBOUNDARIES     ] = &aTableBoundLB           ;
699     aColorBoxes[FONTCOLOR           ] = &aFontColorLB            ;
700     aColorBoxes[LINKS               ] = &aLinksLB                ;
701     aColorBoxes[LINKSVISITED        ] = &aLinksVisitedLB         ;
702     aColorBoxes[SPELL               ] = &aSpellLB             ;
703     aColorBoxes[SMARTTAGS           ] = &aSmarttagsLB             ;
704     aColorBoxes[WRITERTEXTGRID      ] = &aWrtTextGridLB          ;
705     aColorBoxes[WRITERFIELDSHADINGS ] = &aWrtFieldLB             ;
706     aColorBoxes[WRITERIDXSHADINGS   ] = &aWrtIdxShadingBackLB       ;
707     aColorBoxes[WRITERDIRECTCURSOR  ] = &aWrtDirectCrsrLB           ;
708     aColorBoxes[WRITERSCRIPTINDICATOR    ] = &aWrtScriptIndicatorLB           ;
709     aColorBoxes[WRITERSECTIONBOUNDARIES  ] = &aWrtSectionBoundLB           ;
710     aColorBoxes[WRITERPAGEBREAKS] = &aWrtPageBreaksLB;
711     aColorBoxes[HTMLSGML            ] = &aHTMLSGMLLB             ;
712     aColorBoxes[HTMLCOMMENT         ] = &aHTMLCommentLB          ;
713     aColorBoxes[HTMLKEYWORD         ] = &aHTMLKeywdLB            ;
714     aColorBoxes[HTMLUNKNOWN         ] = &aHTMLUnknownLB          ;
715     aColorBoxes[CALCGRID            ] = &aCalcGridLB             ;
716     aColorBoxes[CALCPAGEBREAK       ] = &aCalcPageBreakLB       ;
717     aColorBoxes[CALCPAGEBREAKMANUAL ] = &aCalcPageBreakManualLB       ;
718     aColorBoxes[CALCPAGEBREAKAUTOMATIC]= &aCalcPageBreakAutoLB       ;
719     aColorBoxes[CALCDETECTIVE       ] = &aCalcDetectiveLB        ;
720     aColorBoxes[CALCDETECTIVEERROR  ] = &aCalcDetectiveErrorLB        ;
721     aColorBoxes[CALCREFERENCE       ] = &aCalcReferenceLB        ;
722     aColorBoxes[CALCNOTESBACKGROUND     ] = &aCalcNotesBackLB            ;
723     aColorBoxes[DRAWGRID            ] = &aDrawGridLB             ;
724     aColorBoxes[BASICIDENTIFIER		] = &aBasicIdentifierLB;
725     aColorBoxes[BASICCOMMENT		] = &aBasicCommentLB;
726     aColorBoxes[BASICNUMBER			] = &aBasicNumberLB;
727     aColorBoxes[BASICSTRING			] = &aBasicStringLB;
728     aColorBoxes[BASICOPERATOR		] = &aBasicOperatorLB;
729     aColorBoxes[BASICKEYWORD		] = &aBasicKeywordLB;
730     aColorBoxes[BASICERROR			] = &aBasicErrorLB;
731 	aColorBoxes[SQLIDENTIFIER		] = &aSQLIdentifierLB;
732 	aColorBoxes[SQLNUMBER			] = &aSQLNumberLB;
733 	aColorBoxes[SQLSTRING			] = &aSQLStringLB;
734 	aColorBoxes[SQLOPERATOR			] = &aSQLOperatorLB;
735 	aColorBoxes[SQLKEYWORD			] = &aSQLKeywordLB;
736 	aColorBoxes[SQLPARAMETER		] = &aSQLParameterLB;
737 	aColorBoxes[SQLCOMMENT			] = &aSQLCommentLB;
738 
739 	aWindows[DOCCOLOR            ] = &aDocColorWN             ;
740     aWindows[DOCBOUNDARIES       ] = &aDocBoundWN             ;
741     aWindows[APPBACKGROUND       ] = &aAppBackWN              ;
742     aWindows[OBJECTBOUNDARIES    ] = &aObjBoundWN             ;
743     aWindows[TABLEBOUNDARIES     ] = &aTableBoundWN           ;
744     aWindows[FONTCOLOR           ] = &aFontColorWN            ;
745     aWindows[LINKS               ] = &aLinksWN                ;
746     aWindows[LINKSVISITED        ] = &aLinksVisitedWN         ;
747     aWindows[SPELL               ] = &aSpellWN             ;
748     aWindows[SMARTTAGS           ] = &aSmarttagsWN             ;
749     aWindows[WRITERTEXTGRID      ] = &aWrtTextGridWN          ;
750     aWindows[WRITERFIELDSHADINGS ] = &aWrtFieldWN             ;
751     aWindows[WRITERIDXSHADINGS   ] = &aWrtIdxShadingBackWN       ;
752     aWindows[WRITERDIRECTCURSOR  ] = &aWrtDirectCrsrWN           ;
753     aWindows[WRITERSCRIPTINDICATOR    ] = &aWrtScriptIndicatorWN           ;
754     aWindows[WRITERSECTIONBOUNDARIES  ] = &aWrtSectionBoundWN           ;
755     aWindows[WRITERPAGEBREAKS] = &aWrtPageBreaksWN;
756     aWindows[HTMLSGML            ] = &aHTMLSGMLWN             ;
757     aWindows[HTMLCOMMENT         ] = &aHTMLCommentWN          ;
758     aWindows[HTMLKEYWORD         ] = &aHTMLKeywdWN            ;
759     aWindows[HTMLUNKNOWN         ] = &aHTMLUnknownWN          ;
760     aWindows[CALCGRID            ] = &aCalcGridWN             ;
761     aWindows[CALCPAGEBREAK       ] = &aCalcPageBreakWN        ;
762     aWindows[CALCPAGEBREAKMANUAL ] = &aCalcPageBreakManualWN        ;
763     aWindows[CALCPAGEBREAKAUTOMATIC] = &aCalcPageBreakAutoWN        ;
764     aWindows[CALCDETECTIVE       ] = &aCalcDetectiveWN        ;
765     aWindows[CALCDETECTIVEERROR  ] = &aCalcDetectiveErrorWN        ;
766     aWindows[CALCREFERENCE       ] = &aCalcReferenceWN        ;
767     aWindows[CALCNOTESBACKGROUND ] = &aCalcNotesBackWN            ;
768     aWindows[DRAWGRID            ] = &aDrawGridWN             ;
769     aWindows[BASICIDENTIFIER     ] = &aBasicIdentifierWN;
770     aWindows[BASICCOMMENT        ] = &aBasicCommentWN;
771     aWindows[BASICNUMBER         ] = &aBasicNumberWN;
772     aWindows[BASICSTRING         ] = &aBasicStringWN;
773     aWindows[BASICOPERATOR       ] = &aBasicOperatorWN;
774     aWindows[BASICKEYWORD        ] = &aBasicKeywordWN;
775     aWindows[BASICERROR          ] = &aBasicErrorWN;
776 	aWindows[SQLIDENTIFIER		 ] = &aSQLIdentifierWN;
777 	aWindows[SQLNUMBER			 ] = &aSQLNumberWN;
778 	aWindows[SQLSTRING			 ] = &aSQLStringWN;
779 	aWindows[SQLOPERATOR	     ] = &aSQLOperatorWN;
780 	aWindows[SQLKEYWORD		     ] = &aSQLKeywordWN;
781 	aWindows[SQLPARAMETER	     ] = &aSQLParameterWN;
782 	aWindows[SQLCOMMENT		     ] = &aSQLCommentWN;
783 
784 	aChapters.push_back(&aGeneralFT); aChapterWins.push_back(&aGeneralBackWN);
785     aChapters.push_back(&aWriterFT);  aChapterWins.push_back(&aWriterBackWN);
786     aChapters.push_back(&aHTMLFT);    aChapterWins.push_back(&aHTMLBackWN);
787     aChapters.push_back(&aCalcFT);    aChapterWins.push_back(&aCalcBackWN);
788     aChapters.push_back(&aDrawFT);    aChapterWins.push_back(&aDrawBackWN);
789     aChapters.push_back(&aBasicFT);   aChapterWins.push_back(&aBasicBackWN);
790 	aChapters.push_back(&aSQLFT);   aChapterWins.push_back(&aSQLBackWN);
791 
792     // calculate heights of groups which can be hidden
793     aChapters[GROUP_WRITER  ]->SetGroupHeight( aChapters[GROUP_HTML]->GetPosPixel().Y() -  aChapters[GROUP_WRITER]->GetPosPixel().Y() );
794     aChapters[GROUP_HTML    ]->SetGroupHeight( aChapters[GROUP_CALC]->GetPosPixel().Y() -  aChapters[GROUP_HTML]->GetPosPixel().Y() );
795     aChapters[GROUP_CALC    ]->SetGroupHeight( aChapters[GROUP_DRAW]->GetPosPixel().Y() -  aChapters[GROUP_CALC]->GetPosPixel().Y() );
796     aChapters[GROUP_DRAW    ]->SetGroupHeight( aChapters[GROUP_BASIC]->GetPosPixel().Y() - aChapters[GROUP_DRAW]->GetPosPixel().Y() );
797 	aChapters[GROUP_BASIC   ]->SetGroupHeight( aChapters[GROUP_SQL]->GetPosPixel().Y() - aChapters[GROUP_BASIC]->GetPosPixel().Y() );
798 
799     ExtendedColorConfig aExtConfig;
800 	sal_Int32 nExtCount = aExtConfig.GetComponentCount();
801 	if ( nExtCount )
802 	{
803         // calculate position behind last chapter
804         sal_Int32 nLastY = aSQLCommentWN.GetPosPixel().Y() + aSQLCommentWN.GetSizePixel().Height();
805         nLastY = nLastY + LogicToPixel( Size( 0, 3 ), MAP_APPFONT ).Height();
806         // to calculate the number of lines
807         sal_Int32 nHeight = LogicToPixel( Size( 0, _LINE_HEIGHT ), MAP_APPFONT ).Height();
808         sal_Int32 nLineNum = nLastY / nHeight;
809 
810         Point aFixedPos = LogicToPixel( Point( _FT_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT );
811 		Point aLBPos = LogicToPixel( Point( _LB_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT );
812 		Size aFixedSize = LogicToPixel( Size( _FT_WIDTH , _FT_HEIGHT ), MAP_APPFONT );
813 		Size aLBSize = LogicToPixel( Size( _LB_WIDTH , _LB_HEIGHT ), MAP_APPFONT );
814 		Size aWinSize = LogicToPixel( Size( _WN_WIDTH , _WN_HEIGHT ), MAP_APPFONT );
815 
816 		for (sal_Int32 j = 0; j < nExtCount; ++j)
817 		{
818 			::rtl::OUString sComponentName = aExtConfig.GetComponentName(j);
819 			aChapterWins.push_back(new Window(this));
820 			::boost::shared_ptr<SvxExtFixedText_Impl> pTitle(new SvxExtFixedText_Impl(this,ResId(FT_SQL_COMMAND, *rResId.GetResMgr())));
821 			m_aExtensionTitles.push_back(pTitle);
822 			pTitle->SetPosSizePixel(LogicToPixel( Point( _FT_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aFixedSize);
823 			pTitle->SetText(aExtConfig.GetComponentDisplayName(sComponentName));
824 			aChapters.push_back(pTitle.get());
825 			++nLineNum;
826 			sal_Int32 nColorCount = aExtConfig.GetComponentColorCount(sComponentName);
827 			for (sal_Int32 i = 0; i < nColorCount; ++i,++nLineNum)
828 			{
829 				ExtendedColorConfigValue aColorEntry = aExtConfig.GetComponentColorConfigValue(sComponentName,i);
830 				FixedText* pFixedText = new FixedText(this,ResId(FT_BASICERROR, *rResId.GetResMgr()));
831 				pFixedText->SetPosSizePixel(LogicToPixel( Point( _FT_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aFixedSize);
832 				pFixedText->SetText(aColorEntry.getDisplayName());
833 				aFixedTexts.push_back(pFixedText);
834 				aCheckBoxes.push_back(NULL); // no checkboxes
835 				ColorListBox* pColorBox = new ColorListBox(this,ResId(LB_BASICERROR, *rResId.GetResMgr()));
836 				pColorBox->SetPosSizePixel(LogicToPixel( Point( _LB_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aLBSize);
837 				aColorBoxes.push_back(pColorBox);
838 				Window* pWin = new Window(this,ResId(WN_BASICERROR, *rResId.GetResMgr()));
839 				pWin->SetPosSizePixel(LogicToPixel( Point( _WN_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aWinSize);
840 				aWindows.push_back(pWin);
841 			} // for (sal_Int32 i = 0; i < nExtCount; ++i,++nLineNum)
842 		}
843 	}
844 
845 	FreeResource();
846 
847     Color TempColor(COL_TRANSPARENT);
848     Wallpaper aTransparentWall(TempColor);
849     sal_Int32 nWinWidth = GetSizePixel().Width();
850     sal_Int32 nFTHeight = aChapters[0]->GetSizePixel().Height();
851 	Color aBackColor;
852     const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
853     sal_Bool bHighContrast = rStyleSettings.GetHighContrastMode();
854     if ( bHighContrast )
855         aBackColor = rStyleSettings.GetShadowColor();
856 	else
857 		aBackColor = Color( COL_LIGHTGRAY);
858 	sal_Int32 nCount = aChapterWins.size();
859     for(sal_Int32 i = 0; i < nCount; ++i)
860     {
861         if ( lcl_isGroupVisible( i, m_aModuleOptions ) )
862         {
863             Font aFont = aChapters[i]->GetFont();
864             aFont.SetWeight(WEIGHT_BOLD);
865             aChapters[i]->SetFont(aFont);
866             aChapters[i]->SetBackground(aTransparentWall);
867             aChapterWins[i]->SetPosSizePixel( Point(0, aChapters[i]->GetPosPixel().Y()),
868                                 Size(nWinWidth, nFTHeight));
869             aChapterWins[i]->SetBackground(Wallpaper(aBackColor));
870             aChapterWins[i]->Show();
871         }
872         else
873         {
874             aChapters[i]->Hide();
875             aChapterWins[i]->Hide();
876         }
877     }
878     Color aTextColor;
879     sal_Bool bSetTextColor = sal_False;
880     //#104195# when the window color is the same as the text color it has to be changed
881     Color aWinCol = rStyleSettings.GetWindowColor();
882     Color aRCheckCol = rStyleSettings.GetRadioCheckTextColor();
883     if(aWinCol == aRCheckCol )
884     {
885         bSetTextColor = sal_True;
886         aRCheckCol.Invert();
887         //if inversion didn't work (gray) then it's set to black
888         if(aRCheckCol == aWinCol)
889             aRCheckCol = Color(COL_BLACK);
890     } // if(aWinCol == aRCheckCol )
891 	nCount = aFixedTexts.size();
892     sal_Int16 nGroup = GROUP_UNKNOWN;
893     for( sal_Int32 i = 0; i < nCount; i++ )
894     {
895         if(ANCHOR == i)
896             continue;
897         sal_Int16 nNewGroup = lcl_getGroup(i);
898         sal_Bool bShow = lcl_isGroupVisible( nNewGroup, m_aModuleOptions );
899 
900         if ( nNewGroup > nGroup )
901         {
902             nGroup = nNewGroup;
903             if ( bShow && nGroup >= GROUP_CALC )
904             {
905                 SetNewPosition( i, aChapters[nGroup] );
906                 SetNewPosition( i, aChapterWins[nGroup] );
907             }
908         }
909         if(aCheckBoxes[i])
910         {
911             if ( bShow )
912                 SetNewPosition( i, aCheckBoxes[i] );
913             else
914                 aCheckBoxes[i]->Hide();
915             aCheckBoxes[i]->SetBackground(aTransparentWall);
916             aCheckBoxes[i]->SetHelpId( aColorCBHids[i] );
917             if(bSetTextColor)
918                 aCheckBoxes[i]->SetTextColor(aRCheckCol);
919         }
920         if(aFixedTexts[i])
921         {
922             if ( bShow )
923                 SetNewPosition( i, aFixedTexts[i] );
924             else
925                 aFixedTexts[i]->Hide();
926             aFixedTexts[i]->SetBackground(aTransparentWall);
927             if(bSetTextColor)
928                 aFixedTexts[i]->SetTextColor(aRCheckCol);
929         }
930         if(aWindows[i])
931         {
932             if ( bShow )
933                 SetNewPosition( i, aWindows[i] );
934             else
935                 aWindows[i]->Hide();
936             aWindows[i]->SetBorderStyle(WINDOW_BORDER_MONO);
937         }
938 
939         if ( aColorBoxes[i] )
940         {
941             if ( bShow )
942                 SetNewPosition( i, aColorBoxes[i] );
943             else
944                 aColorBoxes[i]->Hide();
945         }
946     }
947 
948     XColorListSharedPtr aColorTable(XPropertyListFactory::CreateSharedXColorList(SvtPathOptions().GetPalettePath()));
949     aColorBoxes[0]->InsertAutomaticEntry();
950     for( sal_Int32 i = 0; i < aColorTable->Count(); i++ )
951 	{
952         XColorEntry* pEntry = aColorTable->GetColor(i);
953         aColorBoxes[0]->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
954 	}
955 
956     aColorBoxes[0]->SetHelpId( aColorLBHids[0] );
957     aColorBoxes[0]->SetDropDownLineCount( 10 );
958     const sal_Int32 nColorLBHids = sizeof( aColorLBHids )/ sizeof( aColorLBHids[0] );
959 
960     for( sal_Int32 i = 1; i < nCount; i++ )
961     {
962         if( !aColorBoxes[i] )
963             continue;
964 
965         aColorBoxes[i]->CopyEntries( *aColorBoxes[0] );
966         if( i < nColorLBHids )
967             aColorBoxes[i]->SetHelpId( aColorLBHids[i] );
968         aColorBoxes[i]->SetDropDownLineCount( 10 );
969     }
970 }
971 /* -----------------------------27.03.2002 11:04------------------------------
972 
973  ---------------------------------------------------------------------------*/
~ColorConfigWindow_Impl()974 ColorConfigWindow_Impl::~ColorConfigWindow_Impl()
975 {
976 	aChapters.clear();
977 	::std::vector< SvxExtFixedText_Impl*>().swap(aChapters);
978 
979 
980 	sal_Int32 nCount = aFixedTexts.size();
981 	for (sal_Int32 i = ColorConfigEntryCount; i < nCount; ++i)
982 	{
983 		delete aFixedTexts[i];
984 		delete aCheckBoxes[i];
985 		delete aColorBoxes[i];
986 		delete aWindows[i];
987 	}
988 	for (sal_uInt32 i = GROUP_COUNT; i < aChapterWins.size(); ++i)
989 		delete aChapterWins[i];
990 	aChapterWins.clear();
991 	::std::vector< Window*>().swap(aChapterWins);
992 }
993 /* -----------------------------2002/06/20 12:48------------------------------
994 
995  ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)996 void ColorConfigWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt )
997 {
998     Window::DataChanged( rDCEvt );
999     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
1000          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
1001     {
1002         const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
1003         sal_Bool bHighContrast = rStyleSettings.GetHighContrastMode();
1004         Color aBackColor( bHighContrast ? COL_TRANSPARENT : COL_LIGHTGRAY);
1005 		::std::vector< Window* >::iterator aIter = aChapterWins.begin();
1006 		::std::vector< Window* >::iterator aEnd  = aChapterWins.end();
1007         for(;aIter != aEnd; ++aIter )
1008             (*aIter)->SetBackground(Wallpaper(aBackColor));
1009         SetBackground(Wallpaper(rStyleSettings.GetWindowColor()));
1010     }
1011 }
1012 /* -----------------------------2002/06/26 10:49------------------------------
1013 
1014  ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)1015 void SvxExtFixedText_Impl::DataChanged(const DataChangedEvent& rDCEvt)
1016 {
1017     FixedText::DataChanged(rDCEvt);
1018     Color TempColor(COL_TRANSPARENT);
1019     Wallpaper aTransparentWall(TempColor);
1020     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
1021          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
1022     {
1023         Font aFont = GetFont();
1024         aFont.SetWeight(WEIGHT_BOLD);
1025         SetFont(aFont);
1026         SetBackground(aTransparentWall);
1027     }
1028 }
1029 
SetNewPosition(sal_Int32 _nFeature,Window * _pWin)1030 void ColorConfigWindow_Impl::SetNewPosition( sal_Int32 _nFeature, Window* _pWin )
1031 {
1032     DBG_ASSERT( _pWin, "ColorConfigWindow_Impl::SetNewPosition(): no window" );
1033 
1034     // calculate the overall height of the invisible groups
1035     long nDelta = 0;
1036     sal_Int16 nGroup = lcl_getGroup( _nFeature ) - 1;
1037     while ( nGroup > 0 ) // GROUP_GENERAL (0) is always visible
1038     {
1039         if ( !lcl_isGroupVisible( nGroup, m_aModuleOptions ) )
1040             nDelta += aChapters[nGroup]->GetGroupHeight();
1041         nGroup--;
1042     }
1043 
1044     // move this window to its new position
1045     if ( nDelta > 0 )
1046     {
1047         Point aPos = _pWin->GetPosPixel();
1048         aPos.Y() -= nDelta;
1049         _pWin->SetPosPixel( aPos );
1050     }
1051 }
1052 
1053 /* -----------------------------08.04.2002 17:10------------------------------
1054 
1055  ---------------------------------------------------------------------------*/
Command(const CommandEvent & rCEvt)1056 void ColorConfigWindow_Impl::Command( const CommandEvent& rCEvt )
1057 {
1058     GetParent()->Command(rCEvt);
1059 }
1060 /* -----------------------------25.03.2002 10:44------------------------------
1061 
1062  ---------------------------------------------------------------------------*/
1063 class ColorConfigCtrl_Impl : public Control
1064 {
1065     HeaderBar               aHeaderHB;
1066     ScrollBar               aVScroll;
1067 
1068     String                  sOn;
1069     String                  sUIElem;
1070     String                  sColSetting;
1071     String                  sPreview;
1072     ColorConfigWindow_Impl  aScrollWindow;
1073 
1074     EditableColorConfig*			pColorConfig;
1075 	EditableExtendedColorConfig*	pExtColorConfig;
1076 
1077     long            nScrollPos;
1078 
1079     DECL_LINK(ScrollHdl, ScrollBar*);
1080     DECL_LINK(ClickHdl, CheckBox*);
1081     DECL_LINK(ColorHdl, ColorListBox*);
1082     DECL_LINK(ControlFocusHdl, Control*);
1083 
1084     virtual long        PreNotify( NotifyEvent& rNEvt );
1085     virtual void        Command( const CommandEvent& rCEvt );
1086     virtual void        DataChanged( const DataChangedEvent& rDCEvt );
1087 public:
1088     ColorConfigCtrl_Impl(Window* pParent, const ResId& rResId );
1089     ~ColorConfigCtrl_Impl();
1090 
SetConfig(EditableColorConfig & rConfig)1091     void SetConfig(EditableColorConfig& rConfig) {pColorConfig = &rConfig;}
SetExtendedConfig(EditableExtendedColorConfig & rConfig)1092 	void SetExtendedConfig(EditableExtendedColorConfig& rConfig) {pExtColorConfig = &rConfig;}
1093     void Update();
GetScrollPosition()1094     sal_Int32   GetScrollPosition() {return aVScroll.GetThumbPos();}
SetScrollPosition(sal_Int32 nSet)1095     void        SetScrollPosition(sal_Int32 nSet)
1096                     {
1097                         aVScroll.SetThumbPos(nSet);
1098                         ScrollHdl(&aVScroll);
1099                     }
1100 };
1101 /* -----------------------------25.03.2002 17:09------------------------------
1102 
1103  ---------------------------------------------------------------------------*/
ColorConfigCtrl_Impl(Window * pParent,const ResId & rResId)1104 ColorConfigCtrl_Impl::ColorConfigCtrl_Impl(
1105         Window* pParent, const ResId& rResId) :
1106         Control(pParent, rResId),
1107 
1108 
1109         aHeaderHB(this, WB_BUTTONSTYLE | WB_BOTTOMBORDER),
1110         aVScroll(this,      ResId(VB_VSCROLL, *rResId.GetResMgr())),
1111         sOn(                ResId(ST_ON, *rResId.GetResMgr())),
1112         sUIElem(            ResId(ST_UIELEM, *rResId.GetResMgr())),
1113         sColSetting(        ResId(ST_COLSET, *rResId.GetResMgr())),
1114         sPreview(           ResId(ST_PREVIEW, *rResId.GetResMgr())),
1115         aScrollWindow(this, ResId(WN_SCROLL, *rResId.GetResMgr())),
1116 
1117         pColorConfig(0),
1118 		pExtColorConfig(0),
1119         nScrollPos(0)
1120 {
1121     FreeResource();
1122 
1123     const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
1124     aScrollWindow.SetBackground(Wallpaper(rStyleSettings.GetFieldColor()));
1125 	aScrollWindow.SetHelpId( HID_OPTIONS_COLORCONFIG_COLORLIST_WIN );
1126     aVScroll.EnableDrag();
1127     aVScroll.Show();
1128     aHeaderHB.SetPosSizePixel(
1129         Point(0,0),
1130         Size(GetOutputSizePixel().Width(), aVScroll.GetPosPixel().Y()));
1131     sal_Int32 nFirstWidth = aScrollWindow.aGeneralFT.GetPosPixel().X();
1132     sal_Int32 nSecondWidth = aScrollWindow.aColorBoxes[0]->GetPosPixel().X() - nFirstWidth;
1133     sal_Int32 nThirdWidth = aScrollWindow.aWindows[0]->GetPosPixel().X() - nFirstWidth - nSecondWidth;
1134 
1135     const WinBits nHeadBits = HIB_VCENTER | HIB_FIXED| HIB_FIXEDPOS;
1136     aHeaderHB.InsertItem( 1, sOn, nFirstWidth, (sal_uInt16)nHeadBits|HIB_CENTER);
1137     aHeaderHB.InsertItem( 2, sUIElem, nSecondWidth, (sal_uInt16)nHeadBits|HIB_LEFT);
1138     aHeaderHB.InsertItem( 3, sColSetting, nThirdWidth, (sal_uInt16)nHeadBits|HIB_LEFT);
1139     aHeaderHB.InsertItem( 4, sPreview,
1140             aHeaderHB.GetSizePixel().Width() - nFirstWidth - nSecondWidth - nThirdWidth, (sal_uInt16)nHeadBits|HIB_LEFT);
1141     aHeaderHB.Show();
1142 
1143     aVScroll.SetRangeMin(0);
1144     sal_Int32 nScrollOffset = aScrollWindow.aColorBoxes[1]->GetPosPixel().Y() - aScrollWindow.aColorBoxes[0]->GetPosPixel().Y();
1145     sal_Int32 nVisibleEntries = aScrollWindow.GetSizePixel().Height() / nScrollOffset;
1146 
1147     aVScroll.SetRangeMax(aScrollWindow.aCheckBoxes.size() + aScrollWindow.aChapters.size() );
1148     // static: minus three for ANCHOR, DRAWFILL and DRAWDRAWING
1149     aVScroll.SetRangeMax( aVScroll.GetRangeMax() - 3 );
1150     // dynamic: calculate the hidden lines
1151     long nInvisibleLines = 0;
1152     sal_Int16 nGroup = GROUP_UNKNOWN;
1153     sal_Int32 nCount = aScrollWindow.aCheckBoxes.size();
1154     for ( sal_Int32 i = 0; i < nCount; i++ )
1155     {
1156         if ( ANCHOR == i || DRAWFILL == i || DRAWDRAWING == i ) // not used at the moment
1157             continue;
1158         sal_Int16 nNewGroup = lcl_getGroup(i);
1159         sal_Bool bVisible = lcl_isGroupVisible( nNewGroup, aScrollWindow.GetModuleOptions() );
1160         if ( !bVisible )
1161             nInvisibleLines++;
1162         if ( nNewGroup > nGroup )
1163         {
1164             nGroup = nNewGroup;
1165             if ( !bVisible )
1166                 nInvisibleLines++;
1167         }
1168     }
1169     aVScroll.SetRangeMax( aVScroll.GetRangeMax() - nInvisibleLines );
1170 
1171     aVScroll.SetPageSize( nVisibleEntries - 1 );
1172 	aVScroll.SetVisibleSize(nVisibleEntries);
1173     Link aScrollLink = LINK(this, ColorConfigCtrl_Impl, ScrollHdl);
1174     aVScroll.SetScrollHdl(aScrollLink);
1175     aVScroll.SetEndScrollHdl(aScrollLink);
1176 
1177     Link aCheckLink = LINK(this, ColorConfigCtrl_Impl, ClickHdl);
1178     Link aColorLink = LINK(this, ColorConfigCtrl_Impl, ColorHdl);
1179     Link aGetFocusLink = LINK(this, ColorConfigCtrl_Impl, ControlFocusHdl);
1180     for( sal_Int16 i = 0; i < nCount; i++ )
1181     {
1182         if(aScrollWindow.aColorBoxes[i])
1183 		{
1184 			aScrollWindow.aColorBoxes[i]->SetSelectHdl(aColorLink);
1185 			aScrollWindow.aColorBoxes[i]->SetGetFocusHdl(aGetFocusLink);
1186 		}
1187         if(aScrollWindow.aCheckBoxes[i])
1188         {
1189             aScrollWindow.aCheckBoxes[i]->SetClickHdl(aCheckLink);
1190             aScrollWindow.aCheckBoxes[i]->SetGetFocusHdl(aGetFocusLink);
1191         }
1192     }
1193 }
1194 /* -----------------------------27.03.2002 10:46------------------------------
1195 
1196  ---------------------------------------------------------------------------*/
~ColorConfigCtrl_Impl()1197 ColorConfigCtrl_Impl::~ColorConfigCtrl_Impl()
1198 {
1199 }
1200 /* -----------------------------25.03.2002 17:19------------------------------
1201 
1202  ---------------------------------------------------------------------------*/
Update()1203 void ColorConfigCtrl_Impl::Update()
1204 {
1205     DBG_ASSERT(pColorConfig, "Configuration not set" );
1206     sal_Int32 i;
1207     for( i = 0; i < ColorConfigEntryCount; i++ )
1208     {
1209         if(ANCHOR == i)
1210             continue;
1211         const ColorConfigValue& rColorEntry = pColorConfig->GetColorValue(ColorConfigEntry(i));
1212         if(COL_AUTO == (sal_uInt32)rColorEntry.nColor)
1213         {
1214 			if(aScrollWindow.aColorBoxes[i])
1215 				aScrollWindow.aColorBoxes[i]->SelectEntryPos(0);
1216             if(aScrollWindow.aWindows[i])
1217 				aScrollWindow.aWindows[i]->SetBackground(
1218 					Wallpaper(ColorConfig::GetDefaultColor((ColorConfigEntry) i)));
1219         }
1220         else
1221         {
1222             Color aColor(rColorEntry.nColor);
1223 			if(aScrollWindow.aColorBoxes[i])
1224 				aScrollWindow.aColorBoxes[i]->SelectEntry( aColor );
1225             if(aScrollWindow.aWindows[i])
1226 				aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor));
1227         }
1228         if(aScrollWindow.aWindows[i])
1229 			aScrollWindow.aWindows[i]->Invalidate();
1230         if(aScrollWindow.aCheckBoxes[i])
1231             aScrollWindow.aCheckBoxes[i]->Check(rColorEntry.bIsVisible);
1232     } // for( i = 0; i < ColorConfigEntryCount; i++ )
1233 
1234 
1235 	sal_Int32 nExtCount = pExtColorConfig->GetComponentCount();
1236 	sal_Int32 nCount = aScrollWindow.aCheckBoxes.size();
1237 	sal_Int32 nPos = 0;
1238 	i = ColorConfigEntryCount;
1239 	for (sal_Int32 j = 0; j < nExtCount; ++j)
1240 	{
1241 		::rtl::OUString sComponentName = pExtColorConfig->GetComponentName(j);
1242 		sal_Int32 nColorCount = pExtColorConfig->GetComponentColorCount(sComponentName);
1243 
1244 		for( sal_Int32 k = 0; i < nCount && k < nColorCount; ++i ,++nPos,++k)
1245 		{
1246             if(aScrollWindow.aColorBoxes[i])
1247             {
1248 			    ExtendedColorConfigValue aColorEntry = pExtColorConfig->GetComponentColorConfigValue(sComponentName,k);
1249 			    Color aColor(aColorEntry.getColor());
1250 			    if(aColorEntry.getDefaultColor() == aColorEntry.getColor() )
1251 			    {
1252     			    aScrollWindow.aColorBoxes[i]->SelectEntryPos(0);
1253 			    }
1254 			    else
1255 			    {
1256     			    aScrollWindow.aColorBoxes[i]->SelectEntry( aColor );
1257 			    }
1258 			    if(aScrollWindow.aWindows[i])
1259 				    aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor));
1260 
1261 			    if(aScrollWindow.aWindows[i])
1262 				    aScrollWindow.aWindows[i]->Invalidate();
1263             }
1264 		}
1265 	}
1266 }
1267 /* -----------------------------26.03.2002 12:55------------------------------
1268 
1269  ---------------------------------------------------------------------------*/
lcl_MoveAndShow(Window * pWindow,long nOffset,long nMaxVisible,bool _bShow)1270 sal_Bool lcl_MoveAndShow(Window* pWindow, long nOffset, long nMaxVisible, bool _bShow)
1271 {
1272     sal_Bool bHide = sal_True;
1273     if(pWindow)
1274     {
1275         Point aPos = pWindow->GetPosPixel();
1276         aPos.Y() += nOffset;
1277         pWindow->SetPosPixel(aPos);
1278 		if ( _bShow )
1279 			bHide = aPos.Y() > nMaxVisible || (aPos.Y() + pWindow->GetSizePixel().Height()) < 0;
1280         pWindow->Show(!bHide);
1281     }
1282     return !bHide;
1283 }
IMPL_LINK(ColorConfigCtrl_Impl,ScrollHdl,ScrollBar *,pScrollBar)1284 IMPL_LINK(ColorConfigCtrl_Impl, ScrollHdl, ScrollBar*, pScrollBar)
1285 {
1286     aScrollWindow.SetUpdateMode(sal_True);
1287     sal_Int16 i;
1288     long nOffset = aScrollWindow.aColorBoxes[1]->GetPosPixel().Y() - aScrollWindow.aColorBoxes[0]->GetPosPixel().Y();
1289     nOffset *= (nScrollPos - pScrollBar->GetThumbPos());
1290     nScrollPos = pScrollBar->GetThumbPos();
1291     const long nWindowHeight = aScrollWindow.GetSizePixel().Height();
1292     sal_Int16 nFirstVisible = -1;
1293     sal_Int16 nLastVisible = -1;
1294 	sal_Int32 nCount = aScrollWindow.aFixedTexts.size();
1295     for( i = 0; i < nCount; i++ )
1296     {
1297         if(ANCHOR == i)
1298             continue;
1299         Point aPos;
1300         //controls outside of the view need to be hidden to speed up accessibility tools
1301         bool bShowCtrl = ( lcl_isGroupVisible(
1302             lcl_getGroup(i), aScrollWindow.GetModuleOptions() ) != sal_False );
1303         lcl_MoveAndShow(aScrollWindow.aCheckBoxes[i], nOffset, nWindowHeight, bShowCtrl);
1304         lcl_MoveAndShow(aScrollWindow.aFixedTexts[i], nOffset, nWindowHeight, bShowCtrl);
1305         lcl_MoveAndShow(aScrollWindow.aWindows[i]   , nOffset, nWindowHeight, bShowCtrl);
1306         sal_Bool bShow = lcl_MoveAndShow(aScrollWindow.aColorBoxes[i], nOffset, nWindowHeight, bShowCtrl);
1307         if(bShow)
1308         {
1309             if(nFirstVisible == -1)
1310                 nFirstVisible = i;
1311             else
1312                 nLastVisible = i;
1313         }
1314     }
1315     //show the one prior to the first visible and the first after the last visible control
1316     //to enable KEY_TAB travelling
1317 
1318     if(nFirstVisible)
1319     {
1320         //skip gaps where no controls exist for the related ColorConfigEntry
1321         do
1322             --nFirstVisible;
1323         while(!aScrollWindow.aCheckBoxes[nFirstVisible] && !aScrollWindow.aColorBoxes[nFirstVisible] && nFirstVisible >= 0);
1324 
1325         if ( lcl_isGroupVisible(
1326                 lcl_getGroup( nFirstVisible ), aScrollWindow.GetModuleOptions() ) != sal_False )
1327 		{
1328 			if(aScrollWindow.aCheckBoxes[nFirstVisible])
1329 				aScrollWindow.aCheckBoxes[nFirstVisible]->Show();
1330 			if(aScrollWindow.aColorBoxes[nFirstVisible])
1331 				aScrollWindow.aColorBoxes[nFirstVisible]->Show();
1332 		}
1333     }
1334 
1335     if(nLastVisible < nCount - 1)
1336     {
1337         nLastVisible++;
1338         //skip gaps where no controls exist for the related ColorConfigEntry
1339         while(!aScrollWindow.aCheckBoxes[nLastVisible] && !aScrollWindow.aColorBoxes[nLastVisible] &&
1340                 nLastVisible < nCount - 1 )
1341             nLastVisible++;
1342         if ( nLastVisible < nCount )
1343         {
1344             if ( lcl_isGroupVisible(
1345                     lcl_getGroup( nLastVisible ), aScrollWindow.GetModuleOptions() ) != sal_False )
1346 			{
1347 				if(aScrollWindow.aCheckBoxes[nLastVisible])
1348 					aScrollWindow.aCheckBoxes[nLastVisible]->Show();
1349 				if(aScrollWindow.aColorBoxes[nLastVisible])
1350 					aScrollWindow.aColorBoxes[nLastVisible]->Show();
1351 			}
1352         }
1353     } // if(nLastVisible < nCount - 1)
1354 	sal_Int32 nChapterCount = aScrollWindow.aChapters.size();
1355     for( i = 0; i < nChapterCount; i++ )
1356     {
1357         Point aPos = aScrollWindow.aChapters[i]->GetPosPixel(); aPos.Y() += nOffset; aScrollWindow.aChapters[i]->SetPosPixel(aPos);
1358         aPos = aScrollWindow.aChapterWins[i]->GetPosPixel(); aPos.Y() += nOffset; aScrollWindow.aChapterWins[i]->SetPosPixel(aPos);
1359     }
1360     aScrollWindow.SetUpdateMode(sal_True);
1361     return 0;
1362 }
1363 /* -----------------------------29.04.2002 17:02------------------------------
1364 
1365  ---------------------------------------------------------------------------*/
PreNotify(NotifyEvent & rNEvt)1366 long ColorConfigCtrl_Impl::PreNotify( NotifyEvent& rNEvt )
1367 {
1368     if(rNEvt.GetType() == EVENT_COMMAND)
1369     {
1370         const CommandEvent* pCEvt = rNEvt.GetCommandEvent();
1371         sal_uInt16 nCmd = pCEvt->GetCommand();
1372         if( COMMAND_WHEEL == nCmd )
1373         {
1374             Command(*pCEvt);
1375             return 1;
1376         }
1377     }
1378     return Control::PreNotify(rNEvt);
1379 }
1380 /* -----------------------------08.04.2002 16:37------------------------------
1381 
1382  ---------------------------------------------------------------------------*/
Command(const CommandEvent & rCEvt)1383 void ColorConfigCtrl_Impl::Command( const CommandEvent& rCEvt )
1384 {
1385     switch ( rCEvt.GetCommand() )
1386 	{
1387 
1388         case COMMAND_WHEEL:
1389 		case COMMAND_STARTAUTOSCROLL:
1390 		case COMMAND_AUTOSCROLL:
1391         {
1392             const CommandWheelData* pWheelData = rCEvt.GetWheelData();
1393             if(pWheelData && !pWheelData->IsHorz() && COMMAND_WHEEL_ZOOM != pWheelData->GetMode())
1394             {
1395                 HandleScrollCommand( rCEvt, 0, &aVScroll );
1396             }
1397         }
1398         break;
1399         default:
1400             Control::Command(rCEvt);
1401     }
1402 }
1403 
1404 /* -----------------------------14.12.2005 12:37------------------------------
1405 
1406  ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)1407 void ColorConfigCtrl_Impl::DataChanged( const DataChangedEvent& rDCEvt )
1408 {
1409     Window::DataChanged( rDCEvt );
1410     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
1411          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
1412     {
1413         const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
1414         SetBackground(Wallpaper(rStyleSettings.GetFieldColor()));
1415     }
1416 }
1417 
1418 
1419 /* -----------------------------27.03.2002 11:43------------------------------
1420 
1421  ---------------------------------------------------------------------------*/
IMPL_LINK(ColorConfigCtrl_Impl,ClickHdl,CheckBox *,pBox)1422 IMPL_LINK(ColorConfigCtrl_Impl, ClickHdl, CheckBox*, pBox)
1423 {
1424     DBG_ASSERT(pColorConfig, "Configuration not set" );
1425 
1426     for( sal_Int32 i = 0; i < ColorConfigEntryCount; i++ )
1427     {
1428         if(ANCHOR == i)
1429             continue;
1430         if(aScrollWindow.aCheckBoxes[i] == pBox )
1431         {
1432             ColorConfigValue aBoundCol = pColorConfig->GetColorValue(ColorConfigEntry(i));
1433             aBoundCol.bIsVisible = pBox->IsChecked();
1434             pColorConfig->SetColorValue(ColorConfigEntry(i), aBoundCol);
1435             break;
1436         }
1437     } // for( sal_Int32 i = 0; i < ColorConfigEntryCount; i++ )
1438     return 0;
1439 }
1440 /* -----------------------------27.03.2002 11:43------------------------------
1441 
1442  ---------------------------------------------------------------------------*/
IMPL_LINK(ColorConfigCtrl_Impl,ColorHdl,ColorListBox *,pBox)1443 IMPL_LINK(ColorConfigCtrl_Impl, ColorHdl, ColorListBox*, pBox)
1444 {
1445     DBG_ASSERT(pColorConfig, "Configuration not set" );
1446 	sal_Int32 i = 0;
1447     for( ; i < ColorConfigEntryCount; i++ )
1448     {
1449         if(pBox && aScrollWindow.aColorBoxes[i] == pBox)
1450         {
1451             ColorConfigValue aColorEntry = pColorConfig->GetColorValue(ColorConfigEntry(i));
1452             if(!pBox->GetSelectEntryPos())
1453 			{
1454                 aColorEntry.nColor = COL_AUTO;
1455 				if(aScrollWindow.aWindows[i])
1456 					aScrollWindow.aWindows[i]->SetBackground(
1457 						Wallpaper(ColorConfig::GetDefaultColor((ColorConfigEntry) i)));
1458 			}
1459             else
1460             {
1461                 Color aColor = pBox->GetSelectEntryColor();		// #i14869# no Color&, 'cause it's a ref to a temp object on the stack!
1462                 aColorEntry.nColor = aColor.GetColor();
1463 				if(aScrollWindow.aWindows[i])
1464 					aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor));
1465             }
1466 			if(aScrollWindow.aWindows[i])
1467 				aScrollWindow.aWindows[i]->Invalidate();
1468             pColorConfig->SetColorValue(ColorConfigEntry(i), aColorEntry);
1469             break;
1470         }
1471     } // for( sal_Int32 i = 0; i < ColorConfigEntryCount; i++ )
1472 	sal_Int32 nExtCount = pExtColorConfig->GetComponentCount();
1473 	sal_Int32 nCount = aScrollWindow.aCheckBoxes.size();
1474 	sal_Int32 nPos = 0;
1475 	i = ColorConfigEntryCount;
1476 	for (sal_Int32 j = 0; j < nExtCount; ++j)
1477 	{
1478 		::rtl::OUString sComponentName = pExtColorConfig->GetComponentName(j);
1479 		sal_Int32 nColorCount = pExtColorConfig->GetComponentColorCount(sComponentName);
1480 
1481 		for( sal_Int32 k = 0; i < nCount && k < nColorCount; ++i ,++nPos,++k)
1482 		{
1483 			if(pBox && aScrollWindow.aColorBoxes[i] == pBox)
1484 			{
1485 				ExtendedColorConfigValue aColorEntry = pExtColorConfig->GetComponentColorConfigValue(sComponentName,k);
1486 				Color aColor = pBox->GetSelectEntryColor();		// #i14869# no Color&, 'cause it's a ref to a temp object on the stack!
1487 				aColorEntry.setColor(aColor.GetColor());
1488 				if( !pBox->GetSelectEntryPos() ) // auto color
1489                 {
1490 					aColorEntry.setColor(aColorEntry.getDefaultColor());
1491                     aColor.SetColor(aColorEntry.getColor());
1492                 }
1493 				if ( aScrollWindow.aWindows[i] )
1494                 {
1495 					aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor));
1496 					aScrollWindow.aWindows[i]->Invalidate();
1497                 }
1498 				pExtColorConfig->SetColorValue(sComponentName,aColorEntry);
1499 				break;
1500 			}
1501 		}
1502 	}
1503     return 0;
1504 }
IMPL_LINK(ColorConfigCtrl_Impl,ControlFocusHdl,Control *,pCtrl)1505 IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, Control*, pCtrl)
1506 {
1507     //determine whether a control is completely visible
1508     //and make it visible
1509     Point aCtrlPos(pCtrl->GetPosPixel());
1510 	sal_Int32 nWinHeight = aScrollWindow.GetSizePixel().Height();
1511 	if(0 != (GETFOCUS_TAB & pCtrl->GetGetFocusFlags() &&
1512 		(aCtrlPos.Y() < 0 ||
1513 			nWinHeight < aCtrlPos.Y() + aScrollWindow.aColorBoxes[0]->GetSizePixel().Height())))
1514     {
1515         long nThumbPos = aVScroll.GetThumbPos();
1516         if(nWinHeight < aCtrlPos.Y() + aScrollWindow.aColorBoxes[0]->GetSizePixel().Height())
1517         {
1518             //scroll down
1519             nThumbPos +=2;
1520         }
1521         else
1522         {
1523             //scroll up
1524             nThumbPos -= 2;
1525             if(nThumbPos < 0)
1526                 nThumbPos = 0;
1527         }
1528         aVScroll.SetThumbPos(nThumbPos);
1529         ScrollHdl(&aVScroll);
1530     }
1531     return 0;
1532 };
1533 /* -----------------------------25.03.2002 10:47------------------------------
1534 
1535  ---------------------------------------------------------------------------*/
SvxColorOptionsTabPage(Window * pParent,const SfxItemSet & rCoreSet)1536 SvxColorOptionsTabPage::SvxColorOptionsTabPage(
1537     Window* pParent, const SfxItemSet& rCoreSet) :
1538     SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_COLORCONFIG ), rCoreSet ),
1539        aColorSchemeFL(  this, CUI_RES( FL_COLORSCHEME ) ),
1540        aColorSchemeFT(  this, CUI_RES( FT_COLORSCHEME ) ),
1541        aColorSchemeLB(  this, CUI_RES( LB_COLORSCHEME ) ),
1542        aSaveSchemePB(   this, CUI_RES( PB_SAVESCHEME) ),
1543        aDeleteSchemePB( this, CUI_RES( PB_DELETESCHEME ) ),
1544        aCustomColorsFL( this, CUI_RES( FL_CUSTOMCOLORS ) ),
1545        bFillItemSetCalled(sal_False),
1546        pColorConfig(0),
1547 	   pExtColorConfig(0),
1548        pColorConfigCT(  new ColorConfigCtrl_Impl(this, CUI_RES( CT_COLORCONFIG ) ))
1549 {
1550 	FreeResource();
1551     aColorSchemeLB.SetSelectHdl(LINK(this, SvxColorOptionsTabPage, SchemeChangedHdl_Impl));
1552     Link aLk = LINK(this, SvxColorOptionsTabPage, SaveDeleteHdl_Impl );
1553     aSaveSchemePB.SetClickHdl(aLk);
1554     aDeleteSchemePB.SetClickHdl(aLk);
1555 }
1556 /* -----------------------------25.03.2002 10:47------------------------------
1557 
1558  ---------------------------------------------------------------------------*/
~SvxColorOptionsTabPage()1559 SvxColorOptionsTabPage::~SvxColorOptionsTabPage()
1560 {
1561     //when the dialog is cancelled but the color scheme ListBox has been changed these
1562     //changes need to be undone
1563     if(!bFillItemSetCalled && aColorSchemeLB.GetSavedValue() != aColorSchemeLB.GetSelectEntryPos())
1564     {
1565         rtl::OUString sOldScheme =  aColorSchemeLB.GetEntry(aColorSchemeLB.GetSavedValue());
1566         if(sOldScheme.getLength())
1567 		{
1568             pColorConfig->SetCurrentSchemeName(sOldScheme);
1569 			pExtColorConfig->SetCurrentSchemeName(sOldScheme);
1570 		}
1571     }
1572     delete pColorConfigCT;
1573     pColorConfig->ClearModified();
1574 	pColorConfig->EnableBroadcast();
1575     delete pColorConfig;
1576 	pExtColorConfig->ClearModified();
1577 	pExtColorConfig->EnableBroadcast();
1578     delete pExtColorConfig;
1579 }
1580 /* -----------------------------25.03.2002 10:47------------------------------
1581 
1582  ---------------------------------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)1583 SfxTabPage* SvxColorOptionsTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet )
1584 {
1585     return ( new SvxColorOptionsTabPage( pParent, rAttrSet ) );
1586 }
1587 /* -----------------------------25.03.2002 10:47------------------------------
1588 
1589  ---------------------------------------------------------------------------*/
FillItemSet(SfxItemSet &)1590 sal_Bool SvxColorOptionsTabPage::FillItemSet( SfxItemSet&  )
1591 {
1592     bFillItemSetCalled = sal_True;
1593     if(aColorSchemeLB.GetSavedValue() != aColorSchemeLB.GetSelectEntryPos())
1594 	{
1595         pColorConfig->SetModified();
1596 		pExtColorConfig->SetModified();
1597 	}
1598     if(pColorConfig->IsModified())
1599         pColorConfig->Commit();
1600 	if(pExtColorConfig->IsModified())
1601         pExtColorConfig->Commit();
1602     return sal_True;
1603 }
1604 /* -----------------------------25.03.2002 10:47------------------------------
1605 
1606  ---------------------------------------------------------------------------*/
Reset(const SfxItemSet &)1607 void SvxColorOptionsTabPage::Reset( const SfxItemSet& )
1608 {
1609     if(pColorConfig)
1610     {
1611         pColorConfig->ClearModified();
1612 		pColorConfig->DisableBroadcast();
1613         delete pColorConfig;
1614     }
1615     pColorConfig = new EditableColorConfig;
1616     pColorConfigCT->SetConfig(*pColorConfig);
1617 
1618 	if(pExtColorConfig)
1619     {
1620         pExtColorConfig->ClearModified();
1621 		pExtColorConfig->DisableBroadcast();
1622         delete pExtColorConfig;
1623     }
1624     pExtColorConfig = new EditableExtendedColorConfig;
1625     pColorConfigCT->SetExtendedConfig(*pExtColorConfig);
1626 
1627     String sUser = GetUserData();
1628     //has to be called always to speed up accessibility tools
1629     pColorConfigCT->SetScrollPosition(sUser.ToInt32());
1630     aColorSchemeLB.Clear();
1631     uno::Sequence< ::rtl::OUString >  aSchemes = pColorConfig->GetSchemeNames();
1632     const rtl::OUString* pSchemes = aSchemes.getConstArray();
1633     for(sal_Int32 i = 0; i < aSchemes.getLength(); i++)
1634         aColorSchemeLB.InsertEntry(pSchemes[i]);
1635     aColorSchemeLB.SelectEntry(pColorConfig->GetCurrentSchemeName());
1636     aColorSchemeLB.SaveValue();
1637     aDeleteSchemePB.Enable( aSchemes.getLength() > 1 );
1638     UpdateColorConfig();
1639 }
1640 /* -----------------------------25.03.2002 10:47------------------------------
1641 
1642  ---------------------------------------------------------------------------*/
DeactivatePage(SfxItemSet * _pSet)1643 int SvxColorOptionsTabPage::DeactivatePage( SfxItemSet* _pSet )
1644 {
1645     if ( _pSet )
1646         FillItemSet( *_pSet );
1647 	return( LEAVE_PAGE );
1648 }
1649 /* -----------------------------25.03.2002 15:32------------------------------
1650 
1651  ---------------------------------------------------------------------------*/
UpdateColorConfig()1652 void SvxColorOptionsTabPage::UpdateColorConfig()
1653 {
1654     //update the color config control
1655     pColorConfigCT->Update();
1656 }
1657 /* -----------------------------25.03.2002 15:30------------------------------
1658 
1659  ---------------------------------------------------------------------------*/
IMPL_LINK(SvxColorOptionsTabPage,SchemeChangedHdl_Impl,ListBox *,pBox)1660 IMPL_LINK(SvxColorOptionsTabPage, SchemeChangedHdl_Impl, ListBox*, pBox)
1661 {
1662     pColorConfig->LoadScheme(pBox->GetSelectEntry());
1663 	pExtColorConfig->LoadScheme(pBox->GetSelectEntry());
1664     UpdateColorConfig();
1665     return 0;
1666 }
1667 /* -----------------------------09.04.2002 15:21------------------------------
1668 
1669  ---------------------------------------------------------------------------*/
IMPL_LINK(SvxColorOptionsTabPage,SaveDeleteHdl_Impl,PushButton *,pButton)1670 IMPL_LINK(SvxColorOptionsTabPage, SaveDeleteHdl_Impl, PushButton*, pButton )
1671 {
1672     if(&aSaveSchemePB == pButton)
1673     {
1674         String sName;
1675         //CHINA001 SvxNameDialog aNameDlg(pButton,
1676         //CHINA001                     sName,
1677         //CHINA001                     String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_SAVE2)));
1678         SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
1679 		DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001
1680 		AbstractSvxNameDialog* aNameDlg = pFact->CreateSvxNameDialog( pButton,
1681                             sName, String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_SAVE2)) );
1682 		DBG_ASSERT(aNameDlg, "Dialogdiet fail!");//CHINA001
1683         aNameDlg->SetCheckNameHdl( LINK(this, SvxColorOptionsTabPage, CheckNameHdl_Impl));
1684 		aNameDlg->SetText(String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_SAVE1)));
1685         aNameDlg->SetHelpId(HID_OPTIONS_COLORCONFIG_SAVE_SCHEME);
1686         aNameDlg->SetEditHelpId(HID_OPTIONS_COLORCONFIG_NAME_SCHEME);
1687         aNameDlg->SetCheckNameHdl( LINK(this, SvxColorOptionsTabPage, CheckNameHdl_Impl));
1688         if(RET_OK == aNameDlg->Execute()) //CHINA001 if(RET_OK == aNameDlg.Execute())
1689         {
1690             aNameDlg->GetName(sName); //CHINA001 aNameDlg.GetName(sName);
1691 			pColorConfig->AddScheme(sName);
1692 			pExtColorConfig->AddScheme(sName);
1693             aColorSchemeLB.InsertEntry(sName);
1694             aColorSchemeLB.SelectEntry(sName);
1695             aColorSchemeLB.GetSelectHdl().Call(&aColorSchemeLB);
1696         }
1697 		delete aNameDlg; //add by CHINA001
1698     }
1699     else
1700     {
1701         DBG_ASSERT(aColorSchemeLB.GetEntryCount() > 1, "don't delete the last scheme");
1702         QueryBox aQuery(pButton, CUI_RES(RID_SVXQB_DELETE_COLOR_CONFIG));
1703         aQuery.SetText(String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_DELETE)));
1704         if(RET_YES == aQuery.Execute())
1705         {
1706             rtl::OUString sDeleteScheme(aColorSchemeLB.GetSelectEntry());
1707             aColorSchemeLB.RemoveEntry(aColorSchemeLB.GetSelectEntryPos());
1708             aColorSchemeLB.SelectEntryPos(0);
1709             aColorSchemeLB.GetSelectHdl().Call(&aColorSchemeLB);
1710             //first select the new scheme and then delete the old one
1711             pColorConfig->DeleteScheme(sDeleteScheme);
1712 			pExtColorConfig->DeleteScheme(sDeleteScheme);
1713         }
1714     }
1715     aDeleteSchemePB.Enable( aColorSchemeLB.GetEntryCount() > 1 );
1716     return 0;
1717 }
1718 /* -----------------------------09.04.2002 15:47------------------------------
1719 
1720  ---------------------------------------------------------------------------*/
IMPL_LINK(SvxColorOptionsTabPage,CheckNameHdl_Impl,AbstractSvxNameDialog *,pDialog)1721 IMPL_LINK(SvxColorOptionsTabPage, CheckNameHdl_Impl, AbstractSvxNameDialog*, pDialog )
1722 {
1723     String sName;
1724     pDialog->GetName(sName);
1725     return sName.Len() && LISTBOX_ENTRY_NOTFOUND == aColorSchemeLB.GetEntryPos( sName );
1726 }
1727 /* -----------------------------25.04.2002 15:12------------------------------
1728 
1729  ---------------------------------------------------------------------------*/
FillUserData()1730 void SvxColorOptionsTabPage::FillUserData()
1731 {
1732     SetUserData(String::CreateFromInt32(pColorConfigCT->GetScrollPosition()));
1733 }
1734 
1735