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