xref: /trunk/main/cui/source/tabpages/tparea.cxx (revision 29920ea143c96bccd47622c46f66d27d23b809e2)
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 <tools/shl.hxx>
29 #include <tools/urlobj.hxx>
30 #include <sfx2/app.hxx>
31 #include <sfx2/module.hxx>
32 #include <svx/dialogs.hrc>
33 
34 #define _SVX_TPAREA_CXX
35 
36 #if defined (UNX) || defined (WTC) || defined (ICC) || defined(WNT)
37 #include <stdlib.h>
38 #endif
39 
40 #include "svx/xattr.hxx"
41 #include <svx/xpool.hxx>
42 #include <cuires.hrc>
43 #include "tabarea.hrc"
44 //#include "dlgname.hrc"
45 #include <svx/xflbckit.hxx>
46 #include <svx/svdattr.hxx>
47 #include <svx/xtable.hxx>
48 #include <svx/xlineit0.hxx>
49 #include "svx/drawitem.hxx"
50 #include "cuitabarea.hxx"
51 #include "dlgname.hxx"
52 #include <dialmgr.hxx>
53 #include "svx/dlgutil.hxx"
54 #include <svl/intitem.hxx> //add CHINA001
55 #include <sfx2/request.hxx>//add CHINA001
56 #include "paragrph.hrc"
57 
58 //UUUU
59 #include "sfx2/opengrf.hxx"
60 #include <vcl/msgbox.hxx>
61 
62 #define DLGWIN this->GetParent()->GetParent()
63 
64 // static ----------------------------------------------------------------
65 
66 static sal_uInt16 pAreaRanges[] =
67 {
68     XATTR_GRADIENTSTEPCOUNT,
69     XATTR_GRADIENTSTEPCOUNT,
70     SID_ATTR_FILL_STYLE,
71     SID_ATTR_FILL_BITMAP,
72     0
73 };
74 
75 static sal_uInt16 pTransparenceRanges[] =
76 {
77     XATTR_FILLTRANSPARENCE,
78     XATTR_FILLTRANSPARENCE,
79     SDRATTR_SHADOWTRANSPARENCE,
80     SDRATTR_SHADOWTRANSPARENCE,
81     XATTR_FILLFLOATTRANSPARENCE,
82     XATTR_FILLFLOATTRANSPARENCE,
83     0
84 };
85 
86 /*************************************************************************
87 |*
88 |*  Dialog for transparence
89 |*
90 \************************************************************************/
91 
92 IMPL_LINK(SvxTransparenceTabPage, ClickTransOffHdl_Impl, void *, EMPTYARG)
93 {
94     // disable all other controls
95     ActivateLinear(sal_False);
96     ActivateGradient(sal_False);
97 
98     // Preview
99     rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
100     rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
101     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
102     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
103 
104     InvalidatePreview( sal_False );
105 
106     return( 0L );
107 }
108 
109 IMPL_LINK(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, void *, EMPTYARG)
110 {
111     // enable linear, disable other
112     ActivateLinear(sal_True);
113     ActivateGradient(sal_False);
114 
115     // preview
116     rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
117     ModifyTransparentHdl_Impl (NULL);
118 
119     return( 0L );
120 }
121 
122 IMPL_LINK(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, void *, EMPTYARG)
123 {
124     // enable gradient, disable other
125     ActivateLinear(sal_False);
126     ActivateGradient(sal_True);
127 
128     // preview
129     rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
130     ModifiedTrgrHdl_Impl (NULL);
131 
132     return( 0L );
133 }
134 
135 void SvxTransparenceTabPage::ActivateLinear(sal_Bool bActivate)
136 {
137     aMtrTransparent.Enable(bActivate);
138 }
139 
140 IMPL_LINK(SvxTransparenceTabPage, ModifyTransparentHdl_Impl, void*, EMPTYARG)
141 {
142     sal_uInt16 nPos = (sal_uInt16)aMtrTransparent.GetValue();
143     XFillTransparenceItem aItem(nPos);
144     rXFSet.Put(XFillTransparenceItem(aItem));
145 
146     // preview
147     InvalidatePreview();
148 
149     return 0L;
150 }
151 
152 IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrHdl_Impl, void *, pControl)
153 {
154     if(pControl == &aLbTrgrGradientType || pControl == this)
155     {
156         XGradientStyle eXGS = (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos();
157         SetControlState_Impl( eXGS );
158     }
159 
160     // preview
161     sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrStartValue.GetValue() * 255) / 100);
162     sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrEndValue.GetValue() * 255) / 100);
163     XGradient aTmpGradient(
164                 Color(nStartCol, nStartCol, nStartCol),
165                 Color(nEndCol, nEndCol, nEndCol),
166                 (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(),
167                 (sal_uInt16)aMtrTrgrAngle.GetValue() * 10,
168                 (sal_uInt16)aMtrTrgrCenterX.GetValue(),
169                 (sal_uInt16)aMtrTrgrCenterY.GetValue(),
170                 (sal_uInt16)aMtrTrgrBorder.GetValue(),
171                 100, 100);
172 
173     String aString;
174     XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
175     rXFSet.Put ( aItem );
176 
177     InvalidatePreview();
178 
179     return( 0L );
180 }
181 
182 void SvxTransparenceTabPage::ActivateGradient(sal_Bool bActivate)
183 {
184     aFtTrgrType.Enable(bActivate);
185     aLbTrgrGradientType.Enable(bActivate);
186     aFtTrgrCenterX.Enable(bActivate);
187     aMtrTrgrCenterX.Enable(bActivate);
188     aFtTrgrCenterY.Enable(bActivate);
189     aMtrTrgrCenterY.Enable(bActivate);
190     aFtTrgrAngle.Enable(bActivate);
191     aMtrTrgrAngle.Enable(bActivate);
192     aFtTrgrBorder.Enable(bActivate);
193     aMtrTrgrBorder.Enable(bActivate);
194     aFtTrgrStartValue.Enable(bActivate);
195     aMtrTrgrStartValue.Enable(bActivate);
196     aFtTrgrEndValue.Enable(bActivate);
197     aMtrTrgrEndValue.Enable(bActivate);
198 
199     if(bActivate)
200     {
201         XGradientStyle eXGS = (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos();
202         SetControlState_Impl( eXGS );
203     }
204 }
205 
206 IMPL_LINK(SvxTransparenceTabPage, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG)
207 {
208     return( 0L );
209 }
210 
211 void SvxTransparenceTabPage::SetControlState_Impl(XGradientStyle eXGS)
212 {
213     switch(eXGS)
214     {
215         case XGRAD_LINEAR:
216         case XGRAD_AXIAL:
217             aFtTrgrCenterX.Disable();
218             aMtrTrgrCenterX.Disable();
219             aFtTrgrCenterY.Disable();
220             aMtrTrgrCenterY.Disable();
221             aFtTrgrAngle.Enable();
222             aMtrTrgrAngle.Enable();
223             break;
224 
225         case XGRAD_RADIAL:
226             aFtTrgrCenterX.Enable();
227             aMtrTrgrCenterX.Enable();
228             aFtTrgrCenterY.Enable();
229             aMtrTrgrCenterY.Enable();
230             aFtTrgrAngle.Disable();
231             aMtrTrgrAngle.Disable();
232             break;
233 
234         case XGRAD_ELLIPTICAL:
235             aFtTrgrCenterX.Enable();
236             aMtrTrgrCenterX.Enable();
237             aFtTrgrCenterY.Enable();
238             aMtrTrgrCenterY.Enable();
239             aFtTrgrAngle.Enable();
240             aMtrTrgrAngle.Enable();
241             break;
242 
243         case XGRAD_SQUARE:
244         case XGRAD_RECT:
245             aFtTrgrCenterX.Enable();
246             aMtrTrgrCenterX.Enable();
247             aFtTrgrCenterY.Enable();
248             aMtrTrgrCenterY.Enable();
249             aFtTrgrAngle.Enable();
250             aMtrTrgrAngle.Enable();
251             break;
252     }
253 }
254 
255 SvxTransparenceTabPage::SvxTransparenceTabPage(Window* pParent, const SfxItemSet& rInAttrs)
256 :   SvxTabPage          ( pParent, CUI_RES( RID_SVXPAGE_TRANSPARENCE ), rInAttrs),
257     rOutAttrs           ( rInAttrs ),
258     eRP                 ( RP_MM ),
259 
260     nPageType(0),
261     nDlgType(0),
262 
263     aFlProp             ( this, CUI_RES( FL_PROP ) ),
264     aRbtTransOff        ( this, CUI_RES( RBT_TRANS_OFF ) ),
265     aRbtTransLinear     ( this, CUI_RES( RBT_TRANS_LINEAR ) ),
266     aRbtTransGradient   ( this, CUI_RES( RBT_TRANS_GRADIENT ) ),
267 
268     aMtrTransparent     ( this, CUI_RES( MTR_TRANSPARENT ) ),
269 
270     aFtTrgrType         ( this, CUI_RES( FT_TRGR_TYPE ) ),
271     aLbTrgrGradientType ( this, CUI_RES( LB_TRGR_GRADIENT_TYPES ) ),
272     aFtTrgrCenterX      ( this, CUI_RES( FT_TRGR_CENTER_X ) ),
273     aMtrTrgrCenterX     ( this, CUI_RES( MTR_TRGR_CENTER_X ) ),
274     aFtTrgrCenterY      ( this, CUI_RES( FT_TRGR_CENTER_Y ) ),
275     aMtrTrgrCenterY     ( this, CUI_RES( MTR_TRGR_CENTER_Y ) ),
276     aFtTrgrAngle        ( this, CUI_RES( FT_TRGR_ANGLE ) ),
277     aMtrTrgrAngle       ( this, CUI_RES( MTR_TRGR_ANGLE ) ),
278     aFtTrgrBorder       ( this, CUI_RES( FT_TRGR_BORDER ) ),
279     aMtrTrgrBorder      ( this, CUI_RES( MTR_TRGR_BORDER ) ),
280     aFtTrgrStartValue   ( this, CUI_RES( FT_TRGR_START_VALUE ) ),
281     aMtrTrgrStartValue  ( this, CUI_RES( MTR_TRGR_START_VALUE ) ),
282     aFtTrgrEndValue     ( this, CUI_RES( FT_TRGR_END_VALUE ) ),
283     aMtrTrgrEndValue    ( this, CUI_RES( MTR_TRGR_END_VALUE ) ),
284 
285     aCtlBitmapPreview   ( this, CUI_RES( CTL_BITMAP_PREVIEW ) ),
286     aCtlXRectPreview    ( this, CUI_RES( CTL_TRANS_PREVIEW ) ),
287     bBitmap             ( sal_False ),
288     pXPool              ( (XOutdevItemPool*) rInAttrs.GetPool() ),
289     aXFillAttr          ( pXPool ),
290     rXFSet              ( aXFillAttr.GetItemSet() )
291 {
292     FreeResource();
293 
294     String accName = String(CUI_RES(STR_EXAMPLE));
295     aCtlBitmapPreview.SetAccessibleName(accName);
296     aCtlXRectPreview.SetAccessibleName(accName);
297     aMtrTransparent.SetAccessibleRelationLabeledBy( &aRbtTransLinear );
298 
299     // main selection
300     aRbtTransOff.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
301     aRbtTransLinear.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
302     aRbtTransGradient.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
303 
304     // linear transparency
305     aMtrTransparent.SetValue( 50 );
306     aMtrTransparent.SetModifyHdl(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
307 
308     // gradient transparency
309     aMtrTrgrEndValue.SetValue( 100 );
310     aMtrTrgrStartValue.SetValue( 0 );
311     aLbTrgrGradientType.SetSelectHdl(LINK(this, SvxTransparenceTabPage, ChangeTrgrTypeHdl_Impl));
312     Link aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrHdl_Impl);
313     aLbTrgrGradientType.SetSelectHdl( aLink );
314     aMtrTrgrCenterX.SetModifyHdl( aLink );
315     aMtrTrgrCenterY.SetModifyHdl( aLink );
316     aMtrTrgrAngle.SetModifyHdl( aLink );
317     aMtrTrgrBorder.SetModifyHdl( aLink );
318     aMtrTrgrStartValue.SetModifyHdl( aLink );
319     aMtrTrgrEndValue.SetModifyHdl( aLink );
320 
321     // this page needs ExchangeSupport
322     SetExchangeSupport();
323 }
324 
325 void SvxTransparenceTabPage::Construct()
326 {
327 }
328 
329 SfxTabPage* SvxTransparenceTabPage::Create(Window* pWindow, const SfxItemSet& rAttrs)
330 {
331     return(new SvxTransparenceTabPage(pWindow, rAttrs));
332 }
333 
334 sal_uInt16* SvxTransparenceTabPage::GetRanges()
335 {
336     return(pTransparenceRanges);
337 }
338 
339 sal_Bool SvxTransparenceTabPage::FillItemSet(SfxItemSet& rAttrs)
340 {
341     const SfxPoolItem* pGradientItem = NULL;
342     const SfxPoolItem* pLinearItem = NULL;
343     SfxItemState eStateGradient(rOutAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, sal_True, &pGradientItem));
344     SfxItemState eStateLinear(rOutAttrs.GetItemState(XATTR_FILLTRANSPARENCE, sal_True, &pLinearItem));
345     sal_Bool bGradActive = (eStateGradient == SFX_ITEM_SET && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled());
346     sal_Bool bLinearActive = (eStateLinear == SFX_ITEM_SET && ((XFillTransparenceItem*)pLinearItem)->GetValue() != 0);
347 
348     // #103765#
349     sal_Bool bGradUsed = (eStateGradient == SFX_ITEM_DONTCARE);
350     sal_Bool bLinearUsed = (eStateLinear == SFX_ITEM_DONTCARE);
351 
352     sal_Bool bModified(sal_False);
353     sal_Bool bSwitchOffLinear(sal_False);
354     sal_Bool bSwitchOffGradient(sal_False);
355 
356     if(aMtrTransparent.IsEnabled())
357     {
358         // linear transparence
359         sal_uInt16 nPos = (sal_uInt16)aMtrTransparent.GetValue();
360         if(nPos != (sal_uInt16)aMtrTransparent.GetSavedValue().ToInt32() || !bLinearActive)
361         {
362             XFillTransparenceItem aItem(nPos);
363             SdrShadowTransparenceItem aShadowItem(nPos);
364             const SfxPoolItem* pOld = GetOldItem(rAttrs, XATTR_FILLTRANSPARENCE);
365             if(!pOld || !(*(const XFillTransparenceItem*)pOld == aItem) || !bLinearActive)
366             {
367                 rAttrs.Put(aItem);
368                 rAttrs.Put(aShadowItem);
369                 bModified = sal_True;
370                 bSwitchOffGradient = sal_True;
371             }
372         }
373     }
374     else if(aLbTrgrGradientType.IsEnabled())
375     {
376         // transparence gradient, fill ItemSet from values
377         if(!bGradActive
378             || (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos() != (XGradientStyle)aLbTrgrGradientType.GetSavedValue()
379             || (sal_uInt16)aMtrTrgrAngle.GetValue() != (sal_uInt16)aMtrTrgrAngle.GetSavedValue().ToInt32()
380             || (sal_uInt16)aMtrTrgrCenterX.GetValue() != (sal_uInt16)aMtrTrgrCenterX.GetSavedValue().ToInt32()
381             || (sal_uInt16)aMtrTrgrCenterY.GetValue() != (sal_uInt16)aMtrTrgrCenterY.GetSavedValue().ToInt32()
382             || (sal_uInt16)aMtrTrgrBorder.GetValue() != (sal_uInt16)aMtrTrgrBorder.GetSavedValue().ToInt32()
383             || (sal_uInt16)aMtrTrgrStartValue.GetValue() != (sal_uInt16)aMtrTrgrStartValue.GetSavedValue().ToInt32()
384             || (sal_uInt16)aMtrTrgrEndValue.GetValue() != (sal_uInt16)aMtrTrgrEndValue.GetSavedValue().ToInt32() )
385         {
386             sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrStartValue.GetValue() * 255) / 100);
387             sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrEndValue.GetValue() * 255) / 100);
388             XGradient aTmpGradient(
389                         Color(nStartCol, nStartCol, nStartCol),
390                         Color(nEndCol, nEndCol, nEndCol),
391                         (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(),
392                         (sal_uInt16)aMtrTrgrAngle.GetValue() * 10,
393                         (sal_uInt16)aMtrTrgrCenterX.GetValue(),
394                         (sal_uInt16)aMtrTrgrCenterY.GetValue(),
395                         (sal_uInt16)aMtrTrgrBorder.GetValue(),
396                         100, 100);
397 
398             String aString;
399             XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
400             const SfxPoolItem* pOld = GetOldItem(rAttrs, XATTR_FILLFLOATTRANSPARENCE);
401 
402             if(!pOld || !(*(const XFillFloatTransparenceItem*)pOld == aItem) || !bGradActive)
403             {
404                 rAttrs.Put(aItem);
405                 bModified = sal_True;
406                 bSwitchOffLinear = sal_True;
407             }
408         }
409     }
410     else
411     {
412         // no transparence
413         bSwitchOffGradient = sal_True;
414         bSwitchOffLinear = sal_True;
415     }
416 
417     // disable unused XFillFloatTransparenceItem
418     if(bSwitchOffGradient && (bGradActive || bGradUsed))
419     {
420         Color aColor(COL_BLACK);
421         XGradient aGrad(aColor, Color(COL_WHITE));
422         aGrad.SetStartIntens(100);
423         aGrad.SetEndIntens(100);
424         String aString;
425         XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aGrad);
426         aItem.SetEnabled(sal_False);
427         rAttrs.Put(aItem);
428         bModified = sal_True;
429     }
430 
431     // disable unused XFillFloatTransparenceItem
432     if(bSwitchOffLinear && (bLinearActive || bLinearUsed))
433     {
434         XFillTransparenceItem aItem(0);
435         SdrShadowTransparenceItem aShadowItem(0);
436         rAttrs.Put(aItem);
437         rAttrs.Put(aShadowItem);
438         bModified = sal_True;
439     }
440     //add CHINA001  begin
441     rAttrs.Put (CntUInt16Item(SID_PAGE_TYPE,nPageType));
442     //add CHINA001  end
443     return bModified;
444 }
445 
446 void SvxTransparenceTabPage::Reset(const SfxItemSet& rAttrs)
447 {
448     const SfxPoolItem* pGradientItem = NULL;
449     SfxItemState eStateGradient(rAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, sal_True, &pGradientItem));
450     if(!pGradientItem)
451         pGradientItem = &rAttrs.Get(XATTR_FILLFLOATTRANSPARENCE);
452     sal_Bool bGradActive = (eStateGradient == SFX_ITEM_SET && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled());
453 
454     const SfxPoolItem* pLinearItem = NULL;
455     SfxItemState eStateLinear(rAttrs.GetItemState(XATTR_FILLTRANSPARENCE, sal_True, &pLinearItem));
456     if(!pLinearItem)
457         pLinearItem = &rAttrs.Get(XATTR_FILLTRANSPARENCE);
458     sal_Bool bLinearActive = (eStateLinear == SFX_ITEM_SET && ((XFillTransparenceItem*)pLinearItem)->GetValue() != 0);
459 
460     // transparence gradient
461     const XGradient& rGradient = ((XFillFloatTransparenceItem*)pGradientItem)->GetGradientValue();
462     XGradientStyle eXGS(rGradient.GetGradientStyle());
463     aLbTrgrGradientType.SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXGS));
464     aMtrTrgrAngle.SetValue(rGradient.GetAngle() / 10);
465     aMtrTrgrBorder.SetValue(rGradient.GetBorder());
466     aMtrTrgrCenterX.SetValue(rGradient.GetXOffset());
467     aMtrTrgrCenterY.SetValue(rGradient.GetYOffset());
468     aMtrTrgrStartValue.SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetStartColor().GetRed() + 1) * 100) / 255));
469     aMtrTrgrEndValue.SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetEndColor().GetRed() + 1) * 100) / 255));
470 
471     // linear transparence
472     sal_uInt16 nTransp = ((XFillTransparenceItem*)pLinearItem)->GetValue();
473     aMtrTransparent.SetValue(bLinearActive ? nTransp : 50);
474     ModifyTransparentHdl_Impl(NULL);
475 
476     // select the correct radio button
477     if(bGradActive)
478     {
479         // transparence gradient, set controls appropriate to item
480         aRbtTransGradient.Check();
481         ClickTransGradientHdl_Impl(NULL);
482     }
483     else if(bLinearActive)
484     {
485         // linear transparence
486         aRbtTransLinear.Check();
487         ClickTransLinearHdl_Impl(NULL);
488     }
489     else
490     {
491         // no transparence
492         aRbtTransOff.Check();
493         ClickTransOffHdl_Impl(NULL);
494         ModifiedTrgrHdl_Impl(NULL);
495     }
496 
497     // save values
498     aMtrTransparent.SaveValue();
499     aLbTrgrGradientType.SaveValue();
500     aMtrTrgrCenterX.SaveValue();
501     aMtrTrgrCenterY.SaveValue();
502     aMtrTrgrAngle.SaveValue();
503     aMtrTrgrBorder.SaveValue();
504     aMtrTrgrStartValue.SaveValue();
505     aMtrTrgrEndValue.SaveValue();
506 
507     sal_Bool bActive = InitPreview ( rAttrs );
508     InvalidatePreview ( bActive );
509 }
510 
511 void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet)
512 {
513     //add CHINA001 Begin
514     SFX_ITEMSET_ARG (&rSet,pPageTypeItem,CntUInt16Item,SID_PAGE_TYPE,sal_False);
515     if (pPageTypeItem)
516         SetPageType(pPageTypeItem->GetValue());
517     //add CHINA001 end
518     //CHINA001 if(*pDlgType == 0) // Flaechen-Dialog
519     //CHINA001      *pPageType = PT_TRANSPARENCE;
520     if(nDlgType == 0) //add CHINA001 // Flaechen-Dialog
521         nPageType = PT_TRANSPARENCE; //add CHINA001
522 
523     InitPreview ( rSet );
524 }
525 
526 int SvxTransparenceTabPage::DeactivatePage(SfxItemSet* _pSet)
527 {
528     if( _pSet )
529         FillItemSet( *_pSet );
530     return(LEAVE_PAGE);
531 }
532 
533 void SvxTransparenceTabPage::PointChanged(Window* , RECT_POINT eRcPt)
534 {
535     eRP = eRcPt;
536 }
537 
538 //
539 // Preview-Methods
540 //
541 sal_Bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet )
542 {
543     // set transparencetyp for preview
544     if ( aRbtTransOff.IsChecked() )
545     {
546         ClickTransOffHdl_Impl(NULL);
547     } else if ( aRbtTransLinear.IsChecked() )
548     {
549         ClickTransLinearHdl_Impl(NULL);
550     } else if ( aRbtTransGradient.IsChecked() )
551     {
552         ClickTransGradientHdl_Impl(NULL);
553     }
554 
555     // Get fillstyle for preview
556     rXFSet.Put ( ( XFillStyleItem& )    rSet.Get(XATTR_FILLSTYLE) );
557     rXFSet.Put ( ( XFillColorItem& )    rSet.Get(XATTR_FILLCOLOR) );
558     rXFSet.Put ( ( XFillGradientItem& ) rSet.Get(XATTR_FILLGRADIENT) );
559     rXFSet.Put ( ( XFillHatchItem& )    rSet.Get(XATTR_FILLHATCH) );
560     rXFSet.Put ( ( XFillBackgroundItem&)rSet.Get(XATTR_FILLBACKGROUND) );
561     rXFSet.Put ( ( XFillBitmapItem& )   rSet.Get(XATTR_FILLBITMAP) );
562 
563     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
564     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
565 
566     bBitmap = ( ( ( XFillStyleItem& )rSet.Get(XATTR_FILLSTYLE) ).GetValue() == XFILL_BITMAP );
567 
568     // show the right preview window
569     if ( bBitmap )
570     {
571         aCtlBitmapPreview.Show();
572         aCtlXRectPreview.Hide();
573     }
574     else
575     {
576         aCtlBitmapPreview.Hide();
577         aCtlXRectPreview.Show();
578     }
579 
580     return !aRbtTransOff.IsChecked();
581 }
582 
583 void SvxTransparenceTabPage::InvalidatePreview (sal_Bool bEnable)
584 {
585     if ( bBitmap )
586     {
587         if ( bEnable )
588         {
589             aCtlBitmapPreview.Enable();
590             aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
591         }
592         else
593             aCtlBitmapPreview.Disable();
594         aCtlBitmapPreview.Invalidate();
595     }
596     else
597     {
598         if ( bEnable )
599         {
600             aCtlXRectPreview.Enable();
601             aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
602         }
603         else
604             aCtlXRectPreview.Disable();
605         aCtlXRectPreview.Invalidate();
606     }
607 }
608 
609 void SvxTransparenceTabPage::PageCreated (SfxAllItemSet aSet) //add CHINA001
610 {
611     SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False);
612     SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False);
613 
614     if (pPageTypeItem)
615         SetPageType(pPageTypeItem->GetValue());
616     if (pDlgTypeItem)
617         SetDlgType(pDlgTypeItem->GetValue());
618     Construct();
619 }
620 /*************************************************************************
621 |*
622 |*  Dialog to modify fill-attributes
623 |*
624 \************************************************************************/
625 
626 SvxAreaTabPage::SvxAreaTabPage( Window* pParent, const SfxItemSet& rInAttrs )
627 :   SvxTabPage          ( pParent, CUI_RES( RID_SVXPAGE_AREA ), rInAttrs ),
628 
629     aFlProp             ( this, CUI_RES( FL_PROP ) ),
630     aTypeLB             ( this, CUI_RES( LB_AREA_TYPE ) ),
631 
632     aLbColor            ( this, CUI_RES( LB_COLOR ) ),
633     aLbGradient         ( this, CUI_RES( LB_GRADIENT ) ),
634     aLbHatching         ( this, CUI_RES( LB_HATCHING ) ),
635     aLbBitmap           ( this, CUI_RES( LB_BITMAP ) ),
636     aCtlBitmapPreview   ( this, CUI_RES( CTL_BITMAP_PREVIEW ) ),
637 
638     aTsbStepCount       ( this, CUI_RES( TSB_STEPCOUNT ) ),
639     aFlStepCount        ( this, CUI_RES( FL_STEPCOUNT ) ),
640     aNumFldStepCount    ( this, CUI_RES( NUM_FLD_STEPCOUNT ) ),
641 
642     aCbxHatchBckgrd     ( this, CUI_RES( CB_HATCHBCKGRD ) ),
643     aLbHatchBckgrdColor ( this, CUI_RES( LB_HATCHBCKGRDCOLOR ) ),
644 
645     aFlSize             ( this, CUI_RES( FL_SIZE ) ),
646     aTsbOriginal        ( this, CUI_RES( TSB_ORIGINAL ) ),
647     aTsbScale           ( this, CUI_RES( TSB_SCALE ) ),
648     aFtXSize            ( this, CUI_RES( FT_X_SIZE ) ),
649     aMtrFldXSize        ( this, CUI_RES( MTR_FLD_X_SIZE ) ),
650     aFtYSize            ( this, CUI_RES( FT_Y_SIZE ) ),
651     aMtrFldYSize        ( this, CUI_RES( MTR_FLD_Y_SIZE ) ),
652     aFlPosition         ( this, CUI_RES( FL_POSITION ) ),
653     aCtlPosition        ( this, CUI_RES( CTL_POSITION ), RP_RM, 110, 80, CS_RECT ),
654     aFtXOffset          ( this, CUI_RES( FT_X_OFFSET ) ),
655     aMtrFldXOffset      ( this, CUI_RES( MTR_FLD_X_OFFSET ) ),
656     aFtYOffset          ( this, CUI_RES( FT_Y_OFFSET ) ),
657     aMtrFldYOffset      ( this, CUI_RES( MTR_FLD_Y_OFFSET ) ),
658     aTsbTile            ( this, CUI_RES( TSB_TILE ) ),
659     aTsbStretch         ( this, CUI_RES( TSB_STRETCH ) ),
660     aFlOffset           ( this, CUI_RES( FL_OFFSET ) ),
661     aRbtRow             ( this, CUI_RES( RBT_ROW ) ),
662     aRbtColumn          ( this, CUI_RES( RBT_COLUMN ) ),
663     aMtrFldOffset       ( this, CUI_RES( MTR_FLD_OFFSET ) ),
664 
665     aCtlXRectPreview    ( this, CUI_RES( CTL_COLOR_PREVIEW ) ),
666 
667     rOutAttrs           ( rInAttrs ),
668     eRP                 ( RP_MM ),
669 
670     maColorTab(),
671     maGradientList(),
672     maHatchingList(),
673     maBitmapList(),
674 
675     // local fixed not o be changed values for local pointers
676     maFixed_ChangeType(CT_NONE),
677     maFixed_sal_Bool(false),
678 
679     // init with pointers to fixed ChangeType
680     pnColorTableState(&maFixed_ChangeType),
681     pnBitmapListState(&maFixed_ChangeType),
682     pnGradientListState(&maFixed_ChangeType),
683     pnHatchingListState(&maFixed_ChangeType),
684 
685     nPageType(0),
686     nDlgType(0),
687     nPos(0),
688 
689     // init with pointer to fixed bool
690     pbAreaTP(&maFixed_sal_Bool),
691 
692     pXPool              ( (XOutdevItemPool*) rInAttrs.GetPool() ),
693     aXFillAttr          ( pXPool ),
694     rXFSet              ( aXFillAttr.GetItemSet() ),
695 
696     ePoolUnit(SFX_MAPUNIT_100TH_MM),
697     eFUnit(FUNIT_NONE),
698 
699     //UUUU
700     mbOfferImportButton(false),
701     mbPositionsAdapted(false),
702     mbDirectGraphicSet(false),
703     maDirectGraphic(),
704     maBtnImport(this, CUI_RES(BTN_IMPORTOPTIONAL))
705 {
706     FreeResource();
707 
708     String accName = String(CUI_RES(STR_EXAMPLE));
709     aCtlXRectPreview.SetAccessibleName(accName);
710     aCtlBitmapPreview.SetAccessibleName(accName);
711 
712     // Gruppen, die sich ueberlagern
713     aLbBitmap.Hide();
714     aCtlBitmapPreview.Hide();
715 
716     aFlStepCount.Hide();
717     aTsbStepCount.Hide();
718     aNumFldStepCount.Hide();
719 
720     //UUUU
721     maBtnImport.Hide();
722     aTsbTile.Hide();
723     aTsbStretch.Hide();
724     aTsbScale.Hide();
725     aTsbOriginal.Hide();
726     aFtXSize.Hide();
727     aMtrFldXSize.Hide();
728     aFtYSize.Hide();
729     aMtrFldYSize.Hide();
730     aFlSize.Hide();
731     aRbtRow.Hide();
732     aRbtColumn.Hide();
733     aMtrFldOffset.Hide();
734     aFlOffset.Hide();
735     aCtlPosition.Hide();
736     aFtXOffset.Hide();
737     aMtrFldXOffset.Hide();
738     aFtYOffset.Hide();
739     aMtrFldYOffset.Hide();
740     aFlPosition.Hide();
741 
742     // Controls for Hatch-Background
743     aCbxHatchBckgrd.Hide();
744     aLbHatchBckgrdColor.Hide();
745 
746 
747     aTsbOriginal.EnableTriState( sal_False );
748 
749 
750     // this page needs ExchangeSupport
751     SetExchangeSupport();
752 
753     // set Metrics
754     eFUnit = GetModuleFieldUnit( rInAttrs );
755 
756     switch ( eFUnit )
757     {
758         case FUNIT_M:
759         case FUNIT_KM:
760             eFUnit = FUNIT_MM;
761         break;
762         default: ;//prevent warning
763     }
764     SetFieldUnit( aMtrFldXSize, eFUnit, sal_True );
765     SetFieldUnit( aMtrFldYSize, eFUnit, sal_True );
766 
767     // get PoolUnit
768     SfxItemPool* pPool = rOutAttrs.GetPool();
769     DBG_ASSERT( pPool, "Wo ist der Pool?" );
770     ePoolUnit = pPool->GetMetric( XATTR_FILLBMP_SIZEX );
771 
772     // Setzen Output-Devices
773     rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
774     rXFSet.Put( XFillColorItem( String(), COL_BLACK ) );
775     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
776     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
777 
778     aLbColor.SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyColorHdl_Impl ) );
779     aLbHatchBckgrdColor.SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl ) );
780     aCbxHatchBckgrd.SetToggleHdl( LINK( this, SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl ) );
781 
782     aLbGradient.SetSelectHdl(
783         LINK( this, SvxAreaTabPage, ModifyGradientHdl_Impl ) );
784     aLbHatching.SetSelectHdl(
785         LINK( this, SvxAreaTabPage, ModifyHatchingHdl_Impl ) );
786     aLbBitmap.SetSelectHdl(
787         LINK( this, SvxAreaTabPage, ModifyBitmapHdl_Impl ) );
788 
789     aTsbStepCount.SetClickHdl(
790         LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) );
791     aNumFldStepCount.SetModifyHdl(
792         LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) );
793 
794     //UUUU
795     maBtnImport.SetClickHdl(LINK(this, SvxAreaTabPage, ClickImportHdl_Impl));
796     maBtnImport.SetAccessibleRelationMemberOf(&aFlProp);
797 
798     Link aLink( LINK( this, SvxAreaTabPage, ModifyTileHdl_Impl ) );
799     aTsbTile.SetClickHdl( aLink );
800     aTsbStretch.SetClickHdl( aLink );
801     aTsbOriginal.SetClickHdl( aLink );
802     aMtrFldXSize.SetModifyHdl( aLink );
803     aMtrFldYSize.SetModifyHdl( aLink );
804     aRbtRow.SetClickHdl( aLink );
805     aRbtColumn.SetClickHdl( aLink );
806     aMtrFldOffset.SetModifyHdl( aLink );
807     aMtrFldXOffset.SetModifyHdl( aLink );
808     aMtrFldYOffset.SetModifyHdl( aLink );
809     aTsbScale.SetClickHdl( LINK( this, SvxAreaTabPage, ClickScaleHdl_Impl ) );
810 
811     aTypeLB.SetSelectHdl( LINK( this, SvxAreaTabPage, SelectDialogTypeHdl_Impl ) );
812 
813     // #i76307# always paint the preview in LTR, because this is what the document does
814     aCtlXRectPreview.EnableRTL(sal_False);
815 
816     aNumFldStepCount.SetAccessibleRelationLabeledBy( &aTsbStepCount );
817     aCtlPosition.SetAccessibleRelationMemberOf( &aFlPosition );
818     aLbHatchBckgrdColor.SetAccessibleRelationLabeledBy( &aCbxHatchBckgrd );
819     aLbHatchBckgrdColor.SetAccessibleName(aCbxHatchBckgrd.GetText());
820 
821     aLbColor.SetAccessibleRelationMemberOf( &aFlProp );
822     aMtrFldOffset.SetAccessibleRelationLabeledBy(&aFlOffset);
823     aMtrFldOffset.SetAccessibleName(aFlOffset.GetText());
824 }
825 
826 // -----------------------------------------------------------------------
827 
828 void SvxAreaTabPage::Construct()
829 {
830     // fill colortables / lists
831     aLbColor.Fill( maColorTab );
832     aLbHatchBckgrdColor.Fill ( maColorTab );
833 
834     aLbGradient.Fill( maGradientList );
835     aLbHatching.Fill( maHatchingList );
836     aLbBitmap.Fill( maBitmapList );
837 }
838 
839 // -----------------------------------------------------------------------
840 
841 void SvxAreaTabPage::ActivatePage( const SfxItemSet& rSet )
842 {
843     sal_uInt16 _nPos = 0;
844     sal_uInt16 nCount;
845     //add CHINA001 Begin
846     SFX_ITEMSET_ARG (&rSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False);
847     SFX_ITEMSET_ARG (&rSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,sal_False);
848     if (pPageTypeItem)
849         SetPageType(pPageTypeItem->GetValue());
850     if (pPosItem)
851         SetPos(pPosItem->GetValue());
852     //add CHINA001 end
853     if( nDlgType == 0 )//CHINA001 if( *pDlgType == 0 ) // Flaechen-Dialog
854     {
855         *pbAreaTP = sal_True;
856 
857         if( maColorTab.get() )
858         {
859             // Bitmapliste
860             if( *pnBitmapListState )
861             {
862                 if( *pnBitmapListState & CT_CHANGED )
863                     maBitmapList = ( (SvxAreaTabDialog*) DLGWIN )->GetNewBitmapList();
864 
865                 _nPos = aLbBitmap.GetSelectEntryPos();
866 
867                 aLbBitmap.Clear();
868                 aLbBitmap.Fill( maBitmapList );
869                 nCount = aLbBitmap.GetEntryCount();
870                 if( nCount == 0 )
871                     ; // This case should never occur
872                 else if( nCount <= _nPos )
873                     aLbBitmap.SelectEntryPos( 0 );
874                 else
875                     aLbBitmap.SelectEntryPos( _nPos );
876                 ModifyBitmapHdl_Impl( this );
877             }
878             // hatch-liste
879             if( *pnHatchingListState )
880             {
881                 if( *pnHatchingListState & CT_CHANGED )
882                     maHatchingList = ( (SvxAreaTabDialog*) DLGWIN )->GetNewHatchingList();
883 
884                 _nPos = aLbHatching.GetSelectEntryPos();
885 
886                 aLbHatching.Clear();
887                 aLbHatching.Fill( maHatchingList );
888                 nCount = aLbHatching.GetEntryCount();
889                 if( nCount == 0 )
890                     ; // This case should never occur
891                 else if( nCount <= _nPos )
892                     aLbHatching.SelectEntryPos( 0 );
893                 else
894                     aLbHatching.SelectEntryPos( _nPos );
895                 ModifyHatchingHdl_Impl( this );
896 
897                 ModifyHatchBckgrdColorHdl_Impl( this );
898             }
899             // gradient-liste
900             if( *pnGradientListState )
901             {
902                 if( *pnGradientListState & CT_CHANGED )
903                     maGradientList = ( (SvxAreaTabDialog*) DLGWIN )->GetNewGradientList();
904 
905                 _nPos = aLbGradient.GetSelectEntryPos();
906 
907                 aLbGradient.Clear();
908                 aLbGradient.Fill( maGradientList );
909                 nCount = aLbGradient.GetEntryCount();
910                 if( nCount == 0 )
911                     ; // This case should never occur
912                 else if( nCount <= _nPos )
913                     aLbGradient.SelectEntryPos( 0 );
914                 else
915                     aLbGradient.SelectEntryPos( _nPos );
916                 ModifyGradientHdl_Impl( this );
917             }
918             // ColorTable
919             if( *pnColorTableState )
920             {
921                 if( *pnColorTableState & CT_CHANGED )
922                     maColorTab = ( (SvxAreaTabDialog*) DLGWIN )->GetNewColorTable();
923                 // aLbColor
924                 _nPos = aLbColor.GetSelectEntryPos();
925                 aLbColor.Clear();
926                 aLbColor.Fill( maColorTab );
927                 nCount = aLbColor.GetEntryCount();
928                 if( nCount == 0 )
929                     ; // This case should never occur
930                 else if( nCount <= _nPos )
931                     aLbColor.SelectEntryPos( 0 );
932                 else
933                     aLbColor.SelectEntryPos( _nPos );
934 
935                 ModifyColorHdl_Impl( this );
936 
937                 // Backgroundcolor of hatch
938                 _nPos = aLbHatchBckgrdColor.GetSelectEntryPos();
939                 aLbHatchBckgrdColor.Clear();
940                 aLbHatchBckgrdColor.Fill( maColorTab );
941                 nCount = aLbHatchBckgrdColor.GetEntryCount();
942                 if( nCount == 0 )
943                     ; // This case should never occur
944                 else if( nCount <= _nPos )
945                     aLbHatchBckgrdColor.SelectEntryPos( 0 );
946                 else
947                     aLbHatchBckgrdColor.SelectEntryPos( _nPos );
948 
949                 ModifyHatchBckgrdColorHdl_Impl( this );
950             }
951 
952             // evaluate if any other Tabpage set another filltype
953             if( aTypeLB.GetSelectEntryPos() > XFILL_NONE)
954             {
955                 switch( nPageType )//CHINA001 switch( *pPageType )
956                 {
957                     case PT_GRADIENT:
958                         aTypeLB.SelectEntryPos( XFILL_GRADIENT );
959                         aLbGradient.SelectEntryPos( _nPos );//CHINA001 aLbGradient.SelectEntryPos( *pPos );
960                         ClickGradientHdl_Impl( this );
961                     break;
962 
963                     case PT_HATCH:
964                         aTypeLB.SelectEntryPos( XFILL_HATCH );
965                         aLbHatching.SelectEntryPos( _nPos );//CHINA001 aLbHatching.SelectEntryPos( *pPos );
966                         ClickHatchingHdl_Impl( this );
967                     break;
968 
969                     case PT_BITMAP:
970                         aTypeLB.SelectEntryPos( XFILL_BITMAP );
971                         aLbBitmap.SelectEntryPos( _nPos );//CHINA001 aLbBitmap.SelectEntryPos( *pPos );
972                         ClickBitmapHdl_Impl( this );
973                     break;
974 
975                     case PT_COLOR:
976                         aTypeLB.SelectEntryPos( XFILL_SOLID );
977                         aLbColor.SelectEntryPos( _nPos );//CHINA001 aLbColor.SelectEntryPos( *pPos );
978                         aLbHatchBckgrdColor.SelectEntryPos( _nPos ); //CHINA001 aLbHatchBckgrdColor.SelectEntryPos( *pPos );
979                         ClickColorHdl_Impl( this );
980                     break;
981                 }
982             }
983             nPageType = PT_AREA;//CHINA001 *pPageType = PT_AREA;
984         }
985     }
986 }
987 
988 // -----------------------------------------------------------------------
989 
990 int SvxAreaTabPage::DeactivatePage( SfxItemSet* _pSet )
991 {
992     if( nDlgType == 0 ) // Flaechen-Dialog//CHINA001 if( *pDlgType == 0 ) // Flaechen-Dialog
993     {
994         XFillStyle eStyle = (XFillStyle) aTypeLB.GetSelectEntryPos();
995         switch( eStyle )
996         {
997             case XFILL_GRADIENT:
998             {
999                         nPageType = PT_GRADIENT;//CHINA001 *pPageType = PT_GRADIENT;
1000                         nPos = aLbGradient.GetSelectEntryPos();//CHINA001 *pPos = aLbGradient.GetSelectEntryPos();
1001             }
1002             break;
1003             case XFILL_HATCH:
1004             {
1005                 nPageType = PT_HATCH;//CHINA001 *pPageType = PT_HATCH;
1006                 nPos = aLbHatching.GetSelectEntryPos();//CHINA001 *pPos = aLbHatching.GetSelectEntryPos();
1007             }
1008             break;
1009             case XFILL_BITMAP:
1010             {
1011                 nPageType = PT_BITMAP;//CHINA001 *pPageType = PT_BITMAP;
1012                 nPos = aLbBitmap.GetSelectEntryPos();//CHINA001 *pPos = aLbBitmap.GetSelectEntryPos();
1013             }
1014             break;
1015             case XFILL_SOLID:
1016             {
1017                 nPageType = PT_COLOR;//CHINA001 *pPageType = PT_COLOR;
1018                 nPos = aLbColor.GetSelectEntryPos();//CHINA001 *pPos = aLbColor.GetSelectEntryPos();
1019             }
1020             break;
1021             default: ;//prevent warning
1022         }
1023     }
1024 
1025     if( _pSet )
1026         FillItemSet( *_pSet );
1027 
1028     return( LEAVE_PAGE );
1029 }
1030 
1031 // -----------------------------------------------------------------------
1032 
1033 sal_Bool SvxAreaTabPage::FillItemSet( SfxItemSet& rAttrs )
1034 {
1035     const SfxPoolItem* pOld = NULL;
1036     sal_uInt16  _nPos;
1037     sal_Bool    bModified = sal_False;
1038 
1039     if( nDlgType != 0 || *pbAreaTP )//CHINA001 if( *pDlgType != 0 || *pbAreaTP )
1040     {
1041         XFillStyle eStyle = (XFillStyle) aTypeLB.GetSelectEntryPos();
1042         XFillStyle eSavedStyle = (XFillStyle) aTypeLB.GetSavedValue();
1043         switch( eStyle )
1044         {
1045             case XFILL_NONE:
1046             {
1047                 if(  eSavedStyle != eStyle )
1048                 {
1049                     XFillStyleItem aStyleItem( XFILL_NONE );
1050                     pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
1051                     if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
1052                     {
1053                         rAttrs.Put( aStyleItem );
1054                         bModified = sal_True;
1055                     }
1056                 }
1057             }
1058             break;
1059             case XFILL_SOLID:
1060             {
1061                  _nPos = aLbColor.GetSelectEntryPos();
1062                  if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
1063                      _nPos != aLbColor.GetSavedValue() )
1064                  {
1065                      XFillColorItem aItem( aLbColor.GetSelectEntry(),
1066                                            aLbColor.GetSelectEntryColor() );
1067                      pOld = GetOldItem( rAttrs, XATTR_FILLCOLOR );
1068                      if ( !pOld || !( *(const XFillColorItem*)pOld == aItem ) )
1069                      {
1070                          rAttrs.Put( aItem );
1071                          bModified = sal_True;
1072                      }
1073                  }
1074                  // NEU
1075                  if( (eSavedStyle != eStyle) &&
1076                      ( bModified ||
1077                        SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True ) ) )
1078                  {
1079                      XFillStyleItem aStyleItem( XFILL_SOLID );
1080                      pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
1081                      if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
1082                      {
1083                          rAttrs.Put( aStyleItem );
1084                          bModified = sal_True;
1085                      }
1086                  }
1087             }
1088             break;
1089             case XFILL_GRADIENT:
1090             {
1091                 _nPos = aLbGradient.GetSelectEntryPos();
1092                 if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
1093                     _nPos != aLbGradient.GetSavedValue() )
1094                 {
1095                     XGradient aGradient = maGradientList->GetGradient( _nPos )->GetGradient();
1096                     String aString = aLbGradient.GetSelectEntry();
1097                     XFillGradientItem aItem( aString, aGradient );
1098                     pOld = GetOldItem( rAttrs, XATTR_FILLGRADIENT );
1099                     if ( !pOld || !( *(const XFillGradientItem*)pOld == aItem ) )
1100                     {
1101                         rAttrs.Put( aItem );
1102                         bModified = sal_True;
1103                     }
1104                 }
1105                 // NEU
1106                 if( (eSavedStyle != eStyle) &&
1107                     ( bModified ||
1108                       SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True ) ) )
1109                 {
1110                     XFillStyleItem aStyleItem( XFILL_GRADIENT );
1111                     pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
1112                     if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
1113                     {
1114                         rAttrs.Put( aStyleItem );
1115                         bModified = sal_True;
1116                     }
1117                 }
1118             }
1119             break;
1120             case XFILL_HATCH:
1121             {
1122                 _nPos = aLbHatching.GetSelectEntryPos();
1123                 if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
1124                    _nPos != aLbHatching.GetSavedValue() )
1125                 {
1126                     XHatch aHatching = maHatchingList->GetHatch( _nPos )->GetHatch();
1127                     String aString = aLbHatching.GetSelectEntry();
1128                     XFillHatchItem aItem( aString, aHatching );
1129                     pOld = GetOldItem( rAttrs, XATTR_FILLHATCH );
1130                     if ( !pOld || !( *(const XFillHatchItem*)pOld == aItem ) )
1131                     {
1132                         rAttrs.Put( aItem );
1133                         bModified = sal_True;
1134                     }
1135                 }
1136                 XFillBackgroundItem aItem ( aCbxHatchBckgrd.IsChecked() );
1137                 rAttrs.Put( aItem );
1138                 nPos = aLbHatchBckgrdColor.GetSelectEntryPos();
1139                 if( nPos != LISTBOX_ENTRY_NOTFOUND &&
1140                      nPos != aLbHatchBckgrdColor.GetSavedValue() )
1141                 {
1142                     XFillColorItem aFillColorItem( aLbHatchBckgrdColor.GetSelectEntry(),
1143                                           aLbHatchBckgrdColor.GetSelectEntryColor() );
1144                     pOld = GetOldItem( rAttrs, XATTR_FILLCOLOR );
1145                     if ( !pOld || !( *(const XFillColorItem*)pOld == aFillColorItem ) )
1146                     {
1147                         rAttrs.Put( aFillColorItem );
1148                         bModified = sal_True;
1149                     }
1150                 }
1151                 // NEU
1152                 if( (eSavedStyle != eStyle) &&
1153                     ( bModified ||
1154                       SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True ) ) )
1155                 {
1156                     XFillStyleItem aStyleItem( XFILL_HATCH );
1157                     pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
1158                     if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
1159                     {
1160                         rAttrs.Put( aStyleItem );
1161                         bModified = sal_True;
1162                     }
1163                 }
1164             }
1165             break;
1166             case XFILL_BITMAP:
1167             {
1168                 //UUUU
1169                 if(mbDirectGraphicSet && GRAPHIC_NONE != maDirectGraphic.GetType())
1170                 {
1171                     const XFillBitmapItem aXBmpItem(maDirectName, maDirectGraphic);
1172                     rAttrs.Put(XFillStyleItem(XFILL_BITMAP));
1173                     rAttrs.Put(aXBmpItem);
1174                     bModified = sal_True;
1175                 }
1176                 else
1177                 {
1178                     nPos = aLbBitmap.GetSelectEntryPos();
1179                     if( nPos != LISTBOX_ENTRY_NOTFOUND &&
1180                         nPos != aLbBitmap.GetSavedValue() )
1181                     {
1182                         const XBitmapEntry* pXBitmapEntry = maBitmapList->GetBitmap(nPos);
1183                         const String aString(aLbBitmap.GetSelectEntry());
1184                         const XFillBitmapItem aFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject());
1185                         pOld = GetOldItem( rAttrs, XATTR_FILLBITMAP );
1186                         if ( !pOld || !( *(const XFillBitmapItem*)pOld == aFillBitmapItem ) )
1187                         {
1188                             rAttrs.Put( aFillBitmapItem );
1189                             bModified = sal_True;
1190                         }
1191                     }
1192                     // NEU
1193                     if( (eSavedStyle != eStyle) &&
1194                         ( bModified ||
1195                           SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True ) ) )
1196                     {
1197                         XFillStyleItem aStyleItem( XFILL_BITMAP );
1198                         pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
1199                         if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
1200                         {
1201                             rAttrs.Put( aStyleItem );
1202                             bModified = sal_True;
1203                         }
1204                    }
1205                 }
1206            }
1207            break;
1208        }
1209 
1210         // Schrittweite
1211         if( aTsbStepCount.IsEnabled() )
1212         {
1213             sal_uInt16 nValue = 0;
1214             sal_Bool   bValueModified = sal_False;
1215             TriState eState = aTsbStepCount.GetState();
1216             if( eState == STATE_CHECK )
1217             {
1218                 if( eState != aTsbStepCount.GetSavedValue() )
1219                     bValueModified = sal_True;
1220             }
1221             else
1222             {
1223                 // Zustand != Disabled ?
1224                 if( aNumFldStepCount.GetText().Len() > 0 )
1225                 {
1226                     nValue = (sal_uInt16) aNumFldStepCount.GetValue();
1227                     if( nValue != (sal_uInt16) aNumFldStepCount.GetSavedValue().ToInt32() )
1228                         bValueModified = sal_True;
1229                 }
1230             }
1231             if( bValueModified )
1232             {
1233                 XGradientStepCountItem aFillBitmapItem( nValue );
1234                 pOld = GetOldItem( rAttrs, XATTR_GRADIENTSTEPCOUNT );
1235                 if ( !pOld || !( *(const XGradientStepCountItem*)pOld == aFillBitmapItem ) )
1236                 {
1237                     rAttrs.Put( aFillBitmapItem );
1238                     bModified = sal_True;
1239                 }
1240             }
1241         }
1242 
1243         // Kacheln
1244         if( aTsbTile.IsEnabled() )
1245         {
1246             TriState eState = aTsbTile.GetState();
1247             if( eState != aTsbTile.GetSavedValue() )
1248             {
1249                 XFillBmpTileItem aFillBmpTileItem(
1250                     sal::static_int_cast< sal_Bool >( eState ) );
1251                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILE );
1252                 if ( !pOld || !( *(const XFillBmpTileItem*)pOld == aFillBmpTileItem ) )
1253                 {
1254                     rAttrs.Put( aFillBmpTileItem );
1255                     bModified = sal_True;
1256                 }
1257             }
1258         }
1259         // Stretchen
1260         if( aTsbStretch.IsEnabled() )
1261         {
1262             TriState eState = aTsbStretch.GetState();
1263             if( eState != aTsbStretch.GetSavedValue() )
1264             {
1265                 XFillBmpStretchItem aFillBmpStretchItem(
1266                     sal::static_int_cast< sal_Bool >( eState ) );
1267                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_STRETCH );
1268                 if ( !pOld || !( *(const XFillBmpStretchItem*)pOld == aFillBmpStretchItem ) )
1269                 {
1270                     rAttrs.Put( aFillBmpStretchItem );
1271                     bModified = sal_True;
1272                 }
1273             }
1274         }
1275 
1276         // Originalgroesse (im UI) wird wie folgt benutzt:
1277         // Controls sind disabled, muessen aber gesetzt werden.
1278         // SizeX = 0; SizeY = 0; Log = sal_True
1279 
1280         //aTsbScale
1281         TriState eState = aTsbScale.GetState();
1282         if( eState != aTsbScale.GetSavedValue() ||
1283             ( !aTsbScale.IsEnabled() &&
1284               aTsbOriginal.IsEnabled() &&
1285               aTsbScale.GetSavedValue() != STATE_CHECK ) )
1286         {
1287             XFillBmpSizeLogItem* pItem = NULL;
1288             if( aTsbScale.IsEnabled() )
1289                 pItem = new XFillBmpSizeLogItem( eState == STATE_NOCHECK );
1290             else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK )
1291                 pItem = new XFillBmpSizeLogItem( sal_True );
1292 
1293             if( pItem )
1294             {
1295                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZELOG );
1296                 if ( !pOld || !( *(const XFillBmpSizeLogItem*)pOld == *pItem ) )
1297                 {
1298                     rAttrs.Put( *pItem );
1299                     bModified = sal_True;
1300                 }
1301                 delete pItem;
1302             }
1303         }
1304 
1305         //aMtrFldXSize
1306         String aStr = aMtrFldXSize.GetText();
1307         {
1308             XFillBmpSizeXItem* pItem = NULL;
1309             TriState eScaleState = aTsbScale.GetState();
1310 
1311             if( aMtrFldXSize.IsEnabled() &&
1312                 aStr.Len() > 0  &&
1313                 aStr != aMtrFldXSize.GetSavedValue() )
1314             {
1315                 if( eScaleState == STATE_NOCHECK )
1316                     pItem = new XFillBmpSizeXItem( GetCoreValue( aMtrFldXSize, ePoolUnit ) );
1317                 else
1318                 {
1319                     // Prozentwerte werden negativ gesetzt, damit
1320                     // diese nicht skaliert werden; dieses wird
1321                     // im Item beruecksichtigt ( KA05.11.96 )
1322                     pItem = new XFillBmpSizeXItem( -labs( static_cast<long>(aMtrFldXSize.GetValue()) ) );
1323                 }
1324             }
1325             else if( aTsbOriginal.IsEnabled() &&
1326                      aTsbOriginal.GetState() == STATE_CHECK &&
1327                      aMtrFldXSize.GetSavedValue().Len() > 0 )
1328                 pItem = new XFillBmpSizeXItem( 0 );
1329 
1330             if( pItem )
1331             {
1332                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZEX );
1333                 if ( !pOld || !( *(const XFillBmpSizeXItem*)pOld == *pItem ) )
1334                 {
1335                     rAttrs.Put( *pItem );
1336                     bModified = sal_True;
1337                 }
1338                 delete pItem;
1339             }
1340         }
1341 
1342         //aMtrFldYSize
1343         aStr = aMtrFldYSize.GetText();
1344         {
1345             XFillBmpSizeYItem* pItem = NULL;
1346             TriState eScaleState = aTsbScale.GetState();
1347 
1348             if( aMtrFldYSize.IsEnabled() &&
1349                 aStr.Len() > 0  &&
1350                 aStr != aMtrFldYSize.GetSavedValue() )
1351             {
1352                 if( eScaleState == STATE_NOCHECK )
1353                     pItem = new XFillBmpSizeYItem( GetCoreValue( aMtrFldYSize, ePoolUnit ) );
1354                 else
1355                 {
1356                     // Prozentwerte werden negativ gesetzt, damit
1357                     // diese vom MetricItem nicht skaliert werden;
1358                     // dieses wird im Item beruecksichtigt ( KA05.11.96 )
1359                     pItem = new XFillBmpSizeYItem( -labs( static_cast<long>(aMtrFldYSize.GetValue()) ) );
1360                 }
1361             }
1362             else if( aTsbOriginal.IsEnabled() &&
1363                      aTsbOriginal.GetState() == STATE_CHECK &&
1364                      aMtrFldYSize.GetSavedValue().Len() > 0 )
1365                 pItem = new XFillBmpSizeYItem( 0 );
1366 
1367             if( pItem )
1368             {
1369                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZEY );
1370                 if ( !pOld || !( *(const XFillBmpSizeYItem*)pOld == *pItem ) )
1371                 {
1372                     rAttrs.Put( *pItem );
1373                     bModified = sal_True;
1374                 }
1375                 delete pItem;
1376             }
1377         }
1378 
1379         //aRbtRow
1380         //aRbtColumn
1381         //aMtrFldOffset
1382         if( aMtrFldOffset.IsEnabled() )
1383         {
1384             String aMtrString = aMtrFldOffset.GetText();
1385             if( ( aMtrString.Len() > 0  &&
1386                   aMtrString != aMtrFldOffset.GetSavedValue() ) ||
1387                   aRbtRow.GetSavedValue() != aRbtRow.IsChecked() ||
1388                   aRbtColumn.GetSavedValue() != aRbtColumn.IsChecked() )
1389             {
1390                 if( aRbtRow.IsChecked() )
1391                 {
1392                     XFillBmpTileOffsetXItem aFillBmpTileOffsetXItem( (sal_uInt16) aMtrFldOffset.GetValue() );
1393                     pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILEOFFSETX );
1394                     if ( !pOld || !( *(const XFillBmpTileOffsetXItem*)pOld == aFillBmpTileOffsetXItem ) )
1395                     {
1396                         rAttrs.Put( aFillBmpTileOffsetXItem );
1397                         rAttrs.Put( XFillBmpTileOffsetYItem( 0 ) );
1398                         bModified = sal_True;
1399                     }
1400                 }
1401                 else if( aRbtColumn.IsChecked() )
1402                 {
1403                     XFillBmpTileOffsetYItem aFillBmpTileOffsetYItem( (sal_uInt16) aMtrFldOffset.GetValue() );
1404                     pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILEOFFSETY );
1405                     if ( !pOld || !( *(const XFillBmpTileOffsetYItem*)pOld == aFillBmpTileOffsetYItem ) )
1406                     {
1407                         rAttrs.Put( aFillBmpTileOffsetYItem );
1408                         rAttrs.Put( XFillBmpTileOffsetXItem( 0 ) );
1409                         bModified = sal_True;
1410                     }
1411                 }
1412             }
1413         }
1414 
1415         //aCtlPosition
1416         if( aCtlPosition.IsEnabled() )
1417         {
1418             sal_Bool bPut = sal_False;
1419             RECT_POINT _eRP = aCtlPosition.GetActualRP();
1420 
1421             if( SFX_ITEM_DONTCARE == rOutAttrs.GetItemState( XATTR_FILLBMP_POS ) )
1422                 bPut = sal_True;
1423             else
1424             {
1425                 RECT_POINT eValue = ( ( const XFillBmpPosItem& ) rOutAttrs.Get( XATTR_FILLBMP_POS ) ).GetValue();
1426                 if( eValue != _eRP )
1427                     bPut = sal_True;
1428             }
1429             if( bPut )
1430             {
1431                 XFillBmpPosItem aFillBmpPosItem( _eRP );
1432                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POS );
1433                 if ( !pOld || !( *(const XFillBmpPosItem*)pOld == aFillBmpPosItem ) )
1434                 {
1435                     rAttrs.Put( aFillBmpPosItem );
1436                     bModified = sal_True;
1437                 }
1438             }
1439         }
1440 
1441         //aMtrFldXOffset
1442         if( aMtrFldXOffset.IsEnabled() )
1443         {
1444             String sMtrXOffset = aMtrFldXOffset.GetText();
1445             if( sMtrXOffset.Len() > 0  &&
1446                 sMtrXOffset != aMtrFldXOffset.GetSavedValue() )
1447             {
1448                 XFillBmpPosOffsetXItem aFillBmpPosOffsetXItem( (sal_uInt16) aMtrFldXOffset.GetValue() );
1449                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POSOFFSETX );
1450                 if ( !pOld || !( *(const XFillBmpPosOffsetXItem*)pOld == aFillBmpPosOffsetXItem ) )
1451                 {
1452                     rAttrs.Put( aFillBmpPosOffsetXItem );
1453                     bModified = sal_True;
1454                 }
1455             }
1456         }
1457 
1458         //aMtrFldYOffset
1459         if( aMtrFldYOffset.IsEnabled() )
1460         {
1461             String sMtrYOffset = aMtrFldYOffset.GetText();
1462             if( sMtrYOffset.Len() > 0  &&
1463                 sMtrYOffset != aMtrFldYOffset.GetSavedValue() )
1464             {
1465                 XFillBmpPosOffsetYItem aFillBmpPosOffsetYItem( (sal_uInt16) aMtrFldYOffset.GetValue() );
1466                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POSOFFSETY );
1467                 if ( !pOld || !( *(const XFillBmpPosOffsetYItem*)pOld == aFillBmpPosOffsetYItem ) )
1468                 {
1469                     rAttrs.Put( aFillBmpPosOffsetYItem );
1470                     bModified = sal_True;
1471                 }
1472             }
1473         }
1474         //add CHINA001  begin
1475         rAttrs.Put (SfxUInt16Item(SID_PAGE_TYPE,nPageType));
1476         rAttrs.Put (SfxUInt16Item(SID_TABPAGE_POS,nPos));
1477         //add CHINA001  end
1478     }
1479 
1480     return( bModified );
1481 }
1482 
1483 // -----------------------------------------------------------------------
1484 
1485 void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs )
1486 {
1487     //const SfxPoolItem *pPoolItem = NULL;
1488 
1489     XFillStyle eXFS;
1490     if( rAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE )
1491     {
1492         eXFS = (XFillStyle) ( ( ( const XFillStyleItem& ) rAttrs.
1493                                 Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() );
1494         aTypeLB.SelectEntryPos( sal::static_int_cast< sal_uInt16 >( eXFS ) );
1495         switch( eXFS )
1496         {
1497             case XFILL_NONE:
1498                 ClickInvisibleHdl_Impl( this );
1499             break;
1500 
1501             case XFILL_SOLID:
1502                 //if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) )
1503                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) )
1504                 {
1505                     XFillColorItem aColorItem( ( const XFillColorItem& )
1506                                         rAttrs.Get( XATTR_FILLCOLOR ) );
1507 
1508                     aLbColor.SelectEntry( aColorItem.GetColorValue() );
1509                     aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() );
1510                 }
1511                 ClickColorHdl_Impl( this );
1512 
1513             break;
1514 
1515             case XFILL_GRADIENT:
1516                 //if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True, &pPoolItem ) )
1517                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLGRADIENT ) )
1518                 {
1519                     XFillGradientItem aGradientItem( ( ( const XFillGradientItem& )
1520                                             rAttrs.Get( XATTR_FILLGRADIENT ) ) );
1521                     String    aString( aGradientItem.GetName() );
1522                     XGradient aGradient( aGradientItem.GetGradientValue() );
1523 
1524                     aLbGradient.SelectEntryByList( maGradientList, aString, aGradient );
1525                 }
1526                 ClickGradientHdl_Impl( this );
1527             break;
1528 
1529             case XFILL_HATCH:
1530                 //if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True, &pPoolItem ) )
1531                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLHATCH ) )
1532                 {
1533                     aLbHatching.SelectEntry( ( ( const XFillHatchItem& )
1534                                     rAttrs.Get( XATTR_FILLHATCH ) ).GetName() );
1535                 }
1536                 ClickHatchingHdl_Impl( this );
1537 
1538                 if ( SFX_ITEM_DONTCARE != rAttrs.GetItemState ( XATTR_FILLBACKGROUND ) )
1539                 {
1540                     aCbxHatchBckgrd.Check ( ( ( const XFillBackgroundItem& ) rAttrs.Get ( XATTR_FILLBACKGROUND ) ).GetValue() );
1541                 }
1542                 ToggleHatchBckgrdColorHdl_Impl( this );
1543                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) )
1544                 {
1545                     XFillColorItem aColorItem( ( const XFillColorItem& )
1546                                         rAttrs.Get( XATTR_FILLCOLOR ) );
1547 
1548                     aLbColor.SelectEntry( aColorItem.GetColorValue() );
1549                     aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() );
1550                 }
1551             break;
1552 
1553             case XFILL_BITMAP:
1554             {
1555                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLBITMAP ) )
1556                 {
1557                     XFillBitmapItem aBitmapItem( ( const XFillBitmapItem& )
1558                                         rAttrs.Get( XATTR_FILLBITMAP ) );
1559 
1560                     String aString( aBitmapItem.GetName() );
1561                     aLbBitmap.SelectEntry( aString );
1562                 }
1563                 ClickBitmapHdl_Impl( this );
1564             }
1565             break;
1566 
1567             default:
1568                 //aLbColor.SelectEntryPos(0);
1569                 //aRbtColor.Check();
1570             break;
1571         }
1572     }
1573     else
1574     {
1575         // Alle LBs nicht zug"anglich machen
1576         aLbColor.Hide();
1577         aLbGradient.Hide();
1578         aLbHatching.Hide();
1579         aLbBitmap.Hide();
1580         aCtlBitmapPreview.Hide();
1581         aLbColor.Disable();
1582         aLbColor.Show();
1583 
1584         // Damit Reset() auch mit Zurueck richtig funktioniert
1585         aTypeLB.SetNoSelection();
1586     }
1587 
1588     // Schrittweite
1589     if( ( rAttrs.GetItemState( XATTR_GRADIENTSTEPCOUNT ) != SFX_ITEM_DONTCARE ) ||
1590         ( rAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE ) )
1591     {
1592         aTsbStepCount.EnableTriState( sal_False );
1593         sal_uInt16 nValue = ( ( const XGradientStepCountItem& ) rAttrs.Get( XATTR_GRADIENTSTEPCOUNT ) ).GetValue();
1594         if( nValue == 0 )
1595         {
1596             aTsbStepCount.SetState( STATE_CHECK );
1597             aNumFldStepCount.SetText( String() );
1598         }
1599         else
1600         {
1601             aTsbStepCount.SetState( STATE_NOCHECK );
1602             aNumFldStepCount.SetValue( nValue );
1603         }
1604         ModifyStepCountHdl_Impl( &aTsbStepCount );
1605     }
1606     else
1607     {
1608         aTsbStepCount.SetState( STATE_DONTKNOW );
1609         aNumFldStepCount.SetText( String() );
1610     }
1611 
1612     // Attribute fuer die Bitmap-Fuellung
1613 
1614     // Ist Kacheln gesetzt?
1615     if( rAttrs.GetItemState( XATTR_FILLBMP_TILE ) != SFX_ITEM_DONTCARE )
1616     {
1617         aTsbTile.EnableTriState( sal_False );
1618 
1619         if( ( ( const XFillBmpTileItem& ) rAttrs.Get( XATTR_FILLBMP_TILE ) ).GetValue() )
1620             aTsbTile.SetState( STATE_CHECK );
1621         else
1622             aTsbTile.SetState( STATE_NOCHECK );
1623     }
1624     else
1625         aTsbTile.SetState( STATE_DONTKNOW );
1626 
1627     // Ist Stretchen gesetzt?
1628     if( rAttrs.GetItemState( XATTR_FILLBMP_STRETCH ) != SFX_ITEM_DONTCARE )
1629     {
1630         aTsbStretch.EnableTriState( sal_False );
1631 
1632         if( ( ( const XFillBmpStretchItem& ) rAttrs.Get( XATTR_FILLBMP_STRETCH ) ).GetValue() )
1633             aTsbStretch.SetState( STATE_CHECK );
1634         else
1635             aTsbStretch.SetState( STATE_NOCHECK );
1636     }
1637     else
1638         aTsbStretch.SetState( STATE_DONTKNOW );
1639 
1640 
1641     //aTsbScale
1642     if( rAttrs.GetItemState( XATTR_FILLBMP_SIZELOG ) != SFX_ITEM_DONTCARE )
1643     {
1644         aTsbScale.EnableTriState( sal_False );
1645 
1646         if( ( ( const XFillBmpSizeLogItem& ) rAttrs.Get( XATTR_FILLBMP_SIZELOG ) ).GetValue() )
1647             aTsbScale.SetState( STATE_NOCHECK );
1648         else
1649             aTsbScale.SetState( STATE_CHECK );
1650 
1651         ClickScaleHdl_Impl( NULL );
1652     }
1653     else
1654         aTsbScale.SetState( STATE_DONTKNOW );
1655 
1656 
1657     // Status fuer Originalgroesse ermitteln
1658     TriState eOriginal = STATE_NOCHECK;
1659 
1660     //aMtrFldXSize
1661     if( rAttrs.GetItemState( XATTR_FILLBMP_SIZEX ) != SFX_ITEM_DONTCARE )
1662     {
1663         sal_Int32 nValue = ( ( const XFillBmpSizeXItem& ) rAttrs.Get( XATTR_FILLBMP_SIZEX ) ).GetValue();
1664         if( aTsbScale.GetState() == STATE_CHECK )
1665         {
1666             // Wenn im Item eine Prozentangabe steckt,
1667             // so ist diese wegen des MetricItems negativ
1668             aMtrFldXSize.SetValue( labs( nValue ) );
1669         }
1670         else
1671             SetMetricValue( aMtrFldXSize, nValue, ePoolUnit );
1672         aMtrFldXSize.SaveValue();
1673 
1674         if( nValue == 0 )
1675         {
1676             eOriginal = STATE_CHECK;
1677             // Wert ist beim Ausschalten von Originalgroesse sonst zu klein
1678             // (Performance-Problem)
1679             aMtrFldXSize.SetValue( 100 );
1680         }
1681     }
1682     else
1683     {
1684         aMtrFldXSize.SetText( String() );
1685         aMtrFldXSize.SaveValue();
1686     }
1687 
1688     //aMtrFldYSize
1689     if( rAttrs.GetItemState( XATTR_FILLBMP_SIZEY ) != SFX_ITEM_DONTCARE )
1690     {
1691         sal_Int32 nValue = ( ( const XFillBmpSizeYItem& ) rAttrs.Get( XATTR_FILLBMP_SIZEY ) ).GetValue();
1692         if( aTsbScale.GetState() == STATE_CHECK )
1693         {
1694             // Wenn im Item eine Prozentangabe steckt,
1695             // so ist diese wegen des MetricItems negativ
1696             aMtrFldYSize.SetValue( labs( nValue ) );
1697         }
1698         else
1699             SetMetricValue( aMtrFldYSize, nValue, ePoolUnit );
1700         aMtrFldYSize.SaveValue();
1701 
1702         if( nValue == 0 )
1703             aMtrFldYSize.SetValue( 100 ); //s.o.
1704         else
1705             eOriginal = STATE_NOCHECK;
1706     }
1707     else
1708     {
1709         aMtrFldYSize.SetText( String() );
1710         aMtrFldYSize.SaveValue();
1711         eOriginal = STATE_NOCHECK;
1712     }
1713 
1714     // aTsbOriginal
1715     aTsbOriginal.SetState( eOriginal );
1716 
1717     // #93372# Setting proper state after changing button
1718     ModifyTileHdl_Impl( NULL );
1719 
1720     //aRbtRow
1721     //aRbtColumn
1722     //aMtrFldOffset
1723     if( rAttrs.GetItemState( XATTR_FILLBMP_TILEOFFSETX ) != SFX_ITEM_DONTCARE )
1724     {
1725         sal_uInt16 nValue = ( ( const XFillBmpTileOffsetXItem& ) rAttrs.Get( XATTR_FILLBMP_TILEOFFSETX ) ).GetValue();
1726         if( nValue > 0 )
1727         {
1728             aMtrFldOffset.SetValue( nValue );
1729             aRbtRow.Check();
1730         }
1731         else if( rAttrs.GetItemState( XATTR_FILLBMP_TILEOFFSETY ) != SFX_ITEM_DONTCARE )
1732         {
1733             nValue = ( ( const XFillBmpTileOffsetYItem& ) rAttrs.Get( XATTR_FILLBMP_TILEOFFSETY ) ).GetValue();
1734             if( nValue > 0 )
1735             {
1736                 aMtrFldOffset.SetValue( nValue );
1737                 aRbtColumn.Check();
1738             }
1739         }
1740         else
1741             aMtrFldOffset.SetValue( 0 );
1742     }
1743     else
1744         aMtrFldOffset.SetText( String() );
1745 
1746 
1747     //aCtlPosition
1748     if( rAttrs.GetItemState( XATTR_FILLBMP_POS ) != SFX_ITEM_DONTCARE )
1749     {
1750         RECT_POINT eValue = ( ( const XFillBmpPosItem& ) rAttrs.Get( XATTR_FILLBMP_POS ) ).GetValue();
1751         aCtlPosition.SetActualRP( eValue );
1752     }
1753     else
1754         aCtlPosition.Reset();
1755 
1756     //aMtrFldXOffset
1757     if( rAttrs.GetItemState( XATTR_FILLBMP_POSOFFSETX ) != SFX_ITEM_DONTCARE )
1758     {
1759         sal_Int32 nValue = ( ( const XFillBmpPosOffsetXItem& ) rAttrs.Get( XATTR_FILLBMP_POSOFFSETX ) ).GetValue();
1760         aMtrFldXOffset.SetValue( nValue );
1761     }
1762     else
1763         aMtrFldXOffset.SetText( String() );
1764 
1765     //aMtrFldYOffset
1766     if( rAttrs.GetItemState( XATTR_FILLBMP_POSOFFSETY ) != SFX_ITEM_DONTCARE )
1767     {
1768         sal_Int32 nValue = ( ( const XFillBmpPosOffsetYItem& ) rAttrs.Get( XATTR_FILLBMP_POSOFFSETY ) ).GetValue();
1769         aMtrFldYOffset.SetValue( nValue );
1770     }
1771     else
1772         aMtrFldYOffset.SetText( String() );
1773 
1774     // Erst hier, damit Tile und Stretch mit beruecksichtigt wird
1775     if( aTypeLB.GetSelectEntryPos() == XFILL_BITMAP )
1776         ClickBitmapHdl_Impl( NULL );
1777 
1778     // Werte sichern
1779     aTypeLB.SaveValue();
1780     aLbColor.SaveValue();
1781     aLbGradient.SaveValue();
1782     aLbHatching.SaveValue();
1783     //aCbxHatchBckgrd.SaveValue();
1784     aLbHatchBckgrdColor.SaveValue();
1785     aLbBitmap.SaveValue();
1786 //  aLbTransparent.SaveValue();
1787     aTsbStepCount.SaveValue();
1788     aNumFldStepCount.SaveValue();
1789     aTsbTile.SaveValue();
1790     aTsbStretch.SaveValue();
1791     aTsbScale.SaveValue();
1792     aRbtRow.SaveValue();
1793     aRbtColumn.SaveValue();
1794     aMtrFldOffset.SaveValue();
1795     aMtrFldXOffset.SaveValue();
1796     aMtrFldYOffset.SaveValue();
1797     //aMtrFldXSize.SaveValue(); <- wird oben behandelt
1798     //aMtrFldYSize.SaveValue(); <- wird oben behandelt
1799 }
1800 
1801 // -----------------------------------------------------------------------
1802 
1803 SfxTabPage* SvxAreaTabPage::Create( Window* pWindow,
1804                 const SfxItemSet& rAttrs )
1805 {
1806     return( new SvxAreaTabPage( pWindow, rAttrs ) );
1807 }
1808 
1809 //------------------------------------------------------------------------
1810 
1811 sal_uInt16* SvxAreaTabPage::GetRanges()
1812 {
1813     return( pAreaRanges );
1814 }
1815 
1816 //------------------------------------------------------------------------
1817 IMPL_LINK( SvxAreaTabPage, SelectDialogTypeHdl_Impl, ListBox *, EMPTYARG )
1818 {
1819     switch( (XFillStyle)aTypeLB.GetSelectEntryPos() )
1820     {
1821         case XFILL_NONE: ClickInvisibleHdl_Impl( this ); break;
1822         case XFILL_SOLID: ClickColorHdl_Impl( this ); break;
1823         case XFILL_GRADIENT: ClickGradientHdl_Impl( this ); break;
1824         case XFILL_HATCH: ClickHatchingHdl_Impl( this ); break;
1825         case XFILL_BITMAP: ClickBitmapHdl_Impl( this ); break;
1826     }
1827 
1828     return 0;
1829 }
1830 
1831 IMPL_LINK( SvxAreaTabPage, ClickInvisibleHdl_Impl, void *, EMPTYARG )
1832 {
1833     //UUUU
1834     maBtnImport.Hide();
1835     aTsbTile.Hide();
1836     aTsbStretch.Hide();
1837     aTsbScale.Hide();
1838     aTsbOriginal.Hide();
1839     aFtXSize.Hide();
1840     aMtrFldXSize.Hide();
1841     aFtYSize.Hide();
1842     aMtrFldYSize.Hide();
1843     aFlSize.Hide();
1844     aRbtRow.Hide();
1845     aRbtColumn.Hide();
1846     aMtrFldOffset.Hide();
1847     aFlOffset.Hide();
1848     aCtlPosition.Hide();
1849     aFtXOffset.Hide();
1850     aMtrFldXOffset.Hide();
1851     aFtYOffset.Hide();
1852     aMtrFldYOffset.Hide();
1853     aFlPosition.Hide();
1854 
1855     aLbColor.Hide();
1856     aLbGradient.Hide();
1857     aLbHatching.Hide();
1858     aLbBitmap.Hide();
1859     aCtlXRectPreview.Hide();
1860     aCtlBitmapPreview.Hide();
1861 
1862     aFlStepCount.Hide();
1863     aTsbStepCount.Hide();
1864     aNumFldStepCount.Hide();
1865 
1866     // Controls for Hatch-Background
1867     aCbxHatchBckgrd.Hide();
1868     aLbHatchBckgrdColor.Hide();
1869 
1870     rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
1871     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
1872     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
1873 
1874     aCtlXRectPreview.Invalidate();
1875     aCtlBitmapPreview.Invalidate();
1876 
1877     return( 0L );
1878 }
1879 
1880 //------------------------------------------------------------------------
1881 
1882 IMPL_LINK( SvxAreaTabPage, ClickColorHdl_Impl, void *, EMPTYARG )
1883 {
1884     //UUUU
1885     maBtnImport.Hide();
1886     aTsbTile.Hide();
1887     aTsbStretch.Hide();
1888     aTsbScale.Hide();
1889     aTsbOriginal.Hide();
1890     aFtXSize.Hide();
1891     aMtrFldXSize.Hide();
1892     aFtYSize.Hide();
1893     aMtrFldYSize.Hide();
1894     aFlSize.Hide();
1895     aRbtRow.Hide();
1896     aRbtColumn.Hide();
1897     aMtrFldOffset.Hide();
1898     aFlOffset.Hide();
1899     aCtlPosition.Hide();
1900     aFtXOffset.Hide();
1901     aMtrFldXOffset.Hide();
1902     aFtYOffset.Hide();
1903     aMtrFldYOffset.Hide();
1904     aFlPosition.Hide();
1905 
1906     aLbColor.Enable();
1907     aLbColor.Show();
1908     aLbGradient.Hide();
1909     aLbHatching.Hide();
1910     aLbBitmap.Hide();
1911     aCtlXRectPreview.Enable();
1912     aCtlXRectPreview.Show();
1913     aCtlBitmapPreview.Hide();
1914 
1915     aFlStepCount.Hide();
1916     aTsbStepCount.Hide();
1917     aNumFldStepCount.Hide();
1918 
1919     // Controls for Hatch-Background
1920     aCbxHatchBckgrd.Hide();
1921     aLbHatchBckgrdColor.Hide();
1922 
1923     // Text der Tabelle setzen
1924     String          aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
1925     INetURLObject   aURL( maColorTab->GetPath() );
1926 
1927     aURL.Append( maColorTab->GetName() );
1928     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
1929 
1930     if( aURL.getBase().getLength() > 18 )
1931     {
1932         aString += String(aURL.getBase()).Copy( 0, 15 );
1933         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
1934     }
1935     else
1936         aString += String(aURL.getBase());
1937 
1938     ModifyColorHdl_Impl( this );
1939     return( 0L );
1940 }
1941 
1942 //------------------------------------------------------------------------
1943 
1944 IMPL_LINK( SvxAreaTabPage, ModifyColorHdl_Impl, void *, EMPTYARG )
1945 {
1946     const SfxPoolItem* pPoolItem = NULL;
1947     sal_uInt16 _nPos = aLbColor.GetSelectEntryPos();
1948     aLbHatchBckgrdColor.SelectEntryPos( _nPos );
1949     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
1950     {
1951         rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
1952         rXFSet.Put( XFillColorItem( String(),
1953                                     aLbColor.GetSelectEntryColor() ) );
1954     }
1955     // NEU
1956     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) )
1957     {
1958         rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
1959         Color aColor( ( ( const XFillColorItem* ) pPoolItem )->GetColorValue() );
1960         rXFSet.Put( XFillColorItem( String(), aColor ) );
1961     }
1962     else
1963         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
1964 
1965     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
1966     aCtlXRectPreview.Invalidate();
1967 
1968     return( 0L );
1969 }
1970 //------------------------------------------------------------------------
1971 
1972 IMPL_LINK( SvxAreaTabPage, ClickGradientHdl_Impl, void *, EMPTYARG )
1973 {
1974     //UUUU
1975     maBtnImport.Hide();
1976     aTsbTile.Hide();
1977     aTsbStretch.Hide();
1978     aTsbScale.Hide();
1979     aTsbOriginal.Hide();
1980     aFtXSize.Hide();
1981     aMtrFldXSize.Hide();
1982     aFtYSize.Hide();
1983     aMtrFldYSize.Hide();
1984     aFlSize.Hide();
1985     aRbtRow.Hide();
1986     aRbtColumn.Hide();
1987     aMtrFldOffset.Hide();
1988     aFlOffset.Hide();
1989     aCtlPosition.Hide();
1990     aFtXOffset.Hide();
1991     aMtrFldXOffset.Hide();
1992     aFtYOffset.Hide();
1993     aMtrFldYOffset.Hide();
1994     aFlPosition.Hide();
1995 
1996     aLbColor.Hide();
1997     aLbGradient.Enable();
1998     aLbGradient.Show();
1999     aLbHatching.Hide();
2000     aLbBitmap.Hide();
2001     aCtlXRectPreview.Enable();
2002     aCtlXRectPreview.Show();
2003     aCtlBitmapPreview.Hide();
2004 
2005     aFlStepCount.Enable();
2006     aFlStepCount.Show();
2007     aTsbStepCount.Enable();
2008     aTsbStepCount.Show();
2009     aNumFldStepCount.Show();
2010 
2011     // Controls for Hatch-Background
2012     aCbxHatchBckgrd.Hide();
2013     aLbHatchBckgrdColor.Hide();
2014 
2015     // Text der Tabelle setzen
2016     String          aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
2017     INetURLObject   aURL( maGradientList->GetPath() );
2018 
2019     aURL.Append( maGradientList->GetName() );
2020     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
2021 
2022     if( aURL.getBase().getLength() > 18 )
2023     {
2024         aString += String(aURL.getBase()).Copy( 0, 15 );
2025         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
2026     }
2027     else
2028         aString += String(aURL.getBase());
2029 
2030     ModifyGradientHdl_Impl( this );
2031     ModifyStepCountHdl_Impl( &aTsbStepCount );
2032     return( 0L );
2033 }
2034 
2035 //------------------------------------------------------------------------
2036 
2037 IMPL_LINK( SvxAreaTabPage, ModifyGradientHdl_Impl, void *, EMPTYARG )
2038 {
2039     const SfxPoolItem* pPoolItem = NULL;
2040     sal_uInt16 _nPos = aLbGradient.GetSelectEntryPos();
2041     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
2042     {
2043         // ItemSet fuellen und an aCtlXRectPreview weiterleiten
2044         XGradientEntry* pEntry = maGradientList->GetGradient( _nPos );
2045 
2046         rXFSet.Put( XFillStyleItem( XFILL_GRADIENT ) );
2047         rXFSet.Put( XFillGradientItem( String(),
2048                                        pEntry->GetGradient() ) );
2049     }
2050     // NEU
2051     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True, &pPoolItem ) )
2052     {
2053         rXFSet.Put( XFillStyleItem( XFILL_GRADIENT ) );
2054         rXFSet.Put( XFillGradientItem( String(), ( ( const XFillGradientItem* ) pPoolItem )->GetGradientValue() ) );
2055     }
2056     else
2057         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
2058 
2059     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
2060     aCtlXRectPreview.Invalidate();
2061 
2062     return( 0L );
2063 }
2064 
2065 //------------------------------------------------------------------------
2066 
2067 IMPL_LINK( SvxAreaTabPage, ClickHatchingHdl_Impl, void *, EMPTYARG )
2068 {
2069     aLbColor.Hide();
2070     aLbGradient.Hide();
2071     aLbHatching.Enable();
2072     aLbHatching.Show();
2073     aLbBitmap.Hide();
2074     aCtlXRectPreview.Enable();
2075     aCtlXRectPreview.Show();
2076     aCtlBitmapPreview.Hide();
2077 
2078 //  aGrpTransparent.Hide();
2079 //  aLbTransparent.Hide();
2080     aFlStepCount.Hide();
2081     aTsbStepCount.Hide();
2082     aNumFldStepCount.Hide();
2083 
2084     //UUUU
2085     maBtnImport.Hide();
2086     aTsbTile.Hide();
2087     aTsbStretch.Hide();
2088     aTsbScale.Hide();
2089     aTsbOriginal.Hide();
2090     aFtXSize.Hide();
2091     aMtrFldXSize.Hide();
2092     aFtYSize.Hide();
2093     aMtrFldYSize.Hide();
2094     aFlSize.Hide();
2095     aRbtRow.Hide();
2096     aRbtColumn.Hide();
2097     aMtrFldOffset.Hide();
2098     aFlOffset.Hide();
2099     aCtlPosition.Hide();
2100     aFtXOffset.Hide();
2101     aMtrFldXOffset.Hide();
2102     aFtYOffset.Hide();
2103     aMtrFldYOffset.Hide();
2104     aFlPosition.Hide();
2105 
2106     // Controls for Hatch-Background
2107     aCbxHatchBckgrd.Show();
2108     aLbHatchBckgrdColor.Show();
2109     aCbxHatchBckgrd.Enable();
2110     aLbHatchBckgrdColor.Enable();
2111 
2112     // Text der Tabelle setzen
2113     String          aString( CUI_RES( RID_SVXSTR_TABLE ) );     aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
2114     INetURLObject   aURL( maHatchingList->GetPath() );
2115 
2116     aURL.Append( maHatchingList->GetName() );
2117     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
2118 
2119     if( aURL.getBase().getLength() > 18 )
2120     {
2121         aString += String(String(aURL.getBase()).Copy( 0, 15 ));
2122         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
2123     }
2124     else
2125         aString += String(aURL.getBase());
2126 
2127     ModifyHatchingHdl_Impl( this );
2128     ModifyHatchBckgrdColorHdl_Impl( this );
2129     ToggleHatchBckgrdColorHdl_Impl( this );
2130 
2131     return( 0L );
2132 }
2133 
2134 //------------------------------------------------------------------------
2135 
2136 IMPL_LINK( SvxAreaTabPage, ModifyHatchingHdl_Impl, void *, EMPTYARG )
2137 {
2138     const SfxPoolItem* pPoolItem = NULL;
2139     sal_uInt16 _nPos = aLbHatching.GetSelectEntryPos();
2140     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
2141     {
2142         // ItemSet fuellen und an aCtlXRectPreview weiterleiten
2143         XHatchEntry* pEntry = maHatchingList->GetHatch( _nPos );
2144 
2145         rXFSet.Put( XFillStyleItem( XFILL_HATCH ) );
2146         rXFSet.Put( XFillHatchItem( String(), pEntry->GetHatch() ) );
2147     }
2148     // NEU
2149     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True, &pPoolItem ) )
2150     {
2151         rXFSet.Put( XFillStyleItem( XFILL_HATCH ) );
2152         rXFSet.Put( XFillHatchItem( String(), ( ( const XFillHatchItem* ) pPoolItem )->GetHatchValue() ) );
2153     }
2154     else
2155         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
2156 
2157     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
2158     aCtlXRectPreview.Invalidate();
2159 
2160     return( 0L );
2161 }
2162 
2163 //------------------------------------------------------------------------
2164 
2165 IMPL_LINK( SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl, void *, EMPTYARG )
2166 {
2167     const SfxPoolItem* pPoolItem = NULL;
2168     sal_uInt16 _nPos = aLbHatchBckgrdColor.GetSelectEntryPos();
2169     aLbColor.SelectEntryPos( _nPos );
2170     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
2171     {
2172 //      rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
2173         rXFSet.Put( XFillColorItem( String(),
2174                                     aLbHatchBckgrdColor.GetSelectEntryColor() ) );
2175     }
2176     // NEU
2177     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) )
2178     {
2179 //      rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
2180         Color aColor( ( ( const XFillColorItem* ) pPoolItem )->GetColorValue() );
2181         rXFSet.Put( XFillColorItem( String(), aColor ) );
2182     }
2183     else
2184         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
2185 
2186     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
2187     aCtlXRectPreview.Invalidate();
2188 
2189     return( 0L );
2190 }
2191 
2192 //------------------------------------------------------------------------
2193 
2194 IMPL_LINK( SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl, void *, EMPTYARG )
2195 {
2196     // switch on/off backgroundcolor for hatches
2197     aLbHatchBckgrdColor.Enable( aCbxHatchBckgrd.IsChecked() );
2198 
2199     XFillBackgroundItem aItem( aCbxHatchBckgrd.IsChecked() );
2200     rXFSet.Put ( aItem, XATTR_FILLBACKGROUND );
2201 
2202     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
2203     aCtlXRectPreview.Invalidate();
2204 
2205     if( aLbHatchBckgrdColor.GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND )
2206     {
2207         if ( SFX_ITEM_SET == rOutAttrs.GetItemState( XATTR_FILLCOLOR ) )//>= SFX_ITEM_DEFAULT )
2208         {
2209             XFillColorItem aColorItem( (const XFillColorItem&)rOutAttrs.Get( XATTR_FILLCOLOR ) );
2210             aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() );
2211         }
2212     }
2213 
2214     return( 0L );
2215 }
2216 
2217 //------------------------------------------------------------------------
2218 
2219 IMPL_LINK( SvxAreaTabPage, ClickBitmapHdl_Impl, void *, EMPTYARG )
2220 {
2221     aLbColor.Hide();
2222     aLbGradient.Hide();
2223     aLbHatching.Hide();
2224     aLbBitmap.Enable();
2225     aLbBitmap.Show();
2226     aCtlBitmapPreview.Enable();
2227     aCtlBitmapPreview.Show();
2228     aCtlXRectPreview.Hide();
2229 //      aGrpPreview.Hide();
2230 //  aGrpTransparent.Hide();
2231 //  aLbTransparent.Hide();
2232     aFlStepCount.Hide();
2233     aTsbStepCount.Hide();
2234     aNumFldStepCount.Hide();
2235 
2236     aTsbTile.Enable();
2237     aTsbStretch.Enable();
2238     aTsbScale.Enable();
2239     aTsbOriginal.Enable();
2240     aFtXSize.Enable();
2241     aMtrFldXSize.Enable();
2242     aFtYSize.Enable();
2243     aMtrFldYSize.Enable();
2244     aFlSize.Enable();
2245     aCtlPosition.Enable();
2246     aFtXOffset.Enable();
2247     aMtrFldXOffset.Enable();
2248     aFtYOffset.Enable();
2249     aMtrFldYOffset.Enable();
2250     aFlPosition.Enable();
2251     aRbtRow.Enable();
2252     aRbtColumn.Enable();
2253     aMtrFldOffset.Enable();
2254     aFlOffset.Enable();
2255 
2256     // Controls for Hatch-Background
2257     aCbxHatchBckgrd.Hide();
2258     aLbHatchBckgrdColor.Hide();
2259 
2260     //UUUU
2261     if(mbOfferImportButton)
2262     {
2263         maBtnImport.Show();
2264         maBtnImport.Enable();
2265     }
2266     else
2267     {
2268         maBtnImport.Hide();
2269         maBtnImport.Disable();
2270     }
2271 
2272     if(mbOfferImportButton && !mbPositionsAdapted)
2273     {
2274         //UUUU adapt positions only once in dialogs lifetime
2275         mbPositionsAdapted = true;
2276 
2277         // adapt in y from position of FL_SIZE MAP_APPFONT(3) to position of MTR_FLD_OFFSET MAP_APPFONT(157)
2278         const sal_uInt32 nOrigStartY(aFlSize.GetPosPixel().Y());
2279         const sal_uInt32 nOrigHeight(aMtrFldOffset.GetPosPixel().Y() - nOrigStartY);
2280         const sal_uInt32 nBtnImportHeight(maBtnImport.GetSizePixel().Height());
2281         const sal_uInt32 nNewHeight(nOrigHeight - nBtnImportHeight);
2282 
2283         aFlSize.SetPosPixel(Point(aFlSize.GetPosPixel().X(), nOrigStartY + (((aFlSize.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2284         aTsbOriginal.SetPosPixel(Point(aTsbOriginal.GetPosPixel().X(), nOrigStartY + (((aTsbOriginal.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2285         aTsbScale.SetPosPixel(Point(aTsbScale.GetPosPixel().X(), nOrigStartY + (((aTsbScale.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2286         aFtXSize.SetPosPixel(Point(aFtXSize.GetPosPixel().X(), nOrigStartY + (((aFtXSize.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2287         aMtrFldXSize.SetPosPixel(Point(aMtrFldXSize.GetPosPixel().X(), nOrigStartY + (((aMtrFldXSize.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2288         aFtYSize.SetPosPixel(Point(aFtYSize.GetPosPixel().X(), nOrigStartY + (((aFtYSize.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2289         aMtrFldYSize.SetPosPixel(Point(aMtrFldYSize.GetPosPixel().X(), nOrigStartY + (((aMtrFldYSize.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2290         aFlPosition.SetPosPixel(Point(aFlPosition.GetPosPixel().X(), nOrigStartY + (((aFlPosition.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2291         aCtlPosition.SetPosPixel(Point(aCtlPosition.GetPosPixel().X(), nOrigStartY + (((aCtlPosition.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2292         aFtXOffset.SetPosPixel(Point(aFtXOffset.GetPosPixel().X(), nOrigStartY + (((aFtXOffset.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2293         aMtrFldXOffset.SetPosPixel(Point(aMtrFldXOffset.GetPosPixel().X(), nOrigStartY + (((aMtrFldXOffset.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2294         aFtYOffset.SetPosPixel(Point(aFtYOffset.GetPosPixel().X(), nOrigStartY + (((aFtYOffset.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2295         aMtrFldYOffset.SetPosPixel(Point(aMtrFldYOffset.GetPosPixel().X(), nOrigStartY + (((aMtrFldYOffset.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2296         aTsbTile.SetPosPixel(Point(aTsbTile.GetPosPixel().X(), nOrigStartY + (((aTsbTile.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2297         aTsbStretch.SetPosPixel(Point(aTsbStretch.GetPosPixel().X(), nOrigStartY + (((aTsbStretch.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2298         aFlOffset.SetPosPixel(Point(aFlOffset.GetPosPixel().X(), nOrigStartY + (((aFlOffset.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2299         aRbtRow.SetPosPixel(Point(aRbtRow.GetPosPixel().X(), nOrigStartY + (((aRbtRow.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2300         aRbtColumn.SetPosPixel(Point(aRbtColumn.GetPosPixel().X(), nOrigStartY + (((aRbtColumn.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2301         aMtrFldOffset.SetPosPixel(Point(aMtrFldOffset.GetPosPixel().X(), nOrigStartY + (((aMtrFldOffset.GetPosPixel().Y() - nOrigStartY) * nNewHeight) / nOrigHeight)));
2302     }
2303 
2304     aTsbTile.Show();
2305     aTsbStretch.Show();
2306     aTsbScale.Show();
2307     aTsbOriginal.Show();
2308     aFtXSize.Show();
2309     aMtrFldXSize.Show();
2310     aFtYSize.Show();
2311     aMtrFldYSize.Show();
2312     aFlSize.Show();
2313     aCtlPosition.Show();
2314     aFtXOffset.Show();
2315     aMtrFldXOffset.Show();
2316     aFtYOffset.Show();
2317     aMtrFldYOffset.Show();
2318     aFlPosition.Show();
2319     aRbtRow.Show();
2320     //Solution:Check one when initializing.
2321     if(!aRbtRow.IsChecked()&&!aRbtColumn.IsChecked())
2322             aRbtRow.Check();
2323     aRbtColumn.Show();
2324     aMtrFldOffset.Show();
2325     aFlOffset.Show();
2326 
2327     // Text der Tabelle setzen
2328     String          aString( CUI_RES( RID_SVXSTR_TABLE ) );     aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
2329     INetURLObject   aURL( maBitmapList->GetPath() );
2330 
2331     aURL.Append( maBitmapList->GetName() );
2332     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
2333 
2334     if( aURL.getBase().getLength() > 18 )
2335     {
2336         aString += String(aURL.getBase()).Copy( 0, 15 );
2337         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
2338     }
2339     else
2340         aString += String(aURL.getBase());
2341 
2342     ModifyBitmapHdl_Impl( this );
2343     ModifyTileHdl_Impl( &aTsbOriginal );
2344     return( 0L );
2345 }
2346 
2347 //------------------------------------------------------------------------
2348 
2349 IMPL_LINK( SvxAreaTabPage, ModifyBitmapHdl_Impl, void *, EMPTYARG )
2350 {
2351     //UUUU
2352     mbDirectGraphicSet = false;
2353     maDirectGraphic.Clear();
2354     maDirectName = String();
2355 
2356     const SfxPoolItem* pPoolItem = NULL;
2357     sal_uInt16 _nPos = aLbBitmap.GetSelectEntryPos();
2358     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
2359     {
2360         // ItemSet fuellen und an aCtlXRectPreview weiterleiten
2361         const XBitmapEntry* pEntry = maBitmapList->GetBitmap(_nPos);
2362 
2363         rXFSet.Put(XFillStyleItem(XFILL_BITMAP));
2364         rXFSet.Put(XFillBitmapItem(String(), pEntry->GetGraphicObject()));
2365     }
2366     // NEU
2367     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True, &pPoolItem ) )
2368     {
2369         rXFSet.Put(XFillStyleItem(XFILL_BITMAP));
2370         rXFSet.Put(XFillBitmapItem(String(), ((const XFillBitmapItem*)pPoolItem)->GetGraphicObject()));
2371     }
2372     else
2373         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
2374 
2375     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
2376     aCtlBitmapPreview.Invalidate();
2377 
2378     return( 0L );
2379 }
2380 
2381 //------------------------------------------------------------------------
2382 
2383 //IMPL_LINK( SvxAreaTabPage, ModifyTransparentHdl_Impl, void *, EMPTYARG )
2384 //{
2385 //  sal_uInt16 nPos = aLbTransparent.GetSelectEntryPos();
2386 //  if( nPos != LISTBOX_ENTRY_NOTFOUND )
2387 //  {
2388 //      XFillTransparenceItem aItem( nPos * 25 );
2389 //
2390 //      rXFSet.Put( XFillTransparenceItem( aItem ) );
2391 //      aCtlXRectPreview.SetAttributes( aXFillAttr );
2392 //
2393 //      aCtlXRectPreview.Invalidate();
2394 //  }
2395 //
2396 //  return( 0L );
2397 //}
2398 
2399 //------------------------------------------------------------------------
2400 
2401 IMPL_LINK( SvxAreaTabPage, ModifyStepCountHdl_Impl, void *, p )
2402 {
2403     if( p == &aTsbStepCount )
2404     {
2405         if( aTsbStepCount.GetState() == STATE_NOCHECK )
2406         {
2407             if( aNumFldStepCount.GetText().Len() == 0 )
2408                 aNumFldStepCount.SetText( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "64") ));
2409 
2410             aNumFldStepCount.Enable();
2411         }
2412         else
2413             aNumFldStepCount.Disable();
2414     }
2415 
2416     sal_uInt16 nValue = 0;
2417     if( aTsbStepCount.GetState() != STATE_CHECK )
2418     {
2419         // Zustand != Disabled ?
2420         if( aNumFldStepCount.GetText().Len() > 0 )
2421             nValue = (sal_uInt16) aNumFldStepCount.GetValue();
2422     }
2423     rXFSet.Put( XGradientStepCountItem( nValue ) );
2424     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
2425     aCtlXRectPreview.Invalidate();
2426 
2427     return( 0L );
2428 }
2429 
2430 //------------------------------------------------------------------------
2431 
2432 IMPL_LINK( SvxAreaTabPage, ClickImportHdl_Impl, void *, EMPTYARG )
2433 {
2434     ResMgr& rMgr = CUI_MGR();
2435     SvxOpenGraphicDialog aDlg(UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("Import")));
2436     aDlg.EnableLink(sal_False);
2437 
2438     if(!aDlg.Execute())
2439     {
2440         EnterWait();
2441         const int nError(aDlg.GetGraphic(maDirectGraphic));
2442         LeaveWait();
2443 
2444         if(!nError && GRAPHIC_NONE != maDirectGraphic.GetType())
2445         {
2446             // extract name from filename
2447             const INetURLObject aURL(aDlg.GetPath());
2448             maDirectName = String(aURL.GetName()).GetToken( 0, '.' );
2449 
2450             // use loaded graphic
2451             const XFillBitmapItem aXBmpItem(maDirectName, maDirectGraphic);
2452             rXFSet.Put(XFillStyleItem(XFILL_BITMAP));
2453             rXFSet.Put(aXBmpItem);
2454 
2455             // trigger state flag for directly loaded graphic
2456             mbDirectGraphicSet = true;
2457 
2458             // preview
2459             aCtlBitmapPreview.SetAttributes(aXFillAttr.GetItemSet());
2460             aCtlBitmapPreview.Invalidate();
2461         }
2462         else
2463         {
2464             // graphic could not be loaded
2465             ErrorBox(DLGWIN, WinBits(WB_OK), String(ResId(RID_SVXSTR_READ_DATA_ERROR, rMgr))).Execute();
2466         }
2467     }
2468 
2469     return 0L;
2470 }
2471 
2472 //------------------------------------------------------------------------
2473 
2474 IMPL_LINK( SvxAreaTabPage, ModifyTileHdl_Impl, void *, EMPTYARG )
2475 {
2476     TriState eState = aTsbTile.GetState();
2477     if( eState == STATE_CHECK )
2478     {
2479         // tiled
2480         // disable stretched for tiled graphic
2481         aTsbStretch.Disable();
2482 
2483         // allow tile offset
2484         aRbtRow.Enable();
2485         aRbtColumn.Enable();
2486         aMtrFldOffset.Enable();
2487         aFlOffset.Enable();
2488 
2489         // allow positioning
2490         aCtlPosition.Enable();
2491         aCtlPosition.Invalidate();
2492 
2493         // allow offsets
2494         aFtXOffset.Enable();
2495         aMtrFldXOffset.Enable();
2496         aFtYOffset.Enable();
2497         aMtrFldYOffset.Enable();
2498 
2499         // allow 'Position" title
2500         aFlPosition.Enable();
2501 
2502         // allow size definitions
2503         aTsbScale.Enable();
2504         aTsbOriginal.Enable();
2505         aFtXSize.Enable();
2506         aMtrFldXSize.Enable();
2507         aFtYSize.Enable();
2508         aMtrFldYSize.Enable();
2509         aFlSize.Enable();
2510     }
2511     else if( eState == STATE_NOCHECK )
2512     {
2513         // non-tiled
2514         // enable stretch selection
2515         aTsbStretch.Enable();
2516 
2517         // no need for tile offset
2518         aRbtRow.Disable();
2519         aRbtColumn.Disable();
2520         aMtrFldOffset.Disable();
2521         aFlOffset.Disable();
2522 
2523         // no need for offsets, only position is supported in non-tiled
2524         aFtXOffset.Disable();
2525         aMtrFldXOffset.Disable();
2526         aFtYOffset.Disable();
2527         aMtrFldYOffset.Disable();
2528 
2529         if( aTsbStretch.GetState() != STATE_NOCHECK )
2530         {
2531             // non-tiled, stretched
2532             // no need for positioning
2533             aCtlPosition.Disable();
2534             aCtlPosition.Invalidate();
2535 
2536             // no need for 'Position" title, all deactivated
2537             aFlPosition.Disable();
2538 
2539             // no need for size definitions
2540             aTsbScale.Disable();
2541             aTsbOriginal.Disable();
2542             aFtXSize.Disable();
2543             aMtrFldXSize.Disable();
2544             aFtYSize.Disable();
2545             aMtrFldYSize.Disable();
2546             aFlSize.Disable();
2547         }
2548         else
2549         {
2550             // non-tiled, non-stretched
2551             // allow positioning
2552             aCtlPosition.Enable();
2553             aCtlPosition.Invalidate();
2554 
2555             // allow 'Position" title, positioning is active
2556             aFlPosition.Enable();
2557 
2558             // allow size definitions
2559             aTsbScale.Enable();
2560             aTsbOriginal.Enable();
2561             aFtXSize.Enable();
2562             aMtrFldXSize.Enable();
2563             aFtYSize.Enable();
2564             aMtrFldYSize.Enable();
2565             aFlSize.Enable();
2566         }
2567     }
2568     else
2569     {
2570         // disable all when tiling is undefined
2571         aTsbStretch.Disable();
2572         aRbtRow.Disable();
2573         aRbtColumn.Disable();
2574         aMtrFldOffset.Disable();
2575         aFlOffset.Disable();
2576 
2577         aCtlPosition.Disable();
2578         aCtlPosition.Invalidate();
2579         aFtXOffset.Disable();
2580         aMtrFldXOffset.Disable();
2581         aFtYOffset.Disable();
2582         aMtrFldYOffset.Disable();
2583         aFlPosition.Disable();
2584 
2585         aTsbScale.Disable();
2586         aTsbOriginal.Disable();
2587         aFtXSize.Disable();
2588         aMtrFldXSize.Disable();
2589         aFtYSize.Disable();
2590         aMtrFldYSize.Disable();
2591         aFlSize.Disable();
2592     }
2593 
2594     if( aTsbOriginal.GetState() == STATE_CHECK )
2595     {
2596         aMtrFldXSize.SetText( String() );
2597         aMtrFldYSize.SetText( String() );
2598         aFtXSize.Disable();
2599         aFtYSize.Disable();
2600         aMtrFldXSize.Disable();
2601         aMtrFldYSize.Disable();
2602         aTsbScale.Disable();
2603     }
2604     else
2605     {
2606         aMtrFldXSize.SetValue( aMtrFldXSize.GetValue() );
2607         aMtrFldYSize.SetValue( aMtrFldYSize.GetValue() );
2608         /*
2609         if( eState == STATE_CHECK )
2610         {
2611             aFtXSize.Enable();
2612             aFtYSize.Enable();
2613             aMtrFldXSize.Enable();
2614             aMtrFldYSize.Enable();
2615         }
2616         */
2617     }
2618 
2619     rXFSet.Put( XFillBmpTileItem( sal::static_int_cast< sal_Bool >( eState ) ) );
2620 
2621     if( aTsbStretch.IsEnabled() )
2622         rXFSet.Put(
2623             XFillBmpStretchItem(
2624                 sal::static_int_cast< sal_Bool >( aTsbStretch.GetState() ) ) );
2625 
2626     if( aTsbScale.IsEnabled() )
2627         rXFSet.Put( XFillBmpSizeLogItem( aTsbScale.GetState() == STATE_NOCHECK ) );
2628 
2629     if( aMtrFldXSize.IsEnabled() )
2630     {
2631         XFillBmpSizeXItem* pItem = NULL;
2632         TriState eScaleState = aTsbScale.GetState();
2633 
2634         if( eScaleState == STATE_NOCHECK )
2635             pItem = new XFillBmpSizeXItem( GetCoreValue( aMtrFldXSize, ePoolUnit ) );
2636         else
2637             pItem = new XFillBmpSizeXItem( -labs( static_cast<long>(aMtrFldXSize.GetValue()) ) );
2638 
2639         rXFSet.Put( *pItem );
2640 
2641         delete pItem;
2642     }
2643     else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK )
2644     {
2645         // Originalgroesse -> Size == 0
2646         rXFSet.Put( XFillBmpSizeXItem( 0 ) );
2647         rXFSet.Put( XFillBmpSizeLogItem( sal_True ) );
2648     }
2649 
2650     if( aMtrFldYSize.IsEnabled() )
2651     {
2652         XFillBmpSizeYItem* pItem = NULL;
2653         TriState eScaleState = aTsbScale.GetState();
2654 
2655         if( eScaleState == STATE_NOCHECK )
2656             pItem = new XFillBmpSizeYItem( GetCoreValue( aMtrFldYSize, ePoolUnit ) );
2657         else
2658             pItem = new XFillBmpSizeYItem( -labs( static_cast<long>(aMtrFldYSize.GetValue()) ) );
2659 
2660         rXFSet.Put( *pItem );
2661 
2662         delete pItem;
2663     }
2664     else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK )
2665     {
2666         // Originalgroesse -> Size == 0
2667         rXFSet.Put( XFillBmpSizeYItem( 0 ) );
2668         rXFSet.Put( XFillBmpSizeLogItem( sal_True ) );
2669     }
2670 
2671     if( aMtrFldOffset.IsEnabled() )
2672     {
2673         if( aRbtRow.IsChecked() )
2674         {
2675             rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) aMtrFldOffset.GetValue() ) );
2676             rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) 0 ) );
2677         }
2678         else if( aRbtColumn.IsChecked() )
2679         {
2680             rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) 0 ) );
2681             rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) aMtrFldOffset.GetValue() ) );
2682         }
2683     }
2684 
2685     if( aCtlPosition.IsEnabled() )
2686         rXFSet.Put( XFillBmpPosItem( aCtlPosition.GetActualRP() ) );
2687 
2688     if( aMtrFldXOffset.IsEnabled() )
2689         rXFSet.Put( XFillBmpPosOffsetXItem( (sal_uInt16) aMtrFldXOffset.GetValue() ) );
2690 
2691     if( aMtrFldYOffset.IsEnabled() )
2692         rXFSet.Put( XFillBmpPosOffsetYItem( (sal_uInt16) aMtrFldYOffset.GetValue() ) );
2693 
2694 
2695     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
2696     aCtlBitmapPreview.Invalidate();
2697 
2698     return( 0L );
2699 }
2700 
2701 //------------------------------------------------------------------------
2702 
2703 IMPL_LINK( SvxAreaTabPage, ClickScaleHdl_Impl, void *, EMPTYARG )
2704 {
2705     if( aTsbScale.GetState() == STATE_CHECK )
2706     {
2707         aMtrFldXSize.SetDecimalDigits( 0 );
2708         aMtrFldXSize.SetUnit( FUNIT_PERCENT );
2709         aMtrFldXSize.SetValue( 100 );
2710         aMtrFldXSize.SetMax( 100 );
2711         aMtrFldXSize.SetLast( 100 );
2712 
2713         aMtrFldYSize.SetDecimalDigits( 0 );
2714         aMtrFldYSize.SetUnit( FUNIT_PERCENT );
2715         aMtrFldYSize.SetValue( 100 );
2716         aMtrFldYSize.SetMax( 100 );
2717         aMtrFldYSize.SetLast( 100 );
2718     }
2719     else
2720     {
2721         aMtrFldXSize.SetDecimalDigits( 2 );
2722         aMtrFldXSize.SetUnit( eFUnit );
2723         aMtrFldXSize.SetValue( 100 );
2724         aMtrFldXSize.SetMax( 999900 );
2725         aMtrFldXSize.SetLast( 100000 );
2726 
2727         aMtrFldYSize.SetDecimalDigits( 2 );
2728         aMtrFldYSize.SetUnit( eFUnit );
2729         aMtrFldYSize.SetValue( 100 );
2730         aMtrFldYSize.SetMax( 999900 );
2731         aMtrFldYSize.SetLast( 100000 );
2732     }
2733 
2734     ModifyTileHdl_Impl( NULL );
2735 
2736     return( 0L );
2737 }
2738 
2739 //------------------------------------------------------------------------
2740 
2741 void SvxAreaTabPage::PointChanged( Window* pWindow, RECT_POINT eRcPt )
2742 {
2743     eRP = eRcPt;
2744 
2745     // Ausrichtung der Bitmapfuellung
2746     ModifyTileHdl_Impl( pWindow );
2747 }
2748 
2749 void SvxAreaTabPage::PageCreated (SfxAllItemSet aSet) //add CHINA001
2750 {
2751     SFX_ITEMSET_ARG (&aSet,pColorTabItem,SvxColorTableItem,SID_COLOR_TABLE,sal_False);
2752     SFX_ITEMSET_ARG (&aSet,pGradientListItem,SvxGradientListItem,SID_GRADIENT_LIST,sal_False);
2753     SFX_ITEMSET_ARG (&aSet,pHatchingListItem,SvxHatchListItem,SID_HATCH_LIST,sal_False);
2754     SFX_ITEMSET_ARG (&aSet,pBitmapListItem,SvxBitmapListItem,SID_BITMAP_LIST,sal_False);
2755     SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False);
2756     SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False);
2757     SFX_ITEMSET_ARG (&aSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,sal_False);
2758     //UUUU
2759     SFX_ITEMSET_ARG (&aSet, pOfferImportItem, SfxBoolItem, SID_OFFER_IMPORT, sal_False);
2760 
2761     if (pColorTabItem)
2762         SetColorTable(pColorTabItem->GetColorTable());
2763     if (pGradientListItem)
2764         SetGradientList(pGradientListItem->GetGradientList());
2765     if (pHatchingListItem)
2766         SetHatchingList(pHatchingListItem->GetHatchList());
2767     if (pBitmapListItem)
2768         SetBitmapList(pBitmapListItem->GetBitmapList());
2769     if (pPageTypeItem)
2770         SetPageType(pPageTypeItem->GetValue());
2771     if (pDlgTypeItem)
2772         SetDlgType(pDlgTypeItem->GetValue());
2773     if (pPosItem)
2774         SetPos(pPosItem->GetValue());
2775 
2776     //UUUU
2777     if(pOfferImportItem)
2778     {
2779         const bool bNew(pOfferImportItem->GetValue());
2780 
2781         if(mbOfferImportButton != bNew)
2782         {
2783             mbOfferImportButton = bNew;
2784         }
2785     }
2786 
2787     Construct();
2788 }
2789 
2790 //eof
2791