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