18dcb2a10SAndre Fischer /**************************************************************
28dcb2a10SAndre Fischer  *
38dcb2a10SAndre Fischer  * Licensed to the Apache Software Foundation (ASF) under one
48dcb2a10SAndre Fischer  * or more contributor license agreements.  See the NOTICE file
58dcb2a10SAndre Fischer  * distributed with this work for additional information
68dcb2a10SAndre Fischer  * regarding copyright ownership.  The ASF licenses this file
78dcb2a10SAndre Fischer  * to you under the Apache License, Version 2.0 (the
88dcb2a10SAndre Fischer  * "License"); you may not use this file except in compliance
98dcb2a10SAndre Fischer  * with the License.  You may obtain a copy of the License at
108dcb2a10SAndre Fischer  *
118dcb2a10SAndre Fischer  *   http://www.apache.org/licenses/LICENSE-2.0
128dcb2a10SAndre Fischer  *
138dcb2a10SAndre Fischer  * Unless required by applicable law or agreed to in writing,
148dcb2a10SAndre Fischer  * software distributed under the License is distributed on an
158dcb2a10SAndre Fischer  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
168dcb2a10SAndre Fischer  * KIND, either express or implied.  See the License for the
178dcb2a10SAndre Fischer  * specific language governing permissions and limitations
188dcb2a10SAndre Fischer  * under the License.
198dcb2a10SAndre Fischer  *
208dcb2a10SAndre Fischer  *************************************************************/
218dcb2a10SAndre Fischer 
228dcb2a10SAndre Fischer #include <sfx2/sidebar/propertypanel.hrc>
238dcb2a10SAndre Fischer #include <sfx2/sidebar/Theme.hxx>
248dcb2a10SAndre Fischer #include <sfx2/sidebar/ControlFactory.hxx>
258dcb2a10SAndre Fischer #include <LinePropertyPanel.hxx>
268dcb2a10SAndre Fischer #include <LinePropertyPanel.hrc>
278dcb2a10SAndre Fischer #include <svx/dialogs.hrc>
288dcb2a10SAndre Fischer #include <svx/dialmgr.hxx>
298dcb2a10SAndre Fischer #include <sfx2/objsh.hxx>
308dcb2a10SAndre Fischer #include <sfx2/bindings.hxx>
318dcb2a10SAndre Fischer #include <sfx2/dispatch.hxx>
328dcb2a10SAndre Fischer #include <svx/xlnclit.hxx>
338dcb2a10SAndre Fischer #include <svx/xtable.hxx>
348dcb2a10SAndre Fischer #include <svx/xdash.hxx>
358dcb2a10SAndre Fischer #include <svx/drawitem.hxx>
368dcb2a10SAndre Fischer #include <svx/svxitems.hrc>
378dcb2a10SAndre Fischer #include <svtools/valueset.hxx>
388dcb2a10SAndre Fischer #include <unotools/pathoptions.hxx>
398dcb2a10SAndre Fischer #include <unotools/viewoptions.hxx>
408dcb2a10SAndre Fischer #include <comphelper/processfactory.hxx>
418dcb2a10SAndre Fischer #include <i18npool/mslangid.hxx>
428dcb2a10SAndre Fischer #include <svx/xlineit0.hxx>
438dcb2a10SAndre Fischer #include <svx/xlndsit.hxx>
448dcb2a10SAndre Fischer #include <vcl/svapp.hxx>
458dcb2a10SAndre Fischer #include <svx/xlnwtit.hxx>
468dcb2a10SAndre Fischer #include <vcl/lstbox.hxx>
478dcb2a10SAndre Fischer #include <svx/tbxcolorupdate.hxx>
488dcb2a10SAndre Fischer #include <vcl/toolbox.hxx>
498dcb2a10SAndre Fischer #include <svx/xlntrit.hxx>
508dcb2a10SAndre Fischer #include <svx/xlnstit.hxx>
518dcb2a10SAndre Fischer #include <svx/xlnedit.hxx>
528dcb2a10SAndre Fischer #include <svx/xlncapit.hxx>
538dcb2a10SAndre Fischer #include <svx/xlinjoit.hxx>
548dcb2a10SAndre Fischer #include "svx/sidebar/PopupContainer.hxx"
558dcb2a10SAndre Fischer #include "svx/sidebar/PopupControl.hxx"
56facb16e7SArmin Le Grand #include <svx/sidebar/ColorControl.hxx>
578dcb2a10SAndre Fischer #include "LineWidthControl.hxx"
588dcb2a10SAndre Fischer #include <boost/bind.hpp>
598dcb2a10SAndre Fischer 
608dcb2a10SAndre Fischer using namespace css;
618dcb2a10SAndre Fischer using namespace cssu;
628dcb2a10SAndre Fischer using ::sfx2::sidebar::Theme;
638dcb2a10SAndre Fischer 
648dcb2a10SAndre Fischer #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
658dcb2a10SAndre Fischer 
668dcb2a10SAndre Fischer namespace {
678dcb2a10SAndre Fischer     short GetItemId_Impl_line( ValueSet& rValueSet, const Color& rCol )
688dcb2a10SAndre Fischer     {
698dcb2a10SAndre Fischer         if(rCol == COL_AUTO)
708dcb2a10SAndre Fischer             return 0;
718dcb2a10SAndre Fischer 
728dcb2a10SAndre Fischer         bool	bFound = false;
738dcb2a10SAndre Fischer         sal_uInt16 nCount = rValueSet.GetItemCount();
748dcb2a10SAndre Fischer         sal_uInt16	n	   = 1;
758dcb2a10SAndre Fischer 
768dcb2a10SAndre Fischer         while ( !bFound && n <= nCount )
778dcb2a10SAndre Fischer         {
788dcb2a10SAndre Fischer             Color aValCol = rValueSet.GetItemColor(n);
798dcb2a10SAndre Fischer 
808dcb2a10SAndre Fischer             bFound = (   aValCol.GetRed()   == rCol.GetRed()
818dcb2a10SAndre Fischer                 && aValCol.GetGreen() == rCol.GetGreen()
828dcb2a10SAndre Fischer                 && aValCol.GetBlue()  == rCol.GetBlue() );
838dcb2a10SAndre Fischer 
848dcb2a10SAndre Fischer             if ( !bFound )
858dcb2a10SAndre Fischer                 n++;
868dcb2a10SAndre Fischer         }
878dcb2a10SAndre Fischer         return bFound ? n : -1;
888dcb2a10SAndre Fischer     }
898dcb2a10SAndre Fischer 
90a567bdc8SArmin Le Grand     void FillLineEndListBox(ListBox& rListBoxStart, ListBox& rListBoxEnd, const XLineEndList& rList)
91a567bdc8SArmin Le Grand     {
92a567bdc8SArmin Le Grand         const sal_uInt32 nCount(rList.Count());
9397e8a929SArmin Le Grand         const String sNone(SVX_RES(RID_SVXSTR_NONE));
9497e8a929SArmin Le Grand 
95a567bdc8SArmin Le Grand         rListBoxStart.SetUpdateMode(false);
96a567bdc8SArmin Le Grand         rListBoxEnd.SetUpdateMode(false);
978dcb2a10SAndre Fischer 
9897e8a929SArmin Le Grand         rListBoxStart.Clear();
9997e8a929SArmin Le Grand         rListBoxEnd.Clear();
10097e8a929SArmin Le Grand 
10197e8a929SArmin Le Grand         // add 'none' entries
10297e8a929SArmin Le Grand         rListBoxStart.InsertEntry(sNone);
10397e8a929SArmin Le Grand         rListBoxEnd.InsertEntry(sNone);
10497e8a929SArmin Le Grand 
105a567bdc8SArmin Le Grand         for(sal_uInt32 i(0); i < nCount; i++)
106a567bdc8SArmin Le Grand         {
107a567bdc8SArmin Le Grand             XLineEndEntry* pEntry = rList.GetLineEnd(i);
10897e8a929SArmin Le Grand             const Bitmap aBitmap = const_cast< XLineEndList& >(rList).GetUiBitmap(i);
1098dcb2a10SAndre Fischer 
11097e8a929SArmin Le Grand             if(!aBitmap.IsEmpty())
111a567bdc8SArmin Le Grand             {
11297e8a929SArmin Le Grand                 Bitmap aCopyStart(aBitmap);
11397e8a929SArmin Le Grand                 Bitmap aCopyEnd(aBitmap);
11497e8a929SArmin Le Grand                 // delete pBitmap;
115a567bdc8SArmin Le Grand                 const Size aBmpSize(aCopyStart.GetSizePixel());
116a567bdc8SArmin Le Grand                 const Rectangle aCropRectStart(Point(), Size(aBmpSize.Width() / 2, aBmpSize.Height()));
117a567bdc8SArmin Le Grand                 const Rectangle aCropRectEnd(Point(aBmpSize.Width() / 2, 0), Size(aBmpSize.Width() / 2, aBmpSize.Height()));
118a567bdc8SArmin Le Grand 
119a567bdc8SArmin Le Grand                 aCopyStart.Crop(aCropRectStart);
120a567bdc8SArmin Le Grand                 rListBoxStart.InsertEntry(
121a567bdc8SArmin Le Grand                     pEntry->GetName(),
122a567bdc8SArmin Le Grand                     aCopyStart);
123a567bdc8SArmin Le Grand 
124a567bdc8SArmin Le Grand                 aCopyEnd.Crop(aCropRectEnd);
125a567bdc8SArmin Le Grand                 rListBoxEnd.InsertEntry(
126a567bdc8SArmin Le Grand                     pEntry->GetName(),
127a567bdc8SArmin Le Grand                     aCopyEnd);
128a567bdc8SArmin Le Grand             }
129a567bdc8SArmin Le Grand             else
130a567bdc8SArmin Le Grand             {
131a567bdc8SArmin Le Grand                 rListBoxStart.InsertEntry(pEntry->GetName());
132a567bdc8SArmin Le Grand                 rListBoxEnd.InsertEntry(pEntry->GetName());
133a567bdc8SArmin Le Grand             }
134a567bdc8SArmin Le Grand         }
1358dcb2a10SAndre Fischer 
136a567bdc8SArmin Le Grand         rListBoxStart.SetUpdateMode(true);
137a567bdc8SArmin Le Grand         rListBoxEnd.SetUpdateMode(true);
138a567bdc8SArmin Le Grand     }
13997e8a929SArmin Le Grand 
14097e8a929SArmin Le Grand     void FillLineStyleListBox(ListBox& rListBox, const XDashList& rList)
14197e8a929SArmin Le Grand     {
14297e8a929SArmin Le Grand         const sal_uInt32 nCount(rList.Count());
14397e8a929SArmin Le Grand         rListBox.SetUpdateMode(false);
14497e8a929SArmin Le Grand 
14597e8a929SArmin Le Grand         rListBox.Clear();
14697e8a929SArmin Le Grand 
14797e8a929SArmin Le Grand         // entry for 'none'
14897e8a929SArmin Le Grand         rListBox.InsertEntry(rList.GetStringForUiNoLine());
14997e8a929SArmin Le Grand 
15097e8a929SArmin Le Grand         // entry for solid line
15197e8a929SArmin Le Grand         rListBox.InsertEntry(rList.GetStringForUiSolidLine(), rList.GetBitmapForUISolidLine());
15297e8a929SArmin Le Grand 
15397e8a929SArmin Le Grand         for(sal_uInt32 i(0); i < nCount; i++)
15497e8a929SArmin Le Grand         {
15597e8a929SArmin Le Grand             XDashEntry* pEntry = rList.GetDash(i);
15697e8a929SArmin Le Grand             const Bitmap aBitmap = const_cast< XDashList& >(rList).GetUiBitmap(i);
15797e8a929SArmin Le Grand 
15897e8a929SArmin Le Grand             if(!aBitmap.IsEmpty())
15997e8a929SArmin Le Grand             {
16097e8a929SArmin Le Grand                 rListBox.InsertEntry(
16197e8a929SArmin Le Grand                     pEntry->GetName(),
16297e8a929SArmin Le Grand                     aBitmap);
16397e8a929SArmin Le Grand                 // delete pBitmap;
16497e8a929SArmin Le Grand             }
16597e8a929SArmin Le Grand             else
16697e8a929SArmin Le Grand             {
16797e8a929SArmin Le Grand                 rListBox.InsertEntry(pEntry->GetName());
16897e8a929SArmin Le Grand             }
16997e8a929SArmin Le Grand         }
17097e8a929SArmin Le Grand 
17197e8a929SArmin Le Grand         rListBox.SetUpdateMode(true);
17297e8a929SArmin Le Grand     }
173a567bdc8SArmin Le Grand } // end of anonymous namespace
1748dcb2a10SAndre Fischer 
1758dcb2a10SAndre Fischer // namespace open
1768dcb2a10SAndre Fischer 
1778dcb2a10SAndre Fischer namespace svx { namespace sidebar {
1788dcb2a10SAndre Fischer 
1798dcb2a10SAndre Fischer LinePropertyPanel::LinePropertyPanel(
1808dcb2a10SAndre Fischer     Window* pParent,
1818dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
1828dcb2a10SAndre Fischer     SfxBindings* pBindings)
1838dcb2a10SAndre Fischer :   Control(
1848dcb2a10SAndre Fischer         pParent,
1858dcb2a10SAndre Fischer         SVX_RES(RID_SIDEBAR_LINE_PANEL)),
1868dcb2a10SAndre Fischer     mpFTWidth(new FixedText(this, SVX_RES(FT_WIDTH))),
1878dcb2a10SAndre Fischer     mpTBWidthBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
1888dcb2a10SAndre Fischer     mpTBWidth(sfx2::sidebar::ControlFactory::CreateToolBox(mpTBWidthBackground.get(), SVX_RES(TB_WIDTH))),
1898dcb2a10SAndre Fischer     mpFTColor(new FixedText(this, SVX_RES(FT_COLOR))),
1908dcb2a10SAndre Fischer     mpTBColorBackground(sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this)),
1918dcb2a10SAndre Fischer     mpTBColor(sfx2::sidebar::ControlFactory::CreateToolBox(mpTBColorBackground.get(), SVX_RES(TB_COLOR))),
1928dcb2a10SAndre Fischer     mpFTStyle(new FixedText(this, SVX_RES(FT_STYLE))),
19397e8a929SArmin Le Grand     mpLBStyle(new ListBox(this, SVX_RES(LB_STYLE))),
1948dcb2a10SAndre Fischer     mpFTTrancparency(new FixedText(this, SVX_RES(FT_TRANSPARENT))),
1958dcb2a10SAndre Fischer     mpMFTransparent(new MetricField(this, SVX_RES(MF_TRANSPARENT))),
1968dcb2a10SAndre Fischer     mpFTArrow(new FixedText(this, SVX_RES(FT_ARROW))),
1971137d172SArmin Le Grand     mpLBStart(new ListBox(this, SVX_RES(LB_START))),
1981137d172SArmin Le Grand     mpLBEnd(new ListBox(this, SVX_RES(LB_END))),
1998dcb2a10SAndre Fischer     mpFTEdgeStyle(new FixedText(this, SVX_RES(FT_EDGESTYLE))),
2008dcb2a10SAndre Fischer     mpLBEdgeStyle(new ListBox(this, SVX_RES(LB_EDGESTYLE))),
2018dcb2a10SAndre Fischer     mpFTCapStyle(new FixedText(this, SVX_RES(FT_CAPSTYLE))),
2028dcb2a10SAndre Fischer     mpLBCapStyle(new ListBox(this, SVX_RES(LB_CAPSTYLE))),
203a567bdc8SArmin Le Grand     maStyleControl(SID_ATTR_LINE_STYLE, *pBindings, *this),
204a567bdc8SArmin Le Grand     maDashControl (SID_ATTR_LINE_DASH, *pBindings, *this),
205a567bdc8SArmin Le Grand     maWidthControl(SID_ATTR_LINE_WIDTH, *pBindings, *this),
206a567bdc8SArmin Le Grand     maColorControl(SID_ATTR_LINE_COLOR, *pBindings, *this),
207a567bdc8SArmin Le Grand     maStartControl(SID_ATTR_LINE_START, *pBindings, *this),
208a567bdc8SArmin Le Grand     maEndControl(SID_ATTR_LINE_END, *pBindings, *this),
209a567bdc8SArmin Le Grand     maLineEndListControl(SID_LINEEND_LIST, *pBindings, *this),
21097e8a929SArmin Le Grand     maLineStyleListControl(SID_DASH_LIST, *pBindings, *this),
211a567bdc8SArmin Le Grand     maTransControl(SID_ATTR_LINE_TRANSPARENCE, *pBindings, *this),
212a567bdc8SArmin Le Grand     maEdgeStyle(SID_ATTR_LINE_JOINT, *pBindings, *this),
213a567bdc8SArmin Le Grand     maCapStyle(SID_ATTR_LINE_CAP, *pBindings, *this),
2148dcb2a10SAndre Fischer     maColor(COL_BLACK),
2158dcb2a10SAndre Fischer     mpColorUpdater(new ::svx::ToolboxButtonColorUpdater(SID_ATTR_LINE_COLOR, TBI_COLOR, mpTBColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW)),
2168dcb2a10SAndre Fischer     mpStyleItem(),
2178dcb2a10SAndre Fischer     mpDashItem(),
2188dcb2a10SAndre Fischer     mnTrans(0),
2198dcb2a10SAndre Fischer     meMapUnit(SFX_MAPUNIT_MM),
2208dcb2a10SAndre Fischer     mnWidthCoreValue(0),
2218dcb2a10SAndre Fischer     mpLineEndList(0),
22297e8a929SArmin Le Grand     mpLineStyleList(0),
2238dcb2a10SAndre Fischer     mpStartItem(0),
2248dcb2a10SAndre Fischer     mpEndItem(0),
2258dcb2a10SAndre Fischer     maColorPopup(this, ::boost::bind(&LinePropertyPanel::CreateColorPopupControl, this, _1)),
2268dcb2a10SAndre Fischer     maLineWidthPopup(this, ::boost::bind(&LinePropertyPanel::CreateLineWidthPopupControl, this, _1)),
2278dcb2a10SAndre Fischer     maIMGColor(SVX_RES(IMG_COLOR)),
2288dcb2a10SAndre Fischer     maIMGNone(SVX_RES(IMG_NONE_ICON)),
2298dcb2a10SAndre Fischer     mpIMGWidthIcon(),
2308dcb2a10SAndre Fischer     mpIMGWidthIconH(),
2318dcb2a10SAndre Fischer     mxFrame(rxFrame),
2328dcb2a10SAndre Fischer     mpBindings(pBindings),
2338dcb2a10SAndre Fischer     mbColorAvailable(true),
2348dcb2a10SAndre Fischer     mbStyleAvailable(false),
2358dcb2a10SAndre Fischer     mbDashAvailable(false),
2368dcb2a10SAndre Fischer     mbTransAvailable(true),
2378dcb2a10SAndre Fischer     mbWidthValuable(true),
2388dcb2a10SAndre Fischer     mbStartAvailable(true),
2398dcb2a10SAndre Fischer     mbEndAvailable(true)
2408dcb2a10SAndre Fischer {
2418dcb2a10SAndre Fischer     Initialize();
2428dcb2a10SAndre Fischer     FreeResource();
2438dcb2a10SAndre Fischer }
2448dcb2a10SAndre Fischer 
2458dcb2a10SAndre Fischer 
2468dcb2a10SAndre Fischer 
2478dcb2a10SAndre Fischer LinePropertyPanel::~LinePropertyPanel()
2488dcb2a10SAndre Fischer {
2498dcb2a10SAndre Fischer     // Destroy the toolboxes, then their background windows.
2508dcb2a10SAndre Fischer     mpTBWidth.reset();
2518dcb2a10SAndre Fischer     mpTBColor.reset();
25297e8a929SArmin Le Grand 
2538dcb2a10SAndre Fischer     mpTBWidthBackground.reset();
2548dcb2a10SAndre Fischer     mpTBColorBackground.reset();
2558dcb2a10SAndre Fischer }
2568dcb2a10SAndre Fischer 
2578dcb2a10SAndre Fischer 
2588dcb2a10SAndre Fischer 
2598dcb2a10SAndre Fischer void LinePropertyPanel::Initialize()
2608dcb2a10SAndre Fischer {
26137fee4fdSAndre Fischer     mpFTWidth->SetBackground(Wallpaper());
26237fee4fdSAndre Fischer     mpFTColor->SetBackground(Wallpaper());
26337fee4fdSAndre Fischer     mpFTStyle->SetBackground(Wallpaper());
26437fee4fdSAndre Fischer     mpFTTrancparency->SetBackground(Wallpaper());
26537fee4fdSAndre Fischer     mpFTArrow->SetBackground(Wallpaper());
26637fee4fdSAndre Fischer     mpFTEdgeStyle->SetBackground(Wallpaper());
26737fee4fdSAndre Fischer     mpFTCapStyle->SetBackground(Wallpaper());
26837fee4fdSAndre Fischer 
2698dcb2a10SAndre Fischer     mpIMGWidthIcon.reset(new Image[8]);
2708dcb2a10SAndre Fischer 	mpIMGWidthIcon[0] = Image(SVX_RES(IMG_WIDTH1_ICON));
2718dcb2a10SAndre Fischer 	mpIMGWidthIcon[1] = Image(SVX_RES(IMG_WIDTH2_ICON));
2728dcb2a10SAndre Fischer 	mpIMGWidthIcon[2] = Image(SVX_RES(IMG_WIDTH3_ICON));
2738dcb2a10SAndre Fischer 	mpIMGWidthIcon[3] = Image(SVX_RES(IMG_WIDTH4_ICON));
2748dcb2a10SAndre Fischer 	mpIMGWidthIcon[4] = Image(SVX_RES(IMG_WIDTH5_ICON));
2758dcb2a10SAndre Fischer 	mpIMGWidthIcon[5] = Image(SVX_RES(IMG_WIDTH6_ICON));
2768dcb2a10SAndre Fischer 	mpIMGWidthIcon[6] = Image(SVX_RES(IMG_WIDTH7_ICON));
2778dcb2a10SAndre Fischer 	mpIMGWidthIcon[7] = Image(SVX_RES(IMG_WIDTH8_ICON));
2788dcb2a10SAndre Fischer 
2798dcb2a10SAndre Fischer 	//high contrast
2808dcb2a10SAndre Fischer     mpIMGWidthIconH.reset(new Image[8]);
2818dcb2a10SAndre Fischer 	mpIMGWidthIconH[0] = Image(SVX_RES(IMG_WIDTH1_ICON_H));
2828dcb2a10SAndre Fischer 	mpIMGWidthIconH[1] = Image(SVX_RES(IMG_WIDTH2_ICON_H));
2838dcb2a10SAndre Fischer 	mpIMGWidthIconH[2] = Image(SVX_RES(IMG_WIDTH3_ICON_H));
2848dcb2a10SAndre Fischer 	mpIMGWidthIconH[3] = Image(SVX_RES(IMG_WIDTH4_ICON_H));
2858dcb2a10SAndre Fischer 	mpIMGWidthIconH[4] = Image(SVX_RES(IMG_WIDTH5_ICON_H));
2868dcb2a10SAndre Fischer 	mpIMGWidthIconH[5] = Image(SVX_RES(IMG_WIDTH6_ICON_H));
2878dcb2a10SAndre Fischer 	mpIMGWidthIconH[6] = Image(SVX_RES(IMG_WIDTH7_ICON_H));
2888dcb2a10SAndre Fischer 	mpIMGWidthIconH[7] = Image(SVX_RES(IMG_WIDTH8_ICON_H));
2898dcb2a10SAndre Fischer 
2908dcb2a10SAndre Fischer 	meMapUnit = maWidthControl.GetCoreMetric();
2918dcb2a10SAndre Fischer 
2928dcb2a10SAndre Fischer 	mpTBColor->SetItemImage(TBI_COLOR, maIMGColor);
2938dcb2a10SAndre Fischer 	Size aTbxSize( mpTBColor->CalcWindowSizePixel() );
2948dcb2a10SAndre Fischer 	mpTBColor->SetOutputSizePixel( aTbxSize );
2958dcb2a10SAndre Fischer 	mpTBColor->SetItemBits( TBI_COLOR, mpTBColor->GetItemBits( TBI_COLOR ) | TIB_DROPDOWNONLY );
2968dcb2a10SAndre Fischer 	mpTBColor->SetQuickHelpText(TBI_COLOR,String(SVX_RES(STR_QH_TB_COLOR))); //Add
2978dcb2a10SAndre Fischer 	mpTBColor->SetBackground(Wallpaper());
2988dcb2a10SAndre Fischer 	mpTBColor->SetPaintTransparent(true);
2998dcb2a10SAndre Fischer 	Link aLink = LINK(this, LinePropertyPanel, ToolboxColorSelectHdl);
3008dcb2a10SAndre Fischer 	mpTBColor->SetDropdownClickHdl ( aLink );
3018dcb2a10SAndre Fischer 	mpTBColor->SetSelectHdl ( aLink );
3028dcb2a10SAndre Fischer 
30397e8a929SArmin Le Grand 	FillLineStyleList();
30497e8a929SArmin Le Grand 	SelectLineStyle();
30597e8a929SArmin Le Grand 	aLink = LINK( this, LinePropertyPanel, ChangeLineStyleHdl );
30697e8a929SArmin Le Grand 	mpLBStyle->SetSelectHdl( aLink );
30797e8a929SArmin Le Grand 	mpLBStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Style")));
308*a68b38dfSArmin Le Grand     mpLBStyle->AdaptDropDownLineCountToMaximum();
3098dcb2a10SAndre Fischer 
3108dcb2a10SAndre Fischer 	mpTBWidth->SetItemImage(TBI_WIDTH, mpIMGWidthIcon[0]);
3118dcb2a10SAndre Fischer 	aTbxSize = mpTBWidth->CalcWindowSizePixel() ;
3128dcb2a10SAndre Fischer 	mpTBWidth->SetOutputSizePixel( aTbxSize );
3138dcb2a10SAndre Fischer 	mpTBWidth->SetItemBits( TBI_WIDTH, mpTBWidth->GetItemBits( TBI_WIDTH ) | TIB_DROPDOWNONLY );
3148dcb2a10SAndre Fischer 	mpTBWidth->SetQuickHelpText(TBI_WIDTH,String(SVX_RES(STR_QH_TB_WIDTH))); //Add
3158dcb2a10SAndre Fischer 	mpTBWidth->SetBackground(Wallpaper());
3168dcb2a10SAndre Fischer 	mpTBWidth->SetPaintTransparent(true);
3178dcb2a10SAndre Fischer 	aLink = LINK(this, LinePropertyPanel, ToolboxWidthSelectHdl);
3188dcb2a10SAndre Fischer 	mpTBWidth->SetDropdownClickHdl ( aLink );
3198dcb2a10SAndre Fischer 	mpTBWidth->SetSelectHdl ( aLink );
3208dcb2a10SAndre Fischer 
3218dcb2a10SAndre Fischer 	FillLineEndList();
3228dcb2a10SAndre Fischer 	SelectEndStyle(true);
3238dcb2a10SAndre Fischer 	SelectEndStyle(false);
3248dcb2a10SAndre Fischer 	aLink = LINK( this, LinePropertyPanel, ChangeStartHdl );
3258dcb2a10SAndre Fischer 	mpLBStart->SetSelectHdl( aLink );
3268dcb2a10SAndre Fischer 	mpLBStart->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Beginning Style")));	//wj acc
327*a68b38dfSArmin Le Grand     mpLBStart->AdaptDropDownLineCountToMaximum();
3288dcb2a10SAndre Fischer 	aLink = LINK( this, LinePropertyPanel, ChangeEndHdl );
3298dcb2a10SAndre Fischer 	mpLBEnd->SetSelectHdl( aLink );
3308dcb2a10SAndre Fischer 	mpLBEnd->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Ending Style")));	//wj acc
331*a68b38dfSArmin Le Grand     mpLBEnd->AdaptDropDownLineCountToMaximum();
3328dcb2a10SAndre Fischer 
3338dcb2a10SAndre Fischer 	aLink = LINK(this, LinePropertyPanel, ChangeTransparentHdl);
3348dcb2a10SAndre Fischer 	mpMFTransparent->SetModifyHdl(aLink);
3358dcb2a10SAndre Fischer 	mpMFTransparent->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency")));	//wj acc
3368dcb2a10SAndre Fischer 
3378dcb2a10SAndre Fischer 	mpTBWidth->SetAccessibleRelationLabeledBy(mpFTWidth.get());
3388dcb2a10SAndre Fischer 	mpTBColor->SetAccessibleRelationLabeledBy(mpFTColor.get());
33997e8a929SArmin Le Grand     mpLBStyle->SetAccessibleRelationLabeledBy(mpFTStyle.get());
3408dcb2a10SAndre Fischer 	mpMFTransparent->SetAccessibleRelationLabeledBy(mpFTTrancparency.get());
3418dcb2a10SAndre Fischer 	mpLBStart->SetAccessibleRelationLabeledBy(mpFTArrow.get());
3428dcb2a10SAndre Fischer 	mpLBEnd->SetAccessibleRelationLabeledBy(mpLBEnd.get());
3438dcb2a10SAndre Fischer 
3448dcb2a10SAndre Fischer     aLink = LINK( this, LinePropertyPanel, ChangeEdgeStyleHdl );
3458dcb2a10SAndre Fischer     mpLBEdgeStyle->SetSelectHdl( aLink );
3468dcb2a10SAndre Fischer     mpLBEdgeStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Corner Style")));
3478dcb2a10SAndre Fischer 
3488dcb2a10SAndre Fischer     aLink = LINK( this, LinePropertyPanel, ChangeCapStyleHdl );
3498dcb2a10SAndre Fischer     mpLBCapStyle->SetSelectHdl( aLink );
3508dcb2a10SAndre Fischer     mpLBCapStyle->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Cap Style")));
3518dcb2a10SAndre Fischer }
3528dcb2a10SAndre Fischer 
3538dcb2a10SAndre Fischer 
3548dcb2a10SAndre Fischer 
3558dcb2a10SAndre Fischer void LinePropertyPanel::SetupIcons(void)
3568dcb2a10SAndre Fischer {
3578dcb2a10SAndre Fischer     if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
3588dcb2a10SAndre Fischer     {
3598dcb2a10SAndre Fischer         // todo
3608dcb2a10SAndre Fischer     }
3618dcb2a10SAndre Fischer     else
3628dcb2a10SAndre Fischer     {
3638dcb2a10SAndre Fischer         // todo
3648dcb2a10SAndre Fischer     }
3658dcb2a10SAndre Fischer }
3668dcb2a10SAndre Fischer 
3678dcb2a10SAndre Fischer 
3688dcb2a10SAndre Fischer 
3698dcb2a10SAndre Fischer LinePropertyPanel* LinePropertyPanel::Create (
3708dcb2a10SAndre Fischer     Window* pParent,
3718dcb2a10SAndre Fischer     const cssu::Reference<css::frame::XFrame>& rxFrame,
3728dcb2a10SAndre Fischer     SfxBindings* pBindings)
3738dcb2a10SAndre Fischer {
3748dcb2a10SAndre Fischer     if (pParent == NULL)
3758dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no parent Window given to LinePropertyPanel::Create"), NULL, 0);
3768dcb2a10SAndre Fischer     if ( ! rxFrame.is())
3778dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no XFrame given to LinePropertyPanel::Create"), NULL, 1);
3788dcb2a10SAndre Fischer     if (pBindings == NULL)
3798dcb2a10SAndre Fischer         throw lang::IllegalArgumentException(A2S("no SfxBindings given to LinePropertyPanel::Create"), NULL, 2);
3808dcb2a10SAndre Fischer 
3818dcb2a10SAndre Fischer     return new LinePropertyPanel(
3828dcb2a10SAndre Fischer         pParent,
3838dcb2a10SAndre Fischer         rxFrame,
3848dcb2a10SAndre Fischer         pBindings);
3858dcb2a10SAndre Fischer }
3868dcb2a10SAndre Fischer 
3878dcb2a10SAndre Fischer 
3888dcb2a10SAndre Fischer 
38937fee4fdSAndre Fischer 
3908dcb2a10SAndre Fischer void LinePropertyPanel::DataChanged(
3918dcb2a10SAndre Fischer     const DataChangedEvent& rEvent)
3928dcb2a10SAndre Fischer {
3938dcb2a10SAndre Fischer     (void)rEvent;
3948dcb2a10SAndre Fischer 
3958dcb2a10SAndre Fischer     SetupIcons();
3968dcb2a10SAndre Fischer }
3978dcb2a10SAndre Fischer 
3988dcb2a10SAndre Fischer 
3998dcb2a10SAndre Fischer 
4008dcb2a10SAndre Fischer 
4018dcb2a10SAndre Fischer void LinePropertyPanel::NotifyItemUpdate(
4028dcb2a10SAndre Fischer     sal_uInt16 nSID,
4038dcb2a10SAndre Fischer     SfxItemState eState,
40445da7d5eSAndre Fischer     const SfxPoolItem* pState,
40545da7d5eSAndre Fischer     const bool bIsEnabled)
4068dcb2a10SAndre Fischer {
40745da7d5eSAndre Fischer     (void)bIsEnabled;
40845da7d5eSAndre Fischer 
4098dcb2a10SAndre Fischer 	switch(nSID)
4108dcb2a10SAndre Fischer 	{
4118dcb2a10SAndre Fischer     	case SID_ATTR_LINE_COLOR:
4128dcb2a10SAndre Fischer         {
4138dcb2a10SAndre Fischer 		    if( eState == SFX_ITEM_DISABLED)
4148dcb2a10SAndre Fischer 		    {
4158dcb2a10SAndre Fischer 			    mpFTColor->Disable();
4168dcb2a10SAndre Fischer 			    mpTBColor->Disable();
4178dcb2a10SAndre Fischer 			    mbColorAvailable = false;
4188dcb2a10SAndre Fischer 			    mpColorUpdater->Update(COL_WHITE);
4198dcb2a10SAndre Fischer 		    }
4208dcb2a10SAndre Fischer 		    else
4218dcb2a10SAndre Fischer 		    {
4228dcb2a10SAndre Fischer 			    mpFTColor->Enable();
4238dcb2a10SAndre Fischer 			    mpTBColor->Enable();
4248dcb2a10SAndre Fischer                 const XLineColorItem* pItem = dynamic_cast< const XLineColorItem* >(pState);
4258dcb2a10SAndre Fischer 
4268dcb2a10SAndre Fischer 			    if(eState >= SFX_ITEM_DEFAULT && pItem)
4278dcb2a10SAndre Fischer 			    {
4288dcb2a10SAndre Fischer 				    maColor = pItem->GetColorValue();
4298dcb2a10SAndre Fischer 				    mbColorAvailable = true;
4308dcb2a10SAndre Fischer 				    mpColorUpdater->Update(maColor);
4318dcb2a10SAndre Fischer 			    }
4328dcb2a10SAndre Fischer 			    else
4338dcb2a10SAndre Fischer 			    {
4348dcb2a10SAndre Fischer 				    mbColorAvailable = false;
4358dcb2a10SAndre Fischer 				    mpColorUpdater->Update(COL_WHITE);
4368dcb2a10SAndre Fischer 			    }
4378dcb2a10SAndre Fischer 		    }
4388dcb2a10SAndre Fischer 		    break;
4398dcb2a10SAndre Fischer         }
4408dcb2a10SAndre Fischer 	    case SID_ATTR_LINE_DASH:
44197e8a929SArmin Le Grand 	    case SID_ATTR_LINE_STYLE:
4428dcb2a10SAndre Fischer         {
4438dcb2a10SAndre Fischer 		    if( eState == SFX_ITEM_DISABLED)
4448dcb2a10SAndre Fischer 		    {
4458dcb2a10SAndre Fischer 			    mpFTStyle->Disable();
44697e8a929SArmin Le Grand                 mpLBStyle->Disable();
4478dcb2a10SAndre Fischer 		    }
4488dcb2a10SAndre Fischer 		    else
4498dcb2a10SAndre Fischer 		    {
4508dcb2a10SAndre Fischer 			    mpFTStyle->Enable();
45197e8a929SArmin Le Grand                 mpLBStyle->Enable();
4528dcb2a10SAndre Fischer 			    if( eState  >= SFX_ITEM_DEFAULT )
4538dcb2a10SAndre Fischer 			    {
4548dcb2a10SAndre Fischer 				    if(nSID == SID_ATTR_LINE_STYLE)
4558dcb2a10SAndre Fischer 				    {
4568dcb2a10SAndre Fischer                         const XLineStyleItem* pItem = dynamic_cast< const XLineStyleItem* >(pState);
4578dcb2a10SAndre Fischer 
4588dcb2a10SAndre Fischer                         if(pItem)
4598dcb2a10SAndre Fischer                         {
4608dcb2a10SAndre Fischer 					        mbStyleAvailable =true;
4618dcb2a10SAndre Fischer     					    mpStyleItem.reset(pState ? (XLineStyleItem*)pItem->Clone() : 0);
4628dcb2a10SAndre Fischer                         }
4638dcb2a10SAndre Fischer 				    }
4648dcb2a10SAndre Fischer 				    else if(nSID == SID_ATTR_LINE_DASH)
4658dcb2a10SAndre Fischer 				    {
4668dcb2a10SAndre Fischer                         const XLineDashItem* pItem = dynamic_cast< const XLineDashItem* >(pState);
4678dcb2a10SAndre Fischer 
4688dcb2a10SAndre Fischer                         if(pItem)
4698dcb2a10SAndre Fischer                         {
4708dcb2a10SAndre Fischer     					    mbDashAvailable = true;
4718dcb2a10SAndre Fischer 	    				    mpDashItem.reset(pState ? (XLineDashItem*)pItem->Clone() : 0);
4728dcb2a10SAndre Fischer                         }
4738dcb2a10SAndre Fischer 				    }
4748dcb2a10SAndre Fischer 			    }
4758dcb2a10SAndre Fischer 			    else
4768dcb2a10SAndre Fischer 			    {
4778dcb2a10SAndre Fischer 				    if(nSID == SID_ATTR_LINE_STYLE)
4788dcb2a10SAndre Fischer 					    mbStyleAvailable = false;
4798dcb2a10SAndre Fischer 				    else
4808dcb2a10SAndre Fischer 					    mbDashAvailable = false;
4818dcb2a10SAndre Fischer 			    }
48297e8a929SArmin Le Grand 
48397e8a929SArmin Le Grand                 SelectLineStyle();
4848dcb2a10SAndre Fischer 		    }
4858dcb2a10SAndre Fischer 		    break;
4868dcb2a10SAndre Fischer         }
4878dcb2a10SAndre Fischer     	case SID_ATTR_LINE_TRANSPARENCE:
4888dcb2a10SAndre Fischer         {
4898dcb2a10SAndre Fischer 		    if( eState == SFX_ITEM_DISABLED )
4908dcb2a10SAndre Fischer 		    {
4918dcb2a10SAndre Fischer 			    mpFTTrancparency->Disable();
4928dcb2a10SAndre Fischer 			    mpMFTransparent->Disable();
4938dcb2a10SAndre Fischer 			    mpMFTransparent->SetValue(0);//add
4948dcb2a10SAndre Fischer 			    mpMFTransparent->SetText(String());
4958dcb2a10SAndre Fischer 			    mbTransAvailable = false;
4968dcb2a10SAndre Fischer 		    }
4978dcb2a10SAndre Fischer 		    else
4988dcb2a10SAndre Fischer 		    {
4998dcb2a10SAndre Fischer 			    mpFTTrancparency->Enable();
5008dcb2a10SAndre Fischer 			    mpMFTransparent->Enable();
5018dcb2a10SAndre Fischer 			    mbTransAvailable = true;
5028dcb2a10SAndre Fischer                 const XLineTransparenceItem* pItem = dynamic_cast< const XLineTransparenceItem* >(pState);
5038dcb2a10SAndre Fischer 
5048dcb2a10SAndre Fischer                 if(eState != SFX_ITEM_DONTCARE && pItem)
5058dcb2a10SAndre Fischer 			    {
5068dcb2a10SAndre Fischer 				    mnTrans = pItem->GetValue();
5078dcb2a10SAndre Fischer 				    mpMFTransparent->SetValue(mnTrans);
5088dcb2a10SAndre Fischer 			    }
5098dcb2a10SAndre Fischer 			    else
5108dcb2a10SAndre Fischer 			    {
5118dcb2a10SAndre Fischer 				    mpMFTransparent->SetValue(0);//add
5128dcb2a10SAndre Fischer 				    mpMFTransparent->SetText(String());
5138dcb2a10SAndre Fischer 			    }
5148dcb2a10SAndre Fischer 		    }
5158dcb2a10SAndre Fischer 		    break;
5168dcb2a10SAndre Fischer         }
5178dcb2a10SAndre Fischer     	case SID_ATTR_LINE_WIDTH:
5188dcb2a10SAndre Fischer         {
5198dcb2a10SAndre Fischer 		    if(eState == SFX_ITEM_DISABLED)
5208dcb2a10SAndre Fischer 		    {
5218dcb2a10SAndre Fischer 			    mpTBWidth->Disable();
5228dcb2a10SAndre Fischer 			    mpFTWidth->Disable();
5238dcb2a10SAndre Fischer 		    }
5248dcb2a10SAndre Fischer 		    else
5258dcb2a10SAndre Fischer 		    {
5268dcb2a10SAndre Fischer 			    //enable
5278dcb2a10SAndre Fischer 			    mpTBWidth->Enable();
5288dcb2a10SAndre Fischer 			    mpFTWidth->Enable();
5298dcb2a10SAndre Fischer                 const XLineWidthItem* pItem = dynamic_cast< const XLineWidthItem* >(pState);
5308dcb2a10SAndre Fischer 
5318dcb2a10SAndre Fischer 			    if(eState >= SFX_ITEM_AVAILABLE && pItem)
5328dcb2a10SAndre Fischer 			    {
5338dcb2a10SAndre Fischer 				    mnWidthCoreValue = pItem->GetValue();
5348dcb2a10SAndre Fischer 				    mbWidthValuable = true;
5358dcb2a10SAndre Fischer 			    }
5368dcb2a10SAndre Fischer 			    else
5378dcb2a10SAndre Fischer 			    {
5388dcb2a10SAndre Fischer 				    mbWidthValuable = false;
5398dcb2a10SAndre Fischer 			    }
5408dcb2a10SAndre Fischer 		    }
5418dcb2a10SAndre Fischer 		    SetWidthIcon();
5428dcb2a10SAndre Fischer 		    break;
5438dcb2a10SAndre Fischer         }
5448dcb2a10SAndre Fischer     	case SID_ATTR_LINE_START:
5458dcb2a10SAndre Fischer         {
546a567bdc8SArmin Le Grand 		    mpFTArrow->Enable();
547a567bdc8SArmin Le Grand 		    mpLBStart->Enable();
5488dcb2a10SAndre Fischer 
549a567bdc8SArmin Le Grand 		    if(eState != SFX_ITEM_DONTCARE)
5508dcb2a10SAndre Fischer 		    {
551a567bdc8SArmin Le Grand                 const XLineStartItem* pItem = dynamic_cast< const XLineStartItem* >(pState);
552a567bdc8SArmin Le Grand 
553a567bdc8SArmin Le Grand                 if(pItem)
554a567bdc8SArmin Le Grand                 {
555a567bdc8SArmin Le Grand 			        mbStartAvailable = true;	//add
556a567bdc8SArmin Le Grand 			        mpStartItem.reset(pItem ? (XLineStartItem*)pItem->Clone() : 0);
557a567bdc8SArmin Le Grand 			        SelectEndStyle(true);
558a567bdc8SArmin Le Grand                     break;
559a567bdc8SArmin Le Grand                 }
5608dcb2a10SAndre Fischer 		    }
561a567bdc8SArmin Le Grand 
562a567bdc8SArmin Le Grand             mpLBStart->SetNoSelection();
563a567bdc8SArmin Le Grand 			mbStartAvailable = false;	//add
5648dcb2a10SAndre Fischer 		    break;
5658dcb2a10SAndre Fischer         }
5668dcb2a10SAndre Fischer     	case SID_ATTR_LINE_END:
5678dcb2a10SAndre Fischer         {
5688dcb2a10SAndre Fischer 		    mpFTArrow->Enable();
5698dcb2a10SAndre Fischer 		    mpLBEnd->Enable();
5708dcb2a10SAndre Fischer 
571a567bdc8SArmin Le Grand 		    if(eState != SFX_ITEM_DONTCARE)
5728dcb2a10SAndre Fischer 		    {
573a567bdc8SArmin Le Grand                 const XLineEndItem* pItem = dynamic_cast< const XLineEndItem* >(pState);
574a567bdc8SArmin Le Grand 
575a567bdc8SArmin Le Grand                 if(pItem)
576a567bdc8SArmin Le Grand                 {
577a567bdc8SArmin Le Grand 			        mbEndAvailable = true;		//add
578a567bdc8SArmin Le Grand 			        mpEndItem.reset(pItem ? (XLineEndItem*)pItem->Clone() : 0);
579a567bdc8SArmin Le Grand 			        SelectEndStyle(false);
580a567bdc8SArmin Le Grand                     break;
581a567bdc8SArmin Le Grand                 }
5828dcb2a10SAndre Fischer 		    }
583a567bdc8SArmin Le Grand 
584a567bdc8SArmin Le Grand             mpLBEnd->SetNoSelection();
585a567bdc8SArmin Le Grand 			mbEndAvailable = false;		//add
5868dcb2a10SAndre Fischer 		    break;
5878dcb2a10SAndre Fischer         }
5888dcb2a10SAndre Fischer     	case SID_LINEEND_LIST:
5898dcb2a10SAndre Fischer         {
5908dcb2a10SAndre Fischer 		    FillLineEndList();
5918dcb2a10SAndre Fischer 		    SelectEndStyle(true);
5928dcb2a10SAndre Fischer 		    SelectEndStyle(false);
5938dcb2a10SAndre Fischer 		    break;
5948dcb2a10SAndre Fischer         }
59597e8a929SArmin Le Grand     	case SID_DASH_LIST:
59697e8a929SArmin Le Grand         {
59797e8a929SArmin Le Grand 		    FillLineStyleList();
59897e8a929SArmin Le Grand 		    SelectLineStyle();
59997e8a929SArmin Le Grand 		    break;
60097e8a929SArmin Le Grand         }
6018dcb2a10SAndre Fischer         case SID_ATTR_LINE_JOINT:
6028dcb2a10SAndre Fischer         {
6038dcb2a10SAndre Fischer             if(eState == SFX_ITEM_DISABLED)
6048dcb2a10SAndre Fischer             {
6058dcb2a10SAndre Fischer                 mpLBEdgeStyle->Disable();
6068dcb2a10SAndre Fischer             }
6078dcb2a10SAndre Fischer             else
6088dcb2a10SAndre Fischer             {
6098dcb2a10SAndre Fischer                 mpLBEdgeStyle->Enable();
6108dcb2a10SAndre Fischer                 const XLineJointItem* pItem = dynamic_cast< const XLineJointItem* >(pState);
6118dcb2a10SAndre Fischer                 sal_uInt16 nEntryPos(0);
6128dcb2a10SAndre Fischer 
6138dcb2a10SAndre Fischer                 if(eState >= SFX_ITEM_AVAILABLE && pItem)
6148dcb2a10SAndre Fischer                 {
6158dcb2a10SAndre Fischer                     switch(pItem->GetValue())
6168dcb2a10SAndre Fischer                     {
6178dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineJoint_MIDDLE:
6188dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineJoint_ROUND:
6198dcb2a10SAndre Fischer                         {
6208dcb2a10SAndre Fischer                             nEntryPos = 1;
6218dcb2a10SAndre Fischer                             break;
6228dcb2a10SAndre Fischer                         }
6238dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineJoint_NONE:
6248dcb2a10SAndre Fischer                         {
6258dcb2a10SAndre Fischer                             nEntryPos = 2;
6268dcb2a10SAndre Fischer                             break;
6278dcb2a10SAndre Fischer                         }
6288dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineJoint_MITER:
6298dcb2a10SAndre Fischer                         {
6308dcb2a10SAndre Fischer                             nEntryPos = 3;
6318dcb2a10SAndre Fischer                             break;
6328dcb2a10SAndre Fischer                         }
6338dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineJoint_BEVEL:
6348dcb2a10SAndre Fischer                         {
6358dcb2a10SAndre Fischer                             nEntryPos = 4;
6368dcb2a10SAndre Fischer                             break;
6378dcb2a10SAndre Fischer                         }
6388dcb2a10SAndre Fischer 
6398dcb2a10SAndre Fischer                         default:
6408dcb2a10SAndre Fischer                             break;
6418dcb2a10SAndre Fischer                     }
6428dcb2a10SAndre Fischer                 }
6438dcb2a10SAndre Fischer 
6448dcb2a10SAndre Fischer                 if(nEntryPos)
6458dcb2a10SAndre Fischer                 {
6468dcb2a10SAndre Fischer                     mpLBEdgeStyle->SelectEntryPos(nEntryPos - 1);
6478dcb2a10SAndre Fischer                 }
6488dcb2a10SAndre Fischer                 else
6498dcb2a10SAndre Fischer                 {
6508dcb2a10SAndre Fischer                     mpLBEdgeStyle->SetNoSelection();
6518dcb2a10SAndre Fischer                 }
6528dcb2a10SAndre Fischer             }
6538dcb2a10SAndre Fischer             break;
6548dcb2a10SAndre Fischer         }
6558dcb2a10SAndre Fischer         case SID_ATTR_LINE_CAP:
6568dcb2a10SAndre Fischer         {
6578dcb2a10SAndre Fischer             if(eState == SFX_ITEM_DISABLED)
6588dcb2a10SAndre Fischer             {
6598dcb2a10SAndre Fischer                 mpLBCapStyle->Disable();
6608dcb2a10SAndre Fischer             }
6618dcb2a10SAndre Fischer             else
6628dcb2a10SAndre Fischer             {
6638dcb2a10SAndre Fischer                 mpLBCapStyle->Enable();
6648dcb2a10SAndre Fischer                 const XLineCapItem* pItem = dynamic_cast< const XLineCapItem* >(pState);
6658dcb2a10SAndre Fischer                 sal_uInt16 nEntryPos(0);
6668dcb2a10SAndre Fischer 
6678dcb2a10SAndre Fischer                 if(eState >= SFX_ITEM_AVAILABLE && pItem)
6688dcb2a10SAndre Fischer                 {
6698dcb2a10SAndre Fischer                     switch(pItem->GetValue())
6708dcb2a10SAndre Fischer                     {
6718dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineCap_BUTT:
6728dcb2a10SAndre Fischer                         {
6738dcb2a10SAndre Fischer                             nEntryPos = 1;
6748dcb2a10SAndre Fischer                             break;
6758dcb2a10SAndre Fischer                         }
6768dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineCap_ROUND:
6778dcb2a10SAndre Fischer                         {
6788dcb2a10SAndre Fischer                             nEntryPos = 2;
6798dcb2a10SAndre Fischer                             break;
6808dcb2a10SAndre Fischer                         }
6818dcb2a10SAndre Fischer                         case com::sun::star::drawing::LineCap_SQUARE:
6828dcb2a10SAndre Fischer                         {
6838dcb2a10SAndre Fischer                             nEntryPos = 3;
6848dcb2a10SAndre Fischer                             break;
6858dcb2a10SAndre Fischer                         }
6868dcb2a10SAndre Fischer 
6878dcb2a10SAndre Fischer                         default:
6888dcb2a10SAndre Fischer                             break;
6898dcb2a10SAndre Fischer                     }
6908dcb2a10SAndre Fischer                 }
6918dcb2a10SAndre Fischer 
6928dcb2a10SAndre Fischer                 if(nEntryPos)
6938dcb2a10SAndre Fischer                 {
6948dcb2a10SAndre Fischer                     mpLBCapStyle->SelectEntryPos(nEntryPos - 1);
6958dcb2a10SAndre Fischer                 }
6968dcb2a10SAndre Fischer                 else
6978dcb2a10SAndre Fischer                 {
6988dcb2a10SAndre Fischer                     mpLBCapStyle->SetNoSelection();
6998dcb2a10SAndre Fischer                 }
7008dcb2a10SAndre Fischer             }
7018dcb2a10SAndre Fischer             break;
7028dcb2a10SAndre Fischer         }
7038dcb2a10SAndre Fischer     }
7048dcb2a10SAndre Fischer }
7058dcb2a10SAndre Fischer 
7068dcb2a10SAndre Fischer 
7078dcb2a10SAndre Fischer 
70845da7d5eSAndre Fischer 
7098dcb2a10SAndre Fischer SfxBindings* LinePropertyPanel::GetBindings()
7108dcb2a10SAndre Fischer {
7118dcb2a10SAndre Fischer     return mpBindings;
7128dcb2a10SAndre Fischer }
7138dcb2a10SAndre Fischer 
7148dcb2a10SAndre Fischer 
7158dcb2a10SAndre Fischer 
7168dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
7178dcb2a10SAndre Fischer {
7188dcb2a10SAndre Fischer 	return 0;
7198dcb2a10SAndre Fischer }
7208dcb2a10SAndre Fischer 
7218dcb2a10SAndre Fischer 
7228dcb2a10SAndre Fischer 
7238dcb2a10SAndre Fischer 
7248dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxColorSelectHdl,ToolBox*, pToolBox)
7258dcb2a10SAndre Fischer {
7268dcb2a10SAndre Fischer 	sal_uInt16 nId = pToolBox->GetCurItemId();
7278dcb2a10SAndre Fischer 	if(nId == TBI_COLOR)
7288dcb2a10SAndre Fischer 	{
7298dcb2a10SAndre Fischer         maColorPopup.Show(*pToolBox);
7308dcb2a10SAndre Fischer         maColorPopup.SetCurrentColor(maColor, mbColorAvailable);
7318dcb2a10SAndre Fischer 	}
7328dcb2a10SAndre Fischer 	return 0;
7338dcb2a10SAndre Fischer }
7348dcb2a10SAndre Fischer 
7358dcb2a10SAndre Fischer 
7368dcb2a10SAndre Fischer 
7378dcb2a10SAndre Fischer 
7387134ea5bSPavel Janík IMPL_LINK(LinePropertyPanel, ChangeLineStyleHdl, ToolBox*, /* pToolBox */)
7398dcb2a10SAndre Fischer {
74097e8a929SArmin Le Grand     const sal_uInt16 nPos(mpLBStyle->GetSelectEntryPos());
7418dcb2a10SAndre Fischer 
74297e8a929SArmin Le Grand     if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBStyle->GetSavedValue())
74397e8a929SArmin Le Grand     {
74497e8a929SArmin Le Grand         if(0 == nPos)
74597e8a929SArmin Le Grand         {
74697e8a929SArmin Le Grand             // XLINE_NONE
74797e8a929SArmin Le Grand             const XLineStyleItem aItem(XLINE_NONE);
74897e8a929SArmin Le Grand 
74997e8a929SArmin Le Grand             GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L);
75097e8a929SArmin Le Grand         }
75197e8a929SArmin Le Grand         else if(1 == nPos)
75297e8a929SArmin Le Grand         {
75397e8a929SArmin Le Grand             // XLINE_SOLID
75497e8a929SArmin Le Grand             const XLineStyleItem aItem(XLINE_SOLID);
75597e8a929SArmin Le Grand 
75697e8a929SArmin Le Grand             GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L);
75797e8a929SArmin Le Grand         }
75897e8a929SArmin Le Grand         else if(mpLineStyleList && mpLineStyleList->Count() > (long)(nPos - 2))
75997e8a929SArmin Le Grand         {
76097e8a929SArmin Le Grand             // XLINE_DASH
76197e8a929SArmin Le Grand             const XLineStyleItem aItemA(XLINE_DASH);
762c3c0ed1bSArmin Le Grand             const XDashEntry* pDashEntry = mpLineStyleList->GetDash(nPos - 2);
763c3c0ed1bSArmin Le Grand             OSL_ENSURE(pDashEntry, "OOps, got empty XDash from XDashList (!)");
764c3c0ed1bSArmin Le Grand             const XLineDashItem aItemB(
765c3c0ed1bSArmin Le Grand                 pDashEntry ? pDashEntry->GetName() : String(),
766c3c0ed1bSArmin Le Grand                 pDashEntry ? pDashEntry->GetDash() : XDash());
76797e8a929SArmin Le Grand 
76897e8a929SArmin Le Grand             GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItemA, 0L);
76997e8a929SArmin Le Grand             GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_DASH, SFX_CALLMODE_RECORD, &aItemB, 0L);
77097e8a929SArmin Le Grand         }
77197e8a929SArmin Le Grand     }
77297e8a929SArmin Le Grand 
77397e8a929SArmin Le Grand     return 0;
77497e8a929SArmin Le Grand }
7758dcb2a10SAndre Fischer 
7768dcb2a10SAndre Fischer 
7778dcb2a10SAndre Fischer 
7788dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeStartHdl, void*, EMPTYARG)
7798dcb2a10SAndre Fischer {
7808dcb2a10SAndre Fischer 	sal_uInt16	nPos = mpLBStart->GetSelectEntryPos();
7818dcb2a10SAndre Fischer 	if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBStart->GetSavedValue() )
7828dcb2a10SAndre Fischer 	{
7838dcb2a10SAndre Fischer 		XLineStartItem* pItem = NULL;
7848dcb2a10SAndre Fischer 		if( nPos == 0 )
7858dcb2a10SAndre Fischer 			pItem = new XLineStartItem();
7868dcb2a10SAndre Fischer 		else if( mpLineEndList && mpLineEndList->Count() > (long) ( nPos - 1 ) )
7878dcb2a10SAndre Fischer 			pItem = new XLineStartItem( mpLBStart->GetSelectEntry(),mpLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() );
7888dcb2a10SAndre Fischer 		GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem,  0L);
7898dcb2a10SAndre Fischer 		delete pItem;
7908dcb2a10SAndre Fischer 	}
7918dcb2a10SAndre Fischer 	return 0;
7928dcb2a10SAndre Fischer }
7938dcb2a10SAndre Fischer 
7948dcb2a10SAndre Fischer 
7958dcb2a10SAndre Fischer 
7968dcb2a10SAndre Fischer 
7978dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEndHdl, void*, EMPTYARG)
7988dcb2a10SAndre Fischer {
7998dcb2a10SAndre Fischer 	sal_uInt16	nPos = mpLBEnd->GetSelectEntryPos();
8008dcb2a10SAndre Fischer 	if( nPos != LISTBOX_ENTRY_NOTFOUND && nPos != mpLBEnd->GetSavedValue() )
8018dcb2a10SAndre Fischer 	{
8028dcb2a10SAndre Fischer 		XLineEndItem* pItem = NULL;
8038dcb2a10SAndre Fischer 		if( nPos == 0 )
8048dcb2a10SAndre Fischer 			pItem = new XLineEndItem();
8058dcb2a10SAndre Fischer 		else if( mpLineEndList && mpLineEndList->Count() > (long) ( nPos - 1 ) )
8068dcb2a10SAndre Fischer 			pItem = new XLineEndItem( mpLBEnd->GetSelectEntry(), mpLineEndList->GetLineEnd( nPos - 1 )->GetLineEnd() );
8078dcb2a10SAndre Fischer 		GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINEEND_STYLE, SFX_CALLMODE_RECORD, pItem,  0L);
8088dcb2a10SAndre Fischer 		delete pItem;
8098dcb2a10SAndre Fischer 	}
8108dcb2a10SAndre Fischer 	return 0;
8118dcb2a10SAndre Fischer }
8128dcb2a10SAndre Fischer 
8138dcb2a10SAndre Fischer 
8148dcb2a10SAndre Fischer 
8158dcb2a10SAndre Fischer 
8168dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeEdgeStyleHdl, void*, EMPTYARG)
8178dcb2a10SAndre Fischer {
8188dcb2a10SAndre Fischer     const sal_uInt16 nPos(mpLBEdgeStyle->GetSelectEntryPos());
8198dcb2a10SAndre Fischer 
8208dcb2a10SAndre Fischer     if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBEdgeStyle->GetSavedValue())
8218dcb2a10SAndre Fischer     {
8228dcb2a10SAndre Fischer         XLineJointItem* pItem = 0;
8238dcb2a10SAndre Fischer 
8248dcb2a10SAndre Fischer         switch(nPos)
8258dcb2a10SAndre Fischer         {
8268dcb2a10SAndre Fischer             case 0: // rounded
8278dcb2a10SAndre Fischer             {
8288dcb2a10SAndre Fischer                 pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_ROUND);
8298dcb2a10SAndre Fischer                 break;
8308dcb2a10SAndre Fischer             }
8318dcb2a10SAndre Fischer             case 1: // none
8328dcb2a10SAndre Fischer             {
8338dcb2a10SAndre Fischer                 pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_NONE);
8348dcb2a10SAndre Fischer                 break;
8358dcb2a10SAndre Fischer             }
8368dcb2a10SAndre Fischer             case 2: // mitered
8378dcb2a10SAndre Fischer             {
8388dcb2a10SAndre Fischer                 pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_MITER);
8398dcb2a10SAndre Fischer                 break;
8408dcb2a10SAndre Fischer             }
8418dcb2a10SAndre Fischer             case 3: // beveled
8428dcb2a10SAndre Fischer             {
8438dcb2a10SAndre Fischer                 pItem = new XLineJointItem(com::sun::star::drawing::LineJoint_BEVEL);
8448dcb2a10SAndre Fischer                 break;
8458dcb2a10SAndre Fischer             }
8468dcb2a10SAndre Fischer         }
8478dcb2a10SAndre Fischer 
8488dcb2a10SAndre Fischer         GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_JOINT, SFX_CALLMODE_RECORD, pItem,  0L);
8498dcb2a10SAndre Fischer         delete pItem;
8508dcb2a10SAndre Fischer     }
8518dcb2a10SAndre Fischer     return 0;
8528dcb2a10SAndre Fischer }
8538dcb2a10SAndre Fischer 
8548dcb2a10SAndre Fischer 
8558dcb2a10SAndre Fischer 
8568dcb2a10SAndre Fischer 
8578dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ChangeCapStyleHdl, void*, EMPTYARG)
8588dcb2a10SAndre Fischer {
8598dcb2a10SAndre Fischer     const sal_uInt16 nPos(mpLBCapStyle->GetSelectEntryPos());
8608dcb2a10SAndre Fischer 
8618dcb2a10SAndre Fischer     if(LISTBOX_ENTRY_NOTFOUND != nPos && nPos != mpLBCapStyle->GetSavedValue())
8628dcb2a10SAndre Fischer     {
8638dcb2a10SAndre Fischer         XLineCapItem* pItem = 0;
8648dcb2a10SAndre Fischer 
8658dcb2a10SAndre Fischer         switch(nPos)
8668dcb2a10SAndre Fischer         {
8678dcb2a10SAndre Fischer             case 0: // flat
8688dcb2a10SAndre Fischer             {
8698dcb2a10SAndre Fischer                 pItem = new XLineCapItem(com::sun::star::drawing::LineCap_BUTT);
8708dcb2a10SAndre Fischer                 break;
8718dcb2a10SAndre Fischer             }
8728dcb2a10SAndre Fischer             case 1: // round
8738dcb2a10SAndre Fischer             {
8748dcb2a10SAndre Fischer                 pItem = new XLineCapItem(com::sun::star::drawing::LineCap_ROUND);
8758dcb2a10SAndre Fischer                 break;
8768dcb2a10SAndre Fischer             }
8778dcb2a10SAndre Fischer             case 2: // square
8788dcb2a10SAndre Fischer             {
8798dcb2a10SAndre Fischer                 pItem = new XLineCapItem(com::sun::star::drawing::LineCap_SQUARE);
8808dcb2a10SAndre Fischer                 break;
8818dcb2a10SAndre Fischer             }
8828dcb2a10SAndre Fischer         }
8838dcb2a10SAndre Fischer 
8848dcb2a10SAndre Fischer         GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_CAP, SFX_CALLMODE_RECORD, pItem,  0L);
8858dcb2a10SAndre Fischer         delete pItem;
8868dcb2a10SAndre Fischer     }
8878dcb2a10SAndre Fischer     return 0;
8888dcb2a10SAndre Fischer }
8898dcb2a10SAndre Fischer 
8908dcb2a10SAndre Fischer 
8918dcb2a10SAndre Fischer 
8928dcb2a10SAndre Fischer 
8938dcb2a10SAndre Fischer IMPL_LINK(LinePropertyPanel, ToolboxWidthSelectHdl,ToolBox*, pToolBox)
8948dcb2a10SAndre Fischer {
8958dcb2a10SAndre Fischer 	if (pToolBox->GetCurItemId() == TBI_WIDTH)
8968dcb2a10SAndre Fischer 	{
8978dcb2a10SAndre Fischer 		maLineWidthPopup.SetWidthSelect(mnWidthCoreValue, mbWidthValuable, meMapUnit);
8988dcb2a10SAndre Fischer         maLineWidthPopup.Show(*pToolBox);
8998dcb2a10SAndre Fischer 	}
9008dcb2a10SAndre Fischer 	return 0;
9018dcb2a10SAndre Fischer }
9028dcb2a10SAndre Fischer 
9038dcb2a10SAndre Fischer 
9048dcb2a10SAndre Fischer 
9058dcb2a10SAndre Fischer 
9068dcb2a10SAndre Fischer IMPL_LINK( LinePropertyPanel, ChangeTransparentHdl, void *, EMPTYARG )
9078dcb2a10SAndre Fischer {
9088dcb2a10SAndre Fischer 	sal_uInt16 nVal = (sal_uInt16)mpMFTransparent->GetValue();
9098dcb2a10SAndre Fischer 	XLineTransparenceItem aItem( nVal );
9108dcb2a10SAndre Fischer 
9118dcb2a10SAndre Fischer 	GetBindings()->GetDispatcher()->Execute(SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aItem, 0L);
9128dcb2a10SAndre Fischer 	return( 0L );
9138dcb2a10SAndre Fischer }
9148dcb2a10SAndre Fischer 
9158dcb2a10SAndre Fischer 
9168dcb2a10SAndre Fischer 
9178dcb2a10SAndre Fischer 
918b7a56e95SArmin Le Grand namespace
919b7a56e95SArmin Le Grand {
920b7a56e95SArmin Le Grand     Color GetTransparentColor (void)
921b7a56e95SArmin Le Grand     {
922b7a56e95SArmin Le Grand         return COL_TRANSPARENT;
923b7a56e95SArmin Le Grand     }
924b7a56e95SArmin Le Grand } // end of anonymous namespace
925b7a56e95SArmin Le Grand 
9268dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateColorPopupControl (PopupContainer* pParent)
9278dcb2a10SAndre Fischer {
9288dcb2a10SAndre Fischer     return new ColorControl(
9298dcb2a10SAndre Fischer         pParent,
9308dcb2a10SAndre Fischer         mpBindings,
9318dcb2a10SAndre Fischer         SVX_RES(RID_POPUPPANEL_LINEPAGE_COLOR),
9328dcb2a10SAndre Fischer         SVX_RES(VS_COLOR),
9338dcb2a10SAndre Fischer         ::boost::bind(GetTransparentColor),
9348dcb2a10SAndre Fischer         ::boost::bind(&LinePropertyPanel::SetColor, this, _1, _2),
9358dcb2a10SAndre Fischer         pParent,
936b7a56e95SArmin Le Grand         0);
9378dcb2a10SAndre Fischer }
9388dcb2a10SAndre Fischer 
9398dcb2a10SAndre Fischer 
9408dcb2a10SAndre Fischer 
9418dcb2a10SAndre Fischer 
9428dcb2a10SAndre Fischer PopupControl* LinePropertyPanel::CreateLineWidthPopupControl (PopupContainer* pParent)
9438dcb2a10SAndre Fischer {
9448dcb2a10SAndre Fischer     return new LineWidthControl(pParent, *this);
9458dcb2a10SAndre Fischer }
9468dcb2a10SAndre Fischer 
9478dcb2a10SAndre Fischer 
9488dcb2a10SAndre Fischer 
9498dcb2a10SAndre Fischer 
9508dcb2a10SAndre Fischer void LinePropertyPanel::EndLineWidthPopupMode (void)
9518dcb2a10SAndre Fischer {
9528dcb2a10SAndre Fischer     maLineWidthPopup.Hide();
9538dcb2a10SAndre Fischer }
9548dcb2a10SAndre Fischer 
9558dcb2a10SAndre Fischer 
9568dcb2a10SAndre Fischer 
9578dcb2a10SAndre Fischer 
9588dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon(int n)
9598dcb2a10SAndre Fischer {
9608dcb2a10SAndre Fischer 	if(n==0)
9618dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone);
9628dcb2a10SAndre Fischer 	else
9638dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[n-1] : mpIMGWidthIcon[n-1]);
9648dcb2a10SAndre Fischer }
9658dcb2a10SAndre Fischer 
9668dcb2a10SAndre Fischer 
9678dcb2a10SAndre Fischer 
9688dcb2a10SAndre Fischer void LinePropertyPanel::SetWidthIcon()
9698dcb2a10SAndre Fischer {
9708dcb2a10SAndre Fischer 	if(!mbWidthValuable)
9718dcb2a10SAndre Fischer 	{
9728dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, maIMGNone);
9738dcb2a10SAndre Fischer 		return;
9748dcb2a10SAndre Fischer 	}
9758dcb2a10SAndre Fischer 
9768dcb2a10SAndre Fischer 	long nVal = LogicToLogic(mnWidthCoreValue * 10,(MapUnit)meMapUnit , MAP_POINT);
9778dcb2a10SAndre Fischer 
9788dcb2a10SAndre Fischer 	if(nVal <= 6)
9798dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[0] : mpIMGWidthIcon[0]);
9808dcb2a10SAndre Fischer 	else if(nVal > 6 && nVal <= 9)
9818dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[1] : mpIMGWidthIcon[1]);
9828dcb2a10SAndre Fischer 	else if(nVal > 9 && nVal <= 12)
9838dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[2] : mpIMGWidthIcon[2]);
9848dcb2a10SAndre Fischer 	else if(nVal > 12 && nVal <= 19)
9858dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[3] : mpIMGWidthIcon[3]);
9868dcb2a10SAndre Fischer 	else if(nVal > 19 && nVal <= 26)
9878dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[4] : mpIMGWidthIcon[4]);
9888dcb2a10SAndre Fischer 	else if(nVal > 26 && nVal <= 37)
9898dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[5] : mpIMGWidthIcon[5]);
9908dcb2a10SAndre Fischer 	else if(nVal > 37 && nVal <=52)
9918dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[6] : mpIMGWidthIcon[6]);
9928dcb2a10SAndre Fischer 	else if(nVal > 52)
9938dcb2a10SAndre Fischer 		mpTBWidth->SetItemImage( TBI_WIDTH, GetDisplayBackground().GetColor().IsDark() ? mpIMGWidthIconH[7] : mpIMGWidthIcon[7]);
9948dcb2a10SAndre Fischer 
9958dcb2a10SAndre Fischer }
9968dcb2a10SAndre Fischer 
9978dcb2a10SAndre Fischer 
9988dcb2a10SAndre Fischer 
9998dcb2a10SAndre Fischer void LinePropertyPanel::SetColor (
10008dcb2a10SAndre Fischer     const String& rsColorName,
10018dcb2a10SAndre Fischer     const Color aColor)
10028dcb2a10SAndre Fischer {
10038dcb2a10SAndre Fischer     XLineColorItem aColorItem(rsColorName, aColor);
10048dcb2a10SAndre Fischer     mpBindings->GetDispatcher()->Execute(SID_ATTR_LINE_COLOR, SFX_CALLMODE_RECORD, &aColorItem, 0L);
10058dcb2a10SAndre Fischer     maColor = aColor;
10068dcb2a10SAndre Fischer }
10078dcb2a10SAndre Fischer 
10088dcb2a10SAndre Fischer 
10098dcb2a10SAndre Fischer 
10108dcb2a10SAndre Fischer void LinePropertyPanel::SetWidth(long nWidth)
10118dcb2a10SAndre Fischer {
10128dcb2a10SAndre Fischer     mnWidthCoreValue = nWidth;
10138dcb2a10SAndre Fischer     mbWidthValuable = true;
10148dcb2a10SAndre Fischer }
10158dcb2a10SAndre Fischer 
10168dcb2a10SAndre Fischer 
10178dcb2a10SAndre Fischer 
10188dcb2a10SAndre Fischer void  LinePropertyPanel::FillLineEndList()
10198dcb2a10SAndre Fischer {
10208dcb2a10SAndre Fischer 	SfxObjectShell* pSh = SfxObjectShell::Current();
10218dcb2a10SAndre Fischer 	if ( pSh && pSh->GetItem( SID_LINEEND_LIST ) )
10228dcb2a10SAndre Fischer 	{
10238dcb2a10SAndre Fischer 		mpLBStart->Enable();
10248dcb2a10SAndre Fischer 		SvxLineEndListItem aItem( *(const SvxLineEndListItem*)(pSh->GetItem( SID_LINEEND_LIST ) ) );
10258dcb2a10SAndre Fischer 		mpLineEndList = aItem.GetLineEndList();
1026a567bdc8SArmin Le Grand 
10278dcb2a10SAndre Fischer         if(mpLineEndList)
10288dcb2a10SAndre Fischer 		{
1029a567bdc8SArmin Le Grand             FillLineEndListBox(*mpLBStart, *mpLBEnd, *mpLineEndList);
10308dcb2a10SAndre Fischer 		}
1031a567bdc8SArmin Le Grand 
1032a567bdc8SArmin Le Grand 		mpLBStart->SelectEntryPos(0);
1033a567bdc8SArmin Le Grand 		mpLBEnd->SelectEntryPos(0);
10348dcb2a10SAndre Fischer 	}
10358dcb2a10SAndre Fischer 	else
10368dcb2a10SAndre Fischer 	{
10378dcb2a10SAndre Fischer 		mpLBStart->Disable();
10388dcb2a10SAndre Fischer 		mpLBEnd->Disable();
10398dcb2a10SAndre Fischer 	}
10408dcb2a10SAndre Fischer }
10418dcb2a10SAndre Fischer 
10428dcb2a10SAndre Fischer 
10438dcb2a10SAndre Fischer 
104497e8a929SArmin Le Grand void  LinePropertyPanel::FillLineStyleList()
104597e8a929SArmin Le Grand {
104697e8a929SArmin Le Grand 	SfxObjectShell* pSh = SfxObjectShell::Current();
104797e8a929SArmin Le Grand 	if ( pSh && pSh->GetItem( SID_DASH_LIST ) )
104897e8a929SArmin Le Grand 	{
104997e8a929SArmin Le Grand 		mpLBStyle->Enable();
105097e8a929SArmin Le Grand 		SvxDashListItem aItem( *(const SvxDashListItem*)(pSh->GetItem( SID_DASH_LIST ) ) );
105197e8a929SArmin Le Grand 		mpLineStyleList = aItem.GetDashList();
105297e8a929SArmin Le Grand 
105397e8a929SArmin Le Grand         if(mpLineStyleList)
105497e8a929SArmin Le Grand 		{
105597e8a929SArmin Le Grand             FillLineStyleListBox(*mpLBStyle, *mpLineStyleList);
105697e8a929SArmin Le Grand 		}
105797e8a929SArmin Le Grand 
105897e8a929SArmin Le Grand 		mpLBStyle->SelectEntryPos(0);
105997e8a929SArmin Le Grand 	}
106097e8a929SArmin Le Grand 	else
106197e8a929SArmin Le Grand 	{
106297e8a929SArmin Le Grand 		mpLBStyle->Disable();
106397e8a929SArmin Le Grand 	}
106497e8a929SArmin Le Grand }
106597e8a929SArmin Le Grand 
106697e8a929SArmin Le Grand 
106797e8a929SArmin Le Grand 
106897e8a929SArmin Le Grand void LinePropertyPanel::SelectLineStyle()
106997e8a929SArmin Le Grand {
107097e8a929SArmin Le Grand 	if( !mbStyleAvailable || !mbDashAvailable )
107197e8a929SArmin Le Grand 	{
107297e8a929SArmin Le Grand 		mpLBStyle->SetNoSelection();
107397e8a929SArmin Le Grand 		return;
107497e8a929SArmin Le Grand 	}
107597e8a929SArmin Le Grand 
107697e8a929SArmin Le Grand     const XLineStyle eXLS(mpStyleItem ? (XLineStyle)mpStyleItem->GetValue() : XLINE_NONE);
107797e8a929SArmin Le Grand 	bool bSelected(false);
107897e8a929SArmin Le Grand 
107997e8a929SArmin Le Grand     switch(eXLS)
108097e8a929SArmin Le Grand     {
108197e8a929SArmin Le Grand         case XLINE_NONE:
108297e8a929SArmin Le Grand             break;
108397e8a929SArmin Le Grand         case XLINE_SOLID:
108497e8a929SArmin Le Grand 			mpLBStyle->SelectEntryPos(1);
108597e8a929SArmin Le Grand 			bSelected = true;
108697e8a929SArmin Le Grand             break;
108797e8a929SArmin Le Grand         default:
108897e8a929SArmin Le Grand             if(mpDashItem && mpLineStyleList)
108997e8a929SArmin Le Grand 	        {
109097e8a929SArmin Le Grand 		        const XDash& rDash = mpDashItem->GetDashValue();
109197e8a929SArmin Le Grand 		        for(sal_Int32 a(0);!bSelected &&  a < mpLineStyleList->Count(); a++)
109297e8a929SArmin Le Grand 		        {
109397e8a929SArmin Le Grand 			        XDashEntry* pEntry = mpLineStyleList->GetDash(a);
109497e8a929SArmin Le Grand 			        const XDash& rEntry = pEntry->GetDash();
109597e8a929SArmin Le Grand 			        if(rDash == rEntry)
109697e8a929SArmin Le Grand 			        {
109797e8a929SArmin Le Grand 				        mpLBStyle->SelectEntryPos((sal_uInt16)a + 2);
109897e8a929SArmin Le Grand 				        bSelected = true;
109997e8a929SArmin Le Grand 			        }
110097e8a929SArmin Le Grand 		        }
110197e8a929SArmin Le Grand 	        }
110297e8a929SArmin Le Grand             break;
110397e8a929SArmin Le Grand     }
110497e8a929SArmin Le Grand 
110597e8a929SArmin Le Grand     if(!bSelected)
110697e8a929SArmin Le Grand 		mpLBStyle->SelectEntryPos( 0 );
110797e8a929SArmin Le Grand }
110897e8a929SArmin Le Grand 
11098dcb2a10SAndre Fischer void LinePropertyPanel::SelectEndStyle(bool bStart)
11108dcb2a10SAndre Fischer {
11118dcb2a10SAndre Fischer 	sal_Bool bSelected(false);
11128dcb2a10SAndre Fischer 
11138dcb2a10SAndre Fischer 	if(bStart)
11148dcb2a10SAndre Fischer 	{
11158dcb2a10SAndre Fischer 		//<<add
11168dcb2a10SAndre Fischer 		if( !mbStartAvailable )
11178dcb2a10SAndre Fischer 		{
11188dcb2a10SAndre Fischer 			mpLBStart->SetNoSelection();
11198dcb2a10SAndre Fischer 			return;
11208dcb2a10SAndre Fischer 		}
11218dcb2a10SAndre Fischer 		//add end>>
11228dcb2a10SAndre Fischer 		if(mpStartItem && mpLineEndList)
11238dcb2a10SAndre Fischer 		{
11248dcb2a10SAndre Fischer 			const basegfx::B2DPolyPolygon& rItemPolygon = mpStartItem->GetLineStartValue();
11258dcb2a10SAndre Fischer 			for(sal_Int32 a(0);!bSelected &&  a < mpLineEndList->Count(); a++)
11268dcb2a10SAndre Fischer 			{
11278dcb2a10SAndre Fischer 				XLineEndEntry* pEntry = mpLineEndList->GetLineEnd(a);
11288dcb2a10SAndre Fischer 				const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd();
11298dcb2a10SAndre Fischer 				if(rItemPolygon == rEntryPolygon)
11308dcb2a10SAndre Fischer 				{
11318dcb2a10SAndre Fischer 					mpLBStart->SelectEntryPos((sal_uInt16)a + 1);
11328dcb2a10SAndre Fischer 					bSelected = true;
11338dcb2a10SAndre Fischer 				}
11348dcb2a10SAndre Fischer 			}
11358dcb2a10SAndre Fischer 		}
11368dcb2a10SAndre Fischer 		if(!bSelected)
11378dcb2a10SAndre Fischer 			mpLBStart->SelectEntryPos( 0 );
11388dcb2a10SAndre Fischer 	}
11398dcb2a10SAndre Fischer 	else
11408dcb2a10SAndre Fischer 	{
11418dcb2a10SAndre Fischer 		//<<add
11428dcb2a10SAndre Fischer 		if( !mbEndAvailable )
11438dcb2a10SAndre Fischer 		{
11448dcb2a10SAndre Fischer 			mpLBEnd->SetNoSelection();
11458dcb2a10SAndre Fischer 			return;
11468dcb2a10SAndre Fischer 		}
11478dcb2a10SAndre Fischer 		//add end>>
11488dcb2a10SAndre Fischer 		if(mpEndItem && mpLineEndList)
11498dcb2a10SAndre Fischer 		{
11508dcb2a10SAndre Fischer 			const basegfx::B2DPolyPolygon& rItemPolygon = mpEndItem->GetLineEndValue();
11518dcb2a10SAndre Fischer 			for(sal_Int32 a(0);!bSelected &&  a < mpLineEndList->Count(); a++)
11528dcb2a10SAndre Fischer 			{
11538dcb2a10SAndre Fischer 				XLineEndEntry* pEntry = mpLineEndList->GetLineEnd(a);
11548dcb2a10SAndre Fischer 				const basegfx::B2DPolyPolygon& rEntryPolygon = pEntry->GetLineEnd();
11558dcb2a10SAndre Fischer 				if(rItemPolygon == rEntryPolygon)
11568dcb2a10SAndre Fischer 				{
11578dcb2a10SAndre Fischer 					mpLBEnd->SelectEntryPos((sal_uInt16)a + 1);
11588dcb2a10SAndre Fischer 					bSelected = true;
11598dcb2a10SAndre Fischer 				}
11608dcb2a10SAndre Fischer 			}
11618dcb2a10SAndre Fischer 		}
11628dcb2a10SAndre Fischer 		if(!bSelected)
11638dcb2a10SAndre Fischer 			mpLBEnd->SelectEntryPos( 0 );
11648dcb2a10SAndre Fischer 	}
11658dcb2a10SAndre Fischer }
11668dcb2a10SAndre Fischer 
11678dcb2a10SAndre Fischer 
11688dcb2a10SAndre Fischer } } // end of namespace svx::sidebar
11694e8031e0SArmin Le Grand 
11704e8031e0SArmin Le Grand // eof
1171