166c1fc23SArmin Le Grand /**************************************************************
266c1fc23SArmin Le Grand  *
366c1fc23SArmin Le Grand  * Licensed to the Apache Software Foundation (ASF) under one
466c1fc23SArmin Le Grand  * or more contributor license agreements.  See the NOTICE file
566c1fc23SArmin Le Grand  * distributed with this work for additional information
666c1fc23SArmin Le Grand  * regarding copyright ownership.  The ASF licenses this file
766c1fc23SArmin Le Grand  * to you under the Apache License, Version 2.0 (the
866c1fc23SArmin Le Grand  * "License"); you may not use this file except in compliance
966c1fc23SArmin Le Grand  * with the License.  You may obtain a copy of the License at
1066c1fc23SArmin Le Grand  *
1166c1fc23SArmin Le Grand  *   http://www.apache.org/licenses/LICENSE-2.0
1266c1fc23SArmin Le Grand  *
1366c1fc23SArmin Le Grand  * Unless required by applicable law or agreed to in writing,
1466c1fc23SArmin Le Grand  * software distributed under the License is distributed on an
1566c1fc23SArmin Le Grand  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1666c1fc23SArmin Le Grand  * KIND, either express or implied.  See the License for the
1766c1fc23SArmin Le Grand  * specific language governing permissions and limitations
1866c1fc23SArmin Le Grand  * under the License.
1966c1fc23SArmin Le Grand  *
2066c1fc23SArmin Le Grand  *************************************************************/
2166c1fc23SArmin Le Grand 
228dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx"
238dcb2a10SAndre Fischer #include "AreaTransparencyGradientControl.hxx"
248dcb2a10SAndre Fischer 
25d29c2fc2SAndre Fischer #include <sfx2/sidebar/ResourceDefinitions.hrc>
2666c1fc23SArmin Le Grand #include <sfx2/sidebar/Theme.hxx>
2766c1fc23SArmin Le Grand #include <sfx2/sidebar/ControlFactory.hxx>
286a606da0SAndre Fischer #include <sfx2/sidebar/Layouter.hxx>
292bdfcea1SArmin Le Grand #include <AreaPropertyPanel.hxx>
302bdfcea1SArmin Le Grand #include <AreaPropertyPanel.hrc>
3166c1fc23SArmin Le Grand #include <svx/dialogs.hrc>
3266c1fc23SArmin Le Grand #include <svx/dialmgr.hxx>
3366c1fc23SArmin Le Grand #include <sfx2/objsh.hxx>
3466c1fc23SArmin Le Grand #include <svx/xfltrit.hxx>
3566c1fc23SArmin Le Grand #include <svx/xflftrit.hxx>
3666c1fc23SArmin Le Grand #include <svx/xtable.hxx>
3766c1fc23SArmin Le Grand #include <sfx2/dispatch.hxx>
3866c1fc23SArmin Le Grand #include <sfx2/bindings.hxx>
3966c1fc23SArmin Le Grand #include <helpid.hrc>
4066c1fc23SArmin Le Grand #include <svtools/valueset.hxx>
4166c1fc23SArmin Le Grand #include <unotools/pathoptions.hxx>
4266c1fc23SArmin Le Grand #include <svx/svxitems.hrc>
4366c1fc23SArmin Le Grand #include <vcl/toolbox.hxx>
448dcb2a10SAndre Fischer #include <svtools/toolbarmenu.hxx>
45facb16e7SArmin Le Grand #include <svx/sidebar/ColorControl.hxx>
468dcb2a10SAndre Fischer 
478dcb2a10SAndre Fischer #include <boost/bind.hpp>
4866c1fc23SArmin Le Grand 
4966c1fc23SArmin Le Grand using namespace css;
5066c1fc23SArmin Le Grand using namespace cssu;
516a606da0SAndre Fischer using ::sfx2::sidebar::Layouter;
5266c1fc23SArmin Le Grand using ::sfx2::sidebar::Theme;
5366c1fc23SArmin Le Grand 
5466c1fc23SArmin Le Grand #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
5566c1fc23SArmin Le Grand 
5666c1fc23SArmin Le Grand 
5766c1fc23SArmin Le Grand 
5866c1fc23SArmin Le Grand 
598dcb2a10SAndre Fischer namespace svx { namespace sidebar {
6066c1fc23SArmin Le Grand 
618dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERX = 50;
628dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERY = 50;
638dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ANGLE = 0;
648dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_STARTVALUE = 0;
658dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ENDVALUE = 16777215;
668dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_BORDER = 0;
6766c1fc23SArmin Le Grand 
6866c1fc23SArmin Le Grand 
AreaPropertyPanel(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)6966c1fc23SArmin Le Grand AreaPropertyPanel::AreaPropertyPanel(
7066c1fc23SArmin Le Grand     Window* pParent,
7166c1fc23SArmin Le Grand     const cssu::Reference<css::frame::XFrame>& rxFrame,
7266c1fc23SArmin Le Grand     SfxBindings* pBindings)
73ee093554SAndre Fischer     : Control(pParent, SVX_RES(RID_SIDEBAR_AREA_PANEL)),
74ee093554SAndre Fischer       meLastXFS(-1),
75ee093554SAndre Fischer       maLastColor(Color(COL_DEFAULT_SHAPE_FILLING)),
76ee093554SAndre Fischer       mnLastPosGradient(0),
77ee093554SAndre Fischer       mnLastPosHatch(0),
78ee093554SAndre Fischer       mnLastPosBitmap(0),
79ee093554SAndre Fischer       mnLastTransSolid(50),
80ee093554SAndre Fischer       maGradientLinear(),
81ee093554SAndre Fischer       maGradientAxial(),
82ee093554SAndre Fischer       maGradientRadial(),
83ee093554SAndre Fischer       maGradientElliptical(),
84ee093554SAndre Fischer       maGradientSquare(),
85ee093554SAndre Fischer       maGradientRect(),
86ee093554SAndre Fischer       mpColorTextFT(new FixedText(this, SVX_RES(FT_COLOR_LIST))),
87ee093554SAndre Fischer       mpLbFillType(new SvxFillTypeBox(this)),
88ee093554SAndre Fischer       mpLbFillAttr(new SvxFillAttrBox(this)),
89ee093554SAndre Fischer       mpToolBoxColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
90ee093554SAndre Fischer       mpToolBoxColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpToolBoxColorBackground.get(), SVX_RES(TB_COLOR))),
91ee093554SAndre Fischer       mpTrspTextFT(new FixedText(this, SVX_RES(FL_TRSP_TEXT))),
92ee093554SAndre Fischer       mpLBTransType(new ListBox(this, SVX_RES(LB_TRGR_TYPES))),
93ee093554SAndre Fischer       mpMTRTransparent(new MetricField(this, SVX_RES(MTR_TRANSPARENT))),
94ee093554SAndre Fischer       mpBTNGradientBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
95ee093554SAndre Fischer       mpBTNGradient(sfx2::sidebar::ControlFactory::CreateToolBox(mpBTNGradientBackground.get(), SVX_RES(BTN_GRADIENT))),
96ee093554SAndre Fischer       mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_FILL_COLOR, TBI_COLOR, mpToolBoxColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
97ee093554SAndre Fischer       mpStyleItem(),
98ee093554SAndre Fischer       mpColorItem(),
99ee093554SAndre Fischer       mpFillGradientItem(),
100ee093554SAndre Fischer       mpHatchItem(),
101ee093554SAndre Fischer       mpBitmapItem(),
102ee093554SAndre Fischer       maStyleControl(SID_ATTR_FILL_STYLE, *pBindings, *this),
103ee093554SAndre Fischer       maColorControl(SID_ATTR_FILL_COLOR, *pBindings, *this),
104ee093554SAndre Fischer       maGradientControl(SID_ATTR_FILL_GRADIENT, *pBindings, *this),
105ee093554SAndre Fischer       maHatchControl(SID_ATTR_FILL_HATCH, *pBindings, *this),
106ee093554SAndre Fischer       maBitmapControl(SID_ATTR_FILL_BITMAP, *pBindings, *this),
107ee093554SAndre Fischer       maColorTableControl(SID_COLOR_TABLE, *pBindings, *this),
108ee093554SAndre Fischer       maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this),
109ee093554SAndre Fischer       maHatchListControl(SID_HATCH_LIST, *pBindings, *this),
110ee093554SAndre Fischer       maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this),
111ee093554SAndre Fischer       maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this),
112ee093554SAndre Fischer       maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this),
113ee093554SAndre Fischer       maImgAxial(SVX_RES(IMG_AXIAL)),
114ee093554SAndre Fischer       maImgElli(SVX_RES(IMG_ELLI)),
115ee093554SAndre Fischer       maImgQuad(SVX_RES(IMG_QUAD)),
116ee093554SAndre Fischer       maImgRadial(SVX_RES(IMG_RADIAL)),
117ee093554SAndre Fischer       maImgSquare(SVX_RES(IMG_SQUARE)),
118ee093554SAndre Fischer       maImgLinear(SVX_RES(IMG_LINEAR)),
119ee093554SAndre Fischer       maImgColor(SVX_RES(IMG_COLOR)),
120ee093554SAndre Fischer       maImgAxialH(SVX_RES(IMG_AXIAL_H)),
121ee093554SAndre Fischer       maImgElliH(SVX_RES(IMG_ELLI_H)),
122ee093554SAndre Fischer       maImgQuadH(SVX_RES(IMG_QUAD_H)),
123ee093554SAndre Fischer       maImgRadialH(SVX_RES(IMG_RADIAL_H)),
124ee093554SAndre Fischer       maImgSquareH(SVX_RES(IMG_SQUARE_H)),
125ee093554SAndre Fischer       maImgLinearH(SVX_RES(IMG_LINEAR_H)),
126ee093554SAndre Fischer       maImgColorH(SVX_RES(IMG_COLOR_H)),
127ee093554SAndre Fischer       msHelpFillType(SVX_RES(STR_HELP_TYPE)),
128ee093554SAndre Fischer       msHelpFillAttr(SVX_RES(STR_HELP_ATTR)),
129ee093554SAndre Fischer       maTrGrPopup(this, ::boost::bind(&AreaPropertyPanel::CreateTransparencyGradientControl, this, _1)),
130ee093554SAndre Fischer       maColorPopup(this, ::boost::bind(&AreaPropertyPanel::CreateColorPopupControl, this, _1)),
131ee093554SAndre Fischer       mpFloatTransparenceItem(),
132ee093554SAndre Fischer       mpTransparanceItem(),
133ee093554SAndre Fischer       mxFrame(rxFrame),
134ee093554SAndre Fischer       mpBindings(pBindings),
1356a606da0SAndre Fischer       mbColorAvail(true),
1366a606da0SAndre Fischer       maLayouter(*this)
13766c1fc23SArmin Le Grand {
13866c1fc23SArmin Le Grand     Initialize();
13966c1fc23SArmin Le Grand     FreeResource();
1406a606da0SAndre Fischer 
1416a606da0SAndre Fischer     // Setup the grid layouter.
1426a606da0SAndre Fischer     const sal_Int32 nMappedMboxWidth (Layouter::MapWidth(*this, MBOX_WIDTH));
1436a606da0SAndre Fischer 
1446a606da0SAndre Fischer     maLayouter.GetCell(0,0).SetControl(*mpColorTextFT).SetGridWidth(3);
1456a606da0SAndre Fischer     maLayouter.GetCell(1,0).SetControl(*mpLbFillType);
1466a606da0SAndre Fischer     maLayouter.GetCell(1,2,0).SetControl(*mpToolBoxColorBackground).SetFixedWidth();
1476a606da0SAndre Fischer     maLayouter.GetCell(1,2,1).SetControl(*mpLbFillAttr);
1486a606da0SAndre Fischer 
1496a606da0SAndre Fischer     maLayouter.GetCell(2,0).SetControl(*mpTrspTextFT).SetGridWidth(3);
1506a606da0SAndre Fischer     maLayouter.GetCell(3,0).SetControl(*mpLBTransType);
1516a606da0SAndre Fischer     maLayouter.GetCell(3,2,0).SetControl(*mpMTRTransparent);
1526a606da0SAndre Fischer     maLayouter.GetCell(3,2,1).SetControl(*mpBTNGradient);
1536a606da0SAndre Fischer 
1546a606da0SAndre Fischer     maLayouter.GetColumn(0)
1556a606da0SAndre Fischer         .SetWeight(1)
1566a606da0SAndre Fischer         .SetLeftPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL))
1576a606da0SAndre Fischer         .SetMinimumWidth(nMappedMboxWidth);
1586a606da0SAndre Fischer     maLayouter.GetColumn(1)
1596a606da0SAndre Fischer         .SetWeight(0)
1606a606da0SAndre Fischer         .SetMinimumWidth(Layouter::MapWidth(*this, CONTROL_SPACING_HORIZONTAL));
1616a606da0SAndre Fischer     maLayouter.GetColumn(2)
1626a606da0SAndre Fischer         .SetWeight(1)
1636a606da0SAndre Fischer         .SetMinimumWidth(nMappedMboxWidth)
1646a606da0SAndre Fischer         .SetRightPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL));
1656a606da0SAndre Fischer 
1666a606da0SAndre Fischer     // Make controls that display text handle short widths more
1676a606da0SAndre Fischer     // graceful.
1686a606da0SAndre Fischer     Layouter::PrepareForLayouting(*mpColorTextFT);
1696a606da0SAndre Fischer     Layouter::PrepareForLayouting(*mpTrspTextFT);
17066c1fc23SArmin Le Grand }
17166c1fc23SArmin Le Grand 
1728dcb2a10SAndre Fischer 
17366c1fc23SArmin Le Grand 
~AreaPropertyPanel()17466c1fc23SArmin Le Grand AreaPropertyPanel::~AreaPropertyPanel()
17566c1fc23SArmin Le Grand {
1768dcb2a10SAndre Fischer     // Destroy the toolboxes, then their background windows.
1778dcb2a10SAndre Fischer     mpToolBoxColor.reset();
1788dcb2a10SAndre Fischer     mpBTNGradient.reset();
1798d3cb1a4SArmin Le Grand     mpToolBoxColorBackground.reset();
1808d3cb1a4SArmin Le Grand     mpBTNGradientBackground.reset();
18166c1fc23SArmin Le Grand }
18266c1fc23SArmin Le Grand 
1838dcb2a10SAndre Fischer 
18466c1fc23SArmin Le Grand 
Initialize()18566c1fc23SArmin Le Grand void AreaPropertyPanel::Initialize()
18666c1fc23SArmin Le Grand {
18737fee4fdSAndre Fischer     mpColorTextFT->SetBackground(Wallpaper());
18837fee4fdSAndre Fischer     mpTrspTextFT->SetBackground(Wallpaper());
18937fee4fdSAndre Fischer 
19066c1fc23SArmin Le Grand     maGradientLinear.SetXOffset(DEFAULT_CENTERX);
19166c1fc23SArmin Le Grand     maGradientLinear.SetYOffset(DEFAULT_CENTERY);
19266c1fc23SArmin Le Grand     maGradientLinear.SetAngle(DEFAULT_ANGLE);
19366c1fc23SArmin Le Grand     maGradientLinear.SetStartColor(Color(DEFAULT_STARTVALUE));
19466c1fc23SArmin Le Grand     maGradientLinear.SetEndColor(Color(DEFAULT_ENDVALUE));
19566c1fc23SArmin Le Grand     maGradientLinear.SetBorder(DEFAULT_BORDER);
19666c1fc23SArmin Le Grand     maGradientLinear.SetGradientStyle(XGRAD_LINEAR);
19766c1fc23SArmin Le Grand 
19866c1fc23SArmin Le Grand     maGradientAxial = maGradientLinear;
19966c1fc23SArmin Le Grand     maGradientAxial.SetGradientStyle(XGRAD_AXIAL);
20066c1fc23SArmin Le Grand 
20166c1fc23SArmin Le Grand     maGradientRadial = maGradientLinear;
20266c1fc23SArmin Le Grand     maGradientRadial.SetGradientStyle(XGRAD_RADIAL);
20366c1fc23SArmin Le Grand 
20466c1fc23SArmin Le Grand     maGradientElliptical = maGradientLinear;
20566c1fc23SArmin Le Grand     maGradientElliptical.SetGradientStyle(XGRAD_ELLIPTICAL);
20666c1fc23SArmin Le Grand 
20766c1fc23SArmin Le Grand     maGradientSquare = maGradientLinear;
20866c1fc23SArmin Le Grand     maGradientSquare.SetGradientStyle(XGRAD_SQUARE);
20966c1fc23SArmin Le Grand 
21066c1fc23SArmin Le Grand     maGradientRect = maGradientLinear;
21166c1fc23SArmin Le Grand     maGradientRect.SetGradientStyle(XGRAD_RECT);
21266c1fc23SArmin Le Grand 
21366c1fc23SArmin Le Grand     Size aLogicalFillSize(MBOX_WIDTH,LISTBOX_HEIGHT);
21466c1fc23SArmin Le Grand     Size aLogicalAttrSize(MBOX_WIDTH + 1,LISTBOX_HEIGHT);
21566c1fc23SArmin Le Grand 
21666c1fc23SArmin Le Grand     Point aPoint(SECTIONPAGE_MARGIN_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
21766c1fc23SArmin Le Grand     Point aPoint_Picker(SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH + CONTROL_SPACING_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
21866c1fc23SArmin Le Grand 
21966c1fc23SArmin Le Grand     Size aTypeSize(LogicToPixel(aLogicalFillSize, MAP_APPFONT));
22066c1fc23SArmin Le Grand     Size aAttrSize(LogicToPixel(aLogicalAttrSize, MAP_APPFONT));
22166c1fc23SArmin Le Grand 
22266c1fc23SArmin Le Grand     Point aTypePoint(LogicToPixel(aPoint, MAP_APPFONT));
22366c1fc23SArmin Le Grand     Point aAttrPoint(LogicToPixel(aPoint_Picker, MAP_APPFONT));
22466c1fc23SArmin Le Grand 
22566c1fc23SArmin Le Grand     mpLbFillType->SetPosSizePixel(aTypePoint,aTypeSize);
22666c1fc23SArmin Le Grand     mpLbFillAttr->SetPosSizePixel(aAttrPoint,aAttrSize);
22766c1fc23SArmin Le Grand 
22866c1fc23SArmin Le Grand     mpLbFillType->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_TYPES);
22966c1fc23SArmin Le Grand     mpLbFillAttr->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_ATTR);
23066c1fc23SArmin Le Grand 
23166c1fc23SArmin Le Grand     mpLbFillType->SetQuickHelpText(msHelpFillType);
23266c1fc23SArmin Le Grand     mpLbFillAttr->SetQuickHelpText(msHelpFillAttr);
23366c1fc23SArmin Le Grand 
23466c1fc23SArmin Le Grand     mpLbFillType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill")));    //wj acc
23566c1fc23SArmin Le Grand     mpLbFillAttr->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill")));    //wj acc
23666c1fc23SArmin Le Grand 
23766c1fc23SArmin Le Grand     Link aLink = LINK( this, AreaPropertyPanel, SelectFillTypeHdl );
23866c1fc23SArmin Le Grand     mpLbFillType->SetSelectHdl( aLink );
23966c1fc23SArmin Le Grand 
24066c1fc23SArmin Le Grand     aLink = LINK( this, AreaPropertyPanel, SelectFillAttrHdl );
24166c1fc23SArmin Le Grand     mpLbFillAttr->SetSelectHdl( aLink );
24266c1fc23SArmin Le Grand 
24366c1fc23SArmin Le Grand     //add  for new color picker
24466c1fc23SArmin Le Grand     mpLbFillAttr->Hide();
24566c1fc23SArmin Le Grand     mpToolBoxColor->SetItemImage(TBI_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgColorH : maImgColor);
24666c1fc23SArmin Le Grand     Size aTbxSize( mpToolBoxColor->CalcWindowSizePixel() );
24766c1fc23SArmin Le Grand     mpToolBoxColor->SetOutputSizePixel( aTbxSize );
24866c1fc23SArmin Le Grand     mpToolBoxColor->SetItemBits( TBI_COLOR, mpToolBoxColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY );
24966c1fc23SArmin Le Grand     mpToolBoxColor->SetBackground(Wallpaper());
25066c1fc23SArmin Le Grand     mpToolBoxColor->SetPaintTransparent(true);
25166c1fc23SArmin Le Grand     mpToolBoxColor->SetQuickHelpText(TBI_COLOR, String(SVX_RES(STR_HELP_COLOR)));    //wj acc
25266c1fc23SArmin Le Grand     //mpToolBoxColor->SetItemText(TBI_COLOR, msHelpFillAttr);
25366c1fc23SArmin Le Grand 
25466c1fc23SArmin Le Grand     long aHeightLBStyle = mpLbFillType->GetSizePixel().getHeight();
25566c1fc23SArmin Le Grand     long aLBPosY = mpLbFillType->GetPosPixel().getY();
25666c1fc23SArmin Le Grand     long aHeightTBAttr = mpToolBoxColor->GetSizePixel().getHeight();
25766c1fc23SArmin Le Grand     Point aPointTBAttr = mpToolBoxColor->GetPosPixel();
25866c1fc23SArmin Le Grand     aPointTBAttr.setY( aLBPosY + aHeightLBStyle / 2 - aHeightTBAttr / 2);
25966c1fc23SArmin Le Grand     mpToolBoxColor->SetPosPixel(aPointTBAttr);
26066c1fc23SArmin Le Grand 
26166c1fc23SArmin Le Grand     aLink = LINK(this, AreaPropertyPanel, ToolBoxColorDropHdl);
26266c1fc23SArmin Le Grand     mpToolBoxColor->SetDropdownClickHdl ( aLink );
26366c1fc23SArmin Le Grand     mpToolBoxColor->SetSelectHdl ( aLink );
26466c1fc23SArmin Le Grand 
26566c1fc23SArmin Le Grand     //add end
26666c1fc23SArmin Le Grand     mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanel, ChangeTrgrTypeHdl_Impl));
26766c1fc23SArmin Le Grand     mpLBTransType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency")));    //wj acc
26866c1fc23SArmin Le Grand 
26966c1fc23SArmin Le Grand     mpMTRTransparent->SetValue( 50 );
27066c1fc23SArmin Le Grand     mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanel, ModifyTransparentHdl_Impl));
27166c1fc23SArmin Le Grand     mpMTRTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency")));    //wj acc
27266c1fc23SArmin Le Grand 
27366c1fc23SArmin Le Grand     mpBTNGradient->SetItemBits( TBI_BTX_GRADIENT, mpBTNGradient->GetItemBits( TBI_BTX_GRADIENT ) | TIB_DROPDOWNONLY );
27466c1fc23SArmin Le Grand     aLink = LINK( this, AreaPropertyPanel, ClickTrGrHdl_Impl );
27566c1fc23SArmin Le Grand     mpBTNGradient->SetDropdownClickHdl( aLink );
27666c1fc23SArmin Le Grand     mpBTNGradient->SetSelectHdl( aLink );
27766c1fc23SArmin Le Grand     aTbxSize = mpBTNGradient->CalcWindowSizePixel();
27866c1fc23SArmin Le Grand     mpBTNGradient->SetOutputSizePixel( aTbxSize );
27966c1fc23SArmin Le Grand     mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,maImgLinear);
28066c1fc23SArmin Le Grand     mpBTNGradient->SetQuickHelpText(TBI_BTX_GRADIENT, String(SVX_RES(STR_HELP_GRADIENT)));    //wj acc
28166c1fc23SArmin Le Grand     mpBTNGradient->Hide();
28266c1fc23SArmin Le Grand 
28366c1fc23SArmin Le Grand     long aHeightLBTrans = mpLBTransType->GetSizePixel().getHeight();
28466c1fc23SArmin Le Grand     Point aPointLB = mpLBTransType->GetPosPixel();
28566c1fc23SArmin Le Grand     long aPosY = aPointLB.getY();
28666c1fc23SArmin Le Grand 
28766c1fc23SArmin Le Grand     Point aPointMetric = mpMTRTransparent->GetPosPixel();
28866c1fc23SArmin Le Grand     Point aPointTB = mpMTRTransparent->GetPosPixel();
28966c1fc23SArmin Le Grand     long aHeightMetric = mpMTRTransparent->GetSizePixel().getHeight();
29066c1fc23SArmin Le Grand     long aHeightTool = mpBTNGradient->GetSizePixel().getHeight();
29166c1fc23SArmin Le Grand     aPointMetric.setY(aPosY+aHeightLBTrans/2-aHeightMetric/2);
29266c1fc23SArmin Le Grand     aPointTB.setY(aPosY+aHeightLBTrans/2-aHeightTool/2);
29366c1fc23SArmin Le Grand     aPointTB.setX(aPointTB.getX()+3);
29466c1fc23SArmin Le Grand     mpMTRTransparent->SetPosPixel(aPointMetric);
29566c1fc23SArmin Le Grand     mpBTNGradient->SetPosPixel(aPointTB);
29666c1fc23SArmin Le Grand 
29766c1fc23SArmin Le Grand     mpLbFillType->SetAccessibleRelationLabeledBy(mpColorTextFT.get());
29866c1fc23SArmin Le Grand     mpLbFillAttr->SetAccessibleRelationLabeledBy(mpLbFillAttr.get());
29966c1fc23SArmin Le Grand     mpToolBoxColor->SetAccessibleRelationLabeledBy(mpToolBoxColor.get());
30066c1fc23SArmin Le Grand     mpLBTransType->SetAccessibleRelationLabeledBy(mpTrspTextFT.get());
30166c1fc23SArmin Le Grand     mpMTRTransparent->SetAccessibleRelationLabeledBy(mpMTRTransparent.get());
30266c1fc23SArmin Le Grand     mpBTNGradient->SetAccessibleRelationLabeledBy(mpBTNGradient.get());
30366c1fc23SArmin Le Grand 
30466c1fc23SArmin Le Grand     SetupIcons();
30566c1fc23SArmin Le Grand }
30666c1fc23SArmin Le Grand 
3078dcb2a10SAndre Fischer 
30866c1fc23SArmin Le Grand 
IMPL_LINK(AreaPropertyPanel,SelectFillTypeHdl,ListBox *,pToolBox)30989729eb3SArmin Le Grand IMPL_LINK( AreaPropertyPanel, SelectFillTypeHdl, ListBox *, pToolBox )
31066c1fc23SArmin Le Grand {
311d74d90d6SArmin Le Grand     const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
312d74d90d6SArmin Le Grand 
313d74d90d6SArmin Le Grand     if((XFillStyle)meLastXFS != eXFS)
314d74d90d6SArmin Le Grand     {
315d74d90d6SArmin Le Grand         mpLbFillAttr->Clear();
316d74d90d6SArmin Le Grand         SfxObjectShell* pSh = SfxObjectShell::Current();
317d74d90d6SArmin Le Grand         const XFillStyleItem aXFillStyleItem(eXFS);
318d74d90d6SArmin Le Grand 
319*86d608b5SArmin Le Grand         // #122676# Do no longer trigger two Execute calls, one for SID_ATTR_FILL_STYLE
320*86d608b5SArmin Le Grand         // and one for setting the fill attribute itself, but add two SfxPoolItems to the
321*86d608b5SArmin Le Grand         // call to get just one action at the SdrObject and to create only one Undo action, too.
322*86d608b5SArmin Le Grand         // Checked that this works in all apps.
323d74d90d6SArmin Le Grand         switch( eXFS )
324d74d90d6SArmin Le Grand         {
325d74d90d6SArmin Le Grand             case XFILL_NONE:
326d74d90d6SArmin Le Grand             {
327d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
328d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
329d74d90d6SArmin Le Grand                 mpLbFillType->Selected();
330d74d90d6SArmin Le Grand                 mpLbFillAttr->Disable();
331*86d608b5SArmin Le Grand 
332*86d608b5SArmin Le Grand                 // #122676# need to call a single SID_ATTR_FILL_STYLE change
333*86d608b5SArmin Le Grand                 GetBindings()->GetDispatcher()->Execute(
334*86d608b5SArmin Le Grand                     SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
335d74d90d6SArmin Le Grand                 break;
336d74d90d6SArmin Le Grand             }
337d74d90d6SArmin Le Grand             case XFILL_SOLID:
338d74d90d6SArmin Le Grand             {
339d74d90d6SArmin Le Grand                 mpLbFillAttr->Hide();
340d74d90d6SArmin Le Grand                 mpToolBoxColor->Show();
341d74d90d6SArmin Le Grand                 const String aTmpStr;
342d74d90d6SArmin Le Grand                 const Color aColor = maLastColor;
343d74d90d6SArmin Le Grand                 const XFillColorItem aXFillColorItem( aTmpStr, aColor );
344*86d608b5SArmin Le Grand 
345*86d608b5SArmin Le Grand                 // #122676# change FillStyle and Color in one call
346*86d608b5SArmin Le Grand                 GetBindings()->GetDispatcher()->Execute(
347*86d608b5SArmin Le Grand                     SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, &aXFillStyleItem, 0L);
348d74d90d6SArmin Le Grand                 break;
349d74d90d6SArmin Le Grand             }
350d74d90d6SArmin Le Grand             case XFILL_GRADIENT:
351d74d90d6SArmin Le Grand             {
352d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
353d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
354d74d90d6SArmin Le Grand 
355d74d90d6SArmin Le Grand                 if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
356d74d90d6SArmin Le Grand                 {
357d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
358d74d90d6SArmin Le Grand                     {
359d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
360d74d90d6SArmin Le Grand                         mpLbFillAttr->Enable();
361d74d90d6SArmin Le Grand                         mpLbFillAttr->Clear();
362d74d90d6SArmin Le Grand                         mpLbFillAttr->Fill(aItem.GetGradientList());
363d74d90d6SArmin Le Grand                     }
364d74d90d6SArmin Le Grand 
365d74d90d6SArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
366d74d90d6SArmin Le Grand 
367d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosGradient)
368d74d90d6SArmin Le Grand                     {
369d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
370d74d90d6SArmin Le Grand 
371d74d90d6SArmin Le Grand                         if(mnLastPosGradient < aItem.GetGradientList()->Count())
372d74d90d6SArmin Le Grand                         {
373d74d90d6SArmin Le Grand                             const XGradient aGradient = aItem.GetGradientList()->GetGradient(mnLastPosGradient)->GetGradient();
374d74d90d6SArmin Le Grand                             const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetEntry(mnLastPosGradient), aGradient);
375*86d608b5SArmin Le Grand 
376*86d608b5SArmin Le Grand                             // #122676# change FillStyle and Gradient in one call
377*86d608b5SArmin Le Grand                             GetBindings()->GetDispatcher()->Execute(
378*86d608b5SArmin Le Grand                                 SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem, &aXFillStyleItem, 0L);
379d74d90d6SArmin Le Grand                             mpLbFillAttr->SelectEntryPos(mnLastPosGradient);
380d74d90d6SArmin Le Grand                         }
381d74d90d6SArmin Le Grand                     }
382d74d90d6SArmin Le Grand                 }
383d74d90d6SArmin Le Grand                 else
384d74d90d6SArmin Le Grand                 {
385d74d90d6SArmin Le Grand                     mpLbFillAttr->Disable();
386d74d90d6SArmin Le Grand                 }
387d74d90d6SArmin Le Grand                 break;
388d74d90d6SArmin Le Grand             }
389d74d90d6SArmin Le Grand             case XFILL_HATCH:
390d74d90d6SArmin Le Grand             {
391d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
392d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
393d74d90d6SArmin Le Grand 
394d74d90d6SArmin Le Grand                 if(pSh && pSh->GetItem(SID_HATCH_LIST))
395d74d90d6SArmin Le Grand                 {
396d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
397d74d90d6SArmin Le Grand                     {
398d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem( *(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
399d74d90d6SArmin Le Grand                         mpLbFillAttr->Enable();
400d74d90d6SArmin Le Grand                         mpLbFillAttr->Clear();
401d74d90d6SArmin Le Grand                         mpLbFillAttr->Fill(aItem.GetHatchList());
402d74d90d6SArmin Le Grand                     }
403d74d90d6SArmin Le Grand 
404d74d90d6SArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
405d74d90d6SArmin Le Grand 
406d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosHatch)
407d74d90d6SArmin Le Grand                     {
408d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
409d74d90d6SArmin Le Grand 
410d74d90d6SArmin Le Grand                         if(mnLastPosHatch < aItem.GetHatchList()->Count())
411d74d90d6SArmin Le Grand                         {
412d74d90d6SArmin Le Grand                             const XHatch aHatch = aItem.GetHatchList()->GetHatch(mnLastPosHatch)->GetHatch();
413d74d90d6SArmin Le Grand                             const XFillHatchItem aXFillHatchItem(mpLbFillAttr->GetSelectEntry(), aHatch);
414*86d608b5SArmin Le Grand 
415*86d608b5SArmin Le Grand                             // #122676# change FillStyle and Hatch in one call
416*86d608b5SArmin Le Grand                             GetBindings()->GetDispatcher()->Execute(
417*86d608b5SArmin Le Grand                                 SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem, &aXFillStyleItem, 0L);
418d74d90d6SArmin Le Grand                             mpLbFillAttr->SelectEntryPos(mnLastPosHatch);
419d74d90d6SArmin Le Grand                         }
420d74d90d6SArmin Le Grand                     }
421d74d90d6SArmin Le Grand                 }
422d74d90d6SArmin Le Grand                 else
423d74d90d6SArmin Le Grand                 {
424d74d90d6SArmin Le Grand                     mpLbFillAttr->Disable();
425d74d90d6SArmin Le Grand                 }
426d74d90d6SArmin Le Grand                 break;
427d74d90d6SArmin Le Grand             }
428d74d90d6SArmin Le Grand             case XFILL_BITMAP:
429d74d90d6SArmin Le Grand             {
430d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
431d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
432d74d90d6SArmin Le Grand 
433d74d90d6SArmin Le Grand                 if(pSh && pSh->GetItem(SID_BITMAP_LIST))
434d74d90d6SArmin Le Grand                 {
435d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
436d74d90d6SArmin Le Grand                     {
437d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem( *(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
438d74d90d6SArmin Le Grand                         mpLbFillAttr->Enable();
439d74d90d6SArmin Le Grand                         mpLbFillAttr->Clear();
440d74d90d6SArmin Le Grand                         mpLbFillAttr->Fill(aItem.GetBitmapList());
441d74d90d6SArmin Le Grand                     }
442d74d90d6SArmin Le Grand 
443d74d90d6SArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
444d74d90d6SArmin Le Grand 
445d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosBitmap)
446d74d90d6SArmin Le Grand                     {
447d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
448d74d90d6SArmin Le Grand 
449d74d90d6SArmin Le Grand                         if(mnLastPosBitmap < aItem.GetBitmapList()->Count())
450d74d90d6SArmin Le Grand                         {
451d74d90d6SArmin Le Grand                             const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(mnLastPosBitmap);
452d74d90d6SArmin Le Grand                             const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
453*86d608b5SArmin Le Grand 
454*86d608b5SArmin Le Grand                             // #122676# change FillStyle and Bitmap in one call
455*86d608b5SArmin Le Grand                             GetBindings()->GetDispatcher()->Execute(
456*86d608b5SArmin Le Grand                                 SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem, &aXFillStyleItem, 0L);
457d74d90d6SArmin Le Grand                             mpLbFillAttr->SelectEntryPos(mnLastPosBitmap);
458d74d90d6SArmin Le Grand                         }
459d74d90d6SArmin Le Grand                     }
460d74d90d6SArmin Le Grand                 }
461d74d90d6SArmin Le Grand                 else
462d74d90d6SArmin Le Grand                 {
463d74d90d6SArmin Le Grand                     mpLbFillAttr->Disable();
464d74d90d6SArmin Le Grand                 }
465d74d90d6SArmin Le Grand                 break;
466d74d90d6SArmin Le Grand             }
467d74d90d6SArmin Le Grand         }
468d74d90d6SArmin Le Grand 
469d74d90d6SArmin Le Grand         meLastXFS = (sal_uInt16)eXFS;
470d74d90d6SArmin Le Grand 
471d74d90d6SArmin Le Grand         if(XFILL_NONE != eXFS)
472d74d90d6SArmin Le Grand         {
473d74d90d6SArmin Le Grand             if(pToolBox)
474d74d90d6SArmin Le Grand             {
475d74d90d6SArmin Le Grand                 mpLbFillType->Selected();
476d74d90d6SArmin Le Grand             }
477d74d90d6SArmin Le Grand         }
4786a606da0SAndre Fischer 
4796a606da0SAndre Fischer         maLayouter.Layout();
480d74d90d6SArmin Le Grand     }
481d74d90d6SArmin Le Grand 
482d74d90d6SArmin Le Grand     return 0;
48366c1fc23SArmin Le Grand }
48466c1fc23SArmin Le Grand 
4858dcb2a10SAndre Fischer 
48666c1fc23SArmin Le Grand 
IMPL_LINK(AreaPropertyPanel,SelectFillAttrHdl,ListBox *,pToolBox)48789729eb3SArmin Le Grand IMPL_LINK( AreaPropertyPanel, SelectFillAttrHdl, ListBox*, pToolBox )
48866c1fc23SArmin Le Grand {
489d74d90d6SArmin Le Grand     const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
490d74d90d6SArmin Le Grand     const XFillStyleItem aXFillStyleItem(eXFS);
49189729eb3SArmin Le Grand     SfxObjectShell* pSh = SfxObjectShell::Current();
49266c1fc23SArmin Le Grand 
49389729eb3SArmin Le Grand     if(pToolBox)
494d74d90d6SArmin Le Grand     {
495*86d608b5SArmin Le Grand         // #122676# dependent from bFillStyleChange, do execute a single or two
496*86d608b5SArmin Le Grand         // changes in one Execute call
497*86d608b5SArmin Le Grand         const bool bFillStyleChange((XFillStyle) meLastXFS != eXFS);
49866c1fc23SArmin Le Grand 
499d74d90d6SArmin Le Grand         switch(eXFS)
500d74d90d6SArmin Le Grand         {
501d74d90d6SArmin Le Grand             case XFILL_SOLID:
502*86d608b5SArmin Le Grand             {
503*86d608b5SArmin Le Grand                 if(bFillStyleChange)
504*86d608b5SArmin Le Grand                 {
505*86d608b5SArmin Le Grand                     // #122676# Single FillStyle change call needed here
506*86d608b5SArmin Le Grand                     GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
507*86d608b5SArmin Le Grand                 }
508*86d608b5SArmin Le Grand                 break;
509*86d608b5SArmin Le Grand             }
510d74d90d6SArmin Le Grand             case XFILL_GRADIENT:
511d74d90d6SArmin Le Grand             {
512d74d90d6SArmin Le Grand                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
513d74d90d6SArmin Le Grand 
514d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
515d74d90d6SArmin Le Grand                 {
516d74d90d6SArmin Le Grand                     nPos = mnLastPosGradient;
517d74d90d6SArmin Le Grand                 }
518d74d90d6SArmin Le Grand 
519d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_GRADIENT_LIST))
520d74d90d6SArmin Le Grand                 {
521d74d90d6SArmin Le Grand                     const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
522d74d90d6SArmin Le Grand 
523d74d90d6SArmin Le Grand                     if(nPos < aItem.GetGradientList()->Count())
524d74d90d6SArmin Le Grand                     {
525d74d90d6SArmin Le Grand                         const XGradient aGradient = aItem.GetGradientList()->GetGradient(nPos)->GetGradient();
526d74d90d6SArmin Le Grand                         const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetSelectEntry(), aGradient);
527*86d608b5SArmin Le Grand 
528*86d608b5SArmin Le Grand                         // #122676# Change FillStale and Gradinet in one call
529*86d608b5SArmin Le Grand                         GetBindings()->GetDispatcher()->Execute(
530*86d608b5SArmin Le Grand                             SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem,
531*86d608b5SArmin Le Grand                             bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
532d74d90d6SArmin Le Grand                     }
533d74d90d6SArmin Le Grand                 }
534d74d90d6SArmin Le Grand 
535d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
536d74d90d6SArmin Le Grand                 {
537d74d90d6SArmin Le Grand                     mnLastPosGradient = nPos;
538d74d90d6SArmin Le Grand                 }
539d74d90d6SArmin Le Grand                 break;
540d74d90d6SArmin Le Grand             }
541d74d90d6SArmin Le Grand             case XFILL_HATCH:
542d74d90d6SArmin Le Grand             {
543d74d90d6SArmin Le Grand                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
544d74d90d6SArmin Le Grand 
545d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
546d74d90d6SArmin Le Grand                 {
547d74d90d6SArmin Le Grand                     nPos = mnLastPosHatch;
548d74d90d6SArmin Le Grand                 }
549d74d90d6SArmin Le Grand 
550d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_HATCH_LIST))
551d74d90d6SArmin Le Grand                 {
552d74d90d6SArmin Le Grand                     const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
553d74d90d6SArmin Le Grand 
554d74d90d6SArmin Le Grand                     if(nPos < aItem.GetHatchList()->Count())
555d74d90d6SArmin Le Grand                     {
556d74d90d6SArmin Le Grand                         const XHatch aHatch = aItem.GetHatchList()->GetHatch(nPos)->GetHatch();
557d74d90d6SArmin Le Grand                         const XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch);
558*86d608b5SArmin Le Grand 
559*86d608b5SArmin Le Grand                         // #122676# Change FillStale and Hatch in one call
560*86d608b5SArmin Le Grand                         GetBindings()->GetDispatcher()->Execute(
561*86d608b5SArmin Le Grand                             SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem,
562*86d608b5SArmin Le Grand                             bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
563d74d90d6SArmin Le Grand                     }
564d74d90d6SArmin Le Grand                 }
565d74d90d6SArmin Le Grand 
566d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
567d74d90d6SArmin Le Grand                 {
568d74d90d6SArmin Le Grand                     mnLastPosHatch = nPos;
569d74d90d6SArmin Le Grand                 }
570d74d90d6SArmin Le Grand                 break;
571d74d90d6SArmin Le Grand             }
572d74d90d6SArmin Le Grand             case XFILL_BITMAP:
573d74d90d6SArmin Le Grand             {
574d74d90d6SArmin Le Grand                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
575d74d90d6SArmin Le Grand 
576d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
577d74d90d6SArmin Le Grand                 {
578d74d90d6SArmin Le Grand                     nPos = mnLastPosBitmap;
579d74d90d6SArmin Le Grand                 }
580d74d90d6SArmin Le Grand 
581d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_BITMAP_LIST))
582d74d90d6SArmin Le Grand                 {
583d74d90d6SArmin Le Grand                     const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
584d74d90d6SArmin Le Grand 
585d74d90d6SArmin Le Grand                     if(nPos < aItem.GetBitmapList()->Count())
586d74d90d6SArmin Le Grand                     {
58766c1fc23SArmin Le Grand                         const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(nPos);
588d74d90d6SArmin Le Grand                         const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
589*86d608b5SArmin Le Grand 
590*86d608b5SArmin Le Grand                         // #122676# Change FillStale and Bitmap in one call
591*86d608b5SArmin Le Grand                         GetBindings()->GetDispatcher()->Execute(
592*86d608b5SArmin Le Grand                             SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem,
593*86d608b5SArmin Le Grand                             bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
594d74d90d6SArmin Le Grand                     }
595d74d90d6SArmin Le Grand                 }
59666c1fc23SArmin Le Grand 
597d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
598d74d90d6SArmin Le Grand                 {
599d74d90d6SArmin Le Grand                     mnLastPosBitmap = nPos;
600d74d90d6SArmin Le Grand                 }
601d74d90d6SArmin Le Grand                 break;
602d74d90d6SArmin Le Grand             }
603d74d90d6SArmin Le Grand             default: break;
604d74d90d6SArmin Le Grand         }
605d74d90d6SArmin Le Grand     }
606d74d90d6SArmin Le Grand 
607d74d90d6SArmin Le Grand     return 0;
608d74d90d6SArmin Le Grand }
6098dcb2a10SAndre Fischer 
61066c1fc23SArmin Le Grand 
IMPL_LINK(AreaPropertyPanel,ToolBoxColorDropHdl,ToolBox *,pToolBox)61189729eb3SArmin Le Grand IMPL_LINK(AreaPropertyPanel, ToolBoxColorDropHdl, ToolBox*, pToolBox)
61266c1fc23SArmin Le Grand {
613d74d90d6SArmin Le Grand     const sal_uInt16 nId = pToolBox->GetCurItemId();
61489729eb3SArmin Le Grand 
615d74d90d6SArmin Le Grand     if(TBI_COLOR == nId)
61689729eb3SArmin Le Grand     {
6178dcb2a10SAndre Fischer         maColorPopup.Show(*pToolBox);
618d74d90d6SArmin Le Grand 
619d74d90d6SArmin Le Grand         if (mpColorItem)
620d74d90d6SArmin Le Grand         {
6218dcb2a10SAndre Fischer             maColorPopup.SetCurrentColor(mpColorItem->GetColorValue(), mbColorAvail);
622d74d90d6SArmin Le Grand         }
623d74d90d6SArmin Le Grand         else
624d74d90d6SArmin Le Grand         {
625d74d90d6SArmin Le Grand             maColorPopup.SetCurrentColor(COL_WHITE, false);
626d74d90d6SArmin Le Grand         }
627d74d90d6SArmin Le Grand     }
62889729eb3SArmin Le Grand 
62989729eb3SArmin Le Grand     return 0;
63066c1fc23SArmin Le Grand }
63166c1fc23SArmin Le Grand 
63266c1fc23SArmin Le Grand 
6338dcb2a10SAndre Fischer 
SetColor(const String & rsColorName,const Color aColor)6348dcb2a10SAndre Fischer void AreaPropertyPanel::SetColor (
6358dcb2a10SAndre Fischer     const String& rsColorName,
6368dcb2a10SAndre Fischer     const Color aColor)
63766c1fc23SArmin Le Grand {
638d74d90d6SArmin Le Grand     const XFillColorItem aXFillColorItem(rsColorName, aColor);
6398dcb2a10SAndre Fischer     mpBindings->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
6408dcb2a10SAndre Fischer     maLastColor = aColor;
64166c1fc23SArmin Le Grand }
64266c1fc23SArmin Le Grand 
64366c1fc23SArmin Le Grand 
64466c1fc23SArmin Le Grand 
6458dcb2a10SAndre Fischer 
CreateTransparencyGradientControl(PopupContainer * pParent)6468dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateTransparencyGradientControl (PopupContainer* pParent)
6478dcb2a10SAndre Fischer {
6488dcb2a10SAndre Fischer     return new AreaTransparencyGradientControl(pParent, *this);
64966c1fc23SArmin Le Grand }
65066c1fc23SArmin Le Grand 
65166c1fc23SArmin Le Grand 
65266c1fc23SArmin Le Grand 
6538dcb2a10SAndre Fischer 
CreateColorPopupControl(PopupContainer * pParent)6548dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateColorPopupControl (PopupContainer* pParent)
6558dcb2a10SAndre Fischer {
6568dcb2a10SAndre Fischer     return new ColorControl(
6578dcb2a10SAndre Fischer         pParent,
6588dcb2a10SAndre Fischer         mpBindings,
6598dcb2a10SAndre Fischer         SVX_RES(RID_POPUPPANEL_AERAPAGE_COLOR),
6608dcb2a10SAndre Fischer         SVX_RES(VS_COLOR),
6618dcb2a10SAndre Fischer         ::boost::bind(&AreaPropertyPanel::GetLastColor, this),
6628dcb2a10SAndre Fischer         ::boost::bind(&AreaPropertyPanel::SetColor, this, _1,_2),
6638dcb2a10SAndre Fischer         pParent,
6648dcb2a10SAndre Fischer         0);
66566c1fc23SArmin Le Grand }
66666c1fc23SArmin Le Grand 
6678dcb2a10SAndre Fischer 
6688dcb2a10SAndre Fischer 
66966c1fc23SArmin Le Grand 
SetupIcons(void)67066c1fc23SArmin Le Grand void AreaPropertyPanel::SetupIcons(void)
67166c1fc23SArmin Le Grand {
67266c1fc23SArmin Le Grand     if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
67366c1fc23SArmin Le Grand     {
67466c1fc23SArmin Le Grand         // todo
67566c1fc23SArmin Le Grand     }
67666c1fc23SArmin Le Grand     else
67766c1fc23SArmin Le Grand     {
67866c1fc23SArmin Le Grand         // todo
67966c1fc23SArmin Le Grand     }
68066c1fc23SArmin Le Grand }
68166c1fc23SArmin Le Grand 
6828dcb2a10SAndre Fischer 
68366c1fc23SArmin Le Grand 
Create(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)68466c1fc23SArmin Le Grand AreaPropertyPanel* AreaPropertyPanel::Create (
68566c1fc23SArmin Le Grand     Window* pParent,
68666c1fc23SArmin Le Grand     const cssu::Reference<css::frame::XFrame>& rxFrame,
68766c1fc23SArmin Le Grand     SfxBindings* pBindings)
68866c1fc23SArmin Le Grand {
68966c1fc23SArmin Le Grand     if (pParent == NULL)
69066c1fc23SArmin Le Grand         throw lang::IllegalArgumentException(A2S("no parent Window given to AreaPropertyPanel::Create"), NULL, 0);
69166c1fc23SArmin Le Grand     if ( ! rxFrame.is())
69266c1fc23SArmin Le Grand         throw lang::IllegalArgumentException(A2S("no XFrame given to AreaPropertyPanel::Create"), NULL, 1);
69366c1fc23SArmin Le Grand     if (pBindings == NULL)
69466c1fc23SArmin Le Grand         throw lang::IllegalArgumentException(A2S("no SfxBindings given to AreaPropertyPanel::Create"), NULL, 2);
69566c1fc23SArmin Le Grand 
69666c1fc23SArmin Le Grand     return new AreaPropertyPanel(
69766c1fc23SArmin Le Grand         pParent,
69866c1fc23SArmin Le Grand         rxFrame,
69966c1fc23SArmin Le Grand         pBindings);
70066c1fc23SArmin Le Grand }
70166c1fc23SArmin Le Grand 
7028dcb2a10SAndre Fischer 
70366c1fc23SArmin Le Grand 
DataChanged(const DataChangedEvent & rEvent)70466c1fc23SArmin Le Grand void AreaPropertyPanel::DataChanged(
70566c1fc23SArmin Le Grand     const DataChangedEvent& rEvent)
70666c1fc23SArmin Le Grand {
70766c1fc23SArmin Le Grand     (void)rEvent;
70866c1fc23SArmin Le Grand 
70966c1fc23SArmin Le Grand     SetupIcons();
71066c1fc23SArmin Le Grand }
71166c1fc23SArmin Le Grand 
7128dcb2a10SAndre Fischer 
71366c1fc23SArmin Le Grand 
ImpUpdateTransparencies()714d5370dc8SArmin Le Grand void AreaPropertyPanel::ImpUpdateTransparencies()
715d5370dc8SArmin Le Grand {
716d74d90d6SArmin Le Grand     if(mpTransparanceItem.get() && mpFloatTransparenceItem.get())
717d5370dc8SArmin Le Grand     {
718d5370dc8SArmin Le Grand         bool bZeroValue(false);
719d5370dc8SArmin Le Grand 
720d5370dc8SArmin Le Grand         if(mpTransparanceItem.get())
721d5370dc8SArmin Le Grand         {
722d5370dc8SArmin Le Grand             const sal_uInt16 nValue(mpTransparanceItem->GetValue());
723d5370dc8SArmin Le Grand 
724d5370dc8SArmin Le Grand             if(!nValue)
725d5370dc8SArmin Le Grand             {
726d5370dc8SArmin Le Grand                 bZeroValue = true;
727d5370dc8SArmin Le Grand             }
728d5370dc8SArmin Le Grand             else if(nValue <= 100)
729d5370dc8SArmin Le Grand             {
730d5370dc8SArmin Le Grand                 mpLBTransType->Enable();
73147df10a6SArmin Le Grand                 mpTrspTextFT->Enable();
732d5370dc8SArmin Le Grand                 mpLBTransType->SelectEntryPos(1);
733d5370dc8SArmin Le Grand                 mpBTNGradient->Hide();
734d5370dc8SArmin Le Grand                 mpMTRTransparent->Show();
735d5370dc8SArmin Le Grand                 mpMTRTransparent->Enable();
736d5370dc8SArmin Le Grand                 mpMTRTransparent->SetValue(nValue);
737d5370dc8SArmin Le Grand             }
738d5370dc8SArmin Le Grand 
739eb6ac606SArmin Le Grand             if(!bZeroValue)
740eb6ac606SArmin Le Grand             {
741eb6ac606SArmin Le Grand                 maTrGrPopup.Hide();
742eb6ac606SArmin Le Grand             }
743d5370dc8SArmin Le Grand         }
744d5370dc8SArmin Le Grand 
745d5370dc8SArmin Le Grand         if(bZeroValue && mpFloatTransparenceItem.get())
746d5370dc8SArmin Le Grand         {
747d5370dc8SArmin Le Grand             if(mpFloatTransparenceItem->IsEnabled())
748d5370dc8SArmin Le Grand             {
749d5370dc8SArmin Le Grand                 const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
750d5370dc8SArmin Le Grand                 const bool bHighContrast(GetSettings().GetStyleSettings().GetHighContrastMode());
751d5370dc8SArmin Le Grand                 sal_uInt16 nEntryPos(0);
752d5370dc8SArmin Le Grand                 Image* pImage = 0;
753d5370dc8SArmin Le Grand 
754d5370dc8SArmin Le Grand                 mpLBTransType->Enable();
75547df10a6SArmin Le Grand                 mpTrspTextFT->Enable();
756d5370dc8SArmin Le Grand                 mpMTRTransparent->Hide();
757d5370dc8SArmin Le Grand                 mpBTNGradient->Enable();
758d5370dc8SArmin Le Grand                 mpBTNGradient->Show();
759d5370dc8SArmin Le Grand 
760d5370dc8SArmin Le Grand                 switch(rGradient.GetGradientStyle())
761d5370dc8SArmin Le Grand                 {
762d5370dc8SArmin Le Grand                     case XGRAD_LINEAR:
763d5370dc8SArmin Le Grand                     {
764d5370dc8SArmin Le Grand                         nEntryPos = 2;
765d5370dc8SArmin Le Grand                         pImage = bHighContrast ? &maImgLinearH : &maImgLinear;
766d5370dc8SArmin Le Grand                         break;
767d5370dc8SArmin Le Grand                     }
768d5370dc8SArmin Le Grand                     case XGRAD_AXIAL:
769d5370dc8SArmin Le Grand                     {
770d5370dc8SArmin Le Grand                         nEntryPos = 3;
771d5370dc8SArmin Le Grand                         pImage = bHighContrast ? &maImgAxialH : &maImgAxial;
772d5370dc8SArmin Le Grand                         break;
773d5370dc8SArmin Le Grand                     }
774d5370dc8SArmin Le Grand                     case XGRAD_RADIAL:
775d5370dc8SArmin Le Grand                     {
776d5370dc8SArmin Le Grand                         nEntryPos = 4;
777d5370dc8SArmin Le Grand                         pImage = bHighContrast ? &maImgRadialH : &maImgRadial;
778d5370dc8SArmin Le Grand                         break;
779d5370dc8SArmin Le Grand                     }
780d5370dc8SArmin Le Grand                     case XGRAD_ELLIPTICAL:
781d5370dc8SArmin Le Grand                     {
782d5370dc8SArmin Le Grand                         nEntryPos = 5;
783d5370dc8SArmin Le Grand                         pImage = bHighContrast ? &maImgElliH : &maImgElli;
784d5370dc8SArmin Le Grand                         break;
785d5370dc8SArmin Le Grand                     }
786d5370dc8SArmin Le Grand                     case XGRAD_SQUARE:
787d5370dc8SArmin Le Grand                     {
788d5370dc8SArmin Le Grand                         nEntryPos = 6;
789d5370dc8SArmin Le Grand                         pImage = bHighContrast ? &maImgQuadH : &maImgQuad;
790d5370dc8SArmin Le Grand                         break;
791d5370dc8SArmin Le Grand                     }
792d5370dc8SArmin Le Grand                     case XGRAD_RECT:
793d5370dc8SArmin Le Grand                     {
794d5370dc8SArmin Le Grand                         nEntryPos = 7;
795d5370dc8SArmin Le Grand                         pImage = bHighContrast ? &maImgSquareH : &maImgSquare;
796d5370dc8SArmin Le Grand                         break;
797d5370dc8SArmin Le Grand                     }
798d5370dc8SArmin Le Grand                 }
799d5370dc8SArmin Le Grand 
800d5370dc8SArmin Le Grand                 mpLBTransType->SelectEntryPos(nEntryPos);
801d5370dc8SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT, *pImage);
802d5370dc8SArmin Le Grand                 bZeroValue = false;
803d5370dc8SArmin Le Grand             }
804d5370dc8SArmin Le Grand             else
805d5370dc8SArmin Le Grand             {
806d5370dc8SArmin Le Grand                 bZeroValue = true;
807d5370dc8SArmin Le Grand             }
808d5370dc8SArmin Le Grand         }
809d5370dc8SArmin Le Grand 
810d5370dc8SArmin Le Grand         if(bZeroValue)
811d5370dc8SArmin Le Grand         {
812d5370dc8SArmin Le Grand             mpLBTransType->Enable();
81347df10a6SArmin Le Grand             mpTrspTextFT->Enable();
814d5370dc8SArmin Le Grand             mpLBTransType->SelectEntryPos(0);
815d5370dc8SArmin Le Grand             mpBTNGradient->Hide();
816d5370dc8SArmin Le Grand             mpMTRTransparent->Enable();
817d5370dc8SArmin Le Grand             mpMTRTransparent->Show();
818d5370dc8SArmin Le Grand             mpMTRTransparent->SetValue(0);
819d5370dc8SArmin Le Grand         }
820d5370dc8SArmin Le Grand     }
821d5370dc8SArmin Le Grand     else
822d5370dc8SArmin Le Grand     {
823d5370dc8SArmin Le Grand         // no transparency at all
824d5370dc8SArmin Le Grand         mpLBTransType->SetNoSelection();
82547df10a6SArmin Le Grand         mpLBTransType->Disable();
82647df10a6SArmin Le Grand         mpTrspTextFT->Disable();
827d5370dc8SArmin Le Grand         mpMTRTransparent->Disable();
828d5370dc8SArmin Le Grand         mpMTRTransparent->Show();
829d5370dc8SArmin Le Grand         mpBTNGradient->Disable();
830d5370dc8SArmin Le Grand         mpBTNGradient->Hide();
831d5370dc8SArmin Le Grand     }
832eb6ac606SArmin Le Grand }
833d5370dc8SArmin Le Grand 
834d5370dc8SArmin Le Grand 
835d5370dc8SArmin Le Grand 
NotifyItemUpdate(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState,const bool bIsEnabled)83666c1fc23SArmin Le Grand void AreaPropertyPanel::NotifyItemUpdate(
83766c1fc23SArmin Le Grand     sal_uInt16 nSID,
83866c1fc23SArmin Le Grand     SfxItemState eState,
83945da7d5eSAndre Fischer     const SfxPoolItem* pState,
84045da7d5eSAndre Fischer     const bool bIsEnabled)
84145da7d5eSAndre Fischer {
84245da7d5eSAndre Fischer     (void)bIsEnabled;
843d74d90d6SArmin Le Grand     const bool bDisabled(SFX_ITEM_DISABLED == eState);
84445da7d5eSAndre Fischer 
845d74d90d6SArmin Le Grand     switch(nSID)
846d5370dc8SArmin Le Grand     {
847d74d90d6SArmin Le Grand         case SID_ATTR_FILL_TRANSPARENCE:
848d74d90d6SArmin Le Grand         case SID_ATTR_FILL_FLOATTRANSPARENCE:
849d74d90d6SArmin Le Grand         {
850d74d90d6SArmin Le Grand             bool bFillTransparenceChanged(false);
851d74d90d6SArmin Le Grand 
852d74d90d6SArmin Le Grand             if(SID_ATTR_FILL_TRANSPARENCE == nSID)
853d74d90d6SArmin Le Grand             {
854d74d90d6SArmin Le Grand                 bFillTransparenceChanged = true;
855d74d90d6SArmin Le Grand 
856d74d90d6SArmin Le Grand                 if(eState >= SFX_ITEM_AVAILABLE)
857d74d90d6SArmin Le Grand                 {
858d74d90d6SArmin Le Grand                     const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
859d74d90d6SArmin Le Grand 
860d74d90d6SArmin Le Grand                     if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem))
861d74d90d6SArmin Le Grand                     {
862d74d90d6SArmin Le Grand                         mpTransparanceItem.reset((SfxUInt16Item*)pItem->Clone());
863d74d90d6SArmin Le Grand                     }
864d74d90d6SArmin Le Grand                     else
865d74d90d6SArmin Le Grand                     {
866d74d90d6SArmin Le Grand                         mpTransparanceItem.reset();
867d74d90d6SArmin Le Grand                     }
868d74d90d6SArmin Le Grand                 }
869d74d90d6SArmin Le Grand                 else
870d74d90d6SArmin Le Grand                 {
871d74d90d6SArmin Le Grand                     mpTransparanceItem.reset();
872d74d90d6SArmin Le Grand                 }
873d74d90d6SArmin Le Grand             }
874d74d90d6SArmin Le Grand             else // if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID)
875d74d90d6SArmin Le Grand             {
876d74d90d6SArmin Le Grand                 bFillTransparenceChanged = true;
877d74d90d6SArmin Le Grand 
878d74d90d6SArmin Le Grand                 if(eState >= SFX_ITEM_AVAILABLE)
879d74d90d6SArmin Le Grand                 {
880d74d90d6SArmin Le Grand                     const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState);
881d74d90d6SArmin Le Grand 
882d74d90d6SArmin Le Grand                     if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem))
883d74d90d6SArmin Le Grand                     {
884d74d90d6SArmin Le Grand                         mpFloatTransparenceItem.reset((XFillFloatTransparenceItem*)pItem->Clone());
885d74d90d6SArmin Le Grand                     }
886d74d90d6SArmin Le Grand                     else
887d74d90d6SArmin Le Grand                     {
888d74d90d6SArmin Le Grand                         mpFloatTransparenceItem.reset();
889d74d90d6SArmin Le Grand                     }
890d74d90d6SArmin Le Grand                 }
891d74d90d6SArmin Le Grand                 else
892d74d90d6SArmin Le Grand                 {
893d74d90d6SArmin Le Grand                     mpFloatTransparenceItem.reset();
894d74d90d6SArmin Le Grand                 }
895d74d90d6SArmin Le Grand             }
896d5370dc8SArmin Le Grand 
897d74d90d6SArmin Le Grand             if(bFillTransparenceChanged)
898d74d90d6SArmin Le Grand             {
899d74d90d6SArmin Le Grand                 // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
900d74d90d6SArmin Le Grand                 ImpUpdateTransparencies();
901d74d90d6SArmin Le Grand             }
902d74d90d6SArmin Le Grand             break;
903d74d90d6SArmin Le Grand         }
904d74d90d6SArmin Le Grand         case SID_ATTR_FILL_STYLE:
905d5370dc8SArmin Le Grand         {
906d74d90d6SArmin Le Grand             if(bDisabled)
907d74d90d6SArmin Le Grand             {
908d74d90d6SArmin Le Grand                 mpLbFillType->Disable();
90947df10a6SArmin Le Grand                 mpColorTextFT->Disable();
910d74d90d6SArmin Le Grand                 mpLbFillType->SetNoSelection();
911d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
912d74d90d6SArmin Le Grand                 mpLbFillAttr->Disable();
913d74d90d6SArmin Le Grand                 mpLbFillAttr->SetNoSelection();
914d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
915d74d90d6SArmin Le Grand                 meLastXFS = -1;
916d74d90d6SArmin Le Grand                 mpStyleItem.reset();
917d74d90d6SArmin Le Grand             }
91866c1fc23SArmin Le Grand 
919d74d90d6SArmin Le Grand             if(eState >= SFX_ITEM_AVAILABLE)
92066c1fc23SArmin Le Grand             {
921d74d90d6SArmin Le Grand                 const XFillStyleItem* pItem = dynamic_cast< const XFillStyleItem* >(pState);
922d74d90d6SArmin Le Grand 
923d74d90d6SArmin Le Grand                 if(pItem)
924d74d90d6SArmin Le Grand                 {
925d74d90d6SArmin Le Grand                     mpStyleItem.reset(dynamic_cast< XFillStyleItem* >(pItem->Clone()));
926d74d90d6SArmin Le Grand                     mpLbFillType->Enable();
92747df10a6SArmin Le Grand                     mpColorTextFT->Enable();
928d74d90d6SArmin Le Grand                     XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
929d74d90d6SArmin Le Grand                     meLastXFS = eXFS;
930d74d90d6SArmin Le Grand                     mpLbFillType->SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXFS));
931d74d90d6SArmin Le Grand 
932d74d90d6SArmin Le Grand                     if(XFILL_NONE == eXFS)
933d74d90d6SArmin Le Grand                     {
934d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
935d74d90d6SArmin Le Grand                         mpLbFillAttr->Disable();
936d74d90d6SArmin Le Grand                     }
937d74d90d6SArmin Le Grand 
938d74d90d6SArmin Le Grand                     Update();
939d74d90d6SArmin Le Grand                     break;
940d74d90d6SArmin Le Grand                 }
941d5370dc8SArmin Le Grand             }
942d74d90d6SArmin Le Grand 
943d74d90d6SArmin Le Grand             mpLbFillType->SetNoSelection();
944d74d90d6SArmin Le Grand             mpLbFillAttr->Show();
945d74d90d6SArmin Le Grand             mpLbFillAttr->Disable();
946d74d90d6SArmin Le Grand             mpLbFillAttr->SetNoSelection();
947d74d90d6SArmin Le Grand             mpToolBoxColor->Hide();
948d74d90d6SArmin Le Grand             meLastXFS = -1;
949d74d90d6SArmin Le Grand             mpStyleItem.reset();
950d74d90d6SArmin Le Grand             break;
951d74d90d6SArmin Le Grand         }
952d74d90d6SArmin Le Grand         case SID_ATTR_FILL_COLOR:
953d74d90d6SArmin Le Grand         {
954d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
955d74d90d6SArmin Le Grand             {
956d74d90d6SArmin Le Grand                 mpColorItem.reset(pState ? (XFillColorItem*)pState->Clone() : 0);
957d74d90d6SArmin Le Grand             }
958d74d90d6SArmin Le Grand 
959d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
960d5370dc8SArmin Le Grand             {
961d74d90d6SArmin Le Grand                 mpLbFillAttr->Hide();
962d74d90d6SArmin Le Grand                 mpToolBoxColor->Show();
963d74d90d6SArmin Le Grand 
964d74d90d6SArmin Le Grand                 if(SFX_ITEM_AVAILABLE == eState)
965d74d90d6SArmin Le Grand                 {
966d74d90d6SArmin Le Grand                     mpToolBoxColor->Enable();
967d74d90d6SArmin Le Grand                     mbColorAvail = true;
968d74d90d6SArmin Le Grand                     // maLastColor = mpColorItem->GetColorValue();
969d74d90d6SArmin Le Grand                     Update();
970d74d90d6SArmin Le Grand                 }
971d74d90d6SArmin Le Grand                 else if(SFX_ITEM_DISABLED == eState)
972d74d90d6SArmin Le Grand                 {
973d74d90d6SArmin Le Grand                     mpToolBoxColor->Disable();
974d74d90d6SArmin Le Grand                     mbColorAvail = false;
975d74d90d6SArmin Le Grand                     mpColorUpdater->Update(COL_WHITE);
976d74d90d6SArmin Le Grand                 }
977d74d90d6SArmin Le Grand                 else
978d74d90d6SArmin Le Grand                 {
979d74d90d6SArmin Le Grand                     mbColorAvail = false;
980d74d90d6SArmin Le Grand                     mpColorUpdater->Update(COL_WHITE);
981d74d90d6SArmin Le Grand                 }
982d5370dc8SArmin Le Grand             }
983d74d90d6SArmin Le Grand             break;
984d5370dc8SArmin Le Grand         }
985d74d90d6SArmin Le Grand         case SID_ATTR_FILL_GRADIENT:
986d5370dc8SArmin Le Grand         {
987d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
988d74d90d6SArmin Le Grand             {
989d74d90d6SArmin Le Grand                 mpFillGradientItem.reset(pState ? (XFillGradientItem*)pState->Clone() : 0);
990d74d90d6SArmin Le Grand             }
991d74d90d6SArmin Le Grand 
992d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
993d74d90d6SArmin Le Grand             {
994d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
995d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
996d74d90d6SArmin Le Grand 
997d74d90d6SArmin Le Grand                 if(SFX_ITEM_AVAILABLE == eState)
998d74d90d6SArmin Le Grand                 {
999d74d90d6SArmin Le Grand                     mpLbFillAttr->Enable();
1000d74d90d6SArmin Le Grand                     Update();
1001d74d90d6SArmin Le Grand                 }
1002d74d90d6SArmin Le Grand                 else if(SFX_ITEM_DISABLED == eState )
1003d74d90d6SArmin Le Grand                 {
1004d74d90d6SArmin Le Grand                     mpLbFillAttr->Disable();
1005d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1006d74d90d6SArmin Le Grand                 }
1007d74d90d6SArmin Le Grand                 else
1008d74d90d6SArmin Le Grand                 {
1009d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1010d74d90d6SArmin Le Grand                 }
1011d74d90d6SArmin Le Grand             }
1012d74d90d6SArmin Le Grand             break;
1013d5370dc8SArmin Le Grand         }
1014d74d90d6SArmin Le Grand         case SID_ATTR_FILL_HATCH:
1015d74d90d6SArmin Le Grand         {
1016d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
1017d74d90d6SArmin Le Grand             {
1018d74d90d6SArmin Le Grand                 mpHatchItem.reset(pState ? (XFillHatchItem*)pState->Clone() : 0);
1019d74d90d6SArmin Le Grand             }
1020d74d90d6SArmin Le Grand 
1021d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
1022d74d90d6SArmin Le Grand             {
1023d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1024d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
102566c1fc23SArmin Le Grand 
1026d74d90d6SArmin Le Grand                 if(SFX_ITEM_AVAILABLE == eState)
1027d74d90d6SArmin Le Grand                 {
1028d74d90d6SArmin Le Grand                     mpLbFillAttr->Enable();
1029d74d90d6SArmin Le Grand                     Update();
1030d74d90d6SArmin Le Grand                 }
1031d74d90d6SArmin Le Grand                 else if(SFX_ITEM_DISABLED == eState )
1032d74d90d6SArmin Le Grand                 {
1033d74d90d6SArmin Le Grand                     mpLbFillAttr->Disable();
1034d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1035d74d90d6SArmin Le Grand                 }
1036d74d90d6SArmin Le Grand                 else
1037d74d90d6SArmin Le Grand                 {
1038d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1039d74d90d6SArmin Le Grand                 }
1040d74d90d6SArmin Le Grand             }
1041d74d90d6SArmin Le Grand             break;
1042d74d90d6SArmin Le Grand         }
1043d74d90d6SArmin Le Grand         case SID_ATTR_FILL_BITMAP:
1044d5370dc8SArmin Le Grand         {
1045d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
1046d74d90d6SArmin Le Grand             {
1047d74d90d6SArmin Le Grand                 mpBitmapItem.reset(pState ? (XFillBitmapItem*)pState->Clone() : 0);
1048d74d90d6SArmin Le Grand             }
1049d5370dc8SArmin Le Grand 
1050d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
1051d5370dc8SArmin Le Grand             {
1052d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1053d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1054d74d90d6SArmin Le Grand 
1055d74d90d6SArmin Le Grand                 if(SFX_ITEM_AVAILABLE == eState)
1056d74d90d6SArmin Le Grand                 {
1057d74d90d6SArmin Le Grand                     mpLbFillAttr->Enable();
1058d74d90d6SArmin Le Grand                     Update();
1059d74d90d6SArmin Le Grand                 }
1060d74d90d6SArmin Le Grand                 else if(SFX_ITEM_DISABLED == eState )
1061d74d90d6SArmin Le Grand                 {
1062d74d90d6SArmin Le Grand                     mpLbFillAttr->Disable();
1063d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1064d74d90d6SArmin Le Grand                 }
1065d74d90d6SArmin Le Grand                 else
1066d74d90d6SArmin Le Grand                 {
1067d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1068d74d90d6SArmin Le Grand                 }
1069d5370dc8SArmin Le Grand             }
1070d74d90d6SArmin Le Grand             break;
1071d74d90d6SArmin Le Grand         }
1072d74d90d6SArmin Le Grand         case SID_COLOR_TABLE:
1073d74d90d6SArmin Le Grand         {
1074d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
1075d5370dc8SArmin Le Grand             {
1076d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
1077d74d90d6SArmin Le Grand                 {
1078d74d90d6SArmin Le Grand                     if(mpColorItem)
1079d74d90d6SArmin Le Grand                     {
1080d74d90d6SArmin Le Grand                         const Color aColor = mpColorItem->GetColorValue();
1081d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1082d74d90d6SArmin Le Grand                         const SvxColorTableItem aItem(*(const SvxColorTableItem*)(pSh->GetItem(SID_COLOR_TABLE)));
1083d74d90d6SArmin Le Grand 
1084d74d90d6SArmin Le Grand                         mpLbFillAttr->Clear();
1085d74d90d6SArmin Le Grand                         mpLbFillAttr->Enable();
1086d74d90d6SArmin Le Grand                         mpLbFillAttr->Fill(aItem.GetColorTable());
1087d74d90d6SArmin Le Grand                         mpLbFillAttr->SelectEntry(aColor);
1088d74d90d6SArmin Le Grand                     }
1089d74d90d6SArmin Le Grand                     else
1090d74d90d6SArmin Le Grand                     {
1091d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
1092d74d90d6SArmin Le Grand                     }
1093d74d90d6SArmin Le Grand                 }
1094d5370dc8SArmin Le Grand             }
1095d74d90d6SArmin Le Grand             break;
1096d5370dc8SArmin Le Grand         }
1097d74d90d6SArmin Le Grand         case SID_GRADIENT_LIST:
1098d74d90d6SArmin Le Grand         {
1099d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
1100d74d90d6SArmin Le Grand             {
1101d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
1102d74d90d6SArmin Le Grand                 {
1103d74d90d6SArmin Le Grand                     if(mpFillGradientItem)
1104d74d90d6SArmin Le Grand                     {
1105d74d90d6SArmin Le Grand                         const String aString( mpFillGradientItem->GetName() );
1106d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1107d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem( *(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
1108d74d90d6SArmin Le Grand 
1109d74d90d6SArmin Le Grand                         mpLbFillAttr->Clear();
1110d74d90d6SArmin Le Grand                         mpLbFillAttr->Enable();
1111d74d90d6SArmin Le Grand                         mpLbFillAttr->Fill(aItem.GetGradientList());
1112d74d90d6SArmin Le Grand                         mpLbFillAttr->SelectEntry(aString);
1113d74d90d6SArmin Le Grand                     }
1114d74d90d6SArmin Le Grand                     else
1115d74d90d6SArmin Le Grand                     {
1116d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
1117d74d90d6SArmin Le Grand                     }
1118d74d90d6SArmin Le Grand                 }
1119d74d90d6SArmin Le Grand             }
1120d74d90d6SArmin Le Grand             break;
1121d74d90d6SArmin Le Grand         }
1122d74d90d6SArmin Le Grand         case SID_HATCH_LIST:
1123d5370dc8SArmin Le Grand         {
1124d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
1125d74d90d6SArmin Le Grand             {
1126d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
1127d74d90d6SArmin Le Grand                 {
1128d74d90d6SArmin Le Grand                     if(mpHatchItem)
1129d74d90d6SArmin Le Grand                     {
1130d74d90d6SArmin Le Grand                         const String aString( mpHatchItem->GetName() );
1131d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1132d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
1133d74d90d6SArmin Le Grand 
1134d74d90d6SArmin Le Grand                         mpLbFillAttr->Clear();
1135d74d90d6SArmin Le Grand                         mpLbFillAttr->Enable();
1136d74d90d6SArmin Le Grand                         mpLbFillAttr->Fill(aItem.GetHatchList());
1137d74d90d6SArmin Le Grand                         mpLbFillAttr->SelectEntry(aString);
1138d74d90d6SArmin Le Grand                     }
1139d74d90d6SArmin Le Grand                     else
1140d74d90d6SArmin Le Grand                     {
1141d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
1142d74d90d6SArmin Le Grand                     }
1143d74d90d6SArmin Le Grand                 }
1144d74d90d6SArmin Le Grand             }
1145d74d90d6SArmin Le Grand             break;
1146d74d90d6SArmin Le Grand         }
1147d74d90d6SArmin Le Grand         case SID_BITMAP_LIST:
1148d74d90d6SArmin Le Grand         {
1149d74d90d6SArmin Le Grand             if(SFX_ITEM_AVAILABLE == eState)
1150d74d90d6SArmin Le Grand             {
1151d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
1152d74d90d6SArmin Le Grand                 {
1153d74d90d6SArmin Le Grand                     if(mpBitmapItem)
1154d74d90d6SArmin Le Grand                     {
1155d74d90d6SArmin Le Grand                         const String aString( mpBitmapItem->GetName() );
1156d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1157d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
1158d74d90d6SArmin Le Grand 
1159d74d90d6SArmin Le Grand                         mpLbFillAttr->Clear();
1160d74d90d6SArmin Le Grand                         mpLbFillAttr->Enable();
1161d74d90d6SArmin Le Grand                         mpLbFillAttr->Fill(aItem.GetBitmapList());
1162d74d90d6SArmin Le Grand                         mpLbFillAttr->SelectEntry(aString);
1163d74d90d6SArmin Le Grand                     }
1164d74d90d6SArmin Le Grand                     else
1165d74d90d6SArmin Le Grand                     {
1166d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
1167d74d90d6SArmin Le Grand                     }
1168d74d90d6SArmin Le Grand                 }
1169d74d90d6SArmin Le Grand             }
1170d74d90d6SArmin Le Grand             break;
1171d5370dc8SArmin Le Grand         }
1172d5370dc8SArmin Le Grand     }
11736a606da0SAndre Fischer 
11746a606da0SAndre Fischer     maLayouter.Layout();
117566c1fc23SArmin Le Grand }
117666c1fc23SArmin Le Grand 
11778dcb2a10SAndre Fischer 
117866c1fc23SArmin Le Grand 
GetBindings()117966c1fc23SArmin Le Grand SfxBindings* AreaPropertyPanel::GetBindings()
118066c1fc23SArmin Le Grand {
118166c1fc23SArmin Le Grand     return mpBindings;
118266c1fc23SArmin Le Grand }
118366c1fc23SArmin Le Grand 
11848dcb2a10SAndre Fischer 
118566c1fc23SArmin Le Grand 
Update()118658e893aeSArmin Le Grand void AreaPropertyPanel::Update()
118766c1fc23SArmin Le Grand {
1188d74d90d6SArmin Le Grand     if(mpStyleItem)
1189d74d90d6SArmin Le Grand     {
1190d74d90d6SArmin Le Grand         const XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
1191d74d90d6SArmin Le Grand         SfxObjectShell* pSh = SfxObjectShell::Current();
1192d74d90d6SArmin Le Grand 
1193d74d90d6SArmin Le Grand         switch( eXFS )
1194d74d90d6SArmin Le Grand         {
1195d74d90d6SArmin Le Grand             case XFILL_NONE:
1196d74d90d6SArmin Le Grand             {
1197d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1198d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1199d74d90d6SArmin Le Grand                 break;
1200d74d90d6SArmin Le Grand             }
1201d74d90d6SArmin Le Grand             case XFILL_SOLID:
1202d74d90d6SArmin Le Grand             {
1203d74d90d6SArmin Le Grand                 if(mpColorItem)
1204d74d90d6SArmin Le Grand                 {
1205d74d90d6SArmin Le Grand                     mpLbFillAttr->Hide();
1206d74d90d6SArmin Le Grand                     mpToolBoxColor->Show();
1207d74d90d6SArmin Le Grand                     mpColorUpdater->Update(mpColorItem->GetColorValue());
1208d74d90d6SArmin Le Grand                 }
1209d74d90d6SArmin Le Grand                 else
1210d74d90d6SArmin Le Grand                 {
1211d74d90d6SArmin Le Grand                     mpColorUpdater->Update(COL_WHITE);
1212d74d90d6SArmin Le Grand                 }
1213d74d90d6SArmin Le Grand                 break;
1214d74d90d6SArmin Le Grand             }
1215d74d90d6SArmin Le Grand             case XFILL_GRADIENT:
1216d74d90d6SArmin Le Grand             {
1217d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1218d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1219d74d90d6SArmin Le Grand 
1220d74d90d6SArmin Le Grand                 if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
1221d74d90d6SArmin Le Grand                 {
1222d74d90d6SArmin Le Grand                     const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
1223d74d90d6SArmin Le Grand                     mpLbFillAttr->Enable();
1224d74d90d6SArmin Le Grand                     mpLbFillAttr->Clear();
1225d74d90d6SArmin Le Grand                     mpLbFillAttr->Fill(aItem.GetGradientList());
1226d74d90d6SArmin Le Grand 
1227d74d90d6SArmin Le Grand                     if(mpFillGradientItem)
1228d74d90d6SArmin Le Grand                     {
1229d74d90d6SArmin Le Grand                         const String aString(mpFillGradientItem->GetName());
1230d74d90d6SArmin Le Grand 
1231d74d90d6SArmin Le Grand                         mpLbFillAttr->SelectEntry(aString);
1232d74d90d6SArmin Le Grand                     }
1233d74d90d6SArmin Le Grand                     else
1234d74d90d6SArmin Le Grand                     {
1235d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
1236d74d90d6SArmin Le Grand                     }
1237d74d90d6SArmin Le Grand                 }
1238d74d90d6SArmin Le Grand                 else
1239d74d90d6SArmin Le Grand                 {
1240d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1241d74d90d6SArmin Le Grand                 }
1242d74d90d6SArmin Le Grand                 break;
1243d74d90d6SArmin Le Grand             }
1244d74d90d6SArmin Le Grand             case XFILL_HATCH:
1245d74d90d6SArmin Le Grand             {
1246d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1247d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1248d74d90d6SArmin Le Grand 
1249d74d90d6SArmin Le Grand                 if(pSh && pSh->GetItem(SID_HATCH_LIST))
1250d74d90d6SArmin Le Grand                 {
1251d74d90d6SArmin Le Grand                     const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
1252d74d90d6SArmin Le Grand                     mpLbFillAttr->Enable();
1253d74d90d6SArmin Le Grand                     mpLbFillAttr->Clear();
1254d74d90d6SArmin Le Grand                     mpLbFillAttr->Fill(aItem.GetHatchList());
1255d74d90d6SArmin Le Grand 
1256d74d90d6SArmin Le Grand                     if(mpHatchItem)
1257d74d90d6SArmin Le Grand                     {
1258d74d90d6SArmin Le Grand                         const String aString(mpHatchItem->GetName());
1259d74d90d6SArmin Le Grand 
1260d74d90d6SArmin Le Grand                         mpLbFillAttr->SelectEntry( aString );
1261d74d90d6SArmin Le Grand                     }
1262d74d90d6SArmin Le Grand                     else
1263d74d90d6SArmin Le Grand                     {
1264d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
1265d74d90d6SArmin Le Grand                     }
1266d74d90d6SArmin Le Grand                 }
1267d74d90d6SArmin Le Grand                 else
1268d74d90d6SArmin Le Grand                 {
1269d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1270d74d90d6SArmin Le Grand                 }
1271d74d90d6SArmin Le Grand                 break;
1272d74d90d6SArmin Le Grand             }
1273d74d90d6SArmin Le Grand             case XFILL_BITMAP:
1274d74d90d6SArmin Le Grand             {
1275d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1276d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1277d74d90d6SArmin Le Grand 
1278d74d90d6SArmin Le Grand                 if(pSh && pSh->GetItem(SID_BITMAP_LIST))
1279d74d90d6SArmin Le Grand                 {
1280d74d90d6SArmin Le Grand                     const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
1281d74d90d6SArmin Le Grand                     mpLbFillAttr->Enable();
1282d74d90d6SArmin Le Grand                     mpLbFillAttr->Clear();
1283d74d90d6SArmin Le Grand                     mpLbFillAttr->Fill(aItem.GetBitmapList());
1284d74d90d6SArmin Le Grand 
1285d74d90d6SArmin Le Grand                     if(mpBitmapItem)
1286d74d90d6SArmin Le Grand                     {
1287d74d90d6SArmin Le Grand                         const String aString(mpBitmapItem->GetName());
1288d74d90d6SArmin Le Grand 
1289d74d90d6SArmin Le Grand                         mpLbFillAttr->SelectEntry(aString);
1290d74d90d6SArmin Le Grand                     }
1291d74d90d6SArmin Le Grand                     else
1292d74d90d6SArmin Le Grand                     {
1293d74d90d6SArmin Le Grand                         mpLbFillAttr->SetNoSelection();
1294d74d90d6SArmin Le Grand                     }
1295d74d90d6SArmin Le Grand                 }
1296d74d90d6SArmin Le Grand                 else
1297d74d90d6SArmin Le Grand                 {
1298d74d90d6SArmin Le Grand                     mpLbFillAttr->SetNoSelection();
1299d74d90d6SArmin Le Grand                 }
1300d74d90d6SArmin Le Grand                 break;
1301d74d90d6SArmin Le Grand             }
1302d74d90d6SArmin Le Grand             default:
1303d74d90d6SArmin Le Grand                 DBG_ERROR( "Non supported FillType (!)" );
1304d74d90d6SArmin Le Grand             break;
1305d74d90d6SArmin Le Grand         }
1306d74d90d6SArmin Le Grand     }
130766c1fc23SArmin Le Grand }
130866c1fc23SArmin Le Grand 
130958e893aeSArmin Le Grand 
131066c1fc23SArmin Le Grand 
IMPL_LINK(AreaPropertyPanel,ImplPopupModeEndHdl,FloatingWindow *,EMPTYARG)131166c1fc23SArmin Le Grand IMPL_LINK( AreaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
131266c1fc23SArmin Le Grand {
1313d74d90d6SArmin Le Grand     return 0;
131466c1fc23SArmin Le Grand }
131566c1fc23SArmin Le Grand 
13168dcb2a10SAndre Fischer 
131766c1fc23SArmin Le Grand 
IMPL_LINK(AreaPropertyPanel,ClickTrGrHdl_Impl,ToolBox *,pToolBox)131889729eb3SArmin Le Grand IMPL_LINK( AreaPropertyPanel, ClickTrGrHdl_Impl, ToolBox*, pToolBox )
131966c1fc23SArmin Le Grand {
13208dcb2a10SAndre Fischer     maTrGrPopup.Rearrange(mpFloatTransparenceItem.get());
13218dcb2a10SAndre Fischer     OSL_ASSERT(pToolBox->GetCurItemId() == TBI_BTX_GRADIENT);
13228dcb2a10SAndre Fischer     maTrGrPopup.Show(*pToolBox);
132366c1fc23SArmin Le Grand 
132489729eb3SArmin Le Grand     return (0L);
132566c1fc23SArmin Le Grand }
132666c1fc23SArmin Le Grand 
13278dcb2a10SAndre Fischer 
132866c1fc23SArmin Le Grand 
IMPL_LINK(AreaPropertyPanel,ChangeTrgrTypeHdl_Impl,void *,EMPTYARG)132966c1fc23SArmin Le Grand IMPL_LINK(AreaPropertyPanel, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG)
133066c1fc23SArmin Le Grand {
1331d74d90d6SArmin Le Grand     sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
1332d74d90d6SArmin Le Grand     bool bGradient = false;
1333d74d90d6SArmin Le Grand     sal_uInt16 nTrans = 0;
1334d74d90d6SArmin Le Grand 
1335d74d90d6SArmin Le Grand     if(!nSelectType)
1336d74d90d6SArmin Le Grand     {
1337d74d90d6SArmin Le Grand         mpBTNGradient->Hide();
1338d74d90d6SArmin Le Grand         mpMTRTransparent->Show();
1339d74d90d6SArmin Le Grand         mpMTRTransparent->Enable();
1340d74d90d6SArmin Le Grand         mpMTRTransparent->SetValue(0);
1341d74d90d6SArmin Le Grand     }
1342d74d90d6SArmin Le Grand     else if(1 == nSelectType)
1343d74d90d6SArmin Le Grand     {
1344d74d90d6SArmin Le Grand         mpBTNGradient->Hide();
1345d74d90d6SArmin Le Grand         mpMTRTransparent->Show();
1346d74d90d6SArmin Le Grand         nTrans = mnLastTransSolid;
1347d74d90d6SArmin Le Grand         mpMTRTransparent->SetValue(nTrans);
1348d74d90d6SArmin Le Grand         mpLBTransType->SelectEntryPos(1);
1349d74d90d6SArmin Le Grand         mpMTRTransparent->Enable();
1350d74d90d6SArmin Le Grand     }
1351d74d90d6SArmin Le Grand     else
1352d74d90d6SArmin Le Grand     {
1353d74d90d6SArmin Le Grand         mpBTNGradient->Show();
1354d74d90d6SArmin Le Grand 
1355d74d90d6SArmin Le Grand         switch (nSelectType)
1356d74d90d6SArmin Le Grand         {
1357d74d90d6SArmin Le Grand             case 2:
1358d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgLinearH : maImgLinear);
1359d74d90d6SArmin Le Grand                 break;
1360d74d90d6SArmin Le Grand             case 3:
1361d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgAxialH : maImgAxial);
1362d74d90d6SArmin Le Grand                 break;
1363d74d90d6SArmin Le Grand             case 4:
1364d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgRadialH : maImgRadial);
1365d74d90d6SArmin Le Grand                 break;
1366d74d90d6SArmin Le Grand             case 5:
1367d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgElliH : maImgElli );
1368d74d90d6SArmin Le Grand                 break;
1369d74d90d6SArmin Le Grand             case 6:
1370d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgQuadH : maImgQuad );
1371d74d90d6SArmin Le Grand                 break;
1372d74d90d6SArmin Le Grand             case 7:
1373d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSquareH : maImgSquare);
1374d74d90d6SArmin Le Grand                 break;
1375d74d90d6SArmin Le Grand         }
1376d74d90d6SArmin Le Grand 
1377d74d90d6SArmin Le Grand         mpMTRTransparent->Hide();
1378d74d90d6SArmin Le Grand         mpBTNGradient->Enable();
1379d74d90d6SArmin Le Grand         bGradient = true;
1380d74d90d6SArmin Le Grand     }
1381d74d90d6SArmin Le Grand 
1382d74d90d6SArmin Le Grand     const XFillTransparenceItem aLinearItem(nTrans);
1383d74d90d6SArmin Le Grand     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
1384d74d90d6SArmin Le Grand 
1385d74d90d6SArmin Le Grand     if(nSelectType > 1)
1386d74d90d6SArmin Le Grand     {
1387d74d90d6SArmin Le Grand         nSelectType -= 2;
1388d74d90d6SArmin Le Grand     }
1389d74d90d6SArmin Le Grand 
1390d74d90d6SArmin Le Grand     XGradient aTmpGradient;
1391d74d90d6SArmin Le Grand 
1392d74d90d6SArmin Le Grand     switch(nSelectType)
1393d74d90d6SArmin Le Grand     {
1394d74d90d6SArmin Le Grand         case XGRAD_LINEAR:
1395d74d90d6SArmin Le Grand             aTmpGradient = maGradientLinear;
1396d74d90d6SArmin Le Grand             break;
1397d74d90d6SArmin Le Grand         case XGRAD_AXIAL:
1398d74d90d6SArmin Le Grand             aTmpGradient = maGradientAxial;
1399d74d90d6SArmin Le Grand             break;
1400d74d90d6SArmin Le Grand         case XGRAD_RADIAL:
1401d74d90d6SArmin Le Grand             aTmpGradient = maGradientRadial;
1402d74d90d6SArmin Le Grand             break;
1403d74d90d6SArmin Le Grand         case XGRAD_ELLIPTICAL:
1404d74d90d6SArmin Le Grand             aTmpGradient = maGradientElliptical;
1405d74d90d6SArmin Le Grand             break;
1406d74d90d6SArmin Le Grand         case XGRAD_SQUARE:
1407d74d90d6SArmin Le Grand             aTmpGradient = maGradientSquare;
1408d74d90d6SArmin Le Grand             break;
1409d74d90d6SArmin Le Grand         case XGRAD_RECT:
1410d74d90d6SArmin Le Grand             aTmpGradient = maGradientRect;
1411d74d90d6SArmin Le Grand             break;
1412d74d90d6SArmin Le Grand     }
1413d74d90d6SArmin Le Grand 
1414d74d90d6SArmin Le Grand     SfxItemPool* pPool = 0;
1415d74d90d6SArmin Le Grand     const XFillFloatTransparenceItem aGradientItem(pPool, aTmpGradient, sal_Bool(bGradient));
1416d74d90d6SArmin Le Grand     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_FLOATTRANSPARENCE, SFX_CALLMODE_RECORD, &aGradientItem, 0L );
1417d74d90d6SArmin Le Grand 
1418d74d90d6SArmin Le Grand     return( 0L );
141966c1fc23SArmin Le Grand }
142066c1fc23SArmin Le Grand 
14218dcb2a10SAndre Fischer 
142266c1fc23SArmin Le Grand 
IMPL_LINK(AreaPropertyPanel,ModifyTransparentHdl_Impl,void *,EMPTYARG)142366c1fc23SArmin Le Grand IMPL_LINK(AreaPropertyPanel, ModifyTransparentHdl_Impl, void*, EMPTYARG)
142466c1fc23SArmin Le Grand {
1425d74d90d6SArmin Le Grand     const sal_uInt16 nTrans = (sal_uInt16)mpMTRTransparent->GetValue();
1426d74d90d6SArmin Le Grand     mnLastTransSolid = nTrans;
1427d74d90d6SArmin Le Grand     const sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
1428d74d90d6SArmin Le Grand 
1429d74d90d6SArmin Le Grand     if(nTrans && !nSelectType)
1430d74d90d6SArmin Le Grand     {
1431d74d90d6SArmin Le Grand         mpLBTransType->SelectEntryPos(1);
1432d74d90d6SArmin Le Grand     }
1433d74d90d6SArmin Le Grand 
1434d74d90d6SArmin Le Grand     const XFillTransparenceItem aLinearItem(nTrans);
1435d74d90d6SArmin Le Grand     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
1436d74d90d6SArmin Le Grand 
1437d74d90d6SArmin Le Grand     return 0L;
143866c1fc23SArmin Le Grand }
143966c1fc23SArmin Le Grand 
144066c1fc23SArmin Le Grand 
GetLastColor(void) const14418dcb2a10SAndre Fischer Color AreaPropertyPanel::GetLastColor (void) const
14428dcb2a10SAndre Fischer {
14438dcb2a10SAndre Fischer     return maLastColor;
14448dcb2a10SAndre Fischer }
14458dcb2a10SAndre Fischer 
14468dcb2a10SAndre Fischer 
14478dcb2a10SAndre Fischer 
14488dcb2a10SAndre Fischer 
GetGradient(const XGradientStyle eStyle) const14498dcb2a10SAndre Fischer XGradient AreaPropertyPanel::GetGradient (const XGradientStyle eStyle) const
14508dcb2a10SAndre Fischer {
14518dcb2a10SAndre Fischer     switch (eStyle)
14528dcb2a10SAndre Fischer     {
14538dcb2a10SAndre Fischer         default:
1454d74d90d6SArmin Le Grand         case XGRAD_LINEAR:
14558dcb2a10SAndre Fischer             return maGradientLinear;
1456d74d90d6SArmin Le Grand         case XGRAD_AXIAL:
14578dcb2a10SAndre Fischer             return maGradientAxial;
1458d74d90d6SArmin Le Grand         case XGRAD_RADIAL:
14598dcb2a10SAndre Fischer             return maGradientRadial;
1460d74d90d6SArmin Le Grand         case XGRAD_ELLIPTICAL:
14618dcb2a10SAndre Fischer             return maGradientElliptical;
1462d74d90d6SArmin Le Grand         case XGRAD_SQUARE:
14638dcb2a10SAndre Fischer             return maGradientSquare;
1464d74d90d6SArmin Le Grand         case XGRAD_RECT:
14658dcb2a10SAndre Fischer             return maGradientRect;
14668dcb2a10SAndre Fischer     }
14678dcb2a10SAndre Fischer }
14688dcb2a10SAndre Fischer 
14698dcb2a10SAndre Fischer 
14708dcb2a10SAndre Fischer 
14718dcb2a10SAndre Fischer 
SetGradient(const XGradient & rGradient)14728dcb2a10SAndre Fischer void AreaPropertyPanel::SetGradient (const XGradient& rGradient)
14738dcb2a10SAndre Fischer {
14748dcb2a10SAndre Fischer     switch (rGradient.GetGradientStyle())
14758dcb2a10SAndre Fischer     {
14768dcb2a10SAndre Fischer         case XGRAD_LINEAR:
1477d74d90d6SArmin Le Grand             maGradientLinear = rGradient;
14788dcb2a10SAndre Fischer             break;
14798dcb2a10SAndre Fischer         case XGRAD_AXIAL:
1480d74d90d6SArmin Le Grand             maGradientAxial = rGradient;
14818dcb2a10SAndre Fischer             break;
14828dcb2a10SAndre Fischer         case XGRAD_RADIAL:
1483d74d90d6SArmin Le Grand             maGradientRadial = rGradient;
14848dcb2a10SAndre Fischer             break;
14858dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
1486d74d90d6SArmin Le Grand             maGradientElliptical = rGradient;
14878dcb2a10SAndre Fischer             break;
14888dcb2a10SAndre Fischer         case XGRAD_SQUARE:
14898dcb2a10SAndre Fischer             maGradientSquare = rGradient;
14908dcb2a10SAndre Fischer             break;
14918dcb2a10SAndre Fischer         case XGRAD_RECT:
14928dcb2a10SAndre Fischer             maGradientRect = rGradient;
14938dcb2a10SAndre Fischer             break;
1494d74d90d6SArmin Le Grand     }
14958dcb2a10SAndre Fischer }
14968dcb2a10SAndre Fischer 
14978dcb2a10SAndre Fischer 
14988dcb2a10SAndre Fischer 
14998dcb2a10SAndre Fischer 
GetSelectedTransparencyTypeIndex(void) const15008dcb2a10SAndre Fischer sal_Int32 AreaPropertyPanel::GetSelectedTransparencyTypeIndex (void) const
15018dcb2a10SAndre Fischer {
15028dcb2a10SAndre Fischer     return mpLBTransType->GetSelectEntryPos();
15038dcb2a10SAndre Fischer }
150466c1fc23SArmin Le Grand 
15056a606da0SAndre Fischer 
15066a606da0SAndre Fischer 
15076a606da0SAndre Fischer 
Resize(void)15086a606da0SAndre Fischer void AreaPropertyPanel::Resize (void)
15096a606da0SAndre Fischer {
15106a606da0SAndre Fischer     maLayouter.Layout();
15116a606da0SAndre Fischer }
15126a606da0SAndre Fischer 
15136a606da0SAndre Fischer 
15146a606da0SAndre Fischer 
15158dcb2a10SAndre Fischer } } // end of namespace svx::sidebar
15164e8031e0SArmin Le Grand 
15174e8031e0SArmin Le Grand // eof
1518