xref: /trunk/main/svx/source/sidebar/area/AreaPropertyPanel.cxx (revision 627628354578bc12b977fd84871d68bc0860b13f)
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 
22*62762835Smseidel 
23*62762835Smseidel 
248dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx"
258dcb2a10SAndre Fischer #include "AreaTransparencyGradientControl.hxx"
268dcb2a10SAndre Fischer 
27d29c2fc2SAndre Fischer #include <sfx2/sidebar/ResourceDefinitions.hrc>
288dcb2a10SAndre Fischer #include <sfx2/sidebar/Theme.hxx>
298dcb2a10SAndre Fischer #include <sfx2/sidebar/ControlFactory.hxx>
306a606da0SAndre Fischer #include <sfx2/sidebar/Layouter.hxx>
318dcb2a10SAndre Fischer #include <AreaPropertyPanel.hxx>
328dcb2a10SAndre Fischer #include <AreaPropertyPanel.hrc>
338dcb2a10SAndre Fischer #include <svx/dialogs.hrc>
348dcb2a10SAndre Fischer #include <svx/dialmgr.hxx>
358dcb2a10SAndre Fischer #include <sfx2/objsh.hxx>
368dcb2a10SAndre Fischer #include <svx/xfltrit.hxx>
378dcb2a10SAndre Fischer #include <svx/xflftrit.hxx>
388dcb2a10SAndre Fischer #include <svx/xtable.hxx>
398dcb2a10SAndre Fischer #include <sfx2/dispatch.hxx>
408dcb2a10SAndre Fischer #include <sfx2/bindings.hxx>
418dcb2a10SAndre Fischer #include <helpid.hrc>
428dcb2a10SAndre Fischer #include <svtools/valueset.hxx>
438dcb2a10SAndre Fischer #include <unotools/pathoptions.hxx>
448dcb2a10SAndre Fischer #include <svx/svxitems.hrc>
458dcb2a10SAndre Fischer #include <vcl/toolbox.hxx>
468dcb2a10SAndre Fischer #include <svtools/toolbarmenu.hxx>
47facb16e7SArmin Le Grand #include <svx/sidebar/ColorControl.hxx>
488dcb2a10SAndre Fischer 
498dcb2a10SAndre Fischer #include <boost/bind.hpp>
508dcb2a10SAndre Fischer 
518dcb2a10SAndre Fischer using namespace css;
528dcb2a10SAndre Fischer using namespace cssu;
536a606da0SAndre Fischer using ::sfx2::sidebar::Layouter;
548dcb2a10SAndre Fischer using ::sfx2::sidebar::Theme;
558dcb2a10SAndre Fischer 
568dcb2a10SAndre Fischer #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
578dcb2a10SAndre Fischer 
588dcb2a10SAndre Fischer 
598dcb2a10SAndre Fischer 
608dcb2a10SAndre Fischer 
618dcb2a10SAndre Fischer namespace svx { namespace sidebar {
628dcb2a10SAndre Fischer 
638dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERX = 50;
648dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_CENTERY = 50;
658dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ANGLE = 0;
668dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_STARTVALUE = 0;
678dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_ENDVALUE = 16777215;
688dcb2a10SAndre Fischer const sal_Int32 AreaPropertyPanel::DEFAULT_BORDER = 0;
698dcb2a10SAndre Fischer 
708dcb2a10SAndre Fischer 
AreaPropertyPanel(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)718dcb2a10SAndre Fischer AreaPropertyPanel::AreaPropertyPanel(
728dcb2a10SAndre Fischer     Window* pParent,
738dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
748dcb2a10SAndre Fischer     SfxBindings* pBindings)
75ee093554SAndre Fischer     : Control(pParent, SVX_RES(RID_SIDEBAR_AREA_PANEL)),
768dcb2a10SAndre Fischer       meLastXFS(-1),
778dcb2a10SAndre Fischer       maLastColor(Color(COL_DEFAULT_SHAPE_FILLING)),
788dcb2a10SAndre Fischer       mnLastPosGradient(0),
798dcb2a10SAndre Fischer       mnLastPosHatch(0),
808dcb2a10SAndre Fischer       mnLastPosBitmap(0),
818dcb2a10SAndre Fischer       mnLastTransSolid(50),
828dcb2a10SAndre Fischer       maGradientLinear(),
838dcb2a10SAndre Fischer       maGradientAxial(),
848dcb2a10SAndre Fischer       maGradientRadial(),
858dcb2a10SAndre Fischer       maGradientElliptical(),
868dcb2a10SAndre Fischer       maGradientSquare(),
878dcb2a10SAndre Fischer       maGradientRect(),
888dcb2a10SAndre Fischer       mpColorTextFT(new FixedText(this, SVX_RES(FT_COLOR_LIST))),
898dcb2a10SAndre Fischer       mpLbFillType(new SvxFillTypeBox(this)),
908dcb2a10SAndre Fischer       mpLbFillAttr(new SvxFillAttrBox(this)),
918dcb2a10SAndre Fischer       mpToolBoxColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
928dcb2a10SAndre Fischer       mpToolBoxColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpToolBoxColorBackground.get(), SVX_RES(TB_COLOR))),
938dcb2a10SAndre Fischer       mpTrspTextFT(new FixedText(this, SVX_RES(FL_TRSP_TEXT))),
948dcb2a10SAndre Fischer       mpLBTransType(new ListBox(this, SVX_RES(LB_TRGR_TYPES))),
958dcb2a10SAndre Fischer       mpMTRTransparent(new MetricField(this, SVX_RES(MTR_TRANSPARENT))),
968dcb2a10SAndre Fischer       mpBTNGradientBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
978dcb2a10SAndre Fischer       mpBTNGradient(sfx2::sidebar::ControlFactory::CreateToolBox(mpBTNGradientBackground.get(), SVX_RES(BTN_GRADIENT))),
988dcb2a10SAndre Fischer       mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_FILL_COLOR, TBI_COLOR, mpToolBoxColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
998dcb2a10SAndre Fischer       mpStyleItem(),
1008dcb2a10SAndre Fischer       mpColorItem(),
1018dcb2a10SAndre Fischer       mpFillGradientItem(),
1028dcb2a10SAndre Fischer       mpHatchItem(),
1038dcb2a10SAndre Fischer       mpBitmapItem(),
1048dcb2a10SAndre Fischer       maStyleControl(SID_ATTR_FILL_STYLE, *pBindings, *this),
1058dcb2a10SAndre Fischer       maColorControl(SID_ATTR_FILL_COLOR, *pBindings, *this),
1068dcb2a10SAndre Fischer       maGradientControl(SID_ATTR_FILL_GRADIENT, *pBindings, *this),
1078dcb2a10SAndre Fischer       maHatchControl(SID_ATTR_FILL_HATCH, *pBindings, *this),
1088dcb2a10SAndre Fischer       maBitmapControl(SID_ATTR_FILL_BITMAP, *pBindings, *this),
1098dcb2a10SAndre Fischer       maColorTableControl(SID_COLOR_TABLE, *pBindings, *this),
1108dcb2a10SAndre Fischer       maGradientListControl(SID_GRADIENT_LIST, *pBindings, *this),
1118dcb2a10SAndre Fischer       maHatchListControl(SID_HATCH_LIST, *pBindings, *this),
1128dcb2a10SAndre Fischer       maBitmapListControl(SID_BITMAP_LIST, *pBindings, *this),
1138dcb2a10SAndre Fischer       maFillTransparenceController(SID_ATTR_FILL_TRANSPARENCE, *pBindings, *this),
1148dcb2a10SAndre Fischer       maFillFloatTransparenceController(SID_ATTR_FILL_FLOATTRANSPARENCE, *pBindings, *this),
1158dcb2a10SAndre Fischer       maImgAxial(SVX_RES(IMG_AXIAL)),
1168dcb2a10SAndre Fischer       maImgElli(SVX_RES(IMG_ELLI)),
1178dcb2a10SAndre Fischer       maImgQuad(SVX_RES(IMG_QUAD)),
1188dcb2a10SAndre Fischer       maImgRadial(SVX_RES(IMG_RADIAL)),
1198dcb2a10SAndre Fischer       maImgSquare(SVX_RES(IMG_SQUARE)),
1208dcb2a10SAndre Fischer       maImgLinear(SVX_RES(IMG_LINEAR)),
1218dcb2a10SAndre Fischer       maImgColor(SVX_RES(IMG_COLOR)),
1228dcb2a10SAndre Fischer       maImgAxialH(SVX_RES(IMG_AXIAL_H)),
1238dcb2a10SAndre Fischer       maImgElliH(SVX_RES(IMG_ELLI_H)),
1248dcb2a10SAndre Fischer       maImgQuadH(SVX_RES(IMG_QUAD_H)),
1258dcb2a10SAndre Fischer       maImgRadialH(SVX_RES(IMG_RADIAL_H)),
1268dcb2a10SAndre Fischer       maImgSquareH(SVX_RES(IMG_SQUARE_H)),
1278dcb2a10SAndre Fischer       maImgLinearH(SVX_RES(IMG_LINEAR_H)),
1288dcb2a10SAndre Fischer       maImgColorH(SVX_RES(IMG_COLOR_H)),
1298dcb2a10SAndre Fischer       msHelpFillType(SVX_RES(STR_HELP_TYPE)),
1308dcb2a10SAndre Fischer       msHelpFillAttr(SVX_RES(STR_HELP_ATTR)),
1318dcb2a10SAndre Fischer       maTrGrPopup(this, ::boost::bind(&AreaPropertyPanel::CreateTransparencyGradientControl, this, _1)),
1328dcb2a10SAndre Fischer       maColorPopup(this, ::boost::bind(&AreaPropertyPanel::CreateColorPopupControl, this, _1)),
1338dcb2a10SAndre Fischer       mpFloatTransparenceItem(),
1348dcb2a10SAndre Fischer       mpTransparanceItem(),
1358dcb2a10SAndre Fischer       mxFrame(rxFrame),
1368dcb2a10SAndre Fischer       mpBindings(pBindings),
1376a606da0SAndre Fischer       mbColorAvail(true),
1386a606da0SAndre Fischer       maLayouter(*this)
1398dcb2a10SAndre Fischer {
1408dcb2a10SAndre Fischer     Initialize();
1418dcb2a10SAndre Fischer     FreeResource();
1426a606da0SAndre Fischer 
1436a606da0SAndre Fischer     // Setup the grid layouter.
1446a606da0SAndre Fischer     const sal_Int32 nMappedMboxWidth (Layouter::MapWidth(*this, MBOX_WIDTH));
1456a606da0SAndre Fischer 
1466a606da0SAndre Fischer     maLayouter.GetCell(0,0).SetControl(*mpColorTextFT).SetGridWidth(3);
1476a606da0SAndre Fischer     maLayouter.GetCell(1,0).SetControl(*mpLbFillType);
1486a606da0SAndre Fischer     maLayouter.GetCell(1,2,0).SetControl(*mpToolBoxColorBackground).SetFixedWidth();
1496a606da0SAndre Fischer     maLayouter.GetCell(1,2,1).SetControl(*mpLbFillAttr);
1506a606da0SAndre Fischer 
1516a606da0SAndre Fischer     maLayouter.GetCell(2,0).SetControl(*mpTrspTextFT).SetGridWidth(3);
1526a606da0SAndre Fischer     maLayouter.GetCell(3,0).SetControl(*mpLBTransType);
1536a606da0SAndre Fischer     maLayouter.GetCell(3,2,0).SetControl(*mpMTRTransparent);
1546a606da0SAndre Fischer     maLayouter.GetCell(3,2,1).SetControl(*mpBTNGradient);
1556a606da0SAndre Fischer 
1566a606da0SAndre Fischer     maLayouter.GetColumn(0)
1576a606da0SAndre Fischer         .SetWeight(1)
1586a606da0SAndre Fischer         .SetLeftPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL))
1596a606da0SAndre Fischer         .SetMinimumWidth(nMappedMboxWidth);
1606a606da0SAndre Fischer     maLayouter.GetColumn(1)
1616a606da0SAndre Fischer         .SetWeight(0)
1626a606da0SAndre Fischer         .SetMinimumWidth(Layouter::MapWidth(*this, CONTROL_SPACING_HORIZONTAL));
1636a606da0SAndre Fischer     maLayouter.GetColumn(2)
1646a606da0SAndre Fischer         .SetWeight(1)
1656a606da0SAndre Fischer         .SetMinimumWidth(nMappedMboxWidth)
1666a606da0SAndre Fischer         .SetRightPadding(Layouter::MapWidth(*this,SECTIONPAGE_MARGIN_HORIZONTAL));
1676a606da0SAndre Fischer 
1686a606da0SAndre Fischer     // Make controls that display text handle short widths more
1696a606da0SAndre Fischer     // graceful.
1706a606da0SAndre Fischer     Layouter::PrepareForLayouting(*mpColorTextFT);
1716a606da0SAndre Fischer     Layouter::PrepareForLayouting(*mpTrspTextFT);
1728dcb2a10SAndre Fischer }
1738dcb2a10SAndre Fischer 
1748dcb2a10SAndre Fischer 
1758dcb2a10SAndre Fischer 
~AreaPropertyPanel()1768dcb2a10SAndre Fischer AreaPropertyPanel::~AreaPropertyPanel()
1778dcb2a10SAndre Fischer {
1788dcb2a10SAndre Fischer     // Destroy the toolboxes, then their background windows.
1798dcb2a10SAndre Fischer     mpToolBoxColor.reset();
1808dcb2a10SAndre Fischer     mpBTNGradient.reset();
1818dcb2a10SAndre Fischer     mpToolBoxColorBackground.reset();
1828dcb2a10SAndre Fischer     mpBTNGradientBackground.reset();
1838dcb2a10SAndre Fischer }
1848dcb2a10SAndre Fischer 
1858dcb2a10SAndre Fischer 
1868dcb2a10SAndre Fischer 
Initialize()1878dcb2a10SAndre Fischer void AreaPropertyPanel::Initialize()
1888dcb2a10SAndre Fischer {
18937fee4fdSAndre Fischer     mpColorTextFT->SetBackground(Wallpaper());
19037fee4fdSAndre Fischer     mpTrspTextFT->SetBackground(Wallpaper());
19137fee4fdSAndre Fischer 
1928dcb2a10SAndre Fischer     maGradientLinear.SetXOffset(DEFAULT_CENTERX);
1938dcb2a10SAndre Fischer     maGradientLinear.SetYOffset(DEFAULT_CENTERY);
1948dcb2a10SAndre Fischer     maGradientLinear.SetAngle(DEFAULT_ANGLE);
1958dcb2a10SAndre Fischer     maGradientLinear.SetStartColor(Color(DEFAULT_STARTVALUE));
1968dcb2a10SAndre Fischer     maGradientLinear.SetEndColor(Color(DEFAULT_ENDVALUE));
1978dcb2a10SAndre Fischer     maGradientLinear.SetBorder(DEFAULT_BORDER);
1988dcb2a10SAndre Fischer     maGradientLinear.SetGradientStyle(XGRAD_LINEAR);
1998dcb2a10SAndre Fischer 
2008dcb2a10SAndre Fischer     maGradientAxial = maGradientLinear;
2018dcb2a10SAndre Fischer     maGradientAxial.SetGradientStyle(XGRAD_AXIAL);
2028dcb2a10SAndre Fischer 
2038dcb2a10SAndre Fischer     maGradientRadial = maGradientLinear;
2048dcb2a10SAndre Fischer     maGradientRadial.SetGradientStyle(XGRAD_RADIAL);
2058dcb2a10SAndre Fischer 
2068dcb2a10SAndre Fischer     maGradientElliptical = maGradientLinear;
2078dcb2a10SAndre Fischer     maGradientElliptical.SetGradientStyle(XGRAD_ELLIPTICAL);
2088dcb2a10SAndre Fischer 
2098dcb2a10SAndre Fischer     maGradientSquare = maGradientLinear;
2108dcb2a10SAndre Fischer     maGradientSquare.SetGradientStyle(XGRAD_SQUARE);
2118dcb2a10SAndre Fischer 
2128dcb2a10SAndre Fischer     maGradientRect = maGradientLinear;
2138dcb2a10SAndre Fischer     maGradientRect.SetGradientStyle(XGRAD_RECT);
2148dcb2a10SAndre Fischer 
2158dcb2a10SAndre Fischer     Size aLogicalFillSize(MBOX_WIDTH,LISTBOX_HEIGHT);
2168dcb2a10SAndre Fischer     Size aLogicalAttrSize(MBOX_WIDTH + 1,LISTBOX_HEIGHT);
2178dcb2a10SAndre Fischer 
2188dcb2a10SAndre Fischer     Point aPoint(SECTIONPAGE_MARGIN_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
2198dcb2a10SAndre Fischer     Point aPoint_Picker(SECTIONPAGE_MARGIN_HORIZONTAL + MBOX_WIDTH + CONTROL_SPACING_HORIZONTAL,SECTIONPAGE_MARGIN_VERTICAL_TOP + FIXED_TEXT_HEIGHT + TEXT_CONTROL_SPACING_VERTICAL);
2208dcb2a10SAndre Fischer 
2218dcb2a10SAndre Fischer     Size aTypeSize(LogicToPixel(aLogicalFillSize, MAP_APPFONT));
2228dcb2a10SAndre Fischer     Size aAttrSize(LogicToPixel(aLogicalAttrSize, MAP_APPFONT));
2238dcb2a10SAndre Fischer 
2248dcb2a10SAndre Fischer     Point aTypePoint(LogicToPixel(aPoint, MAP_APPFONT));
2258dcb2a10SAndre Fischer     Point aAttrPoint(LogicToPixel(aPoint_Picker, MAP_APPFONT));
2268dcb2a10SAndre Fischer 
2278dcb2a10SAndre Fischer     mpLbFillType->SetPosSizePixel(aTypePoint,aTypeSize);
2288dcb2a10SAndre Fischer     mpLbFillAttr->SetPosSizePixel(aAttrPoint,aAttrSize);
2298dcb2a10SAndre Fischer 
2308dcb2a10SAndre Fischer     mpLbFillType->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_TYPES);
2318dcb2a10SAndre Fischer     mpLbFillAttr->SetHelpId(HID_PPROPERTYPANEL_AREA_LB_FILL_ATTR);
2328dcb2a10SAndre Fischer 
2338dcb2a10SAndre Fischer     mpLbFillType->SetQuickHelpText(msHelpFillType);
2348dcb2a10SAndre Fischer     mpLbFillAttr->SetQuickHelpText(msHelpFillAttr);
2358dcb2a10SAndre Fischer 
2368dcb2a10SAndre Fischer     mpLbFillType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill"))); // wj acc
2378dcb2a10SAndre Fischer     mpLbFillAttr->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Fill"))); // wj acc
2388dcb2a10SAndre Fischer 
2398dcb2a10SAndre Fischer     Link aLink = LINK( this, AreaPropertyPanel, SelectFillTypeHdl );
2408dcb2a10SAndre Fischer     mpLbFillType->SetSelectHdl( aLink );
2418dcb2a10SAndre Fischer 
2428dcb2a10SAndre Fischer     aLink = LINK( this, AreaPropertyPanel, SelectFillAttrHdl );
2438dcb2a10SAndre Fischer     mpLbFillAttr->SetSelectHdl( aLink );
2448dcb2a10SAndre Fischer 
2458dcb2a10SAndre Fischer     // add for new color picker
2468dcb2a10SAndre Fischer     mpLbFillAttr->Hide();
2478dcb2a10SAndre Fischer     mpToolBoxColor->SetItemImage(TBI_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgColorH : maImgColor);
2488dcb2a10SAndre Fischer     Size aTbxSize( mpToolBoxColor->CalcWindowSizePixel() );
2498dcb2a10SAndre Fischer     mpToolBoxColor->SetOutputSizePixel( aTbxSize );
2508dcb2a10SAndre Fischer     mpToolBoxColor->SetItemBits( TBI_COLOR, mpToolBoxColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY );
2518dcb2a10SAndre Fischer     mpToolBoxColor->SetBackground(Wallpaper());
2528dcb2a10SAndre Fischer     mpToolBoxColor->SetPaintTransparent(true);
2538dcb2a10SAndre Fischer     mpToolBoxColor->SetQuickHelpText(TBI_COLOR, String(SVX_RES(STR_HELP_COLOR))); // wj acc
2548dcb2a10SAndre Fischer     //mpToolBoxColor->SetItemText(TBI_COLOR, msHelpFillAttr);
2558dcb2a10SAndre Fischer 
2568dcb2a10SAndre Fischer     long aHeightLBStyle = mpLbFillType->GetSizePixel().getHeight();
2578dcb2a10SAndre Fischer     long aLBPosY = mpLbFillType->GetPosPixel().getY();
2588dcb2a10SAndre Fischer     long aHeightTBAttr = mpToolBoxColor->GetSizePixel().getHeight();
2598dcb2a10SAndre Fischer     Point aPointTBAttr = mpToolBoxColor->GetPosPixel();
2608dcb2a10SAndre Fischer     aPointTBAttr.setY( aLBPosY + aHeightLBStyle / 2 - aHeightTBAttr / 2);
2618dcb2a10SAndre Fischer     mpToolBoxColor->SetPosPixel(aPointTBAttr);
2628dcb2a10SAndre Fischer 
2638dcb2a10SAndre Fischer     aLink = LINK(this, AreaPropertyPanel, ToolBoxColorDropHdl);
2648dcb2a10SAndre Fischer     mpToolBoxColor->SetDropdownClickHdl ( aLink );
2658dcb2a10SAndre Fischer     mpToolBoxColor->SetSelectHdl ( aLink );
2668dcb2a10SAndre Fischer 
2678dcb2a10SAndre Fischer     // add end
2688dcb2a10SAndre Fischer     mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanel, ChangeTrgrTypeHdl_Impl));
2698dcb2a10SAndre Fischer     mpLBTransType->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); // wj acc
2708dcb2a10SAndre Fischer 
2718dcb2a10SAndre Fischer     mpMTRTransparent->SetValue( 50 );
2728dcb2a10SAndre Fischer     mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanel, ModifyTransparentHdl_Impl));
2738dcb2a10SAndre Fischer     mpMTRTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); // wj acc
2748dcb2a10SAndre Fischer 
2758dcb2a10SAndre Fischer     mpBTNGradient->SetItemBits( TBI_BTX_GRADIENT, mpBTNGradient->GetItemBits( TBI_BTX_GRADIENT ) | TIB_DROPDOWNONLY );
2768dcb2a10SAndre Fischer     aLink = LINK( this, AreaPropertyPanel, ClickTrGrHdl_Impl );
2778dcb2a10SAndre Fischer     mpBTNGradient->SetDropdownClickHdl( aLink );
2788dcb2a10SAndre Fischer     mpBTNGradient->SetSelectHdl( aLink );
2798dcb2a10SAndre Fischer     aTbxSize = mpBTNGradient->CalcWindowSizePixel();
2808dcb2a10SAndre Fischer     mpBTNGradient->SetOutputSizePixel( aTbxSize );
2818dcb2a10SAndre Fischer     mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,maImgLinear);
2828dcb2a10SAndre Fischer     mpBTNGradient->SetQuickHelpText(TBI_BTX_GRADIENT, String(SVX_RES(STR_HELP_GRADIENT))); // wj acc
2838dcb2a10SAndre Fischer     mpBTNGradient->Hide();
2848dcb2a10SAndre Fischer 
2858dcb2a10SAndre Fischer     long aHeightLBTrans = mpLBTransType->GetSizePixel().getHeight();
2868dcb2a10SAndre Fischer     Point aPointLB = mpLBTransType->GetPosPixel();
2878dcb2a10SAndre Fischer     long aPosY = aPointLB.getY();
2888dcb2a10SAndre Fischer 
2898dcb2a10SAndre Fischer     Point aPointMetric = mpMTRTransparent->GetPosPixel();
2908dcb2a10SAndre Fischer     Point aPointTB = mpMTRTransparent->GetPosPixel();
2918dcb2a10SAndre Fischer     long aHeightMetric = mpMTRTransparent->GetSizePixel().getHeight();
2928dcb2a10SAndre Fischer     long aHeightTool = mpBTNGradient->GetSizePixel().getHeight();
2938dcb2a10SAndre Fischer     aPointMetric.setY(aPosY+aHeightLBTrans/2-aHeightMetric/2);
2948dcb2a10SAndre Fischer     aPointTB.setY(aPosY+aHeightLBTrans/2-aHeightTool/2);
2958dcb2a10SAndre Fischer     aPointTB.setX(aPointTB.getX()+3);
2968dcb2a10SAndre Fischer     mpMTRTransparent->SetPosPixel(aPointMetric);
2978dcb2a10SAndre Fischer     mpBTNGradient->SetPosPixel(aPointTB);
2988dcb2a10SAndre Fischer 
2998dcb2a10SAndre Fischer     mpLbFillType->SetAccessibleRelationLabeledBy(mpColorTextFT.get());
3008dcb2a10SAndre Fischer     mpLbFillAttr->SetAccessibleRelationLabeledBy(mpLbFillAttr.get());
3018dcb2a10SAndre Fischer     mpToolBoxColor->SetAccessibleRelationLabeledBy(mpToolBoxColor.get());
3028dcb2a10SAndre Fischer     mpLBTransType->SetAccessibleRelationLabeledBy(mpTrspTextFT.get());
3038dcb2a10SAndre Fischer     mpMTRTransparent->SetAccessibleRelationLabeledBy(mpMTRTransparent.get());
3048dcb2a10SAndre Fischer     mpBTNGradient->SetAccessibleRelationLabeledBy(mpBTNGradient.get());
3058dcb2a10SAndre Fischer 
3068dcb2a10SAndre Fischer     SetupIcons();
3078dcb2a10SAndre Fischer }
3088dcb2a10SAndre Fischer 
3098dcb2a10SAndre Fischer 
3108dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,SelectFillTypeHdl,ListBox *,pToolBox)3118dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillTypeHdl, ListBox *, pToolBox )
3128dcb2a10SAndre Fischer {
313d74d90d6SArmin Le Grand     const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
3148dcb2a10SAndre Fischer 
3158dcb2a10SAndre Fischer     if((XFillStyle)meLastXFS != eXFS)
3168dcb2a10SAndre Fischer     {
3178dcb2a10SAndre Fischer         mpLbFillAttr->Clear();
3188dcb2a10SAndre Fischer         SfxObjectShell* pSh = SfxObjectShell::Current();
319d74d90d6SArmin Le Grand         const XFillStyleItem aXFillStyleItem(eXFS);
3208dcb2a10SAndre Fischer 
32186d608b5SArmin Le Grand         // #122676# Do no longer trigger two Execute calls, one for SID_ATTR_FILL_STYLE
32286d608b5SArmin Le Grand         // and one for setting the fill attribute itself, but add two SfxPoolItems to the
32386d608b5SArmin Le Grand         // call to get just one action at the SdrObject and to create only one Undo action, too.
32486d608b5SArmin Le Grand         // Checked that this works in all apps.
3258dcb2a10SAndre Fischer         switch( eXFS )
3268dcb2a10SAndre Fischer         {
3278dcb2a10SAndre Fischer             case XFILL_NONE:
3288dcb2a10SAndre Fischer             {
3298dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
3308dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
3318dcb2a10SAndre Fischer                 mpLbFillType->Selected();
3328dcb2a10SAndre Fischer                 mpLbFillAttr->Disable();
33386d608b5SArmin Le Grand 
33486d608b5SArmin Le Grand                 // #122676# need to call a single SID_ATTR_FILL_STYLE change
33586d608b5SArmin Le Grand                 GetBindings()->GetDispatcher()->Execute(
33686d608b5SArmin Le Grand                     SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
3378dcb2a10SAndre Fischer                 break;
338d74d90d6SArmin Le Grand             }
3398dcb2a10SAndre Fischer             case XFILL_SOLID:
3408dcb2a10SAndre Fischer             {
3418dcb2a10SAndre Fischer                 mpLbFillAttr->Hide();
3428dcb2a10SAndre Fischer                 mpToolBoxColor->Show();
343d74d90d6SArmin Le Grand                 const String aTmpStr;
344d74d90d6SArmin Le Grand                 const Color aColor = maLastColor;
345d74d90d6SArmin Le Grand                 const XFillColorItem aXFillColorItem( aTmpStr, aColor );
34686d608b5SArmin Le Grand 
34786d608b5SArmin Le Grand                 // #122676# change FillStyle and Color in one call
34886d608b5SArmin Le Grand                 GetBindings()->GetDispatcher()->Execute(
34986d608b5SArmin Le Grand                     SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, &aXFillStyleItem, 0L);
3508dcb2a10SAndre Fischer                 break;
351d74d90d6SArmin Le Grand             }
3528dcb2a10SAndre Fischer             case XFILL_GRADIENT:
3538dcb2a10SAndre Fischer             {
3548dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
3558dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
356d74d90d6SArmin Le Grand 
3578dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
3588dcb2a10SAndre Fischer                 {
359d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
3608dcb2a10SAndre Fischer                     {
361d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
3628dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
3638dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
3648dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetGradientList());
3658dcb2a10SAndre Fischer                     }
3668dcb2a10SAndre Fischer 
367a68b38dfSArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
36897e8a929SArmin Le Grand 
369d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosGradient)
3708dcb2a10SAndre Fischer                     {
371d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
372d74d90d6SArmin Le Grand 
3738dcb2a10SAndre Fischer                         if(mnLastPosGradient < aItem.GetGradientList()->Count())
3748dcb2a10SAndre Fischer                         {
375d74d90d6SArmin Le Grand                             const XGradient aGradient = aItem.GetGradientList()->GetGradient(mnLastPosGradient)->GetGradient();
376d74d90d6SArmin Le Grand                             const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetEntry(mnLastPosGradient), aGradient);
37786d608b5SArmin Le Grand 
37886d608b5SArmin Le Grand                             // #122676# change FillStyle and Gradient in one call
37986d608b5SArmin Le Grand                             GetBindings()->GetDispatcher()->Execute(
38086d608b5SArmin Le Grand                                 SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem, &aXFillStyleItem, 0L);
381d74d90d6SArmin Le Grand                             mpLbFillAttr->SelectEntryPos(mnLastPosGradient);
3828dcb2a10SAndre Fischer                         }
3838dcb2a10SAndre Fischer                     }
3848dcb2a10SAndre Fischer                 }
3858dcb2a10SAndre Fischer                 else
386d74d90d6SArmin Le Grand                 {
3878dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
3888dcb2a10SAndre Fischer                 }
3898dcb2a10SAndre Fischer                 break;
390d74d90d6SArmin Le Grand             }
3918dcb2a10SAndre Fischer             case XFILL_HATCH:
3928dcb2a10SAndre Fischer             {
3938dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
3948dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
395d74d90d6SArmin Le Grand 
3968dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_HATCH_LIST))
3978dcb2a10SAndre Fischer                 {
398d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
3998dcb2a10SAndre Fischer                     {
400d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem( *(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
4018dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
4028dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
4038dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetHatchList());
4048dcb2a10SAndre Fischer                     }
4058dcb2a10SAndre Fischer 
406a68b38dfSArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
40797e8a929SArmin Le Grand 
408d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosHatch)
4098dcb2a10SAndre Fischer                     {
410d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
411d74d90d6SArmin Le Grand 
4128dcb2a10SAndre Fischer                         if(mnLastPosHatch < aItem.GetHatchList()->Count())
4138dcb2a10SAndre Fischer                         {
414d74d90d6SArmin Le Grand                             const XHatch aHatch = aItem.GetHatchList()->GetHatch(mnLastPosHatch)->GetHatch();
415d74d90d6SArmin Le Grand                             const XFillHatchItem aXFillHatchItem(mpLbFillAttr->GetSelectEntry(), aHatch);
41686d608b5SArmin Le Grand 
41786d608b5SArmin Le Grand                             // #122676# change FillStyle and Hatch in one call
41886d608b5SArmin Le Grand                             GetBindings()->GetDispatcher()->Execute(
41986d608b5SArmin Le Grand                                 SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem, &aXFillStyleItem, 0L);
420d74d90d6SArmin Le Grand                             mpLbFillAttr->SelectEntryPos(mnLastPosHatch);
4218dcb2a10SAndre Fischer                         }
4228dcb2a10SAndre Fischer                     }
4238dcb2a10SAndre Fischer                 }
4248dcb2a10SAndre Fischer                 else
425d74d90d6SArmin Le Grand                 {
4268dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
4278dcb2a10SAndre Fischer                 }
4288dcb2a10SAndre Fischer                 break;
429d74d90d6SArmin Le Grand             }
4308dcb2a10SAndre Fischer             case XFILL_BITMAP:
4318dcb2a10SAndre Fischer             {
4328dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
4338dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
434d74d90d6SArmin Le Grand 
4358dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_BITMAP_LIST))
4368dcb2a10SAndre Fischer                 {
437d74d90d6SArmin Le Grand                     if(!mpLbFillAttr->GetEntryCount())
4388dcb2a10SAndre Fischer                     {
439d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem( *(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
4408dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
4418dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
4428dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetBitmapList());
4438dcb2a10SAndre Fischer                     }
4448dcb2a10SAndre Fischer 
445a68b38dfSArmin Le Grand                     mpLbFillAttr->AdaptDropDownLineCountToMaximum();
44697e8a929SArmin Le Grand 
447d74d90d6SArmin Le Grand                     if(LISTBOX_ENTRY_NOTFOUND != mnLastPosBitmap)
4488dcb2a10SAndre Fischer                     {
449d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
450d74d90d6SArmin Le Grand 
4518dcb2a10SAndre Fischer                         if(mnLastPosBitmap < aItem.GetBitmapList()->Count())
4528dcb2a10SAndre Fischer                         {
4538dcb2a10SAndre Fischer                             const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(mnLastPosBitmap);
454d74d90d6SArmin Le Grand                             const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
45586d608b5SArmin Le Grand 
45686d608b5SArmin Le Grand                             // #122676# change FillStyle and Bitmap in one call
45786d608b5SArmin Le Grand                             GetBindings()->GetDispatcher()->Execute(
45886d608b5SArmin Le Grand                                 SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem, &aXFillStyleItem, 0L);
459d74d90d6SArmin Le Grand                             mpLbFillAttr->SelectEntryPos(mnLastPosBitmap);
4608dcb2a10SAndre Fischer                         }
4618dcb2a10SAndre Fischer                     }
4628dcb2a10SAndre Fischer                 }
4638dcb2a10SAndre Fischer                 else
464d74d90d6SArmin Le Grand                 {
4658dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
4668dcb2a10SAndre Fischer                 }
4678dcb2a10SAndre Fischer                 break;
4688dcb2a10SAndre Fischer             }
469d74d90d6SArmin Le Grand         }
470d74d90d6SArmin Le Grand 
4718dcb2a10SAndre Fischer         meLastXFS = (sal_uInt16)eXFS;
472d74d90d6SArmin Le Grand 
473d74d90d6SArmin Le Grand         if(XFILL_NONE != eXFS)
4748dcb2a10SAndre Fischer         {
4758dcb2a10SAndre Fischer             if(pToolBox)
476d74d90d6SArmin Le Grand             {
4778dcb2a10SAndre Fischer                 mpLbFillType->Selected();
4788dcb2a10SAndre Fischer             }
4798dcb2a10SAndre Fischer         }
4806a606da0SAndre Fischer 
4816a606da0SAndre Fischer         maLayouter.Layout();
482d74d90d6SArmin Le Grand     }
483d74d90d6SArmin Le Grand 
4848dcb2a10SAndre Fischer     return 0;
4858dcb2a10SAndre Fischer }
4868dcb2a10SAndre Fischer 
4878dcb2a10SAndre Fischer 
4888dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,SelectFillAttrHdl,ListBox *,pToolBox)4898dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, SelectFillAttrHdl, ListBox*, pToolBox )
4908dcb2a10SAndre Fischer {
491d74d90d6SArmin Le Grand     const XFillStyle eXFS = (XFillStyle)mpLbFillType->GetSelectEntryPos();
492d74d90d6SArmin Le Grand     const XFillStyleItem aXFillStyleItem(eXFS);
4938dcb2a10SAndre Fischer     SfxObjectShell* pSh = SfxObjectShell::Current();
4948dcb2a10SAndre Fischer 
4958dcb2a10SAndre Fischer     if(pToolBox)
4968dcb2a10SAndre Fischer     {
49786d608b5SArmin Le Grand         // #122676# dependent from bFillStyleChange, do execute a single or two
49886d608b5SArmin Le Grand         // changes in one Execute call
49986d608b5SArmin Le Grand         const bool bFillStyleChange((XFillStyle) meLastXFS != eXFS);
5008dcb2a10SAndre Fischer 
5018dcb2a10SAndre Fischer         switch(eXFS)
5028dcb2a10SAndre Fischer         {
5038dcb2a10SAndre Fischer             case XFILL_SOLID:
50486d608b5SArmin Le Grand             {
50586d608b5SArmin Le Grand                 if(bFillStyleChange)
50686d608b5SArmin Le Grand                 {
50786d608b5SArmin Le Grand                     // #122676# Single FillStyle change call needed here
50886d608b5SArmin Le Grand                     GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
50986d608b5SArmin Le Grand                 }
5108dcb2a10SAndre Fischer                 break;
51186d608b5SArmin Le Grand             }
5128dcb2a10SAndre Fischer             case XFILL_GRADIENT:
5138dcb2a10SAndre Fischer             {
5148dcb2a10SAndre Fischer                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
5158dcb2a10SAndre Fischer 
516d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
5178dcb2a10SAndre Fischer                 {
518d74d90d6SArmin Le Grand                     nPos = mnLastPosGradient;
519d74d90d6SArmin Le Grand                 }
520d74d90d6SArmin Le Grand 
521d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_GRADIENT_LIST))
522d74d90d6SArmin Le Grand                 {
523d74d90d6SArmin Le Grand                     const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
524d74d90d6SArmin Le Grand 
5258dcb2a10SAndre Fischer                     if(nPos < aItem.GetGradientList()->Count())
5268dcb2a10SAndre Fischer                     {
527d74d90d6SArmin Le Grand                         const XGradient aGradient = aItem.GetGradientList()->GetGradient(nPos)->GetGradient();
528d74d90d6SArmin Le Grand                         const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetSelectEntry(), aGradient);
52986d608b5SArmin Le Grand 
530*62762835Smseidel                         // #122676# Change FillStyle and Gradient in one call
53186d608b5SArmin Le Grand                         GetBindings()->GetDispatcher()->Execute(
53286d608b5SArmin Le Grand                             SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, &aXFillGradientItem,
53386d608b5SArmin Le Grand                             bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
5348dcb2a10SAndre Fischer                     }
5358dcb2a10SAndre Fischer                 }
536d74d90d6SArmin Le Grand 
537d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
538d74d90d6SArmin Le Grand                 {
5398dcb2a10SAndre Fischer                     mnLastPosGradient = nPos;
5408dcb2a10SAndre Fischer                 }
5418dcb2a10SAndre Fischer                 break;
542d74d90d6SArmin Le Grand             }
5438dcb2a10SAndre Fischer             case XFILL_HATCH:
5448dcb2a10SAndre Fischer             {
5458dcb2a10SAndre Fischer                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
546d74d90d6SArmin Le Grand 
547d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
5488dcb2a10SAndre Fischer                 {
549d74d90d6SArmin Le Grand                     nPos = mnLastPosHatch;
550d74d90d6SArmin Le Grand                 }
551d74d90d6SArmin Le Grand 
552d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_HATCH_LIST))
553d74d90d6SArmin Le Grand                 {
554d74d90d6SArmin Le Grand                     const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
555d74d90d6SArmin Le Grand 
5568dcb2a10SAndre Fischer                     if(nPos < aItem.GetHatchList()->Count())
5578dcb2a10SAndre Fischer                     {
558d74d90d6SArmin Le Grand                         const XHatch aHatch = aItem.GetHatchList()->GetHatch(nPos)->GetHatch();
559d74d90d6SArmin Le Grand                         const XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectEntry(), aHatch);
56086d608b5SArmin Le Grand 
561*62762835Smseidel                         // #122676# Change FillStyle and Hatch in one call
56286d608b5SArmin Le Grand                         GetBindings()->GetDispatcher()->Execute(
56386d608b5SArmin Le Grand                             SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, &aXFillHatchItem,
56486d608b5SArmin Le Grand                             bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
5658dcb2a10SAndre Fischer                     }
5668dcb2a10SAndre Fischer                 }
567d74d90d6SArmin Le Grand 
568d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
569d74d90d6SArmin Le Grand                 {
5708dcb2a10SAndre Fischer                     mnLastPosHatch = nPos;
5718dcb2a10SAndre Fischer                 }
5728dcb2a10SAndre Fischer                 break;
573d74d90d6SArmin Le Grand             }
5748dcb2a10SAndre Fischer             case XFILL_BITMAP:
5758dcb2a10SAndre Fischer             {
5768dcb2a10SAndre Fischer                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
577d74d90d6SArmin Le Grand 
578d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND == nPos)
5798dcb2a10SAndre Fischer                 {
580d74d90d6SArmin Le Grand                     nPos = mnLastPosBitmap;
581d74d90d6SArmin Le Grand                 }
582d74d90d6SArmin Le Grand 
583d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_BITMAP_LIST))
584d74d90d6SArmin Le Grand                 {
585d74d90d6SArmin Le Grand                     const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
586d74d90d6SArmin Le Grand 
5878dcb2a10SAndre Fischer                     if(nPos < aItem.GetBitmapList()->Count())
5888dcb2a10SAndre Fischer                     {
5898dcb2a10SAndre Fischer                         const XBitmapEntry* pXBitmapEntry = aItem.GetBitmapList()->GetBitmap(nPos);
590d74d90d6SArmin Le Grand                         const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), pXBitmapEntry->GetGraphicObject());
59186d608b5SArmin Le Grand 
592*62762835Smseidel                         // #122676# Change FillStyle and Bitmap in one call
59386d608b5SArmin Le Grand                         GetBindings()->GetDispatcher()->Execute(
59486d608b5SArmin Le Grand                             SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, &aXFillBitmapItem,
59586d608b5SArmin Le Grand                             bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
5968dcb2a10SAndre Fischer                     }
5978dcb2a10SAndre Fischer                 }
598d74d90d6SArmin Le Grand 
599d74d90d6SArmin Le Grand                 if(LISTBOX_ENTRY_NOTFOUND != nPos)
600d74d90d6SArmin Le Grand                 {
6018dcb2a10SAndre Fischer                     mnLastPosBitmap = nPos;
6028dcb2a10SAndre Fischer                 }
6038dcb2a10SAndre Fischer                 break;
604d74d90d6SArmin Le Grand             }
605d74d90d6SArmin Le Grand             default: break;
606d74d90d6SArmin Le Grand         }
607d74d90d6SArmin Le Grand     }
6088dcb2a10SAndre Fischer 
6098dcb2a10SAndre Fischer     return 0;
6108dcb2a10SAndre Fischer }
6118dcb2a10SAndre Fischer 
6128dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ToolBoxColorDropHdl,ToolBox *,pToolBox)6138dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ToolBoxColorDropHdl, ToolBox*, pToolBox)
6148dcb2a10SAndre Fischer {
615d74d90d6SArmin Le Grand     const sal_uInt16 nId = pToolBox->GetCurItemId();
6168dcb2a10SAndre Fischer 
617d74d90d6SArmin Le Grand     if(TBI_COLOR == nId)
6188dcb2a10SAndre Fischer     {
6198dcb2a10SAndre Fischer         maColorPopup.Show(*pToolBox);
620d74d90d6SArmin Le Grand 
6218dcb2a10SAndre Fischer         if (mpColorItem)
622d74d90d6SArmin Le Grand         {
6238dcb2a10SAndre Fischer             maColorPopup.SetCurrentColor(mpColorItem->GetColorValue(), mbColorAvail);
624d74d90d6SArmin Le Grand         }
6258dcb2a10SAndre Fischer         else
626d74d90d6SArmin Le Grand         {
6278dcb2a10SAndre Fischer             maColorPopup.SetCurrentColor(COL_WHITE, false);
6288dcb2a10SAndre Fischer         }
629d74d90d6SArmin Le Grand     }
6308dcb2a10SAndre Fischer 
6318dcb2a10SAndre Fischer     return 0;
6328dcb2a10SAndre Fischer }
6338dcb2a10SAndre Fischer 
6348dcb2a10SAndre Fischer 
6358dcb2a10SAndre Fischer 
SetColor(const String & rsColorName,const Color aColor)6368dcb2a10SAndre Fischer void AreaPropertyPanel::SetColor (
6378dcb2a10SAndre Fischer     const String& rsColorName,
6388dcb2a10SAndre Fischer     const Color aColor)
6398dcb2a10SAndre Fischer {
640d74d90d6SArmin Le Grand     const XFillColorItem aXFillColorItem(rsColorName, aColor);
6418dcb2a10SAndre Fischer     mpBindings->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
6428dcb2a10SAndre Fischer     maLastColor = aColor;
6438dcb2a10SAndre Fischer }
6448dcb2a10SAndre Fischer 
6458dcb2a10SAndre Fischer 
6468dcb2a10SAndre Fischer 
6478dcb2a10SAndre Fischer 
CreateTransparencyGradientControl(PopupContainer * pParent)6488dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateTransparencyGradientControl (PopupContainer* pParent)
6498dcb2a10SAndre Fischer {
6508dcb2a10SAndre Fischer     return new AreaTransparencyGradientControl(pParent, *this);
6518dcb2a10SAndre Fischer }
6528dcb2a10SAndre Fischer 
6538dcb2a10SAndre Fischer 
6548dcb2a10SAndre Fischer 
6558dcb2a10SAndre Fischer 
CreateColorPopupControl(PopupContainer * pParent)6568dcb2a10SAndre Fischer PopupControl* AreaPropertyPanel::CreateColorPopupControl (PopupContainer* pParent)
6578dcb2a10SAndre Fischer {
6588dcb2a10SAndre Fischer     return new ColorControl(
6598dcb2a10SAndre Fischer         pParent,
6608dcb2a10SAndre Fischer         mpBindings,
6618dcb2a10SAndre Fischer         SVX_RES(RID_POPUPPANEL_AERAPAGE_COLOR),
6628dcb2a10SAndre Fischer         SVX_RES(VS_COLOR),
6638dcb2a10SAndre Fischer         ::boost::bind(&AreaPropertyPanel::GetLastColor, this),
6648dcb2a10SAndre Fischer         ::boost::bind(&AreaPropertyPanel::SetColor, this, _1,_2),
6658dcb2a10SAndre Fischer         pParent,
6668dcb2a10SAndre Fischer         0);
6678dcb2a10SAndre Fischer }
6688dcb2a10SAndre Fischer 
6698dcb2a10SAndre Fischer 
6708dcb2a10SAndre Fischer 
6718dcb2a10SAndre Fischer 
SetupIcons(void)6728dcb2a10SAndre Fischer void AreaPropertyPanel::SetupIcons(void)
6738dcb2a10SAndre Fischer {
6748dcb2a10SAndre Fischer     if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
6758dcb2a10SAndre Fischer     {
6768dcb2a10SAndre Fischer         // todo
6778dcb2a10SAndre Fischer     }
6788dcb2a10SAndre Fischer     else
6798dcb2a10SAndre Fischer     {
6808dcb2a10SAndre Fischer         // todo
6818dcb2a10SAndre Fischer     }
6828dcb2a10SAndre Fischer }
6838dcb2a10SAndre Fischer 
6848dcb2a10SAndre Fischer 
6858dcb2a10SAndre Fischer 
Create(Window * pParent,const cssu::Reference<css::frame::XFrame> & rxFrame,SfxBindings * pBindings)6868dcb2a10SAndre Fischer AreaPropertyPanel* AreaPropertyPanel::Create (
6878dcb2a10SAndre Fischer     Window* pParent,
6888dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
6898dcb2a10SAndre Fischer     SfxBindings* pBindings)
6908dcb2a10SAndre Fischer {
6918dcb2a10SAndre Fischer     if (pParent == NULL)
6928dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no parent Window given to AreaPropertyPanel::Create"), NULL, 0);
6938dcb2a10SAndre Fischer     if ( ! rxFrame.is())
6948dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no XFrame given to AreaPropertyPanel::Create"), NULL, 1);
6958dcb2a10SAndre Fischer     if (pBindings == NULL)
6968dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no SfxBindings given to AreaPropertyPanel::Create"), NULL, 2);
6978dcb2a10SAndre Fischer 
6988dcb2a10SAndre Fischer     return new AreaPropertyPanel(
6998dcb2a10SAndre Fischer         pParent,
7008dcb2a10SAndre Fischer         rxFrame,
7018dcb2a10SAndre Fischer         pBindings);
7028dcb2a10SAndre Fischer }
7038dcb2a10SAndre Fischer 
7048dcb2a10SAndre Fischer 
7058dcb2a10SAndre Fischer 
DataChanged(const DataChangedEvent & rEvent)7068dcb2a10SAndre Fischer void AreaPropertyPanel::DataChanged(
7078dcb2a10SAndre Fischer     const DataChangedEvent& rEvent)
7088dcb2a10SAndre Fischer {
7098dcb2a10SAndre Fischer     (void)rEvent;
7108dcb2a10SAndre Fischer 
7118dcb2a10SAndre Fischer     SetupIcons();
7128dcb2a10SAndre Fischer }
7138dcb2a10SAndre Fischer 
7148dcb2a10SAndre Fischer 
7158dcb2a10SAndre Fischer 
ImpUpdateTransparencies()7168dcb2a10SAndre Fischer void AreaPropertyPanel::ImpUpdateTransparencies()
7178dcb2a10SAndre Fischer {
718d74d90d6SArmin Le Grand     if(mpTransparanceItem.get() && mpFloatTransparenceItem.get())
7198dcb2a10SAndre Fischer     {
7208dcb2a10SAndre Fischer         bool bZeroValue(false);
7218dcb2a10SAndre Fischer 
7228dcb2a10SAndre Fischer         if(mpTransparanceItem.get())
7238dcb2a10SAndre Fischer         {
7248dcb2a10SAndre Fischer             const sal_uInt16 nValue(mpTransparanceItem->GetValue());
7258dcb2a10SAndre Fischer 
7268dcb2a10SAndre Fischer             if(!nValue)
7278dcb2a10SAndre Fischer             {
7288dcb2a10SAndre Fischer                 bZeroValue = true;
7298dcb2a10SAndre Fischer             }
7308dcb2a10SAndre Fischer             else if(nValue <= 100)
7318dcb2a10SAndre Fischer             {
7328dcb2a10SAndre Fischer                 mpLBTransType->Enable();
73347df10a6SArmin Le Grand                 mpTrspTextFT->Enable();
7348dcb2a10SAndre Fischer                 mpLBTransType->SelectEntryPos(1);
7358dcb2a10SAndre Fischer                 mpBTNGradient->Hide();
7368dcb2a10SAndre Fischer                 mpMTRTransparent->Show();
7378dcb2a10SAndre Fischer                 mpMTRTransparent->Enable();
7388dcb2a10SAndre Fischer                 mpMTRTransparent->SetValue(nValue);
7398dcb2a10SAndre Fischer             }
7408dcb2a10SAndre Fischer 
741eb6ac606SArmin Le Grand             if(!bZeroValue)
742eb6ac606SArmin Le Grand             {
7438dcb2a10SAndre Fischer                 maTrGrPopup.Hide();
7448dcb2a10SAndre Fischer             }
745eb6ac606SArmin Le Grand         }
7468dcb2a10SAndre Fischer 
7478dcb2a10SAndre Fischer         if(bZeroValue && mpFloatTransparenceItem.get())
7488dcb2a10SAndre Fischer         {
7498dcb2a10SAndre Fischer             if(mpFloatTransparenceItem->IsEnabled())
7508dcb2a10SAndre Fischer             {
7518dcb2a10SAndre Fischer                 const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
7528dcb2a10SAndre Fischer                 const bool bHighContrast(GetSettings().GetStyleSettings().GetHighContrastMode());
7538dcb2a10SAndre Fischer                 sal_uInt16 nEntryPos(0);
7548dcb2a10SAndre Fischer                 Image* pImage = 0;
7558dcb2a10SAndre Fischer 
7568dcb2a10SAndre Fischer                 mpLBTransType->Enable();
75747df10a6SArmin Le Grand                 mpTrspTextFT->Enable();
7588dcb2a10SAndre Fischer                 mpMTRTransparent->Hide();
7598dcb2a10SAndre Fischer                 mpBTNGradient->Enable();
7608dcb2a10SAndre Fischer                 mpBTNGradient->Show();
7618dcb2a10SAndre Fischer 
7628dcb2a10SAndre Fischer                 switch(rGradient.GetGradientStyle())
7638dcb2a10SAndre Fischer                 {
7648dcb2a10SAndre Fischer                     case XGRAD_LINEAR:
7658dcb2a10SAndre Fischer                     {
7668dcb2a10SAndre Fischer                         nEntryPos = 2;
7678dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgLinearH : &maImgLinear;
7688dcb2a10SAndre Fischer                         break;
7698dcb2a10SAndre Fischer                     }
7708dcb2a10SAndre Fischer                     case XGRAD_AXIAL:
7718dcb2a10SAndre Fischer                     {
7728dcb2a10SAndre Fischer                         nEntryPos = 3;
7738dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgAxialH : &maImgAxial;
7748dcb2a10SAndre Fischer                         break;
7758dcb2a10SAndre Fischer                     }
7768dcb2a10SAndre Fischer                     case XGRAD_RADIAL:
7778dcb2a10SAndre Fischer                     {
7788dcb2a10SAndre Fischer                         nEntryPos = 4;
7798dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgRadialH : &maImgRadial;
7808dcb2a10SAndre Fischer                         break;
7818dcb2a10SAndre Fischer                     }
7828dcb2a10SAndre Fischer                     case XGRAD_ELLIPTICAL:
7838dcb2a10SAndre Fischer                     {
7848dcb2a10SAndre Fischer                         nEntryPos = 5;
7858dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgElliH : &maImgElli;
7868dcb2a10SAndre Fischer                         break;
7878dcb2a10SAndre Fischer                     }
7888dcb2a10SAndre Fischer                     case XGRAD_SQUARE:
7898dcb2a10SAndre Fischer                     {
7908dcb2a10SAndre Fischer                         nEntryPos = 6;
7918dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgQuadH : &maImgQuad;
7928dcb2a10SAndre Fischer                         break;
7938dcb2a10SAndre Fischer                     }
7948dcb2a10SAndre Fischer                     case XGRAD_RECT:
7958dcb2a10SAndre Fischer                     {
7968dcb2a10SAndre Fischer                         nEntryPos = 7;
7978dcb2a10SAndre Fischer                         pImage = bHighContrast ? &maImgSquareH : &maImgSquare;
7988dcb2a10SAndre Fischer                         break;
7998dcb2a10SAndre Fischer                     }
8008dcb2a10SAndre Fischer                 }
8018dcb2a10SAndre Fischer 
8028dcb2a10SAndre Fischer                 mpLBTransType->SelectEntryPos(nEntryPos);
8038dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT, *pImage);
8048dcb2a10SAndre Fischer                 bZeroValue = false;
8058dcb2a10SAndre Fischer             }
8068dcb2a10SAndre Fischer             else
8078dcb2a10SAndre Fischer             {
8088dcb2a10SAndre Fischer                 bZeroValue = true;
8098dcb2a10SAndre Fischer             }
8108dcb2a10SAndre Fischer         }
8118dcb2a10SAndre Fischer 
8128dcb2a10SAndre Fischer         if(bZeroValue)
8138dcb2a10SAndre Fischer         {
8148dcb2a10SAndre Fischer             mpLBTransType->Enable();
81547df10a6SArmin Le Grand             mpTrspTextFT->Enable();
8168dcb2a10SAndre Fischer             mpLBTransType->SelectEntryPos(0);
8178dcb2a10SAndre Fischer             mpBTNGradient->Hide();
8188dcb2a10SAndre Fischer             mpMTRTransparent->Enable();
8198dcb2a10SAndre Fischer             mpMTRTransparent->Show();
8208dcb2a10SAndre Fischer             mpMTRTransparent->SetValue(0);
8218dcb2a10SAndre Fischer         }
8228dcb2a10SAndre Fischer     }
8238dcb2a10SAndre Fischer     else
8248dcb2a10SAndre Fischer     {
8258dcb2a10SAndre Fischer         // no transparency at all
8268dcb2a10SAndre Fischer         mpLBTransType->SetNoSelection();
82747df10a6SArmin Le Grand         mpLBTransType->Disable();
82847df10a6SArmin Le Grand         mpTrspTextFT->Disable();
8298dcb2a10SAndre Fischer         mpMTRTransparent->Disable();
8308dcb2a10SAndre Fischer         mpMTRTransparent->Show();
8318dcb2a10SAndre Fischer         mpBTNGradient->Disable();
8328dcb2a10SAndre Fischer         mpBTNGradient->Hide();
8338dcb2a10SAndre Fischer     }
8348dcb2a10SAndre Fischer }
8358dcb2a10SAndre Fischer 
836eb6ac606SArmin Le Grand 
837eb6ac606SArmin Le Grand 
NotifyItemUpdate(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState,const bool bIsEnabled)8388dcb2a10SAndre Fischer void AreaPropertyPanel::NotifyItemUpdate(
8398dcb2a10SAndre Fischer     sal_uInt16 nSID,
8408dcb2a10SAndre Fischer     SfxItemState eState,
84145da7d5eSAndre Fischer     const SfxPoolItem* pState,
84245da7d5eSAndre Fischer     const bool bIsEnabled)
8438dcb2a10SAndre Fischer {
84445da7d5eSAndre Fischer     (void)bIsEnabled;
845d74d90d6SArmin Le Grand     const bool bDisabled(SFX_ITEM_DISABLED == eState);
84645da7d5eSAndre Fischer 
847d74d90d6SArmin Le Grand     switch(nSID)
848d74d90d6SArmin Le Grand     {
849d74d90d6SArmin Le Grand         case SID_ATTR_FILL_TRANSPARENCE:
850d74d90d6SArmin Le Grand         case SID_ATTR_FILL_FLOATTRANSPARENCE:
851d74d90d6SArmin Le Grand         {
8528dcb2a10SAndre Fischer             bool bFillTransparenceChanged(false);
8538dcb2a10SAndre Fischer 
8548dcb2a10SAndre Fischer             if(SID_ATTR_FILL_TRANSPARENCE == nSID)
8558dcb2a10SAndre Fischer             {
8568dcb2a10SAndre Fischer                 bFillTransparenceChanged = true;
8578dcb2a10SAndre Fischer 
8588dcb2a10SAndre Fischer                 if(eState >= SFX_ITEM_AVAILABLE)
8598dcb2a10SAndre Fischer                 {
8608dcb2a10SAndre Fischer                     const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
8618dcb2a10SAndre Fischer 
8628dcb2a10SAndre Fischer                     if(pItem && (!mpTransparanceItem || *pItem != *mpTransparanceItem))
8638dcb2a10SAndre Fischer                     {
8648dcb2a10SAndre Fischer                         mpTransparanceItem.reset((SfxUInt16Item*)pItem->Clone());
8658dcb2a10SAndre Fischer                     }
8668dcb2a10SAndre Fischer                     else
8678dcb2a10SAndre Fischer                     {
8688dcb2a10SAndre Fischer                         mpTransparanceItem.reset();
8698dcb2a10SAndre Fischer                     }
8708dcb2a10SAndre Fischer                 }
8718dcb2a10SAndre Fischer                 else
8728dcb2a10SAndre Fischer                 {
8738dcb2a10SAndre Fischer                     mpTransparanceItem.reset();
8748dcb2a10SAndre Fischer                 }
8758dcb2a10SAndre Fischer             }
876d74d90d6SArmin Le Grand             else // if(SID_ATTR_FILL_FLOATTRANSPARENCE == nSID)
8778dcb2a10SAndre Fischer             {
8788dcb2a10SAndre Fischer                 bFillTransparenceChanged = true;
8798dcb2a10SAndre Fischer 
8808dcb2a10SAndre Fischer                 if(eState >= SFX_ITEM_AVAILABLE)
8818dcb2a10SAndre Fischer                 {
8828dcb2a10SAndre Fischer                     const XFillFloatTransparenceItem* pItem = dynamic_cast< const XFillFloatTransparenceItem* >(pState);
8838dcb2a10SAndre Fischer 
8848dcb2a10SAndre Fischer                     if(pItem && (!mpFloatTransparenceItem || *pItem != *mpFloatTransparenceItem))
8858dcb2a10SAndre Fischer                     {
8868dcb2a10SAndre Fischer                         mpFloatTransparenceItem.reset((XFillFloatTransparenceItem*)pItem->Clone());
8878dcb2a10SAndre Fischer                     }
8888dcb2a10SAndre Fischer                     else
8898dcb2a10SAndre Fischer                     {
8908dcb2a10SAndre Fischer                         mpFloatTransparenceItem.reset();
8918dcb2a10SAndre Fischer                     }
8928dcb2a10SAndre Fischer                 }
8938dcb2a10SAndre Fischer                 else
8948dcb2a10SAndre Fischer                 {
8958dcb2a10SAndre Fischer                     mpFloatTransparenceItem.reset();
8968dcb2a10SAndre Fischer                 }
8978dcb2a10SAndre Fischer             }
8988dcb2a10SAndre Fischer 
8998dcb2a10SAndre Fischer             if(bFillTransparenceChanged)
9008dcb2a10SAndre Fischer             {
9018dcb2a10SAndre Fischer                 // update transparency settings dependent of mpTransparanceItem and mpFloatTransparenceItem
9028dcb2a10SAndre Fischer                 ImpUpdateTransparencies();
9038dcb2a10SAndre Fischer             }
904d74d90d6SArmin Le Grand             break;
905d74d90d6SArmin Le Grand         }
906d74d90d6SArmin Le Grand         case SID_ATTR_FILL_STYLE:
9078dcb2a10SAndre Fischer         {
908d74d90d6SArmin Le Grand             if(bDisabled)
9098dcb2a10SAndre Fischer             {
9108dcb2a10SAndre Fischer                 mpLbFillType->Disable();
91147df10a6SArmin Le Grand                 mpColorTextFT->Disable();
9128dcb2a10SAndre Fischer                 mpLbFillType->SetNoSelection();
9138dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
9148dcb2a10SAndre Fischer                 mpLbFillAttr->Disable();
9158dcb2a10SAndre Fischer                 mpLbFillAttr->SetNoSelection();
9168dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
9178dcb2a10SAndre Fischer                 meLastXFS = -1;
9188dcb2a10SAndre Fischer                 mpStyleItem.reset();
9198dcb2a10SAndre Fischer             }
9208dcb2a10SAndre Fischer 
921d74d90d6SArmin Le Grand             if(eState >= SFX_ITEM_AVAILABLE)
922d74d90d6SArmin Le Grand             {
923d74d90d6SArmin Le Grand                 const XFillStyleItem* pItem = dynamic_cast< const XFillStyleItem* >(pState);
924d74d90d6SArmin Le Grand 
925d74d90d6SArmin Le Grand                 if(pItem)
926d74d90d6SArmin Le Grand                 {
927d74d90d6SArmin Le Grand                     mpStyleItem.reset(dynamic_cast< XFillStyleItem* >(pItem->Clone()));
928d74d90d6SArmin Le Grand                     mpLbFillType->Enable();
92947df10a6SArmin Le Grand                     mpColorTextFT->Enable();
930d74d90d6SArmin Le Grand                     XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
9318dcb2a10SAndre Fischer                     meLastXFS = eXFS;
932d74d90d6SArmin Le Grand                     mpLbFillType->SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXFS));
933d74d90d6SArmin Le Grand 
934d74d90d6SArmin Le Grand                     if(XFILL_NONE == eXFS)
9358dcb2a10SAndre Fischer                     {
9368dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
9378dcb2a10SAndre Fischer                         mpLbFillAttr->Disable();
9388dcb2a10SAndre Fischer                     }
939d74d90d6SArmin Le Grand 
9408dcb2a10SAndre Fischer                     Update();
941d74d90d6SArmin Le Grand                     break;
9428dcb2a10SAndre Fischer                 }
943d74d90d6SArmin Le Grand             }
944d74d90d6SArmin Le Grand 
9458dcb2a10SAndre Fischer             mpLbFillType->SetNoSelection();
9468dcb2a10SAndre Fischer             mpLbFillAttr->Show();
9478dcb2a10SAndre Fischer             mpLbFillAttr->Disable();
9488dcb2a10SAndre Fischer             mpLbFillAttr->SetNoSelection();
9498dcb2a10SAndre Fischer             mpToolBoxColor->Hide();
950d74d90d6SArmin Le Grand             meLastXFS = -1;
9518dcb2a10SAndre Fischer             mpStyleItem.reset();
952d74d90d6SArmin Le Grand             break;
9538dcb2a10SAndre Fischer         }
954d74d90d6SArmin Le Grand         case SID_ATTR_FILL_COLOR:
9558dcb2a10SAndre Fischer         {
9568dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
9578dcb2a10SAndre Fischer             {
9588dcb2a10SAndre Fischer                 mpColorItem.reset(pState ? (XFillColorItem*)pState->Clone() : 0);
9598dcb2a10SAndre Fischer             }
960d74d90d6SArmin Le Grand 
961d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
9628dcb2a10SAndre Fischer             {
9638dcb2a10SAndre Fischer                 mpLbFillAttr->Hide();
9648dcb2a10SAndre Fischer                 mpToolBoxColor->Show();
965d74d90d6SArmin Le Grand 
9668dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
9678dcb2a10SAndre Fischer                 {
9688dcb2a10SAndre Fischer                     mpToolBoxColor->Enable();
969d74d90d6SArmin Le Grand                     mbColorAvail = true;
9708dcb2a10SAndre Fischer                     //maLastColor = mpColorItem->GetColorValue();
9718dcb2a10SAndre Fischer                     Update();
9728dcb2a10SAndre Fischer                 }
9738dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState)
9748dcb2a10SAndre Fischer                 {
9758dcb2a10SAndre Fischer                     mpToolBoxColor->Disable();
976d74d90d6SArmin Le Grand                     mbColorAvail = false;
9778dcb2a10SAndre Fischer                     mpColorUpdater->Update(COL_WHITE);
9788dcb2a10SAndre Fischer                 }
9798dcb2a10SAndre Fischer                 else
9808dcb2a10SAndre Fischer                 {
981d74d90d6SArmin Le Grand                     mbColorAvail = false;
9828dcb2a10SAndre Fischer                     mpColorUpdater->Update(COL_WHITE);
9838dcb2a10SAndre Fischer                 }
9848dcb2a10SAndre Fischer             }
985d74d90d6SArmin Le Grand             break;
9868dcb2a10SAndre Fischer         }
987d74d90d6SArmin Le Grand         case SID_ATTR_FILL_GRADIENT:
9888dcb2a10SAndre Fischer         {
9898dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
9908dcb2a10SAndre Fischer             {
9918dcb2a10SAndre Fischer                 mpFillGradientItem.reset(pState ? (XFillGradientItem*)pState->Clone() : 0);
9928dcb2a10SAndre Fischer             }
993d74d90d6SArmin Le Grand 
994d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
9958dcb2a10SAndre Fischer             {
9968dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
9978dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
998d74d90d6SArmin Le Grand 
9998dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
10008dcb2a10SAndre Fischer                 {
10018dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
10028dcb2a10SAndre Fischer                     Update();
10038dcb2a10SAndre Fischer                 }
10048dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState )
10058dcb2a10SAndre Fischer                 {
10068dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
10078dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10088dcb2a10SAndre Fischer                 }
10098dcb2a10SAndre Fischer                 else
1010d74d90d6SArmin Le Grand                 {
10118dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10128dcb2a10SAndre Fischer                 }
10138dcb2a10SAndre Fischer             }
1014d74d90d6SArmin Le Grand             break;
1015d74d90d6SArmin Le Grand         }
1016d74d90d6SArmin Le Grand         case SID_ATTR_FILL_HATCH:
10178dcb2a10SAndre Fischer         {
10188dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
10198dcb2a10SAndre Fischer             {
10208dcb2a10SAndre Fischer                 mpHatchItem.reset(pState ? (XFillHatchItem*)pState->Clone() : 0);
10218dcb2a10SAndre Fischer             }
1022d74d90d6SArmin Le Grand 
1023d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
10248dcb2a10SAndre Fischer             {
10258dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
10268dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
1027d74d90d6SArmin Le Grand 
10288dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
10298dcb2a10SAndre Fischer                 {
10308dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
10318dcb2a10SAndre Fischer                     Update();
10328dcb2a10SAndre Fischer                 }
10338dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState )
10348dcb2a10SAndre Fischer                 {
10358dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
10368dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10378dcb2a10SAndre Fischer                 }
10388dcb2a10SAndre Fischer                 else
1039d74d90d6SArmin Le Grand                 {
10408dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10418dcb2a10SAndre Fischer                 }
10428dcb2a10SAndre Fischer             }
1043d74d90d6SArmin Le Grand             break;
1044d74d90d6SArmin Le Grand         }
1045d74d90d6SArmin Le Grand         case SID_ATTR_FILL_BITMAP:
10468dcb2a10SAndre Fischer         {
10478dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
10488dcb2a10SAndre Fischer             {
10498dcb2a10SAndre Fischer                 mpBitmapItem.reset(pState ? (XFillBitmapItem*)pState->Clone() : 0);
10508dcb2a10SAndre Fischer             }
1051d74d90d6SArmin Le Grand 
1052d74d90d6SArmin Le Grand             if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
10538dcb2a10SAndre Fischer             {
10548dcb2a10SAndre Fischer                 mpLbFillAttr->Show();
10558dcb2a10SAndre Fischer                 mpToolBoxColor->Hide();
1056d74d90d6SArmin Le Grand 
10578dcb2a10SAndre Fischer                 if(SFX_ITEM_AVAILABLE == eState)
10588dcb2a10SAndre Fischer                 {
10598dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
10608dcb2a10SAndre Fischer                     Update();
10618dcb2a10SAndre Fischer                 }
10628dcb2a10SAndre Fischer                 else if(SFX_ITEM_DISABLED == eState )
10638dcb2a10SAndre Fischer                 {
10648dcb2a10SAndre Fischer                     mpLbFillAttr->Disable();
10658dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10668dcb2a10SAndre Fischer                 }
10678dcb2a10SAndre Fischer                 else
1068d74d90d6SArmin Le Grand                 {
10698dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
10708dcb2a10SAndre Fischer                 }
10718dcb2a10SAndre Fischer             }
1072d74d90d6SArmin Le Grand             break;
1073d74d90d6SArmin Le Grand         }
1074d74d90d6SArmin Le Grand         case SID_COLOR_TABLE:
10758dcb2a10SAndre Fischer         {
10768dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
10778dcb2a10SAndre Fischer             {
1078d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_SOLID == (XFillStyle)mpStyleItem->GetValue())
10798dcb2a10SAndre Fischer                 {
10808dcb2a10SAndre Fischer                     if(mpColorItem)
10818dcb2a10SAndre Fischer                     {
1082d74d90d6SArmin Le Grand                         const Color aColor = mpColorItem->GetColorValue();
1083d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1084d74d90d6SArmin Le Grand                         const SvxColorTableItem aItem(*(const SvxColorTableItem*)(pSh->GetItem(SID_COLOR_TABLE)));
1085d74d90d6SArmin Le Grand 
10868dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
10878dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
10888dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetColorTable());
10898dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aColor);
10908dcb2a10SAndre Fischer                     }
10918dcb2a10SAndre Fischer                     else
1092d74d90d6SArmin Le Grand                     {
10938dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
10948dcb2a10SAndre Fischer                     }
10958dcb2a10SAndre Fischer                 }
10968dcb2a10SAndre Fischer             }
1097d74d90d6SArmin Le Grand             break;
1098d74d90d6SArmin Le Grand         }
1099d74d90d6SArmin Le Grand         case SID_GRADIENT_LIST:
11008dcb2a10SAndre Fischer         {
11018dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
11028dcb2a10SAndre Fischer             {
1103d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_GRADIENT == (XFillStyle)mpStyleItem->GetValue())
11048dcb2a10SAndre Fischer                 {
11058dcb2a10SAndre Fischer                     if(mpFillGradientItem)
11068dcb2a10SAndre Fischer                     {
1107d74d90d6SArmin Le Grand                         const String aString( mpFillGradientItem->GetName() );
1108d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1109d74d90d6SArmin Le Grand                         const SvxGradientListItem aItem( *(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
1110d74d90d6SArmin Le Grand 
11118dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
11128dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
11138dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetGradientList());
11148dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
11158dcb2a10SAndre Fischer                     }
11168dcb2a10SAndre Fischer                     else
1117d74d90d6SArmin Le Grand                     {
11188dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
11198dcb2a10SAndre Fischer                     }
11208dcb2a10SAndre Fischer                 }
11218dcb2a10SAndre Fischer             }
1122d74d90d6SArmin Le Grand             break;
1123d74d90d6SArmin Le Grand         }
1124d74d90d6SArmin Le Grand         case SID_HATCH_LIST:
11258dcb2a10SAndre Fischer         {
11268dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
11278dcb2a10SAndre Fischer             {
1128d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_HATCH == (XFillStyle)mpStyleItem->GetValue())
11298dcb2a10SAndre Fischer                 {
11308dcb2a10SAndre Fischer                     if(mpHatchItem)
11318dcb2a10SAndre Fischer                     {
1132d74d90d6SArmin Le Grand                         const String aString( mpHatchItem->GetName() );
1133d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1134d74d90d6SArmin Le Grand                         const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
1135d74d90d6SArmin Le Grand 
11368dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
11378dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
11388dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetHatchList());
11398dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
11408dcb2a10SAndre Fischer                     }
11418dcb2a10SAndre Fischer                     else
1142d74d90d6SArmin Le Grand                     {
11438dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
11448dcb2a10SAndre Fischer                     }
11458dcb2a10SAndre Fischer                 }
11468dcb2a10SAndre Fischer             }
1147d74d90d6SArmin Le Grand             break;
1148d74d90d6SArmin Le Grand         }
1149d74d90d6SArmin Le Grand         case SID_BITMAP_LIST:
11508dcb2a10SAndre Fischer         {
11518dcb2a10SAndre Fischer             if(SFX_ITEM_AVAILABLE == eState)
11528dcb2a10SAndre Fischer             {
1153d74d90d6SArmin Le Grand                 if(mpStyleItem && XFILL_BITMAP == (XFillStyle)mpStyleItem->GetValue())
11548dcb2a10SAndre Fischer                 {
11558dcb2a10SAndre Fischer                     if(mpBitmapItem)
11568dcb2a10SAndre Fischer                     {
1157d74d90d6SArmin Le Grand                         const String aString( mpBitmapItem->GetName() );
1158d74d90d6SArmin Le Grand                         const SfxObjectShell* pSh = SfxObjectShell::Current();
1159d74d90d6SArmin Le Grand                         const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
1160d74d90d6SArmin Le Grand 
11618dcb2a10SAndre Fischer                         mpLbFillAttr->Clear();
11628dcb2a10SAndre Fischer                         mpLbFillAttr->Enable();
11638dcb2a10SAndre Fischer                         mpLbFillAttr->Fill(aItem.GetBitmapList());
11648dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
11658dcb2a10SAndre Fischer                     }
11668dcb2a10SAndre Fischer                     else
1167d74d90d6SArmin Le Grand                     {
11688dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
11698dcb2a10SAndre Fischer                     }
11708dcb2a10SAndre Fischer                 }
11718dcb2a10SAndre Fischer             }
1172d74d90d6SArmin Le Grand             break;
11738dcb2a10SAndre Fischer         }
1174d74d90d6SArmin Le Grand     }
11756a606da0SAndre Fischer 
11766a606da0SAndre Fischer     maLayouter.Layout();
1177d74d90d6SArmin Le Grand }
11788dcb2a10SAndre Fischer 
11798dcb2a10SAndre Fischer 
118045da7d5eSAndre Fischer 
GetBindings()11818dcb2a10SAndre Fischer SfxBindings* AreaPropertyPanel::GetBindings()
11828dcb2a10SAndre Fischer {
11838dcb2a10SAndre Fischer     return mpBindings;
11848dcb2a10SAndre Fischer }
11858dcb2a10SAndre Fischer 
11868dcb2a10SAndre Fischer 
11878dcb2a10SAndre Fischer 
Update()11888dcb2a10SAndre Fischer void AreaPropertyPanel::Update()
11898dcb2a10SAndre Fischer {
11908dcb2a10SAndre Fischer     if(mpStyleItem)
11918dcb2a10SAndre Fischer     {
1192d74d90d6SArmin Le Grand         const XFillStyle eXFS = (XFillStyle)mpStyleItem->GetValue();
11938dcb2a10SAndre Fischer         SfxObjectShell* pSh = SfxObjectShell::Current();
11948dcb2a10SAndre Fischer 
11958dcb2a10SAndre Fischer         switch( eXFS )
11968dcb2a10SAndre Fischer         {
11978dcb2a10SAndre Fischer             case XFILL_NONE:
11988dcb2a10SAndre Fischer             {
1199d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1200d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
12018dcb2a10SAndre Fischer                 break;
1202d74d90d6SArmin Le Grand             }
12038dcb2a10SAndre Fischer             case XFILL_SOLID:
12048dcb2a10SAndre Fischer             {
12058dcb2a10SAndre Fischer                 if(mpColorItem)
12068dcb2a10SAndre Fischer                 {
1207d74d90d6SArmin Le Grand                     mpLbFillAttr->Hide();
1208d74d90d6SArmin Le Grand                     mpToolBoxColor->Show();
12098dcb2a10SAndre Fischer                     mpColorUpdater->Update(mpColorItem->GetColorValue());
12108dcb2a10SAndre Fischer                 }
12118dcb2a10SAndre Fischer                 else
1212d74d90d6SArmin Le Grand                 {
12138dcb2a10SAndre Fischer                     mpColorUpdater->Update(COL_WHITE);
12148dcb2a10SAndre Fischer                 }
12158dcb2a10SAndre Fischer                 break;
1216d74d90d6SArmin Le Grand             }
12178dcb2a10SAndre Fischer             case XFILL_GRADIENT:
12188dcb2a10SAndre Fischer             {
1219d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1220d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1221d74d90d6SArmin Le Grand 
12228dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
12238dcb2a10SAndre Fischer                 {
1224d74d90d6SArmin Le Grand                     const SvxGradientListItem aItem(*(const SvxGradientListItem*)(pSh->GetItem(SID_GRADIENT_LIST)));
12258dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
12268dcb2a10SAndre Fischer                     mpLbFillAttr->Clear();
12278dcb2a10SAndre Fischer                     mpLbFillAttr->Fill(aItem.GetGradientList());
1228d74d90d6SArmin Le Grand 
12298dcb2a10SAndre Fischer                     if(mpFillGradientItem)
12308dcb2a10SAndre Fischer                     {
1231d74d90d6SArmin Le Grand                         const String aString(mpFillGradientItem->GetName());
1232d74d90d6SArmin Le Grand 
12338dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
12348dcb2a10SAndre Fischer                     }
12358dcb2a10SAndre Fischer                     else
1236d74d90d6SArmin Le Grand                     {
12378dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
12388dcb2a10SAndre Fischer                     }
1239d74d90d6SArmin Le Grand                 }
12408dcb2a10SAndre Fischer                 else
1241d74d90d6SArmin Le Grand                 {
12428dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
12438dcb2a10SAndre Fischer                 }
12448dcb2a10SAndre Fischer                 break;
1245d74d90d6SArmin Le Grand             }
12468dcb2a10SAndre Fischer             case XFILL_HATCH:
12478dcb2a10SAndre Fischer             {
1248d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1249d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1250d74d90d6SArmin Le Grand 
12518dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_HATCH_LIST))
12528dcb2a10SAndre Fischer                 {
1253d74d90d6SArmin Le Grand                     const SvxHatchListItem aItem(*(const SvxHatchListItem*)(pSh->GetItem(SID_HATCH_LIST)));
12548dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
12558dcb2a10SAndre Fischer                     mpLbFillAttr->Clear();
12568dcb2a10SAndre Fischer                     mpLbFillAttr->Fill(aItem.GetHatchList());
1257d74d90d6SArmin Le Grand 
12588dcb2a10SAndre Fischer                     if(mpHatchItem)
12598dcb2a10SAndre Fischer                     {
1260d74d90d6SArmin Le Grand                         const String aString(mpHatchItem->GetName());
1261d74d90d6SArmin Le Grand 
12628dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry( aString );
12638dcb2a10SAndre Fischer                     }
12648dcb2a10SAndre Fischer                     else
1265d74d90d6SArmin Le Grand                     {
12668dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
12678dcb2a10SAndre Fischer                     }
1268d74d90d6SArmin Le Grand                 }
12698dcb2a10SAndre Fischer                 else
1270d74d90d6SArmin Le Grand                 {
12718dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
12728dcb2a10SAndre Fischer                 }
12738dcb2a10SAndre Fischer                 break;
1274d74d90d6SArmin Le Grand             }
12758dcb2a10SAndre Fischer             case XFILL_BITMAP:
12768dcb2a10SAndre Fischer             {
1277d74d90d6SArmin Le Grand                 mpLbFillAttr->Show();
1278d74d90d6SArmin Le Grand                 mpToolBoxColor->Hide();
1279d74d90d6SArmin Le Grand 
12808dcb2a10SAndre Fischer                 if(pSh && pSh->GetItem(SID_BITMAP_LIST))
12818dcb2a10SAndre Fischer                 {
1282d74d90d6SArmin Le Grand                     const SvxBitmapListItem aItem(*(const SvxBitmapListItem*)(pSh->GetItem(SID_BITMAP_LIST)));
12838dcb2a10SAndre Fischer                     mpLbFillAttr->Enable();
12848dcb2a10SAndre Fischer                     mpLbFillAttr->Clear();
12858dcb2a10SAndre Fischer                     mpLbFillAttr->Fill(aItem.GetBitmapList());
1286d74d90d6SArmin Le Grand 
12878dcb2a10SAndre Fischer                     if(mpBitmapItem)
12888dcb2a10SAndre Fischer                     {
1289d74d90d6SArmin Le Grand                         const String aString(mpBitmapItem->GetName());
1290d74d90d6SArmin Le Grand 
12918dcb2a10SAndre Fischer                         mpLbFillAttr->SelectEntry(aString);
12928dcb2a10SAndre Fischer                     }
12938dcb2a10SAndre Fischer                     else
1294d74d90d6SArmin Le Grand                     {
12958dcb2a10SAndre Fischer                         mpLbFillAttr->SetNoSelection();
12968dcb2a10SAndre Fischer                     }
1297d74d90d6SArmin Le Grand                 }
12988dcb2a10SAndre Fischer                 else
1299d74d90d6SArmin Le Grand                 {
13008dcb2a10SAndre Fischer                     mpLbFillAttr->SetNoSelection();
13018dcb2a10SAndre Fischer                 }
13028dcb2a10SAndre Fischer                 break;
1303d74d90d6SArmin Le Grand             }
13048dcb2a10SAndre Fischer             default:
1305d74d90d6SArmin Le Grand                 DBG_ERROR( "Non supported FillType (!)" );
13068dcb2a10SAndre Fischer             break;
13078dcb2a10SAndre Fischer         }
13088dcb2a10SAndre Fischer     }
13098dcb2a10SAndre Fischer }
13108dcb2a10SAndre Fischer 
13118dcb2a10SAndre Fischer 
13128dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ImplPopupModeEndHdl,FloatingWindow *,EMPTYARG)13138dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
13148dcb2a10SAndre Fischer {
13158dcb2a10SAndre Fischer     return 0;
13168dcb2a10SAndre Fischer }
13178dcb2a10SAndre Fischer 
13188dcb2a10SAndre Fischer 
13198dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ClickTrGrHdl_Impl,ToolBox *,pToolBox)13208dcb2a10SAndre Fischer IMPL_LINK( AreaPropertyPanel, ClickTrGrHdl_Impl, ToolBox*, pToolBox )
13218dcb2a10SAndre Fischer {
13228dcb2a10SAndre Fischer     maTrGrPopup.Rearrange(mpFloatTransparenceItem.get());
13238dcb2a10SAndre Fischer     OSL_ASSERT(pToolBox->GetCurItemId() == TBI_BTX_GRADIENT);
13248dcb2a10SAndre Fischer     maTrGrPopup.Show(*pToolBox);
13258dcb2a10SAndre Fischer 
13268dcb2a10SAndre Fischer     return (0L);
13278dcb2a10SAndre Fischer }
13288dcb2a10SAndre Fischer 
13298dcb2a10SAndre Fischer 
13308dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ChangeTrgrTypeHdl_Impl,void *,EMPTYARG)13318dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ChangeTrgrTypeHdl_Impl, void *, EMPTYARG)
13328dcb2a10SAndre Fischer {
13338dcb2a10SAndre Fischer     sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
13348dcb2a10SAndre Fischer     bool bGradient = false;
13358dcb2a10SAndre Fischer     sal_uInt16 nTrans = 0;
13368dcb2a10SAndre Fischer 
1337d74d90d6SArmin Le Grand     if(!nSelectType)
13388dcb2a10SAndre Fischer     {
13398dcb2a10SAndre Fischer         mpBTNGradient->Hide();
13408dcb2a10SAndre Fischer         mpMTRTransparent->Show();
13418dcb2a10SAndre Fischer         mpMTRTransparent->Enable();
13428dcb2a10SAndre Fischer         mpMTRTransparent->SetValue(0);
13438dcb2a10SAndre Fischer     }
1344d74d90d6SArmin Le Grand     else if(1 == nSelectType)
13458dcb2a10SAndre Fischer     {
13468dcb2a10SAndre Fischer         mpBTNGradient->Hide();
13478dcb2a10SAndre Fischer         mpMTRTransparent->Show();
13488dcb2a10SAndre Fischer         nTrans = mnLastTransSolid;
13498dcb2a10SAndre Fischer         mpMTRTransparent->SetValue(nTrans);
1350d74d90d6SArmin Le Grand         mpLBTransType->SelectEntryPos(1);
13518dcb2a10SAndre Fischer         mpMTRTransparent->Enable();
13528dcb2a10SAndre Fischer     }
13538dcb2a10SAndre Fischer     else
13548dcb2a10SAndre Fischer     {
13558dcb2a10SAndre Fischer         mpBTNGradient->Show();
1356d74d90d6SArmin Le Grand 
13578dcb2a10SAndre Fischer         switch (nSelectType)
13588dcb2a10SAndre Fischer         {
13598dcb2a10SAndre Fischer             case 2:
1360d74d90d6SArmin Le Grand                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgLinearH : maImgLinear);
13618dcb2a10SAndre Fischer                 break;
13628dcb2a10SAndre Fischer             case 3:
13638dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgAxialH : maImgAxial);
13648dcb2a10SAndre Fischer                 break;
13658dcb2a10SAndre Fischer             case 4:
13668dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgRadialH : maImgRadial);
13678dcb2a10SAndre Fischer                 break;
13688dcb2a10SAndre Fischer             case 5:
13698dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgElliH : maImgElli );
13708dcb2a10SAndre Fischer                 break;
13718dcb2a10SAndre Fischer             case 6:
13728dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgQuadH : maImgQuad );
13738dcb2a10SAndre Fischer                 break;
13748dcb2a10SAndre Fischer             case 7:
13758dcb2a10SAndre Fischer                 mpBTNGradient->SetItemImage(TBI_BTX_GRADIENT,GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSquareH : maImgSquare);
13768dcb2a10SAndre Fischer                 break;
13778dcb2a10SAndre Fischer         }
1378d74d90d6SArmin Le Grand 
13798dcb2a10SAndre Fischer         mpMTRTransparent->Hide();
13808dcb2a10SAndre Fischer         mpBTNGradient->Enable();
13818dcb2a10SAndre Fischer         bGradient = true;
13828dcb2a10SAndre Fischer     }
13838dcb2a10SAndre Fischer 
1384d74d90d6SArmin Le Grand     const XFillTransparenceItem aLinearItem(nTrans);
13858dcb2a10SAndre Fischer     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
13868dcb2a10SAndre Fischer 
1387d74d90d6SArmin Le Grand     if(nSelectType > 1)
1388d74d90d6SArmin Le Grand     {
1389d74d90d6SArmin Le Grand         nSelectType -= 2;
1390d74d90d6SArmin Le Grand     }
13918dcb2a10SAndre Fischer 
13928dcb2a10SAndre Fischer     XGradient aTmpGradient;
13938dcb2a10SAndre Fischer 
13948dcb2a10SAndre Fischer     switch(nSelectType)
13958dcb2a10SAndre Fischer     {
13968dcb2a10SAndre Fischer         case XGRAD_LINEAR:
13978dcb2a10SAndre Fischer             aTmpGradient = maGradientLinear;
13988dcb2a10SAndre Fischer             break;
13998dcb2a10SAndre Fischer         case XGRAD_AXIAL:
14008dcb2a10SAndre Fischer             aTmpGradient = maGradientAxial;
14018dcb2a10SAndre Fischer             break;
14028dcb2a10SAndre Fischer         case XGRAD_RADIAL:
14038dcb2a10SAndre Fischer             aTmpGradient = maGradientRadial;
14048dcb2a10SAndre Fischer             break;
14058dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
14068dcb2a10SAndre Fischer             aTmpGradient = maGradientElliptical;
14078dcb2a10SAndre Fischer             break;
14088dcb2a10SAndre Fischer         case XGRAD_SQUARE:
14098dcb2a10SAndre Fischer             aTmpGradient = maGradientSquare;
14108dcb2a10SAndre Fischer             break;
14118dcb2a10SAndre Fischer         case XGRAD_RECT:
14128dcb2a10SAndre Fischer             aTmpGradient = maGradientRect;
14138dcb2a10SAndre Fischer             break;
14148dcb2a10SAndre Fischer     }
14158dcb2a10SAndre Fischer 
1416d74d90d6SArmin Le Grand     SfxItemPool* pPool = 0;
1417d74d90d6SArmin Le Grand     const XFillFloatTransparenceItem aGradientItem(pPool, aTmpGradient, sal_Bool(bGradient));
14188dcb2a10SAndre Fischer     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_FLOATTRANSPARENCE, SFX_CALLMODE_RECORD, &aGradientItem, 0L );
14198dcb2a10SAndre Fischer 
14208dcb2a10SAndre Fischer     return( 0L );
14218dcb2a10SAndre Fischer }
14228dcb2a10SAndre Fischer 
14238dcb2a10SAndre Fischer 
14248dcb2a10SAndre Fischer 
IMPL_LINK(AreaPropertyPanel,ModifyTransparentHdl_Impl,void *,EMPTYARG)14258dcb2a10SAndre Fischer IMPL_LINK(AreaPropertyPanel, ModifyTransparentHdl_Impl, void*, EMPTYARG)
14268dcb2a10SAndre Fischer {
1427d74d90d6SArmin Le Grand     const sal_uInt16 nTrans = (sal_uInt16)mpMTRTransparent->GetValue();
14288dcb2a10SAndre Fischer     mnLastTransSolid = nTrans;
1429d74d90d6SArmin Le Grand     const sal_uInt16 nSelectType = mpLBTransType->GetSelectEntryPos();
1430d74d90d6SArmin Le Grand 
1431d74d90d6SArmin Le Grand     if(nTrans && !nSelectType)
1432d74d90d6SArmin Le Grand     {
14338dcb2a10SAndre Fischer         mpLBTransType->SelectEntryPos(1);
1434d74d90d6SArmin Le Grand     }
1435d74d90d6SArmin Le Grand 
1436d74d90d6SArmin Le Grand     const XFillTransparenceItem aLinearItem(nTrans);
14378dcb2a10SAndre Fischer     GetBindings()->GetDispatcher()->Execute( SID_ATTR_FILL_TRANSPARENCE, SFX_CALLMODE_RECORD, &aLinearItem, 0L );
14388dcb2a10SAndre Fischer 
14398dcb2a10SAndre Fischer     return 0L;
14408dcb2a10SAndre Fischer }
14418dcb2a10SAndre Fischer 
14428dcb2a10SAndre Fischer 
GetLastColor(void) const14438dcb2a10SAndre Fischer Color AreaPropertyPanel::GetLastColor (void) const
14448dcb2a10SAndre Fischer {
14458dcb2a10SAndre Fischer     return maLastColor;
14468dcb2a10SAndre Fischer }
14478dcb2a10SAndre Fischer 
14488dcb2a10SAndre Fischer 
14498dcb2a10SAndre Fischer 
14508dcb2a10SAndre Fischer 
GetGradient(const XGradientStyle eStyle) const14518dcb2a10SAndre Fischer XGradient AreaPropertyPanel::GetGradient (const XGradientStyle eStyle) const
14528dcb2a10SAndre Fischer {
14538dcb2a10SAndre Fischer     switch (eStyle)
14548dcb2a10SAndre Fischer     {
14558dcb2a10SAndre Fischer         default:
14568dcb2a10SAndre Fischer         case XGRAD_LINEAR:
14578dcb2a10SAndre Fischer             return maGradientLinear;
14588dcb2a10SAndre Fischer         case XGRAD_AXIAL:
14598dcb2a10SAndre Fischer             return maGradientAxial;
14608dcb2a10SAndre Fischer         case XGRAD_RADIAL:
14618dcb2a10SAndre Fischer             return maGradientRadial;
14628dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
14638dcb2a10SAndre Fischer             return maGradientElliptical;
14648dcb2a10SAndre Fischer         case XGRAD_SQUARE:
14658dcb2a10SAndre Fischer             return maGradientSquare;
14668dcb2a10SAndre Fischer         case XGRAD_RECT:
14678dcb2a10SAndre Fischer             return maGradientRect;
14688dcb2a10SAndre Fischer     }
14698dcb2a10SAndre Fischer }
14708dcb2a10SAndre Fischer 
14718dcb2a10SAndre Fischer 
14728dcb2a10SAndre Fischer 
14738dcb2a10SAndre Fischer 
SetGradient(const XGradient & rGradient)14748dcb2a10SAndre Fischer void AreaPropertyPanel::SetGradient (const XGradient& rGradient)
14758dcb2a10SAndre Fischer {
14768dcb2a10SAndre Fischer     switch (rGradient.GetGradientStyle())
14778dcb2a10SAndre Fischer     {
14788dcb2a10SAndre Fischer         case XGRAD_LINEAR:
14798dcb2a10SAndre Fischer             maGradientLinear = rGradient;
14808dcb2a10SAndre Fischer             break;
14818dcb2a10SAndre Fischer         case XGRAD_AXIAL:
14828dcb2a10SAndre Fischer             maGradientAxial = rGradient;
14838dcb2a10SAndre Fischer             break;
14848dcb2a10SAndre Fischer         case XGRAD_RADIAL:
14858dcb2a10SAndre Fischer             maGradientRadial = rGradient;
14868dcb2a10SAndre Fischer             break;
14878dcb2a10SAndre Fischer         case XGRAD_ELLIPTICAL:
14888dcb2a10SAndre Fischer             maGradientElliptical = rGradient;
14898dcb2a10SAndre Fischer             break;
14908dcb2a10SAndre Fischer         case XGRAD_SQUARE:
14918dcb2a10SAndre Fischer             maGradientSquare = rGradient;
14928dcb2a10SAndre Fischer             break;
14938dcb2a10SAndre Fischer         case XGRAD_RECT:
14948dcb2a10SAndre Fischer             maGradientRect = rGradient;
14958dcb2a10SAndre Fischer             break;
14968dcb2a10SAndre Fischer     }
14978dcb2a10SAndre Fischer }
14988dcb2a10SAndre Fischer 
14998dcb2a10SAndre Fischer 
15008dcb2a10SAndre Fischer 
15018dcb2a10SAndre Fischer 
GetSelectedTransparencyTypeIndex(void) const15028dcb2a10SAndre Fischer sal_Int32 AreaPropertyPanel::GetSelectedTransparencyTypeIndex (void) const
15038dcb2a10SAndre Fischer {
15048dcb2a10SAndre Fischer     return mpLBTransType->GetSelectEntryPos();
15058dcb2a10SAndre Fischer }
15068dcb2a10SAndre Fischer 
15076a606da0SAndre Fischer 
15086a606da0SAndre Fischer 
15096a606da0SAndre Fischer 
Resize(void)15106a606da0SAndre Fischer void AreaPropertyPanel::Resize (void)
15116a606da0SAndre Fischer {
15126a606da0SAndre Fischer     maLayouter.Layout();
15136a606da0SAndre Fischer }
15146a606da0SAndre Fischer 
15156a606da0SAndre Fischer 
15166a606da0SAndre Fischer 
15178dcb2a10SAndre Fischer } } // end of namespace svx::sidebar
15184e8031e0SArmin Le Grand 
15194e8031e0SArmin Le Grand // eof
1520