xref: /AOO41X/main/svx/source/sidebar/area/AreaPropertyPanel.cxx (revision 8dcb2a100eb78f12871a9e67d867e1bc0c7bdb07)
1*8dcb2a10SAndre Fischer /**************************************************************
2*8dcb2a10SAndre Fischer  *
3*8dcb2a10SAndre Fischer  * Licensed to the Apache Software Foundation (ASF) under one
4*8dcb2a10SAndre Fischer  * or more contributor license agreements.  See the NOTICE file
5*8dcb2a10SAndre Fischer  * distributed with this work for additional information
6*8dcb2a10SAndre Fischer  * regarding copyright ownership.  The ASF licenses this file
7*8dcb2a10SAndre Fischer  * to you under the Apache License, Version 2.0 (the
8*8dcb2a10SAndre Fischer  * "License"); you may not use this file except in compliance
9*8dcb2a10SAndre Fischer  * with the License.  You may obtain a copy of the License at
10*8dcb2a10SAndre Fischer  *
11*8dcb2a10SAndre Fischer  *   http://www.apache.org/licenses/LICENSE-2.0
12*8dcb2a10SAndre Fischer  *
13*8dcb2a10SAndre Fischer  * Unless required by applicable law or agreed to in writing,
14*8dcb2a10SAndre Fischer  * software distributed under the License is distributed on an
15*8dcb2a10SAndre Fischer  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*8dcb2a10SAndre Fischer  * KIND, either express or implied.  See the License for the
17*8dcb2a10SAndre Fischer  * specific language governing permissions and limitations
18*8dcb2a10SAndre Fischer  * under the License.
19*8dcb2a10SAndre Fischer  *
20*8dcb2a10SAndre Fischer  *************************************************************/
21*8dcb2a10SAndre Fischer 
22*8dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx"
23*8dcb2a10SAndre Fischer #include "AreaTransparencyGradientControl.hxx"
24*8dcb2a10SAndre Fischer 
25*8dcb2a10SAndre Fischer #include <sfx2/sidebar/propertypanel.hrc>
26*8dcb2a10SAndre Fischer #include <sfx2/sidebar/Theme.hxx>
27*8dcb2a10SAndre Fischer #include <sfx2/sidebar/ControlFactory.hxx>
28*8dcb2a10SAndre Fischer #include <AreaPropertyPanel.hxx>
29*8dcb2a10SAndre Fischer #include <AreaPropertyPanel.hrc>
30*8dcb2a10SAndre Fischer #include <svx/dialogs.hrc>
31*8dcb2a10SAndre Fischer #include <svx/dialmgr.hxx>
32*8dcb2a10SAndre Fischer #include <sfx2/objsh.hxx>
33*8dcb2a10SAndre Fischer #include <svx/xfltrit.hxx>
34*8dcb2a10SAndre Fischer #include <svx/xflftrit.hxx>
35*8dcb2a10SAndre Fischer #include <svx/xtable.hxx>
36*8dcb2a10SAndre Fischer #include <sfx2/dispatch.hxx>
37*8dcb2a10SAndre Fischer #include <sfx2/bindings.hxx>
38*8dcb2a10SAndre Fischer #include <helpid.hrc>
39*8dcb2a10SAndre Fischer #include <svtools/valueset.hxx>
40*8dcb2a10SAndre Fischer #include <unotools/pathoptions.hxx>
41*8dcb2a10SAndre Fischer #include <svx/svxitems.hrc>
42*8dcb2a10SAndre Fischer #include <vcl/toolbox.hxx>
43*8dcb2a10SAndre Fischer #include <svtools/toolbarmenu.hxx>
44*8dcb2a10SAndre Fischer #include "sidebar/ColorControl.hxx"
45*8dcb2a10SAndre Fischer 
46*8dcb2a10SAndre Fischer #include <boost/bind.hpp>
47*8dcb2a10SAndre Fischer 
48*8dcb2a10SAndre Fischer using namespace css;
49*8dcb2a10SAndre Fischer using namespace cssu;
50*8dcb2a10SAndre Fischer using ::sfx2::sidebar::Theme;
51*8dcb2a10SAndre Fischer 
52*8dcb2a10SAndre Fischer #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
53*8dcb2a10SAndre Fischer 
54*8dcb2a10SAndre Fischer 
55*8dcb2a10SAndre Fischer 
56*8dcb2a10SAndre Fischer 
57*8dcb2a10SAndre Fischer namespace svx { namespace sidebar {
58*8dcb2a10SAndre Fischer 
59*8dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERX = 50;
60*8dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERY = 50;
61*8dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ANGLE = 0;
62*8dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_STARTVALUE = 0;
63*8dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ENDVALUE = 16777215;
64*8dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_BORDER = 0;
65*8dcb2a10SAndre Fischer 
66*8dcb2a10SAndre Fischer 
67*8dcb2a10SAndre Fischer 
68*8dcb2a10SAndre Fischer AreaPropertyPanel::AreaPropertyPanel(
69*8dcb2a10SAndre Fischer     Window* pParent,
70*8dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
71*8dcb2a10SAndre Fischer     SfxBindings* pBindings)
72*8dcb2a10SAndre Fischer :   Control(
73*8dcb2a10SAndre Fischer         pParent,
74*8dcb2a10SAndre Fischer         SVX_RES(RID_SIDEBAR_AREA_PANEL)),
75*8dcb2a10SAndre Fischer     meLastXFS(-1),
76*8dcb2a10SAndre Fischer     maLastColor(Color(COL_DEFAULT_SHAPE_FILLING)),
77*8dcb2a10SAndre Fischer     mnLastPosGradient(0),
78*8dcb2a10SAndre Fischer     mnLastPosHatch(0),
79*8dcb2a10SAndre Fischer     mnLastPosBitmap(0),
80*8dcb2a10SAndre Fischer     mnLastTransSolid(50),
81*8dcb2a10SAndre Fischer     maGradientLinear(),
82*8dcb2a10SAndre Fischer     maGradientAxial(),
83*8dcb2a10SAndre Fischer     maGradientRadial(),
84*8dcb2a10SAndre Fischer     maGradientElliptical(),
85*8dcb2a10SAndre Fischer     maGradientSquare(),
86*8dcb2a10SAndre Fischer     maGradientRect(),
87*8dcb2a10SAndre Fischer     mpColorTextFT(new FixedText(this, SVX_RES(FT_COLOR_LIST))),
88*8dcb2a10SAndre Fischer     mpLbFillType(new SvxFillTypeBox(this)),
89*8dcb2a10SAndre Fischer     mpLbFillAttr(new SvxFillAttrBox(this)),
90*8dcb2a10SAndre Fischer     mpToolBoxColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
91*8dcb2a10SAndre Fischer     mpToolBoxColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpToolBoxColorBackground.get(), SVX_RES(TB_COLOR))),
92*8dcb2a10SAndre Fischer     mpTrspTextFT(new FixedText(this, SVX_RES(FL_TRSP_TEXT))),
93*8dcb2a10SAndre Fischer     mpLBTransType(new ListBox(this, SVX_RES(LB_TRGR_TYPES))),
94*8dcb2a10SAndre Fischer     mpMTRTransparent(new MetricField(this, SVX_RES(MTR_TRANSPARENT))),
95*8dcb2a10SAndre Fischer     mpBTNGradientBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
96*8dcb2a10SAndre Fischer     mpBTNGradient(sfx2::sidebar::ControlFactory::CreateToolBox(mpBTNGradientBackground.get(), SVX_RES(BTN_GRADIENT))),
97*8dcb2a10SAndre Fischer     mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_FILL_COLOR, TBI_COLOR, mpToolBoxColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
98*8dcb2a10SAndre Fischer     mpStyleItem(),
99*8dcb2a10SAndre Fischer     mpColorItem(),
100*8dcb2a10SAndre Fischer     mpFillGradientItem(),
101*8dcb2a10SAndre Fischer     mpHatchItem(),
102*8dcb2a10SAndre Fischer     mpBitmapItem(),
103*8dcb2a10SAndre Fischer     mpColorTableItem(),
104*8dcb2a10SAndre Fischer     mpGradientListItem(),
105*8dcb2a10SAndre Fischer     mpHatchListItem(),
106*8dcb2a10SAndre Fischer     mpBitmapListItem(),
107*8dcb2a10SAndre Fischer     maStyleControl(SID_ATTR_FILL_STYLE, *pBindings, *this),
108*8dcb2a10SAndre Fischer     maColorControl(SID_ATTR_FILL_COLOR, *pBindings, *this),
109*8dcb2a10SAndre Fischer     maGradientControl(SID_ATTR_FILL_GRADIENT, *pBindings, *this),
110*8dcb2a10SAndre Fischer     maHatchControl(SID_ATTR_FILL_HATCH, *pBindings, *this),
111*8dcb2a10SAndre Fischer     maBitmapControl(SID_ATTR_FILL_BITMAP, *pBindings, *this),
112*8dcb2a10SAndre Fischer     maColorTableControl(SID_COLOR_TABLE, *pBindings, *this),
113*8dcb2a10SAndre Fischer     maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this),
114*8dcb2a10SAndre Fischer     maHatchListControl(SID_HATCH_LIST, *pBindings, *this),
115*8dcb2a10SAndre Fischer     maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this),
116*8dcb2a10SAndre Fischer     maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this),
117*8dcb2a10SAndre Fischer     maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this),
118*8dcb2a10SAndre Fischer     maImgAxial(SVX_RES(IMG_AXIAL)),
119*8dcb2a10SAndre Fischer     maImgElli(SVX_RES(IMG_ELLI)),
120*8dcb2a10SAndre Fischer     maImgQuad(SVX_RES(IMG_QUAD)),
121*8dcb2a10SAndre Fischer     maImgRadial(SVX_RES(IMG_RADIAL)),
122*8dcb2a10SAndre Fischer     maImgSquare(SVX_RES(IMG_SQUARE)),
123*8dcb2a10SAndre Fischer     maImgLinear(SVX_RES(IMG_LINEAR)),
124*8dcb2a10SAndre Fischer     maImgColor(SVX_RES(IMG_COLOR)),
125*8dcb2a10SAndre Fischer     maImgAxialH(SVX_RES(IMG_AXIAL_H)),
126*8dcb2a10SAndre Fischer     maImgElliH(SVX_RES(IMG_ELLI_H)),
127*8dcb2a10SAndre Fischer     maImgQuadH(SVX_RES(IMG_QUAD_H)),
128*8dcb2a10SAndre Fischer     maImgRadialH(SVX_RES(IMG_RADIAL_H)),
129*8dcb2a10SAndre Fischer     maImgSquareH(SVX_RES(IMG_SQUARE_H)),
130*8dcb2a10SAndre Fischer     maImgLinearH(SVX_RES(IMG_LINEAR_H)),
131*8dcb2a10SAndre Fischer     maImgColorH(SVX_RES(IMG_COLOR_H)),
132*8dcb2a10SAndre Fischer     msHelpFillType(SVX_RES(STR_HELP_TYPE)),
133*8dcb2a10SAndre Fischer     msHelpFillAttr(SVX_RES(STR_HELP_ATTR)),
134*8dcb2a10SAndre Fischer     maTrGrPopup(this, ::boost::bind(&AreaPropertyPanel::CreateTransparencyGradientControl, this, _1)),
135*8dcb2a10SAndre Fischer     maColorPopup(this, ::boost::bind(&AreaPropertyPanel::CreateColorPopupControl, this, _1)),
136*8dcb2a10SAndre Fischer     mpFloatTransparenceItem(),
137*8dcb2a10SAndre Fischer     mpTransparanceItem(),
138*8dcb2a10SAndre Fischer     mxFrame(rxFrame),
139*8dcb2a10SAndre Fischer     maContext(),
140*8dcb2a10SAndre Fischer     mpBindings(pBindings),
141*8dcb2a10SAndre Fischer     mbTBShow(true),
142*8dcb2a10SAndre Fischer     mbColorAvail(true)
143*8dcb2a10SAndre Fischer {
144*8dcb2a10SAndre Fischer     Initialize();
145*8dcb2a10SAndre Fischer     FreeResource();
146*8dcb2a10SAndre Fischer }
147*8dcb2a10SAndre Fischer 
148*8dcb2a10SAndre Fischer 
149*8dcb2a10SAndre Fischer 
150*8dcb2a10SAndre Fischer AreaPropertyPanel::~AreaPropertyPanel()
151*8dcb2a10SAndre Fischer {
152*8dcb2a10SAndre Fischer     // Destroy the toolboxes, then their background windows.
153*8dcb2a10SAndre Fischer     mpToolBoxColor.reset();
154*8dcb2a10SAndre Fischer     mpBTNGradient.reset();
155*8dcb2a10SAndre Fischer     mpToolBoxColorBackground.reset();
156*8dcb2a10SAndre Fischer     mpBTNGradientBackground.reset();
157*8dcb2a10SAndre Fischer }
158*8dcb2a10SAndre Fischer 
159*8dcb2a10SAndre Fischer 
160*8dcb2a10SAndre Fischer 
161*8dcb2a10SAndre Fischer void AreaPropertyPanel::ShowMenu (void)
162*8dcb2a10SAndre Fischer {
163*8dcb2a10SAndre Fischer     if (mpBindings != NULL)
164*8dcb2a10SAndre Fischer     {
165*8dcb2a10SAndre Fischer         SfxDispatcher* pDispatcher = mpBindings->GetDispatcher();
166*8dcb2a10SAndre Fischer         if (pDispatcher != NULL)
167*8dcb2a10SAndre Fischer             pDispatcher->Execute(SID_ATTRIBUTES_AREA, SFX_CALLMODE_ASYNCHRON);
168*8dcb2a10SAndre Fischer     }
169*8dcb2a10SAndre Fischer }
170*8dcb2a10SAndre Fischer 
171*8dcb2a10SAndre Fischer 
172*8dcb2a10SAndre Fischer 
173*8dcb2a10SAndre Fischer void AreaPropertyPanel::Initialize()
174*8dcb2a10SAndre Fischer {
175*8dcb2a10SAndre Fischer     maGradientLinear.SetXOffset(DEFAULT_CENTERX);
176*8dcb2a10SAndre Fischer     maGradientLinear.SetYOffset(DEFAULT_CENTERY);
177*8dcb2a10SAndre Fischer     maGradientLinear.SetAngle(DEFAULT_ANGLE);
178*8dcb2a10SAndre Fischer     maGradientLinear.SetStartColor(Color(DEFAULT_STARTVALUE));
179*8dcb2a10SAndre Fischer     maGradientLinear.SetEndColor(Color(DEFAULT_ENDVALUE));
180*8dcb2a10SAndre Fischer     maGradientLinear.SetBorder(DEFAULT_BORDER);
181*8dcb2a10SAndre Fischer     maGradientLinear.SetGradientStyle(XGRAD_LINEAR);
182*8dcb2a10SAndre Fischer 
183*8dcb2a10SAndre Fischer     maGradientAxial = maGradientLinear;
184*8dcb2a10SAndre Fischer     maGradientAxial.SetGradientStyle(XGRAD_AXIAL);
185*8dcb2a10SAndre Fischer 
186*8dcb2a10SAndre Fischer     maGradientRadial = maGradientLinear;
187*8dcb2a10SAndre Fischer     maGradientRadial.SetGradientStyle(XGRAD_RADIAL);
188*8dcb2a10SAndre Fischer 
189*8dcb2a10SAndre Fischer     maGradientElliptical = maGradientLinear;
190*8dcb2a10SAndre Fischer     maGradientElliptical.SetGradientStyle(XGRAD_ELLIPTICAL);
191*8dcb2a10SAndre Fischer 
192*8dcb2a10SAndre Fischer     maGradientSquare = maGradientLinear;
193*8dcb2a10SAndre Fischer     maGradientSquare.SetGradientStyle(XGRAD_SQUARE);
194*8dcb2a10SAndre Fischer 
195*8dcb2a10SAndre Fischer     maGradientRect = maGradientLinear;
196*8dcb2a10SAndre Fischer     maGradientRect.SetGradientStyle(XGRAD_RECT);
197*8dcb2a10SAndre Fischer 
198*8dcb2a10SAndre Fischer     Size aLogicalFillSize(MBOX_WIDTH,LISTBOX_HEIGHT);
199*8dcb2a10SAndre Fischer     Size aLogicalAttrSize(MBOX_WIDTH + 1,LISTBOX_HEIGHT);
200*8dcb2a10SAndre Fischer 
201*8dcb2a10SAndre Fischer     Point aPoint(SECTIONPAGE_MARGIN_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
202*8dcb2a10SAndre Fischer     Point aPoint_Picker(SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH + CONTROL_SPACING_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
203*8dcb2a10SAndre Fischer 
204*8dcb2a10SAndre Fischer     Size aTypeSize(LogicToPixel(aLogicalFillSize, MAP_APPFONT));
205*8dcb2a10SAndre Fischer     Size aAttrSize(LogicToPixel(aLogicalAttrSize, MAP_APPFONT));
206*8dcb2a10SAndre Fischer 
207*8dcb2a10SAndre Fischer     Point aTypePoint(LogicToPixel(aPoint, MAP_APPFONT));
208*8dcb2a10SAndre Fischer     Point aAttrPoint(LogicToPixel(aPoint_Picker, MAP_APPFONT));
209*8dcb2a10SAndre Fischer 
210*8dcb2a10SAndre Fischer     mpLbFillType->SetPosSizePixel(aTypePoint,aTypeSize);
211*8dcb2a10SAndre Fischer     mpLbFillAttr->SetPosSizePixel(aAttrPoint,aAttrSize);
212*8dcb2a10SAndre Fischer 
213*8dcb2a10SAndre Fischer     mpLbFillType->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_TYPES);
214*8dcb2a10SAndre Fischer     mpLbFillAttr->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_ATTR);
215*8dcb2a10SAndre Fischer 
216*8dcb2a10SAndre Fischer     mpLbFillType->SetQuickHelpText(msHelpFillType);
217*8dcb2a10SAndre Fischer     mpLbFillAttr->SetQuickHelpText(msHelpFillAttr);
218*8dcb2a10SAndre Fischer 
219*8dcb2a10SAndre Fischer     mpLbFillType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill")));    //wj acc
220*8dcb2a10SAndre Fischer     mpLbFillAttr->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill")));    //wj acc
221*8dcb2a10SAndre Fischer 
222*8dcb2a10SAndre Fischer     Link aLink = LINK( this, AreaPropertyPanel, SelectFillTypeHdl );
223*8dcb2a10SAndre Fischer     mpLbFillType->SetSelectHdl( aLink );
224*8dcb2a10SAndre Fischer 
225*8dcb2a10SAndre Fischer     aLink = LINK( this, AreaPropertyPanel, SelectFillAttrHdl );
226*8dcb2a10SAndre Fischer     mpLbFillAttr->SetSelectHdl( aLink );
227*8dcb2a10SAndre Fischer 
228*8dcb2a10SAndre Fischer     //add  for new color picker
229*8dcb2a10SAndre Fischer     mpLbFillAttr->Hide();
230*8dcb2a10SAndre Fischer     mpToolBoxColor->SetItemImage(TBI_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgColorH : maImgColor);
231*8dcb2a10SAndre Fischer     Size aTbxSize( mpToolBoxColor->CalcWindowSizePixel() );
232*8dcb2a10SAndre Fischer     mpToolBoxColor->SetOutputSizePixel( aTbxSize );
233*8dcb2a10SAndre Fischer     mpToolBoxColor->SetItemBits( TBI_COLOR, mpToolBoxColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY );
234*8dcb2a10SAndre Fischer     mpToolBoxColor->SetBackground(Wallpaper());
235*8dcb2a10SAndre Fischer     mpToolBoxColor->SetPaintTransparent(true);
236*8dcb2a10SAndre Fischer     mpToolBoxColor->SetQuickHelpText(TBI_COLOR, String(SVX_RES(STR_HELP_COLOR)));    //wj acc
237*8dcb2a10SAndre Fischer     //mpToolBoxColor->SetItemText(TBI_COLOR, msHelpFillAttr);
238*8dcb2a10SAndre Fischer 
239*8dcb2a10SAndre Fischer     long aHeightLBStyle = mpLbFillType->GetSizePixel().getHeight();
240*8dcb2a10SAndre Fischer     long aLBPosY = mpLbFillType->GetPosPixel().getY();
241*8dcb2a10SAndre Fischer     long aHeightTBAttr = mpToolBoxColor->GetSizePixel().getHeight();
242*8dcb2a10SAndre Fischer     Point aPointTBAttr = mpToolBoxColor->GetPosPixel();
243*8dcb2a10SAndre Fischer     aPointTBAttr.setY( aLBPosY + aHeightLBStyle / 2 - aHeightTBAttr / 2);
244*8dcb2a10SAndre Fischer     mpToolBoxColor->SetPosPixel(aPointTBAttr);
245*8dcb2a10SAndre Fischer 
246*8dcb2a10SAndre Fischer     aLink = LINK(this, AreaPropertyPanel, ToolBoxColorDropHdl);
247*8dcb2a10SAndre Fischer     mpToolBoxColor->SetDropdownClickHdl ( aLink );
248*8dcb2a10SAndre Fischer     mpToolBoxColor->SetSelectHdl ( aLink );
249*8dcb2a10SAndre Fischer 
250*8dcb2a10SAndre Fischer     //add end
251*8dcb2a10SAndre Fischer     mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanel, ChangeTrgrTypeHdl_Impl));
252*8dcb2a10SAndre Fischer     mpLBTransType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency")));    //wj acc
253*8dcb2a10SAndre Fischer 
254*8dcb2a10SAndre Fischer     mpMTRTransparent->SetValue( 50 );
255*8dcb2a10SAndre Fischer     mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanel, ModifyTransparentHdl_Impl));
256*8dcb2a10SAndre Fischer     mpMTRTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency")));    //wj acc
257*8dcb2a10SAndre Fischer 
258*8dcb2a10SAndre Fischer     mpBTNGradient->SetItemBits( TBI_BTX_GRADIENT, mpBTNGradient->GetItemBits( TBI_BTX_GRADIENT ) | TIB_DROPDOWNONLY );
259*8dcb2a10SAndre Fischer     aLink = LINK( this, AreaPropertyPanel, ClickTrGrHdl_Impl );
260*8dcb2a10SAndre Fischer     mpBTNGradient->SetDropdownClickHdl( aLink );
261*8dcb2a10SAndre Fischer     mpBTNGradient->SetSelectHdl( aLink );
262*8dcb2a10SAndre Fischer     aTbxSize = mpBTNGradient->CalcWindowSizePixel();
263*8dcb2a10SAndre Fischer     mpBTNGradient->SetOutputSizePixel( aTbxSize );
264*8dcb2a10SAndre Fischer     mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,maImgLinear);
265*8dcb2a10SAndre Fischer     mpBTNGradient->SetQuickHelpText(TBI_BTX_GRADIENT, String(SVX_RES(STR_HELP_GRADIENT)));    //wj acc
266*8dcb2a10SAndre Fischer     mpBTNGradient->Hide();
267*8dcb2a10SAndre Fischer 
268*8dcb2a10SAndre Fischer     long aHeightLBTrans = mpLBTransType->GetSizePixel().getHeight();
269*8dcb2a10SAndre Fischer     Point aPointLB = mpLBTransType->GetPosPixel();
270*8dcb2a10SAndre Fischer     long aPosY = aPointLB.getY();
271*8dcb2a10SAndre Fischer 
272*8dcb2a10SAndre Fischer     Point aPointMetric = mpMTRTransparent->GetPosPixel();
273*8dcb2a10SAndre Fischer     Point aPointTB = mpMTRTransparent->GetPosPixel();
274*8dcb2a10SAndre Fischer     long aHeightMetric = mpMTRTransparent->GetSizePixel().getHeight();
275*8dcb2a10SAndre Fischer     long aHeightTool = mpBTNGradient->GetSizePixel().getHeight();
276*8dcb2a10SAndre Fischer     aPointMetric.setY(aPosY+aHeightLBTrans/2-aHeightMetric/2);
277*8dcb2a10SAndre Fischer     aPointTB.setY(aPosY+aHeightLBTrans/2-aHeightTool/2);
278*8dcb2a10SAndre Fischer     aPointTB.setX(aPointTB.getX()+3);
279*8dcb2a10SAndre Fischer     mpMTRTransparent->SetPosPixel(aPointMetric);
280*8dcb2a10SAndre Fischer     mpBTNGradient->SetPosPixel(aPointTB);
281*8dcb2a10SAndre Fischer 
282*8dcb2a10SAndre Fischer     mpLbFillType->SetAccessibleRelationLabeledBy(mpColorTextFT.get());
283*8dcb2a10SAndre Fischer     mpLbFillAttr->SetAccessibleRelationLabeledBy(mpLbFillAttr.get());
284*8dcb2a10SAndre Fischer     mpToolBoxColor->SetAccessibleRelationLabeledBy(mpToolBoxColor.get());
285*8dcb2a10SAndre Fischer     mpLBTransType->SetAccessibleRelationLabeledBy(mpTrspTextFT.get());
286*8dcb2a10SAndre Fischer     mpMTRTransparent->SetAccessibleRelationLabeledBy(mpMTRTransparent.get());
287*8dcb2a10SAndre Fischer     mpBTNGradient->SetAccessibleRelationLabeledBy(mpBTNGradient.get());
288*8dcb2a10SAndre Fischer 
289*8dcb2a10SAndre Fischer     SetupIcons();
290*8dcb2a10SAndre Fischer }
291*8dcb2a10SAndre Fischer 
292*8dcb2a10SAndre Fischer 
293*8dcb2a10SAndre Fischer 
294*8dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillTypeHdl, ListBox *, pToolBox )
295*8dcb2a10SAndre Fischer {
296*8dcb2a10SAndre Fischer 	XFillStyle  eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
297*8dcb2a10SAndre Fischer 
298*8dcb2a10SAndre Fischer 	if( (XFillStyle) meLastXFS != eXFS )
299*8dcb2a10SAndre Fischer 	{
300*8dcb2a10SAndre Fischer 			mpLbFillAttr->Clear();
301*8dcb2a10SAndre Fischer 			SfxObjectShell* pSh = SfxObjectShell::Current();
302*8dcb2a10SAndre Fischer 			XFillStyleItem aXFillStyleItem( eXFS );
303*8dcb2a10SAndre Fischer 			GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
304*8dcb2a10SAndre Fischer 
305*8dcb2a10SAndre Fischer 			switch( eXFS )
306*8dcb2a10SAndre Fischer 			{
307*8dcb2a10SAndre Fischer 			case XFILL_NONE:
308*8dcb2a10SAndre Fischer 				{
309*8dcb2a10SAndre Fischer 					mpLbFillAttr->Show();
310*8dcb2a10SAndre Fischer 					mpToolBoxColor->Hide();
311*8dcb2a10SAndre Fischer 					mbTBShow = false;
312*8dcb2a10SAndre Fischer 					mpLbFillType->Selected();
313*8dcb2a10SAndre Fischer 					mpLbFillAttr->Disable();
314*8dcb2a10SAndre Fischer 				}
315*8dcb2a10SAndre Fischer 				break;
316*8dcb2a10SAndre Fischer 
317*8dcb2a10SAndre Fischer 			case XFILL_SOLID:
318*8dcb2a10SAndre Fischer 				{
319*8dcb2a10SAndre Fischer 					mpLbFillAttr->Hide();
320*8dcb2a10SAndre Fischer 					mpToolBoxColor->Show();
321*8dcb2a10SAndre Fischer 					mbTBShow = true;
322*8dcb2a10SAndre Fischer 					String aTmpStr;
323*8dcb2a10SAndre Fischer 					Color aColor = maLastColor;
324*8dcb2a10SAndre Fischer 					XFillColorItem aXFillColorItem( aTmpStr, aColor );
325*8dcb2a10SAndre Fischer 					GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
326*8dcb2a10SAndre Fischer 				}
327*8dcb2a10SAndre Fischer 				break;
328*8dcb2a10SAndre Fischer 
329*8dcb2a10SAndre Fischer 			case XFILL_GRADIENT:
330*8dcb2a10SAndre Fischer 				{
331*8dcb2a10SAndre Fischer 					mpLbFillAttr->Show();
332*8dcb2a10SAndre Fischer 					mpToolBoxColor->Hide();
333*8dcb2a10SAndre Fischer 					mbTBShow = false;
334*8dcb2a10SAndre Fischer 					if ( pSh && pSh->GetItem( SID_GRADIENT_LIST ) )
335*8dcb2a10SAndre Fischer 					{
336*8dcb2a10SAndre Fischer 						//
337*8dcb2a10SAndre Fischer 						if(mpLbFillAttr->GetEntryCount() == 0)
338*8dcb2a10SAndre Fischer 						{
339*8dcb2a10SAndre Fischer 							SvxGradientListItem aItem( *(const SvxGradientListItem*)(
340*8dcb2a10SAndre Fischer 							pSh->GetItem( SID_GRADIENT_LIST ) ) );
341*8dcb2a10SAndre Fischer 							mpLbFillAttr->Enable();
342*8dcb2a10SAndre Fischer 							mpLbFillAttr->Clear();
343*8dcb2a10SAndre Fischer 							mpLbFillAttr->Fill( aItem.GetGradientList() );
344*8dcb2a10SAndre Fischer 						}
345*8dcb2a10SAndre Fischer 
346*8dcb2a10SAndre Fischer 						if ( mnLastPosGradient != LISTBOX_ENTRY_NOTFOUND)
347*8dcb2a10SAndre Fischer 						{
348*8dcb2a10SAndre Fischer 							SvxGradientListItem aItem( *(const SvxGradientListItem*)( pSh->GetItem( SID_GRADIENT_LIST ) ) );
349*8dcb2a10SAndre Fischer 							if ( mnLastPosGradient < aItem.GetGradientList()->Count() )
350*8dcb2a10SAndre Fischer 							{
351*8dcb2a10SAndre Fischer 								XGradient aGradient = aItem.GetGradientList()->GetGradient( mnLastPosGradient )->GetGradient();
352*8dcb2a10SAndre Fischer 								XFillGradientItem aXFillGradientItem( mpLbFillAttr->GetEntry(mnLastPosGradient), aGradient );
353*8dcb2a10SAndre Fischer 								GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem, 0L);
354*8dcb2a10SAndre Fischer 								mpLbFillAttr->SelectEntryPos(mnLastPosGradient);	//add
355*8dcb2a10SAndre Fischer 							}
356*8dcb2a10SAndre Fischer 						}
357*8dcb2a10SAndre Fischer 					}
358*8dcb2a10SAndre Fischer 					else
359*8dcb2a10SAndre Fischer 						mpLbFillAttr->Disable();
360*8dcb2a10SAndre Fischer 				}
361*8dcb2a10SAndre Fischer 				break;
362*8dcb2a10SAndre Fischer 
363*8dcb2a10SAndre Fischer 			case XFILL_HATCH:
364*8dcb2a10SAndre Fischer 				{
365*8dcb2a10SAndre Fischer 					mpLbFillAttr->Show();
366*8dcb2a10SAndre Fischer 					mpToolBoxColor->Hide();
367*8dcb2a10SAndre Fischer 					mbTBShow = false;
368*8dcb2a10SAndre Fischer 					if ( pSh && pSh->GetItem( SID_HATCH_LIST ) )
369*8dcb2a10SAndre Fischer 					{
370*8dcb2a10SAndre Fischer 						//
371*8dcb2a10SAndre Fischer 						if(mpLbFillAttr->GetEntryCount() == 0)
372*8dcb2a10SAndre Fischer 						{
373*8dcb2a10SAndre Fischer 							SvxHatchListItem aItem( *(const SvxHatchListItem*)(
374*8dcb2a10SAndre Fischer 								pSh->GetItem( SID_HATCH_LIST ) ) );
375*8dcb2a10SAndre Fischer 							mpLbFillAttr->Enable();
376*8dcb2a10SAndre Fischer 							mpLbFillAttr->Clear();
377*8dcb2a10SAndre Fischer 							mpLbFillAttr->Fill( aItem.GetHatchList() );
378*8dcb2a10SAndre Fischer 						}
379*8dcb2a10SAndre Fischer 
380*8dcb2a10SAndre Fischer 						if ( mnLastPosHatch != LISTBOX_ENTRY_NOTFOUND )
381*8dcb2a10SAndre Fischer 						{
382*8dcb2a10SAndre Fischer 							SvxHatchListItem aItem( *(const SvxHatchListItem*)( pSh->GetItem( SID_HATCH_LIST ) ) );
383*8dcb2a10SAndre Fischer 							if ( mnLastPosHatch < aItem.GetHatchList()->Count() )
384*8dcb2a10SAndre Fischer 							{
385*8dcb2a10SAndre Fischer 								XHatch aHatch = aItem.GetHatchList()->GetHatch( mnLastPosHatch )->GetHatch();
386*8dcb2a10SAndre Fischer 								XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch );
387*8dcb2a10SAndre Fischer 								GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem, 0L);
388*8dcb2a10SAndre Fischer 								mpLbFillAttr->SelectEntryPos(mnLastPosHatch); //add
389*8dcb2a10SAndre Fischer 							}
390*8dcb2a10SAndre Fischer 						}
391*8dcb2a10SAndre Fischer 					}
392*8dcb2a10SAndre Fischer 					else
393*8dcb2a10SAndre Fischer 						mpLbFillAttr->Disable();
394*8dcb2a10SAndre Fischer 				}
395*8dcb2a10SAndre Fischer 				break;
396*8dcb2a10SAndre Fischer 
397*8dcb2a10SAndre Fischer 			case XFILL_BITMAP:
398*8dcb2a10SAndre Fischer 				{
399*8dcb2a10SAndre Fischer 					mpLbFillAttr->Show();
400*8dcb2a10SAndre Fischer 					mpToolBoxColor->Hide();
401*8dcb2a10SAndre Fischer 					mbTBShow = false;
402*8dcb2a10SAndre Fischer 					if ( pSh && pSh->GetItem( SID_BITMAP_LIST ) )
403*8dcb2a10SAndre Fischer 					{
404*8dcb2a10SAndre Fischer 						//
405*8dcb2a10SAndre Fischer 						if(mpLbFillAttr->GetEntryCount() == 0)
406*8dcb2a10SAndre Fischer 						{
407*8dcb2a10SAndre Fischer 							SvxBitmapListItem aItem( *(const SvxBitmapListItem*)(
408*8dcb2a10SAndre Fischer 								pSh->GetItem( SID_BITMAP_LIST ) ) );
409*8dcb2a10SAndre Fischer 							mpLbFillAttr->Enable();
410*8dcb2a10SAndre Fischer 							mpLbFillAttr->Clear();
411*8dcb2a10SAndre Fischer 							mpLbFillAttr->Fill( aItem.GetBitmapList() );
412*8dcb2a10SAndre Fischer 						}
413*8dcb2a10SAndre Fischer 
414*8dcb2a10SAndre Fischer 						if ( mnLastPosBitmap != LISTBOX_ENTRY_NOTFOUND )
415*8dcb2a10SAndre Fischer 						{
416*8dcb2a10SAndre Fischer 							SvxBitmapListItem aItem( *(const SvxBitmapListItem*)( pSh->GetItem( SID_BITMAP_LIST ) ) );
417*8dcb2a10SAndre Fischer 							if ( mnLastPosBitmap < aItem.GetBitmapList()->Count() )
418*8dcb2a10SAndre Fischer 							{
419*8dcb2a10SAndre Fischer                                 const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(mnLastPosBitmap);
420*8dcb2a10SAndre Fischer 								XFillBitmapItem aXFillBitmapItem( mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject() );
421*8dcb2a10SAndre Fischer 								GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem, 0L);
422*8dcb2a10SAndre Fischer 								mpLbFillAttr->SelectEntryPos(mnLastPosBitmap); //add
423*8dcb2a10SAndre Fischer 							}
424*8dcb2a10SAndre Fischer 						}
425*8dcb2a10SAndre Fischer 					}
426*8dcb2a10SAndre Fischer 					else
427*8dcb2a10SAndre Fischer 						mpLbFillAttr->Disable();
428*8dcb2a10SAndre Fischer 				}
429*8dcb2a10SAndre Fischer 				break;
430*8dcb2a10SAndre Fischer 			}
431*8dcb2a10SAndre Fischer 			meLastXFS = (sal_uInt16)eXFS;
432*8dcb2a10SAndre Fischer 			if( eXFS != XFILL_NONE )
433*8dcb2a10SAndre Fischer 			{
434*8dcb2a10SAndre Fischer 				if ( pToolBox )
435*8dcb2a10SAndre Fischer 					mpLbFillType->Selected();
436*8dcb2a10SAndre Fischer 			}
437*8dcb2a10SAndre Fischer 	}
438*8dcb2a10SAndre Fischer 	return 0;
439*8dcb2a10SAndre Fischer }
440*8dcb2a10SAndre Fischer 
441*8dcb2a10SAndre Fischer 
442*8dcb2a10SAndre Fischer 
443*8dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillAttrHdl, ListBox*, pToolBox )
444*8dcb2a10SAndre Fischer {
445*8dcb2a10SAndre Fischer     XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
446*8dcb2a10SAndre Fischer     XFillStyleItem aXFillStyleItem( eXFS );
447*8dcb2a10SAndre Fischer     SfxObjectShell* pSh = SfxObjectShell::Current();
448*8dcb2a10SAndre Fischer 
449*8dcb2a10SAndre Fischer     if(pToolBox)
450*8dcb2a10SAndre Fischer 	{
451*8dcb2a10SAndre Fischer 		if( (XFillStyle) meLastXFS != eXFS )
452*8dcb2a10SAndre Fischer         {
453*8dcb2a10SAndre Fischer 			GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L); //Added  20090909
454*8dcb2a10SAndre Fischer         }
455*8dcb2a10SAndre Fischer 
456*8dcb2a10SAndre Fischer 		switch( eXFS )
457*8dcb2a10SAndre Fischer 		{
458*8dcb2a10SAndre Fischer 		case XFILL_SOLID:
459*8dcb2a10SAndre Fischer 			//{
460*8dcb2a10SAndre Fischer 			//	//String aTmpStr = mpLbFillAttr->GetSelectEntry();
461*8dcb2a10SAndre Fischer 			//	//Color aColor = mpLbFillAttr->GetSelectEntryColor();
462*8dcb2a10SAndre Fischer 			//	//if(aColor.GetColor() == 0 && aTmpStr.Equals(String::CreateFromAscii("")))
463*8dcb2a10SAndre Fischer 			//	String aTmpStr;
464*8dcb2a10SAndre Fischer 			//	Color aColor = maLastColor;
465*8dcb2a10SAndre Fischer 			//	XFillColorItem aXFillColorItem( aTmpStr, aColor );
466*8dcb2a10SAndre Fischer 			//	GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
467*8dcb2a10SAndre Fischer 			//	maLastColor = aColor;
468*8dcb2a10SAndre Fischer 			//}
469*8dcb2a10SAndre Fischer 			break;
470*8dcb2a10SAndre Fischer 
471*8dcb2a10SAndre Fischer 		case XFILL_GRADIENT:
472*8dcb2a10SAndre Fischer 			{
473*8dcb2a10SAndre Fischer 				sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
474*8dcb2a10SAndre Fischer 				if( nPos == LISTBOX_ENTRY_NOTFOUND )
475*8dcb2a10SAndre Fischer 					nPos = mnLastPosGradient;
476*8dcb2a10SAndre Fischer 
477*8dcb2a10SAndre Fischer 				if ( nPos != LISTBOX_ENTRY_NOTFOUND && pSh && pSh->GetItem( SID_GRADIENT_LIST ) )
478*8dcb2a10SAndre Fischer 				{
479*8dcb2a10SAndre Fischer 					SvxGradientListItem aItem( *(const SvxGradientListItem*)( pSh->GetItem( SID_GRADIENT_LIST ) ) );
480*8dcb2a10SAndre Fischer 					if ( nPos < aItem.GetGradientList()->Count() )
481*8dcb2a10SAndre Fischer 					{
482*8dcb2a10SAndre Fischer 						XGradient aGradient = aItem.GetGradientList()->GetGradient( nPos )->GetGradient();
483*8dcb2a10SAndre Fischer 						XFillGradientItem aXFillGradientItem( mpLbFillAttr->GetSelectEntry(), aGradient );
484*8dcb2a10SAndre Fischer 						GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem, 0L);
485*8dcb2a10SAndre Fischer 					}
486*8dcb2a10SAndre Fischer 				}
487*8dcb2a10SAndre Fischer 				if(nPos != LISTBOX_ENTRY_NOTFOUND)
488*8dcb2a10SAndre Fischer 					mnLastPosGradient = nPos;
489*8dcb2a10SAndre Fischer 			}
490*8dcb2a10SAndre Fischer 			break;
491*8dcb2a10SAndre Fischer 
492*8dcb2a10SAndre Fischer 		case XFILL_HATCH:
493*8dcb2a10SAndre Fischer 			{
494*8dcb2a10SAndre Fischer 				sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
495*8dcb2a10SAndre Fischer 				if( nPos == LISTBOX_ENTRY_NOTFOUND )
496*8dcb2a10SAndre Fischer 					nPos = mnLastPosHatch;
497*8dcb2a10SAndre Fischer 				if ( nPos != LISTBOX_ENTRY_NOTFOUND && pSh && pSh->GetItem( SID_HATCH_LIST ) )
498*8dcb2a10SAndre Fischer 				{
499*8dcb2a10SAndre Fischer 					SvxHatchListItem aItem( *(const SvxHatchListItem*)( pSh->GetItem( SID_HATCH_LIST ) ) );
500*8dcb2a10SAndre Fischer 					if ( nPos < aItem.GetHatchList()->Count() )
501*8dcb2a10SAndre Fischer 					{
502*8dcb2a10SAndre Fischer 						XHatch aHatch = aItem.GetHatchList()->GetHatch( nPos )->GetHatch();
503*8dcb2a10SAndre Fischer 						XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch );
504*8dcb2a10SAndre Fischer 						GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem, 0L);
505*8dcb2a10SAndre Fischer 					}
506*8dcb2a10SAndre Fischer 				}
507*8dcb2a10SAndre Fischer 				if(nPos != LISTBOX_ENTRY_NOTFOUND)
508*8dcb2a10SAndre Fischer 					mnLastPosHatch = nPos;
509*8dcb2a10SAndre Fischer 			}
510*8dcb2a10SAndre Fischer 			break;
511*8dcb2a10SAndre Fischer 
512*8dcb2a10SAndre Fischer 		case XFILL_BITMAP:
513*8dcb2a10SAndre Fischer 			{
514*8dcb2a10SAndre Fischer 				sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
515*8dcb2a10SAndre Fischer 				if( nPos == LISTBOX_ENTRY_NOTFOUND )
516*8dcb2a10SAndre Fischer 					nPos = mnLastPosBitmap;
517*8dcb2a10SAndre Fischer 				if ( nPos != LISTBOX_ENTRY_NOTFOUND && pSh && pSh->GetItem( SID_BITMAP_LIST ) )
518*8dcb2a10SAndre Fischer 				{
519*8dcb2a10SAndre Fischer 					SvxBitmapListItem aItem( *(const SvxBitmapListItem*)( pSh->GetItem( SID_BITMAP_LIST ) ) );
520*8dcb2a10SAndre Fischer 					if ( nPos < aItem.GetBitmapList()->Count() )
521*8dcb2a10SAndre Fischer 					{
522*8dcb2a10SAndre Fischer                         const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(nPos);
523*8dcb2a10SAndre Fischer 						XFillBitmapItem aXFillBitmapItem( mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject() );
524*8dcb2a10SAndre Fischer 						GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem, 0L);
525*8dcb2a10SAndre Fischer 					}
526*8dcb2a10SAndre Fischer 				}
527*8dcb2a10SAndre Fischer 				if(nPos != LISTBOX_ENTRY_NOTFOUND)
528*8dcb2a10SAndre Fischer 					mnLastPosBitmap = nPos;
529*8dcb2a10SAndre Fischer 			}
530*8dcb2a10SAndre Fischer 			break;
531*8dcb2a10SAndre Fischer 
532*8dcb2a10SAndre Fischer                     default:
533*8dcb2a10SAndre Fischer                         break;
534*8dcb2a10SAndre Fischer 		}
535*8dcb2a10SAndre Fischer 	}
536*8dcb2a10SAndre Fischer 	return 0;
537*8dcb2a10SAndre Fischer }
538*8dcb2a10SAndre Fischer 
539*8dcb2a10SAndre Fischer 
540*8dcb2a10SAndre Fischer //add  for color picker
541*8dcb2a10SAndre Fischer 
542*8dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ToolBoxColorDropHdl, ToolBox*, pToolBox)
543*8dcb2a10SAndre Fischer {
544*8dcb2a10SAndre Fischer     sal_uInt16 nId = pToolBox->GetCurItemId();
545*8dcb2a10SAndre Fischer 
546*8dcb2a10SAndre Fischer     if(nId == TBI_COLOR)
547*8dcb2a10SAndre Fischer     {
548*8dcb2a10SAndre Fischer         maColorPopup.Show(*pToolBox);
549*8dcb2a10SAndre Fischer 	    if (mpColorItem)
550*8dcb2a10SAndre Fischer             maColorPopup.SetCurrentColor(mpColorItem->GetColorValue(), mbColorAvail);
551*8dcb2a10SAndre Fischer 		else
552*8dcb2a10SAndre Fischer 			maColorPopup.SetCurrentColor(COL_WHITE, false);
553*8dcb2a10SAndre Fischer 	}
554*8dcb2a10SAndre Fischer 
555*8dcb2a10SAndre Fischer     return 0;
556*8dcb2a10SAndre Fischer }
557*8dcb2a10SAndre Fischer 
558*8dcb2a10SAndre Fischer 
559*8dcb2a10SAndre Fischer 
560*8dcb2a10SAndre Fischer void AreaPropertyPanel::SetColor (
561*8dcb2a10SAndre Fischer     const String& rsColorName,
562*8dcb2a10SAndre Fischer     const Color aColor)
563*8dcb2a10SAndre Fischer {
564*8dcb2a10SAndre Fischer     XFillColorItem aXFillColorItem (rsColorName, aColor);
565*8dcb2a10SAndre Fischer     mpBindings->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
566*8dcb2a10SAndre Fischer     maLastColor = aColor;
567*8dcb2a10SAndre Fischer }
568*8dcb2a10SAndre Fischer 
569*8dcb2a10SAndre Fischer 
570*8dcb2a10SAndre Fischer 
571*8dcb2a10SAndre Fischer 
572*8dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateTransparencyGradientControl (PopupContainer* pParent)
573*8dcb2a10SAndre Fischer {
574*8dcb2a10SAndre Fischer     return new AreaTransparencyGradientControl(pParent, *this);
575*8dcb2a10SAndre Fischer }
576*8dcb2a10SAndre Fischer 
577*8dcb2a10SAndre Fischer 
578*8dcb2a10SAndre Fischer 
579*8dcb2a10SAndre Fischer 
580*8dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateColorPopupControl (PopupContainer* pParent)
581*8dcb2a10SAndre Fischer {
582*8dcb2a10SAndre Fischer     return new ColorControl(
583*8dcb2a10SAndre Fischer         pParent,
584*8dcb2a10SAndre Fischer         mpBindings,
585*8dcb2a10SAndre Fischer         SVX_RES(RID_POPUPPANEL_AERAPAGE_COLOR),
586*8dcb2a10SAndre Fischer         SVX_RES(VS_COLOR),
587*8dcb2a10SAndre Fischer         ::boost::bind(&AreaPropertyPanel::GetLastColor, this),
588*8dcb2a10SAndre Fischer         ::boost::bind(&AreaPropertyPanel::SetColor, this, _1,_2),
589*8dcb2a10SAndre Fischer         pParent,
590*8dcb2a10SAndre Fischer         0);
591*8dcb2a10SAndre Fischer }
592*8dcb2a10SAndre Fischer 
593*8dcb2a10SAndre Fischer 
594*8dcb2a10SAndre Fischer 
595*8dcb2a10SAndre Fischer 
596*8dcb2a10SAndre Fischer void AreaPropertyPanel::SetupIcons(void)
597*8dcb2a10SAndre Fischer {
598*8dcb2a10SAndre Fischer     if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
599*8dcb2a10SAndre Fischer     {
600*8dcb2a10SAndre Fischer         // todo
601*8dcb2a10SAndre Fischer     }
602*8dcb2a10SAndre Fischer     else
603*8dcb2a10SAndre Fischer     {
604*8dcb2a10SAndre Fischer         // todo
605*8dcb2a10SAndre Fischer     }
606*8dcb2a10SAndre Fischer }
607*8dcb2a10SAndre Fischer 
608*8dcb2a10SAndre Fischer 
609*8dcb2a10SAndre Fischer 
610*8dcb2a10SAndre Fischer AreaPropertyPanel* AreaPropertyPanel::Create (
611*8dcb2a10SAndre Fischer     Window* pParent,
612*8dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
613*8dcb2a10SAndre Fischer     SfxBindings* pBindings)
614*8dcb2a10SAndre Fischer {
615*8dcb2a10SAndre Fischer     if (pParent == NULL)
616*8dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no parent Window given to AreaPropertyPanel::Create"), NULL, 0);
617*8dcb2a10SAndre Fischer     if ( ! rxFrame.is())
618*8dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no XFrame given to AreaPropertyPanel::Create"), NULL, 1);
619*8dcb2a10SAndre Fischer     if (pBindings == NULL)
620*8dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no SfxBindings given to AreaPropertyPanel::Create"), NULL, 2);
621*8dcb2a10SAndre Fischer 
622*8dcb2a10SAndre Fischer     return new AreaPropertyPanel(
623*8dcb2a10SAndre Fischer         pParent,
624*8dcb2a10SAndre Fischer         rxFrame,
625*8dcb2a10SAndre Fischer         pBindings);
626*8dcb2a10SAndre Fischer }
627*8dcb2a10SAndre Fischer 
628*8dcb2a10SAndre Fischer 
629*8dcb2a10SAndre Fischer 
630*8dcb2a10SAndre Fischer void AreaPropertyPanel::DataChanged(
631*8dcb2a10SAndre Fischer     const DataChangedEvent& rEvent)
632*8dcb2a10SAndre Fischer {
633*8dcb2a10SAndre Fischer     (void)rEvent;
634*8dcb2a10SAndre Fischer 
635*8dcb2a10SAndre Fischer     SetupIcons();
636*8dcb2a10SAndre Fischer }
637*8dcb2a10SAndre Fischer 
638*8dcb2a10SAndre Fischer 
639*8dcb2a10SAndre Fischer 
640*8dcb2a10SAndre Fischer void AreaPropertyPanel::HandleContextChange(
641*8dcb2a10SAndre Fischer     const ::sfx2::sidebar::EnumContext aContext)
642*8dcb2a10SAndre Fischer {
643*8dcb2a10SAndre Fischer     if(maContext == aContext)
644*8dcb2a10SAndre Fischer     {
645*8dcb2a10SAndre Fischer         // Nothing to do.
646*8dcb2a10SAndre Fischer         return;
647*8dcb2a10SAndre Fischer     }
648*8dcb2a10SAndre Fischer 
649*8dcb2a10SAndre Fischer     maContext = aContext;
650*8dcb2a10SAndre Fischer 
651*8dcb2a10SAndre Fischer 
652*8dcb2a10SAndre Fischer 
653*8dcb2a10SAndre Fischer     // todo
654*8dcb2a10SAndre Fischer }
655*8dcb2a10SAndre Fischer 
656*8dcb2a10SAndre Fischer 
657*8dcb2a10SAndre Fischer 
658*8dcb2a10SAndre Fischer void AreaPropertyPanel::ImpUpdateTransparencies()
659*8dcb2a10SAndre Fischer {
660*8dcb2a10SAndre Fischer     if(mpTransparanceItem.get() || mpFloatTransparenceItem.get())
661*8dcb2a10SAndre Fischer     {
662*8dcb2a10SAndre Fischer         bool bZeroValue(false);
663*8dcb2a10SAndre Fischer 
664*8dcb2a10SAndre Fischer         if(mpTransparanceItem.get())
665*8dcb2a10SAndre Fischer         {
666*8dcb2a10SAndre Fischer             const sal_uInt16 nValue(mpTransparanceItem->GetValue());
667*8dcb2a10SAndre Fischer 
668*8dcb2a10SAndre Fischer             if(!nValue)
669*8dcb2a10SAndre Fischer             {
670*8dcb2a10SAndre Fischer                 bZeroValue = true;
671*8dcb2a10SAndre Fischer             }
672*8dcb2a10SAndre Fischer             else if(nValue <= 100)
673*8dcb2a10SAndre Fischer             {
674*8dcb2a10SAndre Fischer                 mpLBTransType->Enable();
675*8dcb2a10SAndre Fischer                 mpLBTransType->SelectEntryPos(1);
676*8dcb2a10SAndre Fischer                 mpBTNGradient->Hide();
677*8dcb2a10SAndre Fischer                 mpMTRTransparent->Show();
678*8dcb2a10SAndre Fischer                 mpMTRTransparent->Enable();
679*8dcb2a10SAndre Fischer                 mpMTRTransparent->SetValue(nValue);
680*8dcb2a10SAndre Fischer             }
681*8dcb2a10SAndre Fischer 
682*8dcb2a10SAndre Fischer             maTrGrPopup.Hide();
683*8dcb2a10SAndre Fischer         }
684*8dcb2a10SAndre Fischer 
685*8dcb2a10SAndre Fischer         if(bZeroValue && mpFloatTransparenceItem.get())
686*8dcb2a10SAndre Fischer         {
687*8dcb2a10SAndre Fischer             if(mpFloatTransparenceItem->IsEnabled())
688*8dcb2a10SAndre Fischer             {
689*8dcb2a10SAndre Fischer                 const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
690*8dcb2a10SAndre Fischer                 const bool bHighContrast(GetSettings().GetStyleSettings().GetHighContrastMode());
691*8dcb2a10SAndre Fischer                 sal_uInt16 nEntryPos(0);
692*8dcb2a10SAndre Fischer                 Image* pImage = 0;
693*8dcb2a10SAndre Fischer 
694*8dcb2a10SAndre Fischer                 mpLBTransType->Enable();
695*8dcb2a10SAndre Fischer                 mpMTRTransparent->Hide();
696*8dcb2a10SAndre Fischer                 mpBTNGradient->Enable();
697*8dcb2a10SAndre Fischer                 mpBTNGradient->Show();
698*8dcb2a10SAndre Fischer 
699*8dcb2a10SAndre Fischer                 switch(rGradient.GetGradientStyle())
700*8dcb2a10SAndre Fischer                 {
701*8dcb2a10SAndre Fischer                     case XGRAD_LINEAR:
702*8dcb2a10SAndre Fischer                     {
703*8dcb2a10SAndre Fischer                         nEntryPos = 2;
704*8dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgLinearH : &maImgLinear;
705*8dcb2a10SAndre Fischer                         break;
706*8dcb2a10SAndre Fischer                     }
707*8dcb2a10SAndre Fischer                     case XGRAD_AXIAL:
708*8dcb2a10SAndre Fischer                     {
709*8dcb2a10SAndre Fischer                         nEntryPos = 3;
710*8dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgAxialH : &maImgAxial;
711*8dcb2a10SAndre Fischer                         break;
712*8dcb2a10SAndre Fischer                     }
713*8dcb2a10SAndre Fischer                     case XGRAD_RADIAL:
714*8dcb2a10SAndre Fischer                     {
715*8dcb2a10SAndre Fischer                         nEntryPos = 4;
716*8dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgRadialH : &maImgRadial;
717*8dcb2a10SAndre Fischer                         break;
718*8dcb2a10SAndre Fischer                     }
719*8dcb2a10SAndre Fischer                     case XGRAD_ELLIPTICAL:
720*8dcb2a10SAndre Fischer                     {
721*8dcb2a10SAndre Fischer                         nEntryPos = 5;
722*8dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgElliH : &maImgElli;
723*8dcb2a10SAndre Fischer                         break;
724*8dcb2a10SAndre Fischer                     }
725*8dcb2a10SAndre Fischer                     case XGRAD_SQUARE:
726*8dcb2a10SAndre Fischer                     {
727*8dcb2a10SAndre Fischer                         nEntryPos = 6;
728*8dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgQuadH : &maImgQuad;
729*8dcb2a10SAndre Fischer                         break;
730*8dcb2a10SAndre Fischer                     }
731*8dcb2a10SAndre Fischer                     case XGRAD_RECT:
732*8dcb2a10SAndre Fischer                     {
733*8dcb2a10SAndre Fischer                         nEntryPos = 7;
734*8dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgSquareH : &maImgSquare;
735*8dcb2a10SAndre Fischer                         break;
736*8dcb2a10SAndre Fischer                     }
737*8dcb2a10SAndre Fischer                 }
738*8dcb2a10SAndre Fischer 
739*8dcb2a10SAndre Fischer                 mpLBTransType->SelectEntryPos(nEntryPos);
740*8dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT, *pImage);
741*8dcb2a10SAndre Fischer                 bZeroValue = false;
742*8dcb2a10SAndre Fischer             }
743*8dcb2a10SAndre Fischer             else
744*8dcb2a10SAndre Fischer             {
745*8dcb2a10SAndre Fischer                 bZeroValue = true;
746*8dcb2a10SAndre Fischer             }
747*8dcb2a10SAndre Fischer         }
748*8dcb2a10SAndre Fischer 
749*8dcb2a10SAndre Fischer         if(bZeroValue)
750*8dcb2a10SAndre Fischer         {
751*8dcb2a10SAndre Fischer             mpLBTransType->Enable();
752*8dcb2a10SAndre Fischer             mpLBTransType->SelectEntryPos(0);
753*8dcb2a10SAndre Fischer             mpBTNGradient->Hide();
754*8dcb2a10SAndre Fischer             mpMTRTransparent->Enable();
755*8dcb2a10SAndre Fischer             mpMTRTransparent->Show();
756*8dcb2a10SAndre Fischer             mpMTRTransparent->SetValue(0);
757*8dcb2a10SAndre Fischer         }
758*8dcb2a10SAndre Fischer     }
759*8dcb2a10SAndre Fischer     else
760*8dcb2a10SAndre Fischer     {
761*8dcb2a10SAndre Fischer         // no transparency at all
762*8dcb2a10SAndre Fischer         mpLBTransType->SetNoSelection();
763*8dcb2a10SAndre Fischer         mpMTRTransparent->Disable();
764*8dcb2a10SAndre Fischer         mpMTRTransparent->Show();
765*8dcb2a10SAndre Fischer         mpBTNGradient->Disable();
766*8dcb2a10SAndre Fischer         mpBTNGradient->Hide();
767*8dcb2a10SAndre Fischer     }
768*8dcb2a10SAndre Fischer 
769*8dcb2a10SAndre Fischer 
770*8dcb2a10SAndre Fischer }
771*8dcb2a10SAndre Fischer 
772*8dcb2a10SAndre Fischer void AreaPropertyPanel::NotifyItemUpdate(
773*8dcb2a10SAndre Fischer     sal_uInt16 nSID,
774*8dcb2a10SAndre Fischer     SfxItemState eState,
775*8dcb2a10SAndre Fischer     const SfxPoolItem* pState)
776*8dcb2a10SAndre Fischer {
777*8dcb2a10SAndre Fischer 	XFillStyle eXFS;
778*8dcb2a10SAndre Fischer 	SfxObjectShell* pSh = SfxObjectShell::Current();
779*8dcb2a10SAndre Fischer     bool bFillTransparenceChanged(false);
780*8dcb2a10SAndre Fischer 
781*8dcb2a10SAndre Fischer     if(SID_ATTR_FILL_TRANSPARENCE == nSID)
782*8dcb2a10SAndre Fischer     {
783*8dcb2a10SAndre Fischer         bFillTransparenceChanged = true;
784*8dcb2a10SAndre Fischer 
785*8dcb2a10SAndre Fischer         if(eState >= SFX_ITEM_AVAILABLE)
786*8dcb2a10SAndre Fischer         {
787*8dcb2a10SAndre Fischer             const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
788*8dcb2a10SAndre Fischer 
789*8dcb2a10SAndre Fischer             if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem))
790*8dcb2a10SAndre Fischer             {
791*8dcb2a10SAndre Fischer                 mpTransparanceItem.reset((SfxUInt16Item*)pItem->Clone());
792*8dcb2a10SAndre Fischer             }
793*8dcb2a10SAndre Fischer             else
794*8dcb2a10SAndre Fischer             {
795*8dcb2a10SAndre Fischer                 mpTransparanceItem.reset();
796*8dcb2a10SAndre Fischer             }
797*8dcb2a10SAndre Fischer         }
798*8dcb2a10SAndre Fischer         else
799*8dcb2a10SAndre Fischer         {
800*8dcb2a10SAndre Fischer             mpTransparanceItem.reset();
801*8dcb2a10SAndre Fischer         }
802*8dcb2a10SAndre Fischer     }
803*8dcb2a10SAndre Fischer     else if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID)
804*8dcb2a10SAndre Fischer     {
805*8dcb2a10SAndre Fischer         bFillTransparenceChanged = true;
806*8dcb2a10SAndre Fischer 
807*8dcb2a10SAndre Fischer         if(eState >= SFX_ITEM_AVAILABLE)
808*8dcb2a10SAndre Fischer         {
809*8dcb2a10SAndre Fischer             const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState);
810*8dcb2a10SAndre Fischer 
811*8dcb2a10SAndre Fischer             if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem))
812*8dcb2a10SAndre Fischer             {
813*8dcb2a10SAndre Fischer                 mpFloatTransparenceItem.reset((XFillFloatTransparenceItem*)pItem->Clone());
814*8dcb2a10SAndre Fischer             }
815*8dcb2a10SAndre Fischer             else
816*8dcb2a10SAndre Fischer             {
817*8dcb2a10SAndre Fischer                 mpFloatTransparenceItem.reset();
818*8dcb2a10SAndre Fischer             }
819*8dcb2a10SAndre Fischer         }
820*8dcb2a10SAndre Fischer         else
821*8dcb2a10SAndre Fischer         {
822*8dcb2a10SAndre Fischer             mpFloatTransparenceItem.reset();
823*8dcb2a10SAndre Fischer         }
824*8dcb2a10SAndre Fischer     }
825*8dcb2a10SAndre Fischer 
826*8dcb2a10SAndre Fischer     if(bFillTransparenceChanged)
827*8dcb2a10SAndre Fischer     {
828*8dcb2a10SAndre Fischer         // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
829*8dcb2a10SAndre Fischer         ImpUpdateTransparencies();
830*8dcb2a10SAndre Fischer     }
831*8dcb2a10SAndre Fischer 
832*8dcb2a10SAndre Fischer 	if	(nSID == SID_ATTR_FILL_STYLE )
833*8dcb2a10SAndre Fischer 	{
834*8dcb2a10SAndre Fischer 		if( eState == SFX_ITEM_DISABLED )
835*8dcb2a10SAndre Fischer 		{
836*8dcb2a10SAndre Fischer 			mpLbFillType->Disable();
837*8dcb2a10SAndre Fischer 			mpLbFillType->SetNoSelection();
838*8dcb2a10SAndre Fischer 			mpLbFillAttr->Show();
839*8dcb2a10SAndre Fischer 			mpLbFillAttr->Disable();
840*8dcb2a10SAndre Fischer 			mpLbFillAttr->SetNoSelection();
841*8dcb2a10SAndre Fischer 			mpToolBoxColor->Hide();
842*8dcb2a10SAndre Fischer 			mbTBShow = false;
843*8dcb2a10SAndre Fischer 			meLastXFS = -1;
844*8dcb2a10SAndre Fischer             mpStyleItem.reset();
845*8dcb2a10SAndre Fischer 		}
846*8dcb2a10SAndre Fischer 		else if( SFX_ITEM_AVAILABLE == eState )
847*8dcb2a10SAndre Fischer 		{
848*8dcb2a10SAndre Fischer 			mpStyleItem.reset(pState ? (XFillStyleItem*)pState->Clone() : 0);
849*8dcb2a10SAndre Fischer 			mpLbFillType->Enable();
850*8dcb2a10SAndre Fischer 
851*8dcb2a10SAndre Fischer 			eXFS = (XFillStyle)mpStyleItem->GetValue();
852*8dcb2a10SAndre Fischer 			meLastXFS = eXFS;
853*8dcb2a10SAndre Fischer 			mpLbFillType->SelectEntryPos(
854*8dcb2a10SAndre Fischer 				sal::static_int_cast< sal_uInt16 >( eXFS ) );
855*8dcb2a10SAndre Fischer 			//Added for select invisable
856*8dcb2a10SAndre Fischer 			if(eXFS == XFILL_NONE)
857*8dcb2a10SAndre Fischer 			{
858*8dcb2a10SAndre Fischer 				mpLbFillAttr->SetNoSelection();
859*8dcb2a10SAndre Fischer 				mpLbFillAttr->Disable();
860*8dcb2a10SAndre Fischer 			}
861*8dcb2a10SAndre Fischer 			//else
862*8dcb2a10SAndre Fischer 			//	mpLbFillAttr->Enable();
863*8dcb2a10SAndre Fischer 			Update();
864*8dcb2a10SAndre Fischer 			//SelectFillTypeHdl( NULL );
865*8dcb2a10SAndre Fischer 		}
866*8dcb2a10SAndre Fischer 		else
867*8dcb2a10SAndre Fischer 		{
868*8dcb2a10SAndre Fischer 			mpLbFillType->SetNoSelection();
869*8dcb2a10SAndre Fischer 			mpLbFillAttr->Show();
870*8dcb2a10SAndre Fischer 			mpLbFillAttr->Disable();
871*8dcb2a10SAndre Fischer 			mpLbFillAttr->SetNoSelection();
872*8dcb2a10SAndre Fischer 			mpToolBoxColor->Hide();
873*8dcb2a10SAndre Fischer 			mbTBShow = false;
874*8dcb2a10SAndre Fischer 			meLastXFS = -1;  //Added
875*8dcb2a10SAndre Fischer 			mpStyleItem.reset();
876*8dcb2a10SAndre Fischer 		}
877*8dcb2a10SAndre Fischer 	}
878*8dcb2a10SAndre Fischer 	else if(nSID == SID_ATTR_FILL_COLOR)
879*8dcb2a10SAndre Fischer 	{
880*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
881*8dcb2a10SAndre Fischer 		{
882*8dcb2a10SAndre Fischer 			mpColorItem.reset(pState ? (XFillColorItem*)pState->Clone() : 0);
883*8dcb2a10SAndre Fischer 		}
884*8dcb2a10SAndre Fischer 		if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_SOLID)
885*8dcb2a10SAndre Fischer 		{
886*8dcb2a10SAndre Fischer 			mpLbFillAttr->Hide();
887*8dcb2a10SAndre Fischer 			mpToolBoxColor->Show();
888*8dcb2a10SAndre Fischer 			mbTBShow = true;
889*8dcb2a10SAndre Fischer 			if( SFX_ITEM_AVAILABLE == eState)
890*8dcb2a10SAndre Fischer 			{
891*8dcb2a10SAndre Fischer 				mpToolBoxColor->Enable();
892*8dcb2a10SAndre Fischer 				mbColorAvail = true;	//
893*8dcb2a10SAndre Fischer 			    // maLastColor = mpColorItem->GetColorValue();
894*8dcb2a10SAndre Fischer 				Update();
895*8dcb2a10SAndre Fischer 			}
896*8dcb2a10SAndre Fischer 			else if(SFX_ITEM_DISABLED == eState )
897*8dcb2a10SAndre Fischer 			{
898*8dcb2a10SAndre Fischer 				mpToolBoxColor->Disable();
899*8dcb2a10SAndre Fischer 				mbColorAvail = false;	//
900*8dcb2a10SAndre Fischer 				mpColorUpdater->Update(COL_WHITE);
901*8dcb2a10SAndre Fischer 			}
902*8dcb2a10SAndre Fischer 			else
903*8dcb2a10SAndre Fischer 			{
904*8dcb2a10SAndre Fischer 				mbColorAvail = false;	//
905*8dcb2a10SAndre Fischer 				mpColorUpdater->Update(COL_WHITE);
906*8dcb2a10SAndre Fischer 			}
907*8dcb2a10SAndre Fischer 		}
908*8dcb2a10SAndre Fischer 	}
909*8dcb2a10SAndre Fischer 	else if(nSID == SID_ATTR_FILL_GRADIENT)
910*8dcb2a10SAndre Fischer 	{
911*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
912*8dcb2a10SAndre Fischer 		{
913*8dcb2a10SAndre Fischer 			mpFillGradientItem.reset(pState ? (XFillGradientItem*)pState->Clone() : 0);
914*8dcb2a10SAndre Fischer 		}
915*8dcb2a10SAndre Fischer 		if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_GRADIENT )
916*8dcb2a10SAndre Fischer 		{
917*8dcb2a10SAndre Fischer 			mpLbFillAttr->Show();
918*8dcb2a10SAndre Fischer 			mpToolBoxColor->Hide();
919*8dcb2a10SAndre Fischer 			mbTBShow = false;
920*8dcb2a10SAndre Fischer 			if( SFX_ITEM_AVAILABLE == eState)
921*8dcb2a10SAndre Fischer 			{
922*8dcb2a10SAndre Fischer 				mpLbFillAttr->Enable();
923*8dcb2a10SAndre Fischer 				Update();
924*8dcb2a10SAndre Fischer 			}
925*8dcb2a10SAndre Fischer 
926*8dcb2a10SAndre Fischer 			else if(SFX_ITEM_DISABLED == eState )
927*8dcb2a10SAndre Fischer 			{
928*8dcb2a10SAndre Fischer 				mpLbFillAttr->Disable();
929*8dcb2a10SAndre Fischer 				mpLbFillAttr->SetNoSelection();
930*8dcb2a10SAndre Fischer 			}
931*8dcb2a10SAndre Fischer 			else
932*8dcb2a10SAndre Fischer 				mpLbFillAttr->SetNoSelection();
933*8dcb2a10SAndre Fischer 		}
934*8dcb2a10SAndre Fischer 	}
935*8dcb2a10SAndre Fischer 	else if(nSID == SID_ATTR_FILL_HATCH)
936*8dcb2a10SAndre Fischer 	{
937*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
938*8dcb2a10SAndre Fischer 		{
939*8dcb2a10SAndre Fischer 			mpHatchItem.reset(pState ? (XFillHatchItem*)pState->Clone() : 0);
940*8dcb2a10SAndre Fischer 		}
941*8dcb2a10SAndre Fischer 		if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_HATCH )
942*8dcb2a10SAndre Fischer 		{
943*8dcb2a10SAndre Fischer 			mpLbFillAttr->Show();
944*8dcb2a10SAndre Fischer 			mpToolBoxColor->Hide();
945*8dcb2a10SAndre Fischer 			mbTBShow = false;
946*8dcb2a10SAndre Fischer 			if( SFX_ITEM_AVAILABLE == eState)
947*8dcb2a10SAndre Fischer 			{
948*8dcb2a10SAndre Fischer 				mpLbFillAttr->Enable();
949*8dcb2a10SAndre Fischer 				Update();
950*8dcb2a10SAndre Fischer 			}
951*8dcb2a10SAndre Fischer 			else if(SFX_ITEM_DISABLED == eState )
952*8dcb2a10SAndre Fischer 			{
953*8dcb2a10SAndre Fischer 				mpLbFillAttr->Disable();
954*8dcb2a10SAndre Fischer 				mpLbFillAttr->SetNoSelection();
955*8dcb2a10SAndre Fischer 			}
956*8dcb2a10SAndre Fischer 			else
957*8dcb2a10SAndre Fischer 				mpLbFillAttr->SetNoSelection();
958*8dcb2a10SAndre Fischer 		}
959*8dcb2a10SAndre Fischer 	}
960*8dcb2a10SAndre Fischer 	else if(nSID == SID_ATTR_FILL_BITMAP)
961*8dcb2a10SAndre Fischer 	{
962*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
963*8dcb2a10SAndre Fischer 		{
964*8dcb2a10SAndre Fischer 			mpBitmapItem.reset(pState ? (XFillBitmapItem*)pState->Clone() : 0);
965*8dcb2a10SAndre Fischer 		}
966*8dcb2a10SAndre Fischer 		if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_BITMAP )
967*8dcb2a10SAndre Fischer 		{
968*8dcb2a10SAndre Fischer 			mpLbFillAttr->Show();
969*8dcb2a10SAndre Fischer 			mpToolBoxColor->Hide();
970*8dcb2a10SAndre Fischer 			mbTBShow = false;
971*8dcb2a10SAndre Fischer 			if( SFX_ITEM_AVAILABLE == eState)
972*8dcb2a10SAndre Fischer 			{
973*8dcb2a10SAndre Fischer 				mpLbFillAttr->Enable();
974*8dcb2a10SAndre Fischer 				Update();
975*8dcb2a10SAndre Fischer 			}
976*8dcb2a10SAndre Fischer 			else if(SFX_ITEM_DISABLED == eState )
977*8dcb2a10SAndre Fischer 			{
978*8dcb2a10SAndre Fischer 				mpLbFillAttr->Disable();
979*8dcb2a10SAndre Fischer 				mpLbFillAttr->SetNoSelection();
980*8dcb2a10SAndre Fischer 			}
981*8dcb2a10SAndre Fischer 			else
982*8dcb2a10SAndre Fischer 				mpLbFillAttr->SetNoSelection();
983*8dcb2a10SAndre Fischer 		}
984*8dcb2a10SAndre Fischer 	}
985*8dcb2a10SAndre Fischer 	else if(nSID == SID_COLOR_TABLE)
986*8dcb2a10SAndre Fischer 	{
987*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
988*8dcb2a10SAndre Fischer 		{
989*8dcb2a10SAndre Fischer 			mpColorTableItem.reset(pState ? (SvxColorTableItem*)pState->Clone() : 0);
990*8dcb2a10SAndre Fischer 
991*8dcb2a10SAndre Fischer 			if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue()== XFILL_SOLID)
992*8dcb2a10SAndre Fischer 			{
993*8dcb2a10SAndre Fischer 				if ( mpColorItem )
994*8dcb2a10SAndre Fischer 				{
995*8dcb2a10SAndre Fischer 					String aString( mpColorItem->GetName() );
996*8dcb2a10SAndre Fischer 					Color aColor = mpColorItem->GetColorValue();
997*8dcb2a10SAndre Fischer 					mpLbFillAttr->Clear();
998*8dcb2a10SAndre Fischer 					SvxColorTableItem aItem( *(const SvxColorTableItem*)(
999*8dcb2a10SAndre Fischer 						pSh->GetItem( SID_COLOR_TABLE ) ) );
1000*8dcb2a10SAndre Fischer 					mpLbFillAttr->Enable();
1001*8dcb2a10SAndre Fischer 					mpLbFillAttr->Fill( aItem.GetColorTable() );
1002*8dcb2a10SAndre Fischer 					mpLbFillAttr->SelectEntry( aColor );
1003*8dcb2a10SAndre Fischer 				}
1004*8dcb2a10SAndre Fischer 				else
1005*8dcb2a10SAndre Fischer 					mpLbFillAttr->SetNoSelection();
1006*8dcb2a10SAndre Fischer 			}
1007*8dcb2a10SAndre Fischer 		}
1008*8dcb2a10SAndre Fischer 	}
1009*8dcb2a10SAndre Fischer 	else if(nSID == SID_GRADIENT_LIST)
1010*8dcb2a10SAndre Fischer 	{
1011*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
1012*8dcb2a10SAndre Fischer 		{
1013*8dcb2a10SAndre Fischer 			mpGradientListItem.reset(pState ? (SvxGradientListItem*)pState->Clone() : 0);
1014*8dcb2a10SAndre Fischer 
1015*8dcb2a10SAndre Fischer 			if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_GRADIENT)
1016*8dcb2a10SAndre Fischer 			{
1017*8dcb2a10SAndre Fischer 				if ( mpFillGradientItem )
1018*8dcb2a10SAndre Fischer 				{
1019*8dcb2a10SAndre Fischer 					String aString( mpFillGradientItem->GetName() );
1020*8dcb2a10SAndre Fischer 					mpLbFillAttr->Clear();
1021*8dcb2a10SAndre Fischer 					SvxGradientListItem aItem( *(const SvxGradientListItem*)(
1022*8dcb2a10SAndre Fischer 						pSh->GetItem( SID_GRADIENT_LIST ) ) );
1023*8dcb2a10SAndre Fischer 					mpLbFillAttr->Enable();
1024*8dcb2a10SAndre Fischer 					mpLbFillAttr->Fill( aItem.GetGradientList() );
1025*8dcb2a10SAndre Fischer 					mpLbFillAttr->SelectEntry( aString );
1026*8dcb2a10SAndre Fischer 				}
1027*8dcb2a10SAndre Fischer 				else
1028*8dcb2a10SAndre Fischer 					mpLbFillAttr->SetNoSelection();
1029*8dcb2a10SAndre Fischer 			}
1030*8dcb2a10SAndre Fischer 		}
1031*8dcb2a10SAndre Fischer 	}
1032*8dcb2a10SAndre Fischer 	else if(nSID == SID_HATCH_LIST)
1033*8dcb2a10SAndre Fischer 	{
1034*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
1035*8dcb2a10SAndre Fischer 		{
1036*8dcb2a10SAndre Fischer 			mpHatchListItem.reset(pState ? (SvxHatchListItem*)pState->Clone() : 0);
1037*8dcb2a10SAndre Fischer 
1038*8dcb2a10SAndre Fischer 			if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_HATCH )
1039*8dcb2a10SAndre Fischer 			{
1040*8dcb2a10SAndre Fischer 				if ( mpHatchItem)
1041*8dcb2a10SAndre Fischer 				{
1042*8dcb2a10SAndre Fischer 					String aString( mpHatchItem->GetName() );
1043*8dcb2a10SAndre Fischer 					mpLbFillAttr->Clear();
1044*8dcb2a10SAndre Fischer 					SvxHatchListItem aItem( *(const SvxHatchListItem*)(
1045*8dcb2a10SAndre Fischer 						pSh->GetItem( SID_HATCH_LIST ) ) );
1046*8dcb2a10SAndre Fischer 					mpLbFillAttr->Enable();
1047*8dcb2a10SAndre Fischer 					mpLbFillAttr->Fill( aItem.GetHatchList() );
1048*8dcb2a10SAndre Fischer 					mpLbFillAttr->SelectEntry( aString );
1049*8dcb2a10SAndre Fischer 				}
1050*8dcb2a10SAndre Fischer 				else
1051*8dcb2a10SAndre Fischer 					mpLbFillAttr->SetNoSelection();
1052*8dcb2a10SAndre Fischer 			}
1053*8dcb2a10SAndre Fischer 		}
1054*8dcb2a10SAndre Fischer 	}
1055*8dcb2a10SAndre Fischer 	else if(nSID == SID_BITMAP_LIST)
1056*8dcb2a10SAndre Fischer 	{
1057*8dcb2a10SAndre Fischer 		if( SFX_ITEM_AVAILABLE == eState)
1058*8dcb2a10SAndre Fischer 		{
1059*8dcb2a10SAndre Fischer 			mpBitmapListItem.reset(pState ? (SvxBitmapListItem*)pState->Clone() : 0);
1060*8dcb2a10SAndre Fischer 
1061*8dcb2a10SAndre Fischer 			if( mpStyleItem && (XFillStyle)mpStyleItem->GetValue() == XFILL_BITMAP )
1062*8dcb2a10SAndre Fischer 			{
1063*8dcb2a10SAndre Fischer 				if ( mpBitmapItem )
1064*8dcb2a10SAndre Fischer 				{
1065*8dcb2a10SAndre Fischer 					String aString( mpBitmapItem->GetName() );
1066*8dcb2a10SAndre Fischer 					mpLbFillAttr->Clear();
1067*8dcb2a10SAndre Fischer 					SvxBitmapListItem aItem( *(const SvxBitmapListItem*)(
1068*8dcb2a10SAndre Fischer 						pSh->GetItem( SID_BITMAP_LIST ) ) );
1069*8dcb2a10SAndre Fischer 					mpLbFillAttr->Enable();
1070*8dcb2a10SAndre Fischer 					mpLbFillAttr->Fill( aItem.GetBitmapList() );
1071*8dcb2a10SAndre Fischer 					mpLbFillAttr->SelectEntry( aString );
1072*8dcb2a10SAndre Fischer 				}
1073*8dcb2a10SAndre Fischer 				else
1074*8dcb2a10SAndre Fischer 					mpLbFillAttr->SetNoSelection();
1075*8dcb2a10SAndre Fischer 			}
1076*8dcb2a10SAndre Fischer 		}
1077*8dcb2a10SAndre Fischer 	}
1078*8dcb2a10SAndre Fischer }
1079*8dcb2a10SAndre Fischer 
1080*8dcb2a10SAndre Fischer 
1081*8dcb2a10SAndre Fischer 
1082*8dcb2a10SAndre Fischer SfxBindings* AreaPropertyPanel::GetBindings()
1083*8dcb2a10SAndre Fischer {
1084*8dcb2a10SAndre Fischer     return mpBindings;
1085*8dcb2a10SAndre Fischer }
1086*8dcb2a10SAndre Fischer 
1087*8dcb2a10SAndre Fischer 
1088*8dcb2a10SAndre Fischer 
1089*8dcb2a10SAndre Fischer void AreaPropertyPanel::Update()
1090*8dcb2a10SAndre Fischer {
1091*8dcb2a10SAndre Fischer 	if ( mpStyleItem )
1092*8dcb2a10SAndre Fischer 	{
1093*8dcb2a10SAndre Fischer 		XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
1094*8dcb2a10SAndre Fischer 		SfxObjectShell* pSh = SfxObjectShell::Current();
1095*8dcb2a10SAndre Fischer 
1096*8dcb2a10SAndre Fischer 		switch( eXFS )
1097*8dcb2a10SAndre Fischer 		{
1098*8dcb2a10SAndre Fischer 			case XFILL_NONE:
1099*8dcb2a10SAndre Fischer 			{
1100*8dcb2a10SAndre Fischer 				mpLbFillAttr->Show();	//wj for new color picker
1101*8dcb2a10SAndre Fischer 				mpToolBoxColor->Hide();	//wj for new color picker
1102*8dcb2a10SAndre Fischer 				mbTBShow = false;
1103*8dcb2a10SAndre Fischer 			}
1104*8dcb2a10SAndre Fischer 			break;
1105*8dcb2a10SAndre Fischer 
1106*8dcb2a10SAndre Fischer 			case XFILL_SOLID:
1107*8dcb2a10SAndre Fischer 			{
1108*8dcb2a10SAndre Fischer 				if ( mpColorItem )
1109*8dcb2a10SAndre Fischer 				{
1110*8dcb2a10SAndre Fischer 					mpLbFillAttr->Hide();	//wj for new color picker
1111*8dcb2a10SAndre Fischer 					mpToolBoxColor->Show();	//wj for new color picker
1112*8dcb2a10SAndre Fischer 					mbTBShow = true;
1113*8dcb2a10SAndre Fischer 					mpColorUpdater->Update(mpColorItem->GetColorValue());
1114*8dcb2a10SAndre Fischer 				}
1115*8dcb2a10SAndre Fischer 				else
1116*8dcb2a10SAndre Fischer 					mpColorUpdater->Update(COL_WHITE);
1117*8dcb2a10SAndre Fischer 			}
1118*8dcb2a10SAndre Fischer 			break;
1119*8dcb2a10SAndre Fischer 
1120*8dcb2a10SAndre Fischer 			case XFILL_GRADIENT:
1121*8dcb2a10SAndre Fischer 			{
1122*8dcb2a10SAndre Fischer 				mpLbFillAttr->Show();	//wj for new color picker
1123*8dcb2a10SAndre Fischer 				mpToolBoxColor->Hide();	//wj for new color picker
1124*8dcb2a10SAndre Fischer 				mbTBShow = false;
1125*8dcb2a10SAndre Fischer 				if ( pSh && pSh->GetItem( SID_GRADIENT_LIST ) )
1126*8dcb2a10SAndre Fischer 				{
1127*8dcb2a10SAndre Fischer 					SvxGradientListItem aItem( *(const SvxGradientListItem*)(
1128*8dcb2a10SAndre Fischer 						pSh->GetItem( SID_GRADIENT_LIST ) ) );
1129*8dcb2a10SAndre Fischer 					mpLbFillAttr->Enable();
1130*8dcb2a10SAndre Fischer 					mpLbFillAttr->Clear();
1131*8dcb2a10SAndre Fischer 					mpLbFillAttr->Fill( aItem.GetGradientList() );
1132*8dcb2a10SAndre Fischer 					if ( mpFillGradientItem )
1133*8dcb2a10SAndre Fischer 					{
1134*8dcb2a10SAndre Fischer 						String aString( mpFillGradientItem->GetName() );
1135*8dcb2a10SAndre Fischer 						mpLbFillAttr->SelectEntry( aString );
1136*8dcb2a10SAndre Fischer 					}
1137*8dcb2a10SAndre Fischer 					else
1138*8dcb2a10SAndre Fischer 						mpLbFillAttr->SetNoSelection();
1139*8dcb2a10SAndre Fischer 				}
1140*8dcb2a10SAndre Fischer 				else
1141*8dcb2a10SAndre Fischer 					mpLbFillAttr->SetNoSelection();
1142*8dcb2a10SAndre Fischer 			}
1143*8dcb2a10SAndre Fischer 			break;
1144*8dcb2a10SAndre Fischer 
1145*8dcb2a10SAndre Fischer 			case XFILL_HATCH:
1146*8dcb2a10SAndre Fischer 			{
1147*8dcb2a10SAndre Fischer 				mpLbFillAttr->Show();	//wj for new color picker
1148*8dcb2a10SAndre Fischer 				mpToolBoxColor->Hide();	//wj for new color picker
1149*8dcb2a10SAndre Fischer 				mbTBShow = false;
1150*8dcb2a10SAndre Fischer 				if ( pSh && pSh->GetItem( SID_HATCH_LIST ) )
1151*8dcb2a10SAndre Fischer 				{
1152*8dcb2a10SAndre Fischer 					SvxHatchListItem aItem( *(const SvxHatchListItem*)(
1153*8dcb2a10SAndre Fischer 						pSh->GetItem( SID_HATCH_LIST ) ) );
1154*8dcb2a10SAndre Fischer 					mpLbFillAttr->Enable();
1155*8dcb2a10SAndre Fischer 					mpLbFillAttr->Clear();
1156*8dcb2a10SAndre Fischer 					mpLbFillAttr->Fill( aItem.GetHatchList() );
1157*8dcb2a10SAndre Fischer 					if ( mpHatchItem )
1158*8dcb2a10SAndre Fischer 					{
1159*8dcb2a10SAndre Fischer 						String aString( mpHatchItem->GetName() );
1160*8dcb2a10SAndre Fischer 						mpLbFillAttr->SelectEntry( aString );
1161*8dcb2a10SAndre Fischer 					}
1162*8dcb2a10SAndre Fischer 					else
1163*8dcb2a10SAndre Fischer 						mpLbFillAttr->SetNoSelection();
1164*8dcb2a10SAndre Fischer 				}
1165*8dcb2a10SAndre Fischer 				else
1166*8dcb2a10SAndre Fischer 					mpLbFillAttr->SetNoSelection();
1167*8dcb2a10SAndre Fischer 			}
1168*8dcb2a10SAndre Fischer 			break;
1169*8dcb2a10SAndre Fischer 
1170*8dcb2a10SAndre Fischer 			case XFILL_BITMAP:
1171*8dcb2a10SAndre Fischer 			{
1172*8dcb2a10SAndre Fischer 				mpLbFillAttr->Show();	//wj for new color picker
1173*8dcb2a10SAndre Fischer 				mpToolBoxColor->Hide();	//wj for new color picker
1174*8dcb2a10SAndre Fischer 				mbTBShow = false;
1175*8dcb2a10SAndre Fischer 				//mpLbFillAttr->Fill( mpBitmapListItem->GetBitmapList() );
1176*8dcb2a10SAndre Fischer 				if ( pSh && pSh->GetItem( SID_BITMAP_LIST ) )
1177*8dcb2a10SAndre Fischer 				{
1178*8dcb2a10SAndre Fischer 					SvxBitmapListItem aItem( *(const SvxBitmapListItem*)(
1179*8dcb2a10SAndre Fischer 						pSh->GetItem( SID_BITMAP_LIST ) ) );
1180*8dcb2a10SAndre Fischer 					mpLbFillAttr->Enable();
1181*8dcb2a10SAndre Fischer 					mpLbFillAttr->Clear();
1182*8dcb2a10SAndre Fischer 					mpLbFillAttr->Fill( aItem.GetBitmapList() );
1183*8dcb2a10SAndre Fischer 					if ( mpBitmapItem )
1184*8dcb2a10SAndre Fischer 					{
1185*8dcb2a10SAndre Fischer 						String aString( mpBitmapItem->GetName() );
1186*8dcb2a10SAndre Fischer 						mpLbFillAttr->SelectEntry( aString );
1187*8dcb2a10SAndre Fischer 					}
1188*8dcb2a10SAndre Fischer 					else
1189*8dcb2a10SAndre Fischer 						mpLbFillAttr->SetNoSelection();
1190*8dcb2a10SAndre Fischer 				}
1191*8dcb2a10SAndre Fischer 				else
1192*8dcb2a10SAndre Fischer 					mpLbFillAttr->SetNoSelection();
1193*8dcb2a10SAndre Fischer 			}
1194*8dcb2a10SAndre Fischer 			break;
1195*8dcb2a10SAndre Fischer 
1196*8dcb2a10SAndre Fischer 			default:
1197*8dcb2a10SAndre Fischer 				DBG_ERROR( "Nicht unterstuetzter Flaechentyp" );
1198*8dcb2a10SAndre Fischer 			break;
1199*8dcb2a10SAndre Fischer 		}
1200*8dcb2a10SAndre Fischer 	}
1201*8dcb2a10SAndre Fischer }
1202*8dcb2a10SAndre Fischer 
1203*8dcb2a10SAndre Fischer 
1204*8dcb2a10SAndre Fischer 
1205*8dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
1206*8dcb2a10SAndre Fischer {
1207*8dcb2a10SAndre Fischer 	return 0;
1208*8dcb2a10SAndre Fischer }
1209*8dcb2a10SAndre Fischer 
1210*8dcb2a10SAndre Fischer 
1211*8dcb2a10SAndre Fischer 
1212*8dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ClickTrGrHdl_Impl, ToolBox*, pToolBox )
1213*8dcb2a10SAndre Fischer {
1214*8dcb2a10SAndre Fischer     maTrGrPopup.Rearrange(mpFloatTransparenceItem.get());
1215*8dcb2a10SAndre Fischer 
1216*8dcb2a10SAndre Fischer     OSL_ASSERT(pToolBox->GetCurItemId() == TBI_BTX_GRADIENT);
1217*8dcb2a10SAndre Fischer 
1218*8dcb2a10SAndre Fischer     maTrGrPopup.Show(*pToolBox);
1219*8dcb2a10SAndre Fischer 
1220*8dcb2a10SAndre Fischer     return (0L);
1221*8dcb2a10SAndre Fischer }
1222*8dcb2a10SAndre Fischer 
1223*8dcb2a10SAndre Fischer 
1224*8dcb2a10SAndre Fischer 
1225*8dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG)
1226*8dcb2a10SAndre Fischer {
1227*8dcb2a10SAndre Fischer 	sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
1228*8dcb2a10SAndre Fischer 	bool bGradient = false;
1229*8dcb2a10SAndre Fischer 	sal_uInt16 nTrans = 0;
1230*8dcb2a10SAndre Fischer 
1231*8dcb2a10SAndre Fischer 	if (nSelectType == 0)
1232*8dcb2a10SAndre Fischer 	{
1233*8dcb2a10SAndre Fischer 		mpBTNGradient->Hide();
1234*8dcb2a10SAndre Fischer 		mpMTRTransparent->Show();
1235*8dcb2a10SAndre Fischer 		mpMTRTransparent->Enable();
1236*8dcb2a10SAndre Fischer 		mpMTRTransparent->SetValue(0);
1237*8dcb2a10SAndre Fischer 	}
1238*8dcb2a10SAndre Fischer 	else if (nSelectType == 1)
1239*8dcb2a10SAndre Fischer 	{
1240*8dcb2a10SAndre Fischer 		mpBTNGradient->Hide();
1241*8dcb2a10SAndre Fischer 		mpMTRTransparent->Show();
1242*8dcb2a10SAndre Fischer 		nTrans = mnLastTransSolid;
1243*8dcb2a10SAndre Fischer 		mpMTRTransparent->SetValue(nTrans);
1244*8dcb2a10SAndre Fischer 		mpLBTransType->SelectEntryPos(1);// for multi-selected, choose solid no selection
1245*8dcb2a10SAndre Fischer 		mpMTRTransparent->Enable();
1246*8dcb2a10SAndre Fischer 	}
1247*8dcb2a10SAndre Fischer 	else
1248*8dcb2a10SAndre Fischer 	{
1249*8dcb2a10SAndre Fischer 		mpBTNGradient->Show();
1250*8dcb2a10SAndre Fischer 		//for beta1
1251*8dcb2a10SAndre Fischer 		switch ( nSelectType )
1252*8dcb2a10SAndre Fischer 		{
1253*8dcb2a10SAndre Fischer 		case 2:
1254*8dcb2a10SAndre Fischer 			mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgLinearH : maImgLinear); // high contrast
1255*8dcb2a10SAndre Fischer 			break;
1256*8dcb2a10SAndre Fischer 		case 3:
1257*8dcb2a10SAndre Fischer 			mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgAxialH : maImgAxial);
1258*8dcb2a10SAndre Fischer 			break;
1259*8dcb2a10SAndre Fischer 		case 4:
1260*8dcb2a10SAndre Fischer 			mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgRadialH : maImgRadial);
1261*8dcb2a10SAndre Fischer 			break;
1262*8dcb2a10SAndre Fischer 		case 5:
1263*8dcb2a10SAndre Fischer 			mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgElliH : maImgElli );
1264*8dcb2a10SAndre Fischer 			break;
1265*8dcb2a10SAndre Fischer 		case 6:
1266*8dcb2a10SAndre Fischer 			mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgQuadH : maImgQuad );
1267*8dcb2a10SAndre Fischer 			break;
1268*8dcb2a10SAndre Fischer 		case 7:
1269*8dcb2a10SAndre Fischer 			mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSquareH : maImgSquare);
1270*8dcb2a10SAndre Fischer 			break;
1271*8dcb2a10SAndre Fischer 		}
1272*8dcb2a10SAndre Fischer 		//end of new code
1273*8dcb2a10SAndre Fischer 		mpMTRTransparent->Hide();
1274*8dcb2a10SAndre Fischer 		mpBTNGradient->Enable();
1275*8dcb2a10SAndre Fischer 		bGradient = true;
1276*8dcb2a10SAndre Fischer 	}
1277*8dcb2a10SAndre Fischer 
1278*8dcb2a10SAndre Fischer 	XFillTransparenceItem aLinearItem(nTrans);
1279*8dcb2a10SAndre Fischer 	GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
1280*8dcb2a10SAndre Fischer 
1281*8dcb2a10SAndre Fischer 	if (nSelectType > 1) nSelectType = nSelectType-2;
1282*8dcb2a10SAndre Fischer 
1283*8dcb2a10SAndre Fischer 	XGradient aTmpGradient;
1284*8dcb2a10SAndre Fischer 
1285*8dcb2a10SAndre Fischer 	switch(nSelectType)
1286*8dcb2a10SAndre Fischer 	{
1287*8dcb2a10SAndre Fischer 	case XGRAD_LINEAR:
1288*8dcb2a10SAndre Fischer 		aTmpGradient = maGradientLinear;
1289*8dcb2a10SAndre Fischer 		break;
1290*8dcb2a10SAndre Fischer 	case XGRAD_AXIAL:
1291*8dcb2a10SAndre Fischer 		aTmpGradient = maGradientAxial;
1292*8dcb2a10SAndre Fischer 		break;
1293*8dcb2a10SAndre Fischer 	case XGRAD_RADIAL:
1294*8dcb2a10SAndre Fischer 		aTmpGradient = maGradientRadial;
1295*8dcb2a10SAndre Fischer 		break;
1296*8dcb2a10SAndre Fischer 	case XGRAD_ELLIPTICAL:
1297*8dcb2a10SAndre Fischer 		aTmpGradient = maGradientElliptical;
1298*8dcb2a10SAndre Fischer 		break;
1299*8dcb2a10SAndre Fischer 	case XGRAD_SQUARE:
1300*8dcb2a10SAndre Fischer 		aTmpGradient = maGradientSquare;
1301*8dcb2a10SAndre Fischer 		break;
1302*8dcb2a10SAndre Fischer 	case XGRAD_RECT:
1303*8dcb2a10SAndre Fischer 		aTmpGradient = maGradientRect;
1304*8dcb2a10SAndre Fischer 		break;
1305*8dcb2a10SAndre Fischer 	}
1306*8dcb2a10SAndre Fischer 	SfxItemPool* pPool = NULL;
1307*8dcb2a10SAndre Fischer 	bool bEnable = false;
1308*8dcb2a10SAndre Fischer 	if (bGradient) bEnable = true;
1309*8dcb2a10SAndre Fischer 	XFillFloatTransparenceItem aGradientItem(pPool,aTmpGradient, bEnable );
1310*8dcb2a10SAndre Fischer 
1311*8dcb2a10SAndre Fischer 	GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_FLOATTRANSPARENCE, SFX_CALLMODE_RECORD, &aGradientItem, 0L );
1312*8dcb2a10SAndre Fischer 
1313*8dcb2a10SAndre Fischer 	return( 0L );
1314*8dcb2a10SAndre Fischer }
1315*8dcb2a10SAndre Fischer 
1316*8dcb2a10SAndre Fischer 
1317*8dcb2a10SAndre Fischer 
1318*8dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ModifyTransparentHdl_Impl, void*, EMPTYARG)
1319*8dcb2a10SAndre Fischer {
1320*8dcb2a10SAndre Fischer 	sal_uInt16 nTrans = (sal_uInt16)mpMTRTransparent->GetValue();
1321*8dcb2a10SAndre Fischer 	mnLastTransSolid = nTrans;
1322*8dcb2a10SAndre Fischer 	sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
1323*8dcb2a10SAndre Fischer 	if (nTrans != 0 && nSelectType == 0)
1324*8dcb2a10SAndre Fischer 		mpLBTransType->SelectEntryPos(1);
1325*8dcb2a10SAndre Fischer 	XFillTransparenceItem aLinearItem(nTrans);
1326*8dcb2a10SAndre Fischer 	GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
1327*8dcb2a10SAndre Fischer 
1328*8dcb2a10SAndre Fischer 	return 0L;
1329*8dcb2a10SAndre Fischer }
1330*8dcb2a10SAndre Fischer 
1331*8dcb2a10SAndre Fischer 
1332*8dcb2a10SAndre Fischer Color AreaPropertyPanel::GetLastColor (void) const
1333*8dcb2a10SAndre Fischer {
1334*8dcb2a10SAndre Fischer     return maLastColor;
1335*8dcb2a10SAndre Fischer }
1336*8dcb2a10SAndre Fischer 
1337*8dcb2a10SAndre Fischer 
1338*8dcb2a10SAndre Fischer 
1339*8dcb2a10SAndre Fischer 
1340*8dcb2a10SAndre Fischer XGradient AreaPropertyPanel::GetGradient (const XGradientStyle eStyle) const
1341*8dcb2a10SAndre Fischer {
1342*8dcb2a10SAndre Fischer     switch (eStyle)
1343*8dcb2a10SAndre Fischer     {
1344*8dcb2a10SAndre Fischer         default:
1345*8dcb2a10SAndre Fischer 		case XGRAD_LINEAR:
1346*8dcb2a10SAndre Fischer             return maGradientLinear;
1347*8dcb2a10SAndre Fischer 		case XGRAD_AXIAL:
1348*8dcb2a10SAndre Fischer             return maGradientAxial;
1349*8dcb2a10SAndre Fischer 		case XGRAD_RADIAL:
1350*8dcb2a10SAndre Fischer             return maGradientRadial;
1351*8dcb2a10SAndre Fischer 		case XGRAD_ELLIPTICAL:
1352*8dcb2a10SAndre Fischer             return maGradientElliptical;
1353*8dcb2a10SAndre Fischer 		case XGRAD_SQUARE:
1354*8dcb2a10SAndre Fischer             return maGradientSquare;
1355*8dcb2a10SAndre Fischer 		case XGRAD_RECT:
1356*8dcb2a10SAndre Fischer             return maGradientRect;
1357*8dcb2a10SAndre Fischer     }
1358*8dcb2a10SAndre Fischer }
1359*8dcb2a10SAndre Fischer 
1360*8dcb2a10SAndre Fischer 
1361*8dcb2a10SAndre Fischer 
1362*8dcb2a10SAndre Fischer 
1363*8dcb2a10SAndre Fischer void AreaPropertyPanel::SetGradient (const XGradient& rGradient)
1364*8dcb2a10SAndre Fischer {
1365*8dcb2a10SAndre Fischer     switch (rGradient.GetGradientStyle())
1366*8dcb2a10SAndre Fischer     {
1367*8dcb2a10SAndre Fischer         case XGRAD_LINEAR:
1368*8dcb2a10SAndre Fischer 			maGradientLinear = rGradient;
1369*8dcb2a10SAndre Fischer             break;
1370*8dcb2a10SAndre Fischer         case XGRAD_AXIAL:
1371*8dcb2a10SAndre Fischer 			maGradientAxial = rGradient;
1372*8dcb2a10SAndre Fischer             break;
1373*8dcb2a10SAndre Fischer         case XGRAD_RADIAL:
1374*8dcb2a10SAndre Fischer 			maGradientRadial = rGradient;
1375*8dcb2a10SAndre Fischer             break;
1376*8dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
1377*8dcb2a10SAndre Fischer 			maGradientElliptical = rGradient;
1378*8dcb2a10SAndre Fischer             break;
1379*8dcb2a10SAndre Fischer         case XGRAD_SQUARE:
1380*8dcb2a10SAndre Fischer             maGradientSquare = rGradient;
1381*8dcb2a10SAndre Fischer             break;
1382*8dcb2a10SAndre Fischer         case XGRAD_RECT:
1383*8dcb2a10SAndre Fischer             maGradientRect = rGradient;
1384*8dcb2a10SAndre Fischer             break;
1385*8dcb2a10SAndre Fischer 	}
1386*8dcb2a10SAndre Fischer }
1387*8dcb2a10SAndre Fischer 
1388*8dcb2a10SAndre Fischer 
1389*8dcb2a10SAndre Fischer 
1390*8dcb2a10SAndre Fischer 
1391*8dcb2a10SAndre Fischer sal_Int32 AreaPropertyPanel::GetSelectedTransparencyTypeIndex (void) const
1392*8dcb2a10SAndre Fischer {
1393*8dcb2a10SAndre Fischer     return mpLBTransType->GetSelectEntryPos();
1394*8dcb2a10SAndre Fischer }
1395*8dcb2a10SAndre Fischer 
1396*8dcb2a10SAndre Fischer } } // end of namespace svx::sidebar
1397