xref: /AOO41X/main/svx/source/sidebar/area/AreaPropertyPanel.cxx (revision d3e0dd8eb215533c15e891ee35bd141abe9397ee)
18dcb2a10SAndre Fischer /**************************************************************
28dcb2a10SAndre Fischer  *
38dcb2a10SAndre Fischer  * Licensed to the Apache Software Foundation (ASF) under one
48dcb2a10SAndre Fischer  * or more contributor license agreements.  See the NOTICE file
58dcb2a10SAndre Fischer  * distributed with this work for additional information
68dcb2a10SAndre Fischer  * regarding copyright ownership.  The ASF licenses this file
78dcb2a10SAndre Fischer  * to you under the Apache License, Version 2.0 (the
88dcb2a10SAndre Fischer  * "License"); you may not use this file except in compliance
98dcb2a10SAndre Fischer  * with the License.  You may obtain a copy of the License at
108dcb2a10SAndre Fischer  *
118dcb2a10SAndre Fischer  *   http://www.apache.org/licenses/LICENSE-2.0
128dcb2a10SAndre Fischer  *
138dcb2a10SAndre Fischer  * Unless required by applicable law or agreed to in writing,
148dcb2a10SAndre Fischer  * software distributed under the License is distributed on an
158dcb2a10SAndre Fischer  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
168dcb2a10SAndre Fischer  * KIND, either express or implied.  See the License for the
178dcb2a10SAndre Fischer  * specific language governing permissions and limitations
188dcb2a10SAndre Fischer  * under the License.
198dcb2a10SAndre Fischer  *
208dcb2a10SAndre Fischer  *************************************************************/
218dcb2a10SAndre Fischer 
228dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx"
238dcb2a10SAndre Fischer #include "AreaTransparencyGradientControl.hxx"
248dcb2a10SAndre Fischer 
25d29c2fc2SAndre Fischer #include <sfx2/sidebar/ResourceDefinitions.hrc>
268dcb2a10SAndre Fischer #include <sfx2/sidebar/Theme.hxx>
278dcb2a10SAndre Fischer #include <sfx2/sidebar/ControlFactory.hxx>
286a606da0SAndre Fischer #include <sfx2/sidebar/Layouter.hxx>
298dcb2a10SAndre Fischer #include <AreaPropertyPanel.hxx>
308dcb2a10SAndre Fischer #include <AreaPropertyPanel.hrc>
318dcb2a10SAndre Fischer #include <svx/dialogs.hrc>
328dcb2a10SAndre Fischer #include <svx/dialmgr.hxx>
338dcb2a10SAndre Fischer #include <sfx2/objsh.hxx>
348dcb2a10SAndre Fischer #include <svx/xfltrit.hxx>
358dcb2a10SAndre Fischer #include <svx/xflftrit.hxx>
368dcb2a10SAndre Fischer #include <svx/xtable.hxx>
378dcb2a10SAndre Fischer #include <sfx2/dispatch.hxx>
388dcb2a10SAndre Fischer #include <sfx2/bindings.hxx>
398dcb2a10SAndre Fischer #include <helpid.hrc>
408dcb2a10SAndre Fischer #include <svtools/valueset.hxx>
418dcb2a10SAndre Fischer #include <unotools/pathoptions.hxx>
428dcb2a10SAndre Fischer #include <svx/svxitems.hrc>
438dcb2a10SAndre Fischer #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>
488dcb2a10SAndre Fischer 
498dcb2a10SAndre Fischer using namespace css;
508dcb2a10SAndre Fischer using namespace cssu;
516a606da0SAndre Fischer using ::sfx2::sidebar::Layouter;
528dcb2a10SAndre Fischer using ::sfx2::sidebar::Theme;
538dcb2a10SAndre Fischer 
548dcb2a10SAndre Fischer #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
558dcb2a10SAndre Fischer 
568dcb2a10SAndre Fischer 
578dcb2a10SAndre Fischer 
588dcb2a10SAndre Fischer 
598dcb2a10SAndre Fischer namespace svx { namespace sidebar {
608dcb2a10SAndre Fischer 
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;
678dcb2a10SAndre Fischer 
688dcb2a10SAndre Fischer 
AreaPropertyPanel(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)698dcb2a10SAndre Fischer AreaPropertyPanel::AreaPropertyPanel(
708dcb2a10SAndre Fischer     Window* pParent,
718dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
728dcb2a10SAndre Fischer     SfxBindings* pBindings)
73ee093554SAndre Fischer     : Control(pParent, SVX_RES(RID_SIDEBAR_AREA_PANEL)),
748dcb2a10SAndre Fischer       meLastXFS(-1),
758dcb2a10SAndre Fischer       maLastColor(Color(COL_DEFAULT_SHAPE_FILLING)),
768dcb2a10SAndre Fischer       mnLastPosGradient(0),
778dcb2a10SAndre Fischer       mnLastPosHatch(0),
788dcb2a10SAndre Fischer       mnLastPosBitmap(0),
798dcb2a10SAndre Fischer       mnLastTransSolid(50),
808dcb2a10SAndre Fischer       maGradientLinear(),
818dcb2a10SAndre Fischer       maGradientAxial(),
828dcb2a10SAndre Fischer       maGradientRadial(),
838dcb2a10SAndre Fischer       maGradientElliptical(),
848dcb2a10SAndre Fischer       maGradientSquare(),
858dcb2a10SAndre Fischer       maGradientRect(),
868dcb2a10SAndre Fischer       mpColorTextFT(new FixedText(this, SVX_RES(FT_COLOR_LIST))),
878dcb2a10SAndre Fischer       mpLbFillType(new SvxFillTypeBox(this)),
888dcb2a10SAndre Fischer       mpLbFillAttr(new SvxFillAttrBox(this)),
898dcb2a10SAndre Fischer       mpToolBoxColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
908dcb2a10SAndre Fischer       mpToolBoxColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpToolBoxColorBackground.get(), SVX_RES(TB_COLOR))),
918dcb2a10SAndre Fischer       mpTrspTextFT(new FixedText(this, SVX_RES(FL_TRSP_TEXT))),
928dcb2a10SAndre Fischer       mpLBTransType(new ListBox(this, SVX_RES(LB_TRGR_TYPES))),
938dcb2a10SAndre Fischer       mpMTRTransparent(new MetricField(this, SVX_RES(MTR_TRANSPARENT))),
948dcb2a10SAndre Fischer       mpBTNGradientBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
958dcb2a10SAndre Fischer       mpBTNGradient(sfx2::sidebar::ControlFactory::CreateToolBox(mpBTNGradientBackground.get(), SVX_RES(BTN_GRADIENT))),
968dcb2a10SAndre Fischer       mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_FILL_COLOR, TBI_COLOR, mpToolBoxColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
978dcb2a10SAndre Fischer       mpStyleItem(),
988dcb2a10SAndre Fischer       mpColorItem(),
998dcb2a10SAndre Fischer       mpFillGradientItem(),
1008dcb2a10SAndre Fischer       mpHatchItem(),
1018dcb2a10SAndre Fischer       mpBitmapItem(),
1028dcb2a10SAndre Fischer       maStyleControl(SID_ATTR_FILL_STYLE, *pBindings, *this),
1038dcb2a10SAndre Fischer       maColorControl(SID_ATTR_FILL_COLOR, *pBindings, *this),
1048dcb2a10SAndre Fischer       maGradientControl(SID_ATTR_FILL_GRADIENT, *pBindings, *this),
1058dcb2a10SAndre Fischer       maHatchControl(SID_ATTR_FILL_HATCH, *pBindings, *this),
1068dcb2a10SAndre Fischer       maBitmapControl(SID_ATTR_FILL_BITMAP, *pBindings, *this),
1078dcb2a10SAndre Fischer       maColorTableControl(SID_COLOR_TABLE, *pBindings, *this),
1088dcb2a10SAndre Fischer       maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this),
1098dcb2a10SAndre Fischer       maHatchListControl(SID_HATCH_LIST, *pBindings, *this),
1108dcb2a10SAndre Fischer       maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this),
1118dcb2a10SAndre Fischer       maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this),
1128dcb2a10SAndre Fischer       maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this),
1138dcb2a10SAndre Fischer       maImgAxial(SVX_RES(IMG_AXIAL)),
1148dcb2a10SAndre Fischer       maImgElli(SVX_RES(IMG_ELLI)),
1158dcb2a10SAndre Fischer       maImgQuad(SVX_RES(IMG_QUAD)),
1168dcb2a10SAndre Fischer       maImgRadial(SVX_RES(IMG_RADIAL)),
1178dcb2a10SAndre Fischer       maImgSquare(SVX_RES(IMG_SQUARE)),
1188dcb2a10SAndre Fischer       maImgLinear(SVX_RES(IMG_LINEAR)),
1198dcb2a10SAndre Fischer       maImgColor(SVX_RES(IMG_COLOR)),
1208dcb2a10SAndre Fischer       maImgAxialH(SVX_RES(IMG_AXIAL_H)),
1218dcb2a10SAndre Fischer       maImgElliH(SVX_RES(IMG_ELLI_H)),
1228dcb2a10SAndre Fischer       maImgQuadH(SVX_RES(IMG_QUAD_H)),
1238dcb2a10SAndre Fischer       maImgRadialH(SVX_RES(IMG_RADIAL_H)),
1248dcb2a10SAndre Fischer       maImgSquareH(SVX_RES(IMG_SQUARE_H)),
1258dcb2a10SAndre Fischer       maImgLinearH(SVX_RES(IMG_LINEAR_H)),
1268dcb2a10SAndre Fischer       maImgColorH(SVX_RES(IMG_COLOR_H)),
1278dcb2a10SAndre Fischer       msHelpFillType(SVX_RES(STR_HELP_TYPE)),
1288dcb2a10SAndre Fischer       msHelpFillAttr(SVX_RES(STR_HELP_ATTR)),
1298dcb2a10SAndre Fischer       maTrGrPopup(this, ::boost::bind(&AreaPropertyPanel::CreateTransparencyGradientControl, this, _1)),
1308dcb2a10SAndre Fischer       maColorPopup(this, ::boost::bind(&AreaPropertyPanel::CreateColorPopupControl, this, _1)),
1318dcb2a10SAndre Fischer       mpFloatTransparenceItem(),
1328dcb2a10SAndre Fischer       mpTransparanceItem(),
1338dcb2a10SAndre Fischer       mxFrame(rxFrame),
1348dcb2a10SAndre Fischer       mpBindings(pBindings),
1356a606da0SAndre Fischer       mbColorAvail(true),
1366a606da0SAndre Fischer       maLayouter(*this)
1378dcb2a10SAndre Fischer {
1388dcb2a10SAndre Fischer     Initialize();
1398dcb2a10SAndre Fischer     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);
1708dcb2a10SAndre Fischer }
1718dcb2a10SAndre Fischer 
1728dcb2a10SAndre Fischer 
1738dcb2a10SAndre Fischer 
~AreaPropertyPanel()1748dcb2a10SAndre Fischer AreaPropertyPanel::~AreaPropertyPanel()
1758dcb2a10SAndre Fischer {
1768dcb2a10SAndre Fischer     // Destroy the toolboxes, then their background windows.
1778dcb2a10SAndre Fischer     mpToolBoxColor.reset();
1788dcb2a10SAndre Fischer     mpBTNGradient.reset();
1798dcb2a10SAndre Fischer     mpToolBoxColorBackground.reset();
1808dcb2a10SAndre Fischer     mpBTNGradientBackground.reset();
1818dcb2a10SAndre Fischer }
1828dcb2a10SAndre Fischer 
1838dcb2a10SAndre Fischer 
1848dcb2a10SAndre Fischer 
Initialize()1858dcb2a10SAndre Fischer void AreaPropertyPanel::Initialize()
1868dcb2a10SAndre Fischer {
18737fee4fdSAndre Fischer     mpColorTextFT->SetBackground(Wallpaper());
18837fee4fdSAndre Fischer     mpTrspTextFT->SetBackground(Wallpaper());
18937fee4fdSAndre Fischer 
1908dcb2a10SAndre Fischer     maGradientLinear.SetXOffset(DEFAULT_CENTERX);
1918dcb2a10SAndre Fischer     maGradientLinear.SetYOffset(DEFAULT_CENTERY);
1928dcb2a10SAndre Fischer     maGradientLinear.SetAngle(DEFAULT_ANGLE);
1938dcb2a10SAndre Fischer     maGradientLinear.SetStartColor(Color(DEFAULT_STARTVALUE));
1948dcb2a10SAndre Fischer     maGradientLinear.SetEndColor(Color(DEFAULT_ENDVALUE));
1958dcb2a10SAndre Fischer     maGradientLinear.SetBorder(DEFAULT_BORDER);
1968dcb2a10SAndre Fischer     maGradientLinear.SetGradientStyle(XGRAD_LINEAR);
1978dcb2a10SAndre Fischer 
1988dcb2a10SAndre Fischer     maGradientAxial = maGradientLinear;
1998dcb2a10SAndre Fischer     maGradientAxial.SetGradientStyle(XGRAD_AXIAL);
2008dcb2a10SAndre Fischer 
2018dcb2a10SAndre Fischer     maGradientRadial = maGradientLinear;
2028dcb2a10SAndre Fischer     maGradientRadial.SetGradientStyle(XGRAD_RADIAL);
2038dcb2a10SAndre Fischer 
2048dcb2a10SAndre Fischer     maGradientElliptical = maGradientLinear;
2058dcb2a10SAndre Fischer     maGradientElliptical.SetGradientStyle(XGRAD_ELLIPTICAL);
2068dcb2a10SAndre Fischer 
2078dcb2a10SAndre Fischer     maGradientSquare = maGradientLinear;
2088dcb2a10SAndre Fischer     maGradientSquare.SetGradientStyle(XGRAD_SQUARE);
2098dcb2a10SAndre Fischer 
2108dcb2a10SAndre Fischer     maGradientRect = maGradientLinear;
2118dcb2a10SAndre Fischer     maGradientRect.SetGradientStyle(XGRAD_RECT);
2128dcb2a10SAndre Fischer 
2138dcb2a10SAndre Fischer     Size aLogicalFillSize(MBOX_WIDTH,LISTBOX_HEIGHT);
2148dcb2a10SAndre Fischer     Size aLogicalAttrSize(MBOX_WIDTH + 1,LISTBOX_HEIGHT);
2158dcb2a10SAndre Fischer 
2168dcb2a10SAndre Fischer     Point aPoint(SECTIONPAGE_MARGIN_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
2178dcb2a10SAndre Fischer     Point aPoint_Picker(SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH + CONTROL_SPACING_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
2188dcb2a10SAndre Fischer 
2198dcb2a10SAndre Fischer     Size aTypeSize(LogicToPixel(aLogicalFillSize, MAP_APPFONT));
2208dcb2a10SAndre Fischer     Size aAttrSize(LogicToPixel(aLogicalAttrSize, MAP_APPFONT));
2218dcb2a10SAndre Fischer 
2228dcb2a10SAndre Fischer     Point aTypePoint(LogicToPixel(aPoint, MAP_APPFONT));
2238dcb2a10SAndre Fischer     Point aAttrPoint(LogicToPixel(aPoint_Picker, MAP_APPFONT));
2248dcb2a10SAndre Fischer 
2258dcb2a10SAndre Fischer     mpLbFillType->SetPosSizePixel(aTypePoint,aTypeSize);
2268dcb2a10SAndre Fischer     mpLbFillAttr->SetPosSizePixel(aAttrPoint,aAttrSize);
2278dcb2a10SAndre Fischer 
2288dcb2a10SAndre Fischer     mpLbFillType->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_TYPES);
2298dcb2a10SAndre Fischer     mpLbFillAttr->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_ATTR);
2308dcb2a10SAndre Fischer 
2318dcb2a10SAndre Fischer     mpLbFillType->SetQuickHelpText(msHelpFillType);
2328dcb2a10SAndre Fischer     mpLbFillAttr->SetQuickHelpText(msHelpFillAttr);
2338dcb2a10SAndre Fischer 
2348dcb2a10SAndre Fischer     mpLbFillType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill")));    //wj acc
2358dcb2a10SAndre Fischer     mpLbFillAttr->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill")));    //wj acc
2368dcb2a10SAndre Fischer 
2378dcb2a10SAndre Fischer     Link aLink = LINK( this, AreaPropertyPanel, SelectFillTypeHdl );
2388dcb2a10SAndre Fischer     mpLbFillType->SetSelectHdl( aLink );
2398dcb2a10SAndre Fischer 
2408dcb2a10SAndre Fischer     aLink = LINK( this, AreaPropertyPanel, SelectFillAttrHdl );
2418dcb2a10SAndre Fischer     mpLbFillAttr->SetSelectHdl( aLink );
2428dcb2a10SAndre Fischer 
2438dcb2a10SAndre Fischer     //add  for new color picker
2448dcb2a10SAndre Fischer     mpLbFillAttr->Hide();
2458dcb2a10SAndre Fischer     mpToolBoxColor->SetItemImage(TBI_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgColorH : maImgColor);
2468dcb2a10SAndre Fischer     Size aTbxSize( mpToolBoxColor->CalcWindowSizePixel() );
2478dcb2a10SAndre Fischer     mpToolBoxColor->SetOutputSizePixel( aTbxSize );
2488dcb2a10SAndre Fischer     mpToolBoxColor->SetItemBits( TBI_COLOR, mpToolBoxColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY );
2498dcb2a10SAndre Fischer     mpToolBoxColor->SetBackground(Wallpaper());
2508dcb2a10SAndre Fischer     mpToolBoxColor->SetPaintTransparent(true);
2518dcb2a10SAndre Fischer     mpToolBoxColor->SetQuickHelpText(TBI_COLOR, String(SVX_RES(STR_HELP_COLOR)));    //wj acc
2528dcb2a10SAndre Fischer     //mpToolBoxColor->SetItemText(TBI_COLOR, msHelpFillAttr);
2538dcb2a10SAndre Fischer 
2548dcb2a10SAndre Fischer     long aHeightLBStyle = mpLbFillType->GetSizePixel().getHeight();
2558dcb2a10SAndre Fischer     long aLBPosY = mpLbFillType->GetPosPixel().getY();
2568dcb2a10SAndre Fischer     long aHeightTBAttr = mpToolBoxColor->GetSizePixel().getHeight();
2578dcb2a10SAndre Fischer     Point aPointTBAttr = mpToolBoxColor->GetPosPixel();
2588dcb2a10SAndre Fischer     aPointTBAttr.setY( aLBPosY + aHeightLBStyle / 2 - aHeightTBAttr / 2);
2598dcb2a10SAndre Fischer     mpToolBoxColor->SetPosPixel(aPointTBAttr);
2608dcb2a10SAndre Fischer 
2618dcb2a10SAndre Fischer     aLink = LINK(this, AreaPropertyPanel, ToolBoxColorDropHdl);
2628dcb2a10SAndre Fischer     mpToolBoxColor->SetDropdownClickHdl ( aLink );
2638dcb2a10SAndre Fischer     mpToolBoxColor->SetSelectHdl ( aLink );
2648dcb2a10SAndre Fischer 
2658dcb2a10SAndre Fischer     //add end
2668dcb2a10SAndre Fischer     mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanel, ChangeTrgrTypeHdl_Impl));
2678dcb2a10SAndre Fischer     mpLBTransType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency")));    //wj acc
2688dcb2a10SAndre Fischer 
2698dcb2a10SAndre Fischer     mpMTRTransparent->SetValue( 50 );
2708dcb2a10SAndre Fischer     mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanel, ModifyTransparentHdl_Impl));
2718dcb2a10SAndre Fischer     mpMTRTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency")));    //wj acc
2728dcb2a10SAndre Fischer 
2738dcb2a10SAndre Fischer     mpBTNGradient->SetItemBits( TBI_BTX_GRADIENT, mpBTNGradient->GetItemBits( TBI_BTX_GRADIENT ) | TIB_DROPDOWNONLY );
2748dcb2a10SAndre Fischer     aLink = LINK( this, AreaPropertyPanel, ClickTrGrHdl_Impl );
2758dcb2a10SAndre Fischer     mpBTNGradient->SetDropdownClickHdl( aLink );
2768dcb2a10SAndre Fischer     mpBTNGradient->SetSelectHdl( aLink );
2778dcb2a10SAndre Fischer     aTbxSize = mpBTNGradient->CalcWindowSizePixel();
2788dcb2a10SAndre Fischer     mpBTNGradient->SetOutputSizePixel( aTbxSize );
2798dcb2a10SAndre Fischer     mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,maImgLinear);
2808dcb2a10SAndre Fischer     mpBTNGradient->SetQuickHelpText(TBI_BTX_GRADIENT, String(SVX_RES(STR_HELP_GRADIENT)));    //wj acc
2818dcb2a10SAndre Fischer     mpBTNGradient->Hide();
2828dcb2a10SAndre Fischer 
2838dcb2a10SAndre Fischer     long aHeightLBTrans = mpLBTransType->GetSizePixel().getHeight();
2848dcb2a10SAndre Fischer     Point aPointLB = mpLBTransType->GetPosPixel();
2858dcb2a10SAndre Fischer     long aPosY = aPointLB.getY();
2868dcb2a10SAndre Fischer 
2878dcb2a10SAndre Fischer     Point aPointMetric = mpMTRTransparent->GetPosPixel();
2888dcb2a10SAndre Fischer     Point aPointTB = mpMTRTransparent->GetPosPixel();
2898dcb2a10SAndre Fischer     long aHeightMetric = mpMTRTransparent->GetSizePixel().getHeight();
2908dcb2a10SAndre Fischer     long aHeightTool = mpBTNGradient->GetSizePixel().getHeight();
2918dcb2a10SAndre Fischer     aPointMetric.setY(aPosY+aHeightLBTrans/2-aHeightMetric/2);
2928dcb2a10SAndre Fischer     aPointTB.setY(aPosY+aHeightLBTrans/2-aHeightTool/2);
2938dcb2a10SAndre Fischer     aPointTB.setX(aPointTB.getX()+3);
2948dcb2a10SAndre Fischer     mpMTRTransparent->SetPosPixel(aPointMetric);
2958dcb2a10SAndre Fischer     mpBTNGradient->SetPosPixel(aPointTB);
2968dcb2a10SAndre Fischer 
2978dcb2a10SAndre Fischer     mpLbFillType->SetAccessibleRelationLabeledBy(mpColorTextFT.get());
2988dcb2a10SAndre Fischer     mpLbFillAttr->SetAccessibleRelationLabeledBy(mpLbFillAttr.get());
2998dcb2a10SAndre Fischer     mpToolBoxColor->SetAccessibleRelationLabeledBy(mpToolBoxColor.get());
3008dcb2a10SAndre Fischer     mpLBTransType->SetAccessibleRelationLabeledBy(mpTrspTextFT.get());
3018dcb2a10SAndre Fischer     mpMTRTransparent->SetAccessibleRelationLabeledBy(mpMTRTransparent.get());
3028dcb2a10SAndre Fischer     mpBTNGradient->SetAccessibleRelationLabeledBy(mpBTNGradient.get());
3038dcb2a10SAndre Fischer 
3048dcb2a10SAndre Fischer     SetupIcons();
3058dcb2a10SAndre Fischer }
3068dcb2a10SAndre Fischer 
3078dcb2a10SAndre Fischer 
3088dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,SelectFillTypeHdl,ListBox *,pToolBox)3098dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillTypeHdl, ListBox *, pToolBox )
3108dcb2a10SAndre Fischer {
311d74d90d6SArmin Le Grand     const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
3128dcb2a10SAndre Fischer 
3138dcb2a10SAndre Fischer     if((XFillStyle)meLastXFS != eXFS)
3148dcb2a10SAndre Fischer     {
3158dcb2a10SAndre Fischer         mpLbFillAttr->Clear();
3168dcb2a10SAndre Fischer         SfxObjectShell* pSh = SfxObjectShell::Current();
317d74d90d6SArmin Le Grand         const XFillStyleItem aXFillStyleItem(eXFS);
3188dcb2a10SAndre Fischer 
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.
3238dcb2a10SAndre Fischer         switch( eXFS )
3248dcb2a10SAndre Fischer         {
3258dcb2a10SAndre Fischer             case XFILL_NONE:
3268dcb2a10SAndre Fischer             {
3278dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
3288dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
3298dcb2a10SAndre Fischer                 mpLbFillType->Selected();
3308dcb2a10SAndre Fischer                 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);
3358dcb2a10SAndre Fischer                 break;
336d74d90d6SArmin Le Grand             }
3378dcb2a10SAndre Fischer             case XFILL_SOLID:
3388dcb2a10SAndre Fischer             {
3398dcb2a10SAndre Fischer                 mpLbFillAttr->Hide();
3408dcb2a10SAndre Fischer                 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);
3488dcb2a10SAndre Fischer                 break;
349d74d90d6SArmin Le Grand             }
3508dcb2a10SAndre Fischer             case XFILL_GRADIENT:
3518dcb2a10SAndre Fischer             {
3528dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
3538dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
354d74d90d6SArmin Le Grand 
3558dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
3568dcb2a10SAndre Fischer                 {
357d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
3588dcb2a10SAndre Fischer                     {
359d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
3608dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
3618dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
3628dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetGradientList());
3638dcb2a10SAndre Fischer                     }
3648dcb2a10SAndre Fischer 
365a68b38dfSArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
36697e8a929SArmin Le Grand 
367d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosGradient)
3688dcb2a10SAndre Fischer                     {
369d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
370d74d90d6SArmin Le Grand 
3718dcb2a10SAndre Fischer                         if(mnLastPosGradient < aItem.GetGradientList()->Count())
3728dcb2a10SAndre Fischer                         {
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);
3808dcb2a10SAndre Fischer                         }
3818dcb2a10SAndre Fischer                     }
3828dcb2a10SAndre Fischer                 }
3838dcb2a10SAndre Fischer                 else
384d74d90d6SArmin Le Grand                 {
3858dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
3868dcb2a10SAndre Fischer                 }
3878dcb2a10SAndre Fischer                 break;
388d74d90d6SArmin Le Grand             }
3898dcb2a10SAndre Fischer             case XFILL_HATCH:
3908dcb2a10SAndre Fischer             {
3918dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
3928dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
393d74d90d6SArmin Le Grand 
3948dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_HATCH_LIST))
3958dcb2a10SAndre Fischer                 {
396d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
3978dcb2a10SAndre Fischer                     {
398d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem( *(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
3998dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
4008dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
4018dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetHatchList());
4028dcb2a10SAndre Fischer                     }
4038dcb2a10SAndre Fischer 
404a68b38dfSArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
40597e8a929SArmin Le Grand 
406d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosHatch)
4078dcb2a10SAndre Fischer                     {
408d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
409d74d90d6SArmin Le Grand 
4108dcb2a10SAndre Fischer                         if(mnLastPosHatch < aItem.GetHatchList()->Count())
4118dcb2a10SAndre Fischer                         {
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);
4198dcb2a10SAndre Fischer                         }
4208dcb2a10SAndre Fischer                     }
4218dcb2a10SAndre Fischer                 }
4228dcb2a10SAndre Fischer                 else
423d74d90d6SArmin Le Grand                 {
4248dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
4258dcb2a10SAndre Fischer                 }
4268dcb2a10SAndre Fischer                 break;
427d74d90d6SArmin Le Grand             }
4288dcb2a10SAndre Fischer             case XFILL_BITMAP:
4298dcb2a10SAndre Fischer             {
4308dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
4318dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
432d74d90d6SArmin Le Grand 
4338dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_BITMAP_LIST))
4348dcb2a10SAndre Fischer                 {
435d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
4368dcb2a10SAndre Fischer                     {
437d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem( *(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
4388dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
4398dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
4408dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetBitmapList());
4418dcb2a10SAndre Fischer                     }
4428dcb2a10SAndre Fischer 
443a68b38dfSArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
44497e8a929SArmin Le Grand 
445d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosBitmap)
4468dcb2a10SAndre Fischer                     {
447d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
448d74d90d6SArmin Le Grand 
4498dcb2a10SAndre Fischer                         if(mnLastPosBitmap < aItem.GetBitmapList()->Count())
4508dcb2a10SAndre Fischer                         {
4518dcb2a10SAndre Fischer                             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);
4588dcb2a10SAndre Fischer                         }
4598dcb2a10SAndre Fischer                     }
4608dcb2a10SAndre Fischer                 }
4618dcb2a10SAndre Fischer                 else
462d74d90d6SArmin Le Grand                 {
4638dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
4648dcb2a10SAndre Fischer                 }
4658dcb2a10SAndre Fischer                 break;
4668dcb2a10SAndre Fischer             }
467d74d90d6SArmin Le Grand         }
468d74d90d6SArmin Le Grand 
4698dcb2a10SAndre Fischer         meLastXFS = (sal_uInt16)eXFS;
470d74d90d6SArmin Le Grand 
471d74d90d6SArmin Le Grand         if(XFILL_NONE != eXFS)
4728dcb2a10SAndre Fischer         {
4738dcb2a10SAndre Fischer             if(pToolBox)
474d74d90d6SArmin Le Grand             {
4758dcb2a10SAndre Fischer                 mpLbFillType->Selected();
4768dcb2a10SAndre Fischer             }
4778dcb2a10SAndre Fischer         }
4786a606da0SAndre Fischer 
4796a606da0SAndre Fischer         maLayouter.Layout();
480d74d90d6SArmin Le Grand     }
481d74d90d6SArmin Le Grand 
4828dcb2a10SAndre Fischer     return 0;
4838dcb2a10SAndre Fischer }
4848dcb2a10SAndre Fischer 
4858dcb2a10SAndre Fischer 
4868dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,SelectFillAttrHdl,ListBox *,pToolBox)4878dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillAttrHdl, ListBox*, pToolBox )
4888dcb2a10SAndre Fischer {
489d74d90d6SArmin Le Grand     const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
490d74d90d6SArmin Le Grand     const XFillStyleItem aXFillStyleItem(eXFS);
4918dcb2a10SAndre Fischer     SfxObjectShell* pSh = SfxObjectShell::Current();
4928dcb2a10SAndre Fischer 
4938dcb2a10SAndre Fischer     if(pToolBox)
4948dcb2a10SAndre Fischer     {
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);
4988dcb2a10SAndre Fischer 
4998dcb2a10SAndre Fischer         switch(eXFS)
5008dcb2a10SAndre Fischer         {
5018dcb2a10SAndre Fischer             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                 }
5088dcb2a10SAndre Fischer                 break;
509*86d608b5SArmin Le Grand             }
5108dcb2a10SAndre Fischer             case XFILL_GRADIENT:
5118dcb2a10SAndre Fischer             {
5128dcb2a10SAndre Fischer                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
5138dcb2a10SAndre Fischer 
514d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
5158dcb2a10SAndre Fischer                 {
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 
5238dcb2a10SAndre Fischer                     if(nPos < aItem.GetGradientList()->Count())
5248dcb2a10SAndre Fischer                     {
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);
5328dcb2a10SAndre Fischer                     }
5338dcb2a10SAndre Fischer                 }
534d74d90d6SArmin Le Grand 
535d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
536d74d90d6SArmin Le Grand                 {
5378dcb2a10SAndre Fischer                     mnLastPosGradient = nPos;
5388dcb2a10SAndre Fischer                 }
5398dcb2a10SAndre Fischer                 break;
540d74d90d6SArmin Le Grand             }
5418dcb2a10SAndre Fischer             case XFILL_HATCH:
5428dcb2a10SAndre Fischer             {
5438dcb2a10SAndre Fischer                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
544d74d90d6SArmin Le Grand 
545d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
5468dcb2a10SAndre Fischer                 {
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 
5548dcb2a10SAndre Fischer                     if(nPos < aItem.GetHatchList()->Count())
5558dcb2a10SAndre Fischer                     {
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);
5638dcb2a10SAndre Fischer                     }
5648dcb2a10SAndre Fischer                 }
565d74d90d6SArmin Le Grand 
566d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
567d74d90d6SArmin Le Grand                 {
5688dcb2a10SAndre Fischer                     mnLastPosHatch = nPos;
5698dcb2a10SAndre Fischer                 }
5708dcb2a10SAndre Fischer                 break;
571d74d90d6SArmin Le Grand             }
5728dcb2a10SAndre Fischer             case XFILL_BITMAP:
5738dcb2a10SAndre Fischer             {
5748dcb2a10SAndre Fischer                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
575d74d90d6SArmin Le Grand 
576d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
5778dcb2a10SAndre Fischer                 {
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 
5858dcb2a10SAndre Fischer                     if(nPos < aItem.GetBitmapList()->Count())
5868dcb2a10SAndre Fischer                     {
5878dcb2a10SAndre Fischer                         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);
5948dcb2a10SAndre Fischer                     }
5958dcb2a10SAndre Fischer                 }
596d74d90d6SArmin Le Grand 
597d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
598d74d90d6SArmin Le Grand                 {
5998dcb2a10SAndre Fischer                     mnLastPosBitmap = nPos;
6008dcb2a10SAndre Fischer                 }
6018dcb2a10SAndre Fischer                 break;
602d74d90d6SArmin Le Grand             }
603d74d90d6SArmin Le Grand             default: break;
604d74d90d6SArmin Le Grand         }
605d74d90d6SArmin Le Grand     }
6068dcb2a10SAndre Fischer 
6078dcb2a10SAndre Fischer     return 0;
6088dcb2a10SAndre Fischer }
6098dcb2a10SAndre Fischer 
6108dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ToolBoxColorDropHdl,ToolBox *,pToolBox)6118dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ToolBoxColorDropHdl, ToolBox*, pToolBox)
6128dcb2a10SAndre Fischer {
613d74d90d6SArmin Le Grand     const sal_uInt16 nId = pToolBox->GetCurItemId();
6148dcb2a10SAndre Fischer 
615d74d90d6SArmin Le Grand     if(TBI_COLOR == nId)
6168dcb2a10SAndre Fischer     {
6178dcb2a10SAndre Fischer         maColorPopup.Show(*pToolBox);
618d74d90d6SArmin Le Grand 
6198dcb2a10SAndre Fischer         if (mpColorItem)
620d74d90d6SArmin Le Grand         {
6218dcb2a10SAndre Fischer             maColorPopup.SetCurrentColor(mpColorItem->GetColorValue(), mbColorAvail);
622d74d90d6SArmin Le Grand         }
6238dcb2a10SAndre Fischer         else
624d74d90d6SArmin Le Grand         {
6258dcb2a10SAndre Fischer             maColorPopup.SetCurrentColor(COL_WHITE, false);
6268dcb2a10SAndre Fischer         }
627d74d90d6SArmin Le Grand     }
6288dcb2a10SAndre Fischer 
6298dcb2a10SAndre Fischer     return 0;
6308dcb2a10SAndre Fischer }
6318dcb2a10SAndre Fischer 
6328dcb2a10SAndre Fischer 
6338dcb2a10SAndre Fischer 
SetColor(const String & rsColorName,const Color aColor)6348dcb2a10SAndre Fischer void AreaPropertyPanel::SetColor (
6358dcb2a10SAndre Fischer     const String& rsColorName,
6368dcb2a10SAndre Fischer     const Color aColor)
6378dcb2a10SAndre Fischer {
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;
6418dcb2a10SAndre Fischer }
6428dcb2a10SAndre Fischer 
6438dcb2a10SAndre Fischer 
6448dcb2a10SAndre Fischer 
6458dcb2a10SAndre Fischer 
CreateTransparencyGradientControl(PopupContainer * pParent)6468dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateTransparencyGradientControl (PopupContainer* pParent)
6478dcb2a10SAndre Fischer {
6488dcb2a10SAndre Fischer     return new AreaTransparencyGradientControl(pParent, *this);
6498dcb2a10SAndre Fischer }
6508dcb2a10SAndre Fischer 
6518dcb2a10SAndre Fischer 
6528dcb2a10SAndre Fischer 
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);
6658dcb2a10SAndre Fischer }
6668dcb2a10SAndre Fischer 
6678dcb2a10SAndre Fischer 
6688dcb2a10SAndre Fischer 
6698dcb2a10SAndre Fischer 
SetupIcons(void)6708dcb2a10SAndre Fischer void AreaPropertyPanel::SetupIcons(void)
6718dcb2a10SAndre Fischer {
6728dcb2a10SAndre Fischer     if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
6738dcb2a10SAndre Fischer     {
6748dcb2a10SAndre Fischer         // todo
6758dcb2a10SAndre Fischer     }
6768dcb2a10SAndre Fischer     else
6778dcb2a10SAndre Fischer     {
6788dcb2a10SAndre Fischer         // todo
6798dcb2a10SAndre Fischer     }
6808dcb2a10SAndre Fischer }
6818dcb2a10SAndre Fischer 
6828dcb2a10SAndre Fischer 
6838dcb2a10SAndre Fischer 
Create(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)6848dcb2a10SAndre Fischer AreaPropertyPanel* AreaPropertyPanel::Create (
6858dcb2a10SAndre Fischer     Window* pParent,
6868dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
6878dcb2a10SAndre Fischer     SfxBindings* pBindings)
6888dcb2a10SAndre Fischer {
6898dcb2a10SAndre Fischer     if (pParent == NULL)
6908dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no parent Window given to AreaPropertyPanel::Create"), NULL, 0);
6918dcb2a10SAndre Fischer     if ( ! rxFrame.is())
6928dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no XFrame given to AreaPropertyPanel::Create"), NULL, 1);
6938dcb2a10SAndre Fischer     if (pBindings == NULL)
6948dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no SfxBindings given to AreaPropertyPanel::Create"), NULL, 2);
6958dcb2a10SAndre Fischer 
6968dcb2a10SAndre Fischer     return new AreaPropertyPanel(
6978dcb2a10SAndre Fischer         pParent,
6988dcb2a10SAndre Fischer         rxFrame,
6998dcb2a10SAndre Fischer         pBindings);
7008dcb2a10SAndre Fischer }
7018dcb2a10SAndre Fischer 
7028dcb2a10SAndre Fischer 
7038dcb2a10SAndre Fischer 
DataChanged(const DataChangedEvent & rEvent)7048dcb2a10SAndre Fischer void AreaPropertyPanel::DataChanged(
7058dcb2a10SAndre Fischer     const DataChangedEvent& rEvent)
7068dcb2a10SAndre Fischer {
7078dcb2a10SAndre Fischer     (void)rEvent;
7088dcb2a10SAndre Fischer 
7098dcb2a10SAndre Fischer     SetupIcons();
7108dcb2a10SAndre Fischer }
7118dcb2a10SAndre Fischer 
7128dcb2a10SAndre Fischer 
7138dcb2a10SAndre Fischer 
ImpUpdateTransparencies()7148dcb2a10SAndre Fischer void AreaPropertyPanel::ImpUpdateTransparencies()
7158dcb2a10SAndre Fischer {
716d74d90d6SArmin Le Grand     if(mpTransparanceItem.get() && mpFloatTransparenceItem.get())
7178dcb2a10SAndre Fischer     {
7188dcb2a10SAndre Fischer         bool bZeroValue(false);
7198dcb2a10SAndre Fischer 
7208dcb2a10SAndre Fischer         if(mpTransparanceItem.get())
7218dcb2a10SAndre Fischer         {
7228dcb2a10SAndre Fischer             const sal_uInt16 nValue(mpTransparanceItem->GetValue());
7238dcb2a10SAndre Fischer 
7248dcb2a10SAndre Fischer             if(!nValue)
7258dcb2a10SAndre Fischer             {
7268dcb2a10SAndre Fischer                 bZeroValue = true;
7278dcb2a10SAndre Fischer             }
7288dcb2a10SAndre Fischer             else if(nValue <= 100)
7298dcb2a10SAndre Fischer             {
7308dcb2a10SAndre Fischer                 mpLBTransType->Enable();
73147df10a6SArmin Le Grand                 mpTrspTextFT->Enable();
7328dcb2a10SAndre Fischer                 mpLBTransType->SelectEntryPos(1);
7338dcb2a10SAndre Fischer                 mpBTNGradient->Hide();
7348dcb2a10SAndre Fischer                 mpMTRTransparent->Show();
7358dcb2a10SAndre Fischer                 mpMTRTransparent->Enable();
7368dcb2a10SAndre Fischer                 mpMTRTransparent->SetValue(nValue);
7378dcb2a10SAndre Fischer             }
7388dcb2a10SAndre Fischer 
739eb6ac606SArmin Le Grand             if(!bZeroValue)
740eb6ac606SArmin Le Grand             {
7418dcb2a10SAndre Fischer                 maTrGrPopup.Hide();
7428dcb2a10SAndre Fischer             }
743eb6ac606SArmin Le Grand         }
7448dcb2a10SAndre Fischer 
7458dcb2a10SAndre Fischer         if(bZeroValue && mpFloatTransparenceItem.get())
7468dcb2a10SAndre Fischer         {
7478dcb2a10SAndre Fischer             if(mpFloatTransparenceItem->IsEnabled())
7488dcb2a10SAndre Fischer             {
7498dcb2a10SAndre Fischer                 const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
7508dcb2a10SAndre Fischer                 const bool bHighContrast(GetSettings().GetStyleSettings().GetHighContrastMode());
7518dcb2a10SAndre Fischer                 sal_uInt16 nEntryPos(0);
7528dcb2a10SAndre Fischer                 Image* pImage = 0;
7538dcb2a10SAndre Fischer 
7548dcb2a10SAndre Fischer                 mpLBTransType->Enable();
75547df10a6SArmin Le Grand                 mpTrspTextFT->Enable();
7568dcb2a10SAndre Fischer                 mpMTRTransparent->Hide();
7578dcb2a10SAndre Fischer                 mpBTNGradient->Enable();
7588dcb2a10SAndre Fischer                 mpBTNGradient->Show();
7598dcb2a10SAndre Fischer 
7608dcb2a10SAndre Fischer                 switch(rGradient.GetGradientStyle())
7618dcb2a10SAndre Fischer                 {
7628dcb2a10SAndre Fischer                     case XGRAD_LINEAR:
7638dcb2a10SAndre Fischer                     {
7648dcb2a10SAndre Fischer                         nEntryPos = 2;
7658dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgLinearH : &maImgLinear;
7668dcb2a10SAndre Fischer                         break;
7678dcb2a10SAndre Fischer                     }
7688dcb2a10SAndre Fischer                     case XGRAD_AXIAL:
7698dcb2a10SAndre Fischer                     {
7708dcb2a10SAndre Fischer                         nEntryPos = 3;
7718dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgAxialH : &maImgAxial;
7728dcb2a10SAndre Fischer                         break;
7738dcb2a10SAndre Fischer                     }
7748dcb2a10SAndre Fischer                     case XGRAD_RADIAL:
7758dcb2a10SAndre Fischer                     {
7768dcb2a10SAndre Fischer                         nEntryPos = 4;
7778dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgRadialH : &maImgRadial;
7788dcb2a10SAndre Fischer                         break;
7798dcb2a10SAndre Fischer                     }
7808dcb2a10SAndre Fischer                     case XGRAD_ELLIPTICAL:
7818dcb2a10SAndre Fischer                     {
7828dcb2a10SAndre Fischer                         nEntryPos = 5;
7838dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgElliH : &maImgElli;
7848dcb2a10SAndre Fischer                         break;
7858dcb2a10SAndre Fischer                     }
7868dcb2a10SAndre Fischer                     case XGRAD_SQUARE:
7878dcb2a10SAndre Fischer                     {
7888dcb2a10SAndre Fischer                         nEntryPos = 6;
7898dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgQuadH : &maImgQuad;
7908dcb2a10SAndre Fischer                         break;
7918dcb2a10SAndre Fischer                     }
7928dcb2a10SAndre Fischer                     case XGRAD_RECT:
7938dcb2a10SAndre Fischer                     {
7948dcb2a10SAndre Fischer                         nEntryPos = 7;
7958dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgSquareH : &maImgSquare;
7968dcb2a10SAndre Fischer                         break;
7978dcb2a10SAndre Fischer                     }
7988dcb2a10SAndre Fischer                 }
7998dcb2a10SAndre Fischer 
8008dcb2a10SAndre Fischer                 mpLBTransType->SelectEntryPos(nEntryPos);
8018dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT, *pImage);
8028dcb2a10SAndre Fischer                 bZeroValue = false;
8038dcb2a10SAndre Fischer             }
8048dcb2a10SAndre Fischer             else
8058dcb2a10SAndre Fischer             {
8068dcb2a10SAndre Fischer                 bZeroValue = true;
8078dcb2a10SAndre Fischer             }
8088dcb2a10SAndre Fischer         }
8098dcb2a10SAndre Fischer 
8108dcb2a10SAndre Fischer         if(bZeroValue)
8118dcb2a10SAndre Fischer         {
8128dcb2a10SAndre Fischer             mpLBTransType->Enable();
81347df10a6SArmin Le Grand             mpTrspTextFT->Enable();
8148dcb2a10SAndre Fischer             mpLBTransType->SelectEntryPos(0);
8158dcb2a10SAndre Fischer             mpBTNGradient->Hide();
8168dcb2a10SAndre Fischer             mpMTRTransparent->Enable();
8178dcb2a10SAndre Fischer             mpMTRTransparent->Show();
8188dcb2a10SAndre Fischer             mpMTRTransparent->SetValue(0);
8198dcb2a10SAndre Fischer         }
8208dcb2a10SAndre Fischer     }
8218dcb2a10SAndre Fischer     else
8228dcb2a10SAndre Fischer     {
8238dcb2a10SAndre Fischer         // no transparency at all
8248dcb2a10SAndre Fischer         mpLBTransType->SetNoSelection();
82547df10a6SArmin Le Grand         mpLBTransType->Disable();
82647df10a6SArmin Le Grand         mpTrspTextFT->Disable();
8278dcb2a10SAndre Fischer         mpMTRTransparent->Disable();
8288dcb2a10SAndre Fischer         mpMTRTransparent->Show();
8298dcb2a10SAndre Fischer         mpBTNGradient->Disable();
8308dcb2a10SAndre Fischer         mpBTNGradient->Hide();
8318dcb2a10SAndre Fischer     }
8328dcb2a10SAndre Fischer }
8338dcb2a10SAndre Fischer 
834eb6ac606SArmin Le Grand 
835eb6ac606SArmin Le Grand 
NotifyItemUpdate(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState,const bool bIsEnabled)8368dcb2a10SAndre Fischer void AreaPropertyPanel::NotifyItemUpdate(
8378dcb2a10SAndre Fischer     sal_uInt16 nSID,
8388dcb2a10SAndre Fischer     SfxItemState eState,
83945da7d5eSAndre Fischer     const SfxPoolItem* pState,
84045da7d5eSAndre Fischer     const bool bIsEnabled)
8418dcb2a10SAndre Fischer {
84245da7d5eSAndre Fischer     (void)bIsEnabled;
843d74d90d6SArmin Le Grand     const bool bDisabled(SFX_ITEM_DISABLED == eState);
84445da7d5eSAndre Fischer 
845d74d90d6SArmin Le Grand     switch(nSID)
846d74d90d6SArmin Le Grand     {
847d74d90d6SArmin Le Grand         case SID_ATTR_FILL_TRANSPARENCE:
848d74d90d6SArmin Le Grand         case SID_ATTR_FILL_FLOATTRANSPARENCE:
849d74d90d6SArmin Le Grand         {
8508dcb2a10SAndre Fischer             bool bFillTransparenceChanged(false);
8518dcb2a10SAndre Fischer 
8528dcb2a10SAndre Fischer             if(SID_ATTR_FILL_TRANSPARENCE == nSID)
8538dcb2a10SAndre Fischer             {
8548dcb2a10SAndre Fischer                 bFillTransparenceChanged = true;
8558dcb2a10SAndre Fischer 
8568dcb2a10SAndre Fischer                 if(eState >= SFX_ITEM_AVAILABLE)
8578dcb2a10SAndre Fischer                 {
8588dcb2a10SAndre Fischer                     const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
8598dcb2a10SAndre Fischer 
8608dcb2a10SAndre Fischer                     if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem))
8618dcb2a10SAndre Fischer                     {
8628dcb2a10SAndre Fischer                         mpTransparanceItem.reset((SfxUInt16Item*)pItem->Clone());
8638dcb2a10SAndre Fischer                     }
8648dcb2a10SAndre Fischer                     else
8658dcb2a10SAndre Fischer                     {
8668dcb2a10SAndre Fischer                         mpTransparanceItem.reset();
8678dcb2a10SAndre Fischer                     }
8688dcb2a10SAndre Fischer                 }
8698dcb2a10SAndre Fischer                 else
8708dcb2a10SAndre Fischer                 {
8718dcb2a10SAndre Fischer                     mpTransparanceItem.reset();
8728dcb2a10SAndre Fischer                 }
8738dcb2a10SAndre Fischer             }
874d74d90d6SArmin Le Grand             else // if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID)
8758dcb2a10SAndre Fischer             {
8768dcb2a10SAndre Fischer                 bFillTransparenceChanged = true;
8778dcb2a10SAndre Fischer 
8788dcb2a10SAndre Fischer                 if(eState >= SFX_ITEM_AVAILABLE)
8798dcb2a10SAndre Fischer                 {
8808dcb2a10SAndre Fischer                     const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState);
8818dcb2a10SAndre Fischer 
8828dcb2a10SAndre Fischer                     if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem))
8838dcb2a10SAndre Fischer                     {
8848dcb2a10SAndre Fischer                         mpFloatTransparenceItem.reset((XFillFloatTransparenceItem*)pItem->Clone());
8858dcb2a10SAndre Fischer                     }
8868dcb2a10SAndre Fischer                     else
8878dcb2a10SAndre Fischer                     {
8888dcb2a10SAndre Fischer                         mpFloatTransparenceItem.reset();
8898dcb2a10SAndre Fischer                     }
8908dcb2a10SAndre Fischer                 }
8918dcb2a10SAndre Fischer                 else
8928dcb2a10SAndre Fischer                 {
8938dcb2a10SAndre Fischer                     mpFloatTransparenceItem.reset();
8948dcb2a10SAndre Fischer                 }
8958dcb2a10SAndre Fischer             }
8968dcb2a10SAndre Fischer 
8978dcb2a10SAndre Fischer             if(bFillTransparenceChanged)
8988dcb2a10SAndre Fischer             {
8998dcb2a10SAndre Fischer                 // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
9008dcb2a10SAndre Fischer                 ImpUpdateTransparencies();
9018dcb2a10SAndre Fischer             }
902d74d90d6SArmin Le Grand             break;
903d74d90d6SArmin Le Grand         }
904d74d90d6SArmin Le Grand         case SID_ATTR_FILL_STYLE:
9058dcb2a10SAndre Fischer         {
906d74d90d6SArmin Le Grand             if(bDisabled)
9078dcb2a10SAndre Fischer             {
9088dcb2a10SAndre Fischer                 mpLbFillType->Disable();
90947df10a6SArmin Le Grand                 mpColorTextFT->Disable();
9108dcb2a10SAndre Fischer                 mpLbFillType->SetNoSelection();
9118dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
9128dcb2a10SAndre Fischer                 mpLbFillAttr->Disable();
9138dcb2a10SAndre Fischer                 mpLbFillAttr->SetNoSelection();
9148dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
9158dcb2a10SAndre Fischer                 meLastXFS = -1;
9168dcb2a10SAndre Fischer                 mpStyleItem.reset();
9178dcb2a10SAndre Fischer             }
9188dcb2a10SAndre Fischer 
919d74d90d6SArmin Le Grand             if(eState >= SFX_ITEM_AVAILABLE)
920d74d90d6SArmin 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();
9298dcb2a10SAndre Fischer                     meLastXFS = eXFS;
930d74d90d6SArmin Le Grand                     mpLbFillType->SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXFS));
931d74d90d6SArmin Le Grand 
932d74d90d6SArmin Le Grand                     if(XFILL_NONE == eXFS)
9338dcb2a10SAndre Fischer                     {
9348dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
9358dcb2a10SAndre Fischer                         mpLbFillAttr->Disable();
9368dcb2a10SAndre Fischer                     }
937d74d90d6SArmin Le Grand 
9388dcb2a10SAndre Fischer                     Update();
939d74d90d6SArmin Le Grand                     break;
9408dcb2a10SAndre Fischer                 }
941d74d90d6SArmin Le Grand             }
942d74d90d6SArmin Le Grand 
9438dcb2a10SAndre Fischer             mpLbFillType->SetNoSelection();
9448dcb2a10SAndre Fischer             mpLbFillAttr->Show();
9458dcb2a10SAndre Fischer             mpLbFillAttr->Disable();
9468dcb2a10SAndre Fischer             mpLbFillAttr->SetNoSelection();
9478dcb2a10SAndre Fischer             mpToolBoxColor->Hide();
948d74d90d6SArmin Le Grand             meLastXFS = -1;
9498dcb2a10SAndre Fischer             mpStyleItem.reset();
950d74d90d6SArmin Le Grand             break;
9518dcb2a10SAndre Fischer         }
952d74d90d6SArmin Le Grand         case SID_ATTR_FILL_COLOR:
9538dcb2a10SAndre Fischer         {
9548dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
9558dcb2a10SAndre Fischer             {
9568dcb2a10SAndre Fischer                 mpColorItem.reset(pState ? (XFillColorItem*)pState->Clone() : 0);
9578dcb2a10SAndre Fischer             }
958d74d90d6SArmin Le Grand 
959d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
9608dcb2a10SAndre Fischer             {
9618dcb2a10SAndre Fischer                 mpLbFillAttr->Hide();
9628dcb2a10SAndre Fischer                 mpToolBoxColor->Show();
963d74d90d6SArmin Le Grand 
9648dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
9658dcb2a10SAndre Fischer                 {
9668dcb2a10SAndre Fischer                     mpToolBoxColor->Enable();
967d74d90d6SArmin Le Grand                     mbColorAvail = true;
9688dcb2a10SAndre Fischer                     // maLastColor = mpColorItem->GetColorValue();
9698dcb2a10SAndre Fischer                     Update();
9708dcb2a10SAndre Fischer                 }
9718dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState)
9728dcb2a10SAndre Fischer                 {
9738dcb2a10SAndre Fischer                     mpToolBoxColor->Disable();
974d74d90d6SArmin Le Grand                     mbColorAvail = false;
9758dcb2a10SAndre Fischer                     mpColorUpdater->Update(COL_WHITE);
9768dcb2a10SAndre Fischer                 }
9778dcb2a10SAndre Fischer                 else
9788dcb2a10SAndre Fischer                 {
979d74d90d6SArmin Le Grand                     mbColorAvail = false;
9808dcb2a10SAndre Fischer                     mpColorUpdater->Update(COL_WHITE);
9818dcb2a10SAndre Fischer                 }
9828dcb2a10SAndre Fischer             }
983d74d90d6SArmin Le Grand             break;
9848dcb2a10SAndre Fischer         }
985d74d90d6SArmin Le Grand         case SID_ATTR_FILL_GRADIENT:
9868dcb2a10SAndre Fischer         {
9878dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
9888dcb2a10SAndre Fischer             {
9898dcb2a10SAndre Fischer                 mpFillGradientItem.reset(pState ? (XFillGradientItem*)pState->Clone() : 0);
9908dcb2a10SAndre Fischer             }
991d74d90d6SArmin Le Grand 
992d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
9938dcb2a10SAndre Fischer             {
9948dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
9958dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
996d74d90d6SArmin Le Grand 
9978dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
9988dcb2a10SAndre Fischer                 {
9998dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
10008dcb2a10SAndre Fischer                     Update();
10018dcb2a10SAndre Fischer                 }
10028dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState )
10038dcb2a10SAndre Fischer                 {
10048dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
10058dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10068dcb2a10SAndre Fischer                 }
10078dcb2a10SAndre Fischer                 else
1008d74d90d6SArmin Le Grand                 {
10098dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10108dcb2a10SAndre Fischer                 }
10118dcb2a10SAndre Fischer             }
1012d74d90d6SArmin Le Grand             break;
1013d74d90d6SArmin Le Grand         }
1014d74d90d6SArmin Le Grand         case SID_ATTR_FILL_HATCH:
10158dcb2a10SAndre Fischer         {
10168dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
10178dcb2a10SAndre Fischer             {
10188dcb2a10SAndre Fischer                 mpHatchItem.reset(pState ? (XFillHatchItem*)pState->Clone() : 0);
10198dcb2a10SAndre Fischer             }
1020d74d90d6SArmin Le Grand 
1021d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
10228dcb2a10SAndre Fischer             {
10238dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
10248dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
1025d74d90d6SArmin Le Grand 
10268dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
10278dcb2a10SAndre Fischer                 {
10288dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
10298dcb2a10SAndre Fischer                     Update();
10308dcb2a10SAndre Fischer                 }
10318dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState )
10328dcb2a10SAndre Fischer                 {
10338dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
10348dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10358dcb2a10SAndre Fischer                 }
10368dcb2a10SAndre Fischer                 else
1037d74d90d6SArmin Le Grand                 {
10388dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10398dcb2a10SAndre Fischer                 }
10408dcb2a10SAndre Fischer             }
1041d74d90d6SArmin Le Grand             break;
1042d74d90d6SArmin Le Grand         }
1043d74d90d6SArmin Le Grand         case SID_ATTR_FILL_BITMAP:
10448dcb2a10SAndre Fischer         {
10458dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
10468dcb2a10SAndre Fischer             {
10478dcb2a10SAndre Fischer                 mpBitmapItem.reset(pState ? (XFillBitmapItem*)pState->Clone() : 0);
10488dcb2a10SAndre Fischer             }
1049d74d90d6SArmin Le Grand 
1050d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
10518dcb2a10SAndre Fischer             {
10528dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
10538dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
1054d74d90d6SArmin Le Grand 
10558dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
10568dcb2a10SAndre Fischer                 {
10578dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
10588dcb2a10SAndre Fischer                     Update();
10598dcb2a10SAndre Fischer                 }
10608dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState )
10618dcb2a10SAndre Fischer                 {
10628dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
10638dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10648dcb2a10SAndre Fischer                 }
10658dcb2a10SAndre Fischer                 else
1066d74d90d6SArmin Le Grand                 {
10678dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10688dcb2a10SAndre Fischer                 }
10698dcb2a10SAndre Fischer             }
1070d74d90d6SArmin Le Grand             break;
1071d74d90d6SArmin Le Grand         }
1072d74d90d6SArmin Le Grand         case SID_COLOR_TABLE:
10738dcb2a10SAndre Fischer         {
10748dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
10758dcb2a10SAndre Fischer             {
1076d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
10778dcb2a10SAndre Fischer                 {
10788dcb2a10SAndre Fischer                     if(mpColorItem)
10798dcb2a10SAndre Fischer                     {
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 
10848dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
10858dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
10868dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetColorTable());
10878dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aColor);
10888dcb2a10SAndre Fischer                     }
10898dcb2a10SAndre Fischer                     else
1090d74d90d6SArmin Le Grand                     {
10918dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
10928dcb2a10SAndre Fischer                     }
10938dcb2a10SAndre Fischer                 }
10948dcb2a10SAndre Fischer             }
1095d74d90d6SArmin Le Grand             break;
1096d74d90d6SArmin Le Grand         }
1097d74d90d6SArmin Le Grand         case SID_GRADIENT_LIST:
10988dcb2a10SAndre Fischer         {
10998dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
11008dcb2a10SAndre Fischer             {
1101d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
11028dcb2a10SAndre Fischer                 {
11038dcb2a10SAndre Fischer                     if(mpFillGradientItem)
11048dcb2a10SAndre Fischer                     {
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 
11098dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
11108dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
11118dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetGradientList());
11128dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
11138dcb2a10SAndre Fischer                     }
11148dcb2a10SAndre Fischer                     else
1115d74d90d6SArmin Le Grand                     {
11168dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
11178dcb2a10SAndre Fischer                     }
11188dcb2a10SAndre Fischer                 }
11198dcb2a10SAndre Fischer             }
1120d74d90d6SArmin Le Grand             break;
1121d74d90d6SArmin Le Grand         }
1122d74d90d6SArmin Le Grand         case SID_HATCH_LIST:
11238dcb2a10SAndre Fischer         {
11248dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
11258dcb2a10SAndre Fischer             {
1126d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
11278dcb2a10SAndre Fischer                 {
11288dcb2a10SAndre Fischer                     if(mpHatchItem)
11298dcb2a10SAndre Fischer                     {
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 
11348dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
11358dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
11368dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetHatchList());
11378dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
11388dcb2a10SAndre Fischer                     }
11398dcb2a10SAndre Fischer                     else
1140d74d90d6SArmin Le Grand                     {
11418dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
11428dcb2a10SAndre Fischer                     }
11438dcb2a10SAndre Fischer                 }
11448dcb2a10SAndre Fischer             }
1145d74d90d6SArmin Le Grand             break;
1146d74d90d6SArmin Le Grand         }
1147d74d90d6SArmin Le Grand         case SID_BITMAP_LIST:
11488dcb2a10SAndre Fischer         {
11498dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
11508dcb2a10SAndre Fischer             {
1151d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
11528dcb2a10SAndre Fischer                 {
11538dcb2a10SAndre Fischer                     if(mpBitmapItem)
11548dcb2a10SAndre Fischer                     {
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 
11598dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
11608dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
11618dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetBitmapList());
11628dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
11638dcb2a10SAndre Fischer                     }
11648dcb2a10SAndre Fischer                     else
1165d74d90d6SArmin Le Grand                     {
11668dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
11678dcb2a10SAndre Fischer                     }
11688dcb2a10SAndre Fischer                 }
11698dcb2a10SAndre Fischer             }
1170d74d90d6SArmin Le Grand             break;
11718dcb2a10SAndre Fischer         }
1172d74d90d6SArmin Le Grand     }
11736a606da0SAndre Fischer 
11746a606da0SAndre Fischer     maLayouter.Layout();
1175d74d90d6SArmin Le Grand }
11768dcb2a10SAndre Fischer 
11778dcb2a10SAndre Fischer 
117845da7d5eSAndre Fischer 
GetBindings()11798dcb2a10SAndre Fischer SfxBindings* AreaPropertyPanel::GetBindings()
11808dcb2a10SAndre Fischer {
11818dcb2a10SAndre Fischer     return mpBindings;
11828dcb2a10SAndre Fischer }
11838dcb2a10SAndre Fischer 
11848dcb2a10SAndre Fischer 
11858dcb2a10SAndre Fischer 
Update()11868dcb2a10SAndre Fischer void AreaPropertyPanel::Update()
11878dcb2a10SAndre Fischer {
11888dcb2a10SAndre Fischer     if(mpStyleItem)
11898dcb2a10SAndre Fischer     {
1190d74d90d6SArmin Le Grand         const XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
11918dcb2a10SAndre Fischer         SfxObjectShell* pSh = SfxObjectShell::Current();
11928dcb2a10SAndre Fischer 
11938dcb2a10SAndre Fischer         switch( eXFS )
11948dcb2a10SAndre Fischer         {
11958dcb2a10SAndre Fischer             case XFILL_NONE:
11968dcb2a10SAndre Fischer             {
1197d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1198d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
11998dcb2a10SAndre Fischer                 break;
1200d74d90d6SArmin Le Grand             }
12018dcb2a10SAndre Fischer             case XFILL_SOLID:
12028dcb2a10SAndre Fischer             {
12038dcb2a10SAndre Fischer                 if(mpColorItem)
12048dcb2a10SAndre Fischer                 {
1205d74d90d6SArmin Le Grand                     mpLbFillAttr->Hide();
1206d74d90d6SArmin Le Grand                     mpToolBoxColor->Show();
12078dcb2a10SAndre Fischer                     mpColorUpdater->Update(mpColorItem->GetColorValue());
12088dcb2a10SAndre Fischer                 }
12098dcb2a10SAndre Fischer                 else
1210d74d90d6SArmin Le Grand                 {
12118dcb2a10SAndre Fischer                     mpColorUpdater->Update(COL_WHITE);
12128dcb2a10SAndre Fischer                 }
12138dcb2a10SAndre Fischer                 break;
1214d74d90d6SArmin Le Grand             }
12158dcb2a10SAndre Fischer             case XFILL_GRADIENT:
12168dcb2a10SAndre Fischer             {
1217d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1218d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1219d74d90d6SArmin Le Grand 
12208dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
12218dcb2a10SAndre Fischer                 {
1222d74d90d6SArmin Le Grand                     const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
12238dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
12248dcb2a10SAndre Fischer                     mpLbFillAttr->Clear();
12258dcb2a10SAndre Fischer                     mpLbFillAttr->Fill(aItem.GetGradientList());
1226d74d90d6SArmin Le Grand 
12278dcb2a10SAndre Fischer                     if(mpFillGradientItem)
12288dcb2a10SAndre Fischer                     {
1229d74d90d6SArmin Le Grand                         const String aString(mpFillGradientItem->GetName());
1230d74d90d6SArmin Le Grand 
12318dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
12328dcb2a10SAndre Fischer                     }
12338dcb2a10SAndre Fischer                     else
1234d74d90d6SArmin Le Grand                     {
12358dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
12368dcb2a10SAndre Fischer                     }
1237d74d90d6SArmin Le Grand                 }
12388dcb2a10SAndre Fischer                 else
1239d74d90d6SArmin Le Grand                 {
12408dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
12418dcb2a10SAndre Fischer                 }
12428dcb2a10SAndre Fischer                 break;
1243d74d90d6SArmin Le Grand             }
12448dcb2a10SAndre Fischer             case XFILL_HATCH:
12458dcb2a10SAndre Fischer             {
1246d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1247d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1248d74d90d6SArmin Le Grand 
12498dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_HATCH_LIST))
12508dcb2a10SAndre Fischer                 {
1251d74d90d6SArmin Le Grand                     const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
12528dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
12538dcb2a10SAndre Fischer                     mpLbFillAttr->Clear();
12548dcb2a10SAndre Fischer                     mpLbFillAttr->Fill(aItem.GetHatchList());
1255d74d90d6SArmin Le Grand 
12568dcb2a10SAndre Fischer                     if(mpHatchItem)
12578dcb2a10SAndre Fischer                     {
1258d74d90d6SArmin Le Grand                         const String aString(mpHatchItem->GetName());
1259d74d90d6SArmin Le Grand 
12608dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry( aString );
12618dcb2a10SAndre Fischer                     }
12628dcb2a10SAndre Fischer                     else
1263d74d90d6SArmin Le Grand                     {
12648dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
12658dcb2a10SAndre Fischer                     }
1266d74d90d6SArmin Le Grand                 }
12678dcb2a10SAndre Fischer                 else
1268d74d90d6SArmin Le Grand                 {
12698dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
12708dcb2a10SAndre Fischer                 }
12718dcb2a10SAndre Fischer                 break;
1272d74d90d6SArmin Le Grand             }
12738dcb2a10SAndre Fischer             case XFILL_BITMAP:
12748dcb2a10SAndre Fischer             {
1275d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1276d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1277d74d90d6SArmin Le Grand 
12788dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_BITMAP_LIST))
12798dcb2a10SAndre Fischer                 {
1280d74d90d6SArmin Le Grand                     const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
12818dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
12828dcb2a10SAndre Fischer                     mpLbFillAttr->Clear();
12838dcb2a10SAndre Fischer                     mpLbFillAttr->Fill(aItem.GetBitmapList());
1284d74d90d6SArmin Le Grand 
12858dcb2a10SAndre Fischer                     if(mpBitmapItem)
12868dcb2a10SAndre Fischer                     {
1287d74d90d6SArmin Le Grand                         const String aString(mpBitmapItem->GetName());
1288d74d90d6SArmin Le Grand 
12898dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
12908dcb2a10SAndre Fischer                     }
12918dcb2a10SAndre Fischer                     else
1292d74d90d6SArmin Le Grand                     {
12938dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
12948dcb2a10SAndre Fischer                     }
1295d74d90d6SArmin Le Grand                 }
12968dcb2a10SAndre Fischer                 else
1297d74d90d6SArmin Le Grand                 {
12988dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
12998dcb2a10SAndre Fischer                 }
13008dcb2a10SAndre Fischer                 break;
1301d74d90d6SArmin Le Grand             }
13028dcb2a10SAndre Fischer             default:
1303d74d90d6SArmin Le Grand                 DBG_ERROR( "Non supported FillType (!)" );
13048dcb2a10SAndre Fischer             break;
13058dcb2a10SAndre Fischer         }
13068dcb2a10SAndre Fischer     }
13078dcb2a10SAndre Fischer }
13088dcb2a10SAndre Fischer 
13098dcb2a10SAndre Fischer 
13108dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ImplPopupModeEndHdl,FloatingWindow *,EMPTYARG)13118dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
13128dcb2a10SAndre Fischer {
13138dcb2a10SAndre Fischer     return 0;
13148dcb2a10SAndre Fischer }
13158dcb2a10SAndre Fischer 
13168dcb2a10SAndre Fischer 
13178dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ClickTrGrHdl_Impl,ToolBox *,pToolBox)13188dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ClickTrGrHdl_Impl, ToolBox*, pToolBox )
13198dcb2a10SAndre Fischer {
13208dcb2a10SAndre Fischer     maTrGrPopup.Rearrange(mpFloatTransparenceItem.get());
13218dcb2a10SAndre Fischer     OSL_ASSERT(pToolBox->GetCurItemId() == TBI_BTX_GRADIENT);
13228dcb2a10SAndre Fischer     maTrGrPopup.Show(*pToolBox);
13238dcb2a10SAndre Fischer 
13248dcb2a10SAndre Fischer     return (0L);
13258dcb2a10SAndre Fischer }
13268dcb2a10SAndre Fischer 
13278dcb2a10SAndre Fischer 
13288dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ChangeTrgrTypeHdl_Impl,void *,EMPTYARG)13298dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG)
13308dcb2a10SAndre Fischer {
13318dcb2a10SAndre Fischer     sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
13328dcb2a10SAndre Fischer     bool bGradient = false;
13338dcb2a10SAndre Fischer     sal_uInt16 nTrans = 0;
13348dcb2a10SAndre Fischer 
1335d74d90d6SArmin Le Grand     if(!nSelectType)
13368dcb2a10SAndre Fischer     {
13378dcb2a10SAndre Fischer         mpBTNGradient->Hide();
13388dcb2a10SAndre Fischer         mpMTRTransparent->Show();
13398dcb2a10SAndre Fischer         mpMTRTransparent->Enable();
13408dcb2a10SAndre Fischer         mpMTRTransparent->SetValue(0);
13418dcb2a10SAndre Fischer     }
1342d74d90d6SArmin Le Grand     else if(1 == nSelectType)
13438dcb2a10SAndre Fischer     {
13448dcb2a10SAndre Fischer         mpBTNGradient->Hide();
13458dcb2a10SAndre Fischer         mpMTRTransparent->Show();
13468dcb2a10SAndre Fischer         nTrans = mnLastTransSolid;
13478dcb2a10SAndre Fischer         mpMTRTransparent->SetValue(nTrans);
1348d74d90d6SArmin Le Grand         mpLBTransType->SelectEntryPos(1);
13498dcb2a10SAndre Fischer         mpMTRTransparent->Enable();
13508dcb2a10SAndre Fischer     }
13518dcb2a10SAndre Fischer     else
13528dcb2a10SAndre Fischer     {
13538dcb2a10SAndre Fischer         mpBTNGradient->Show();
1354d74d90d6SArmin Le Grand 
13558dcb2a10SAndre Fischer         switch (nSelectType)
13568dcb2a10SAndre Fischer         {
13578dcb2a10SAndre Fischer             case 2:
1358d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgLinearH : maImgLinear);
13598dcb2a10SAndre Fischer                 break;
13608dcb2a10SAndre Fischer             case 3:
13618dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgAxialH : maImgAxial);
13628dcb2a10SAndre Fischer                 break;
13638dcb2a10SAndre Fischer             case 4:
13648dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgRadialH : maImgRadial);
13658dcb2a10SAndre Fischer                 break;
13668dcb2a10SAndre Fischer             case 5:
13678dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgElliH : maImgElli );
13688dcb2a10SAndre Fischer                 break;
13698dcb2a10SAndre Fischer             case 6:
13708dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgQuadH : maImgQuad );
13718dcb2a10SAndre Fischer                 break;
13728dcb2a10SAndre Fischer             case 7:
13738dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSquareH : maImgSquare);
13748dcb2a10SAndre Fischer                 break;
13758dcb2a10SAndre Fischer         }
1376d74d90d6SArmin Le Grand 
13778dcb2a10SAndre Fischer         mpMTRTransparent->Hide();
13788dcb2a10SAndre Fischer         mpBTNGradient->Enable();
13798dcb2a10SAndre Fischer         bGradient = true;
13808dcb2a10SAndre Fischer     }
13818dcb2a10SAndre Fischer 
1382d74d90d6SArmin Le Grand     const XFillTransparenceItem aLinearItem(nTrans);
13838dcb2a10SAndre Fischer     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
13848dcb2a10SAndre Fischer 
1385d74d90d6SArmin Le Grand     if(nSelectType > 1)
1386d74d90d6SArmin Le Grand     {
1387d74d90d6SArmin Le Grand         nSelectType -= 2;
1388d74d90d6SArmin Le Grand     }
13898dcb2a10SAndre Fischer 
13908dcb2a10SAndre Fischer     XGradient aTmpGradient;
13918dcb2a10SAndre Fischer 
13928dcb2a10SAndre Fischer     switch(nSelectType)
13938dcb2a10SAndre Fischer     {
13948dcb2a10SAndre Fischer         case XGRAD_LINEAR:
13958dcb2a10SAndre Fischer             aTmpGradient = maGradientLinear;
13968dcb2a10SAndre Fischer             break;
13978dcb2a10SAndre Fischer         case XGRAD_AXIAL:
13988dcb2a10SAndre Fischer             aTmpGradient = maGradientAxial;
13998dcb2a10SAndre Fischer             break;
14008dcb2a10SAndre Fischer         case XGRAD_RADIAL:
14018dcb2a10SAndre Fischer             aTmpGradient = maGradientRadial;
14028dcb2a10SAndre Fischer             break;
14038dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
14048dcb2a10SAndre Fischer             aTmpGradient = maGradientElliptical;
14058dcb2a10SAndre Fischer             break;
14068dcb2a10SAndre Fischer         case XGRAD_SQUARE:
14078dcb2a10SAndre Fischer             aTmpGradient = maGradientSquare;
14088dcb2a10SAndre Fischer             break;
14098dcb2a10SAndre Fischer         case XGRAD_RECT:
14108dcb2a10SAndre Fischer             aTmpGradient = maGradientRect;
14118dcb2a10SAndre Fischer             break;
14128dcb2a10SAndre Fischer     }
14138dcb2a10SAndre Fischer 
1414d74d90d6SArmin Le Grand     SfxItemPool* pPool = 0;
1415d74d90d6SArmin Le Grand     const XFillFloatTransparenceItem aGradientItem(pPool, aTmpGradient, sal_Bool(bGradient));
14168dcb2a10SAndre Fischer     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_FLOATTRANSPARENCE, SFX_CALLMODE_RECORD, &aGradientItem, 0L );
14178dcb2a10SAndre Fischer 
14188dcb2a10SAndre Fischer     return( 0L );
14198dcb2a10SAndre Fischer }
14208dcb2a10SAndre Fischer 
14218dcb2a10SAndre Fischer 
14228dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ModifyTransparentHdl_Impl,void *,EMPTYARG)14238dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ModifyTransparentHdl_Impl, void*, EMPTYARG)
14248dcb2a10SAndre Fischer {
1425d74d90d6SArmin Le Grand     const sal_uInt16 nTrans = (sal_uInt16)mpMTRTransparent->GetValue();
14268dcb2a10SAndre Fischer     mnLastTransSolid = nTrans;
1427d74d90d6SArmin Le Grand     const sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
1428d74d90d6SArmin Le Grand 
1429d74d90d6SArmin Le Grand     if(nTrans && !nSelectType)
1430d74d90d6SArmin Le Grand     {
14318dcb2a10SAndre Fischer         mpLBTransType->SelectEntryPos(1);
1432d74d90d6SArmin Le Grand     }
1433d74d90d6SArmin Le Grand 
1434d74d90d6SArmin Le Grand     const XFillTransparenceItem aLinearItem(nTrans);
14358dcb2a10SAndre Fischer     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
14368dcb2a10SAndre Fischer 
14378dcb2a10SAndre Fischer     return 0L;
14388dcb2a10SAndre Fischer }
14398dcb2a10SAndre Fischer 
14408dcb2a10SAndre Fischer 
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:
14548dcb2a10SAndre Fischer         case XGRAD_LINEAR:
14558dcb2a10SAndre Fischer             return maGradientLinear;
14568dcb2a10SAndre Fischer         case XGRAD_AXIAL:
14578dcb2a10SAndre Fischer             return maGradientAxial;
14588dcb2a10SAndre Fischer         case XGRAD_RADIAL:
14598dcb2a10SAndre Fischer             return maGradientRadial;
14608dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
14618dcb2a10SAndre Fischer             return maGradientElliptical;
14628dcb2a10SAndre Fischer         case XGRAD_SQUARE:
14638dcb2a10SAndre Fischer             return maGradientSquare;
14648dcb2a10SAndre Fischer         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:
14778dcb2a10SAndre Fischer             maGradientLinear = rGradient;
14788dcb2a10SAndre Fischer             break;
14798dcb2a10SAndre Fischer         case XGRAD_AXIAL:
14808dcb2a10SAndre Fischer             maGradientAxial = rGradient;
14818dcb2a10SAndre Fischer             break;
14828dcb2a10SAndre Fischer         case XGRAD_RADIAL:
14838dcb2a10SAndre Fischer             maGradientRadial = rGradient;
14848dcb2a10SAndre Fischer             break;
14858dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
14868dcb2a10SAndre Fischer             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;
14948dcb2a10SAndre Fischer     }
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 }
15048dcb2a10SAndre Fischer 
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