1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski #ifndef SVX_SIDEBAR_PARA_PROPERTY_PANEL_HXX 23*b1cdbd2cSJim Jagielski #define SVX_SIDEBAR_PARA_PROPERTY_PANEL_HXX 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski #include <vcl/ctrl.hxx> 26*b1cdbd2cSJim Jagielski #include <sfx2/sidebar/ControllerItem.hxx> 27*b1cdbd2cSJim Jagielski #include <sfx2/sidebar/IContextChangeReceiver.hxx> 28*b1cdbd2cSJim Jagielski #include <sfx2/sidebar/GridLayouter.hxx> 29*b1cdbd2cSJim Jagielski #include <editeng/lspcitem.hxx> 30*b1cdbd2cSJim Jagielski #include <svtools/ctrlbox.hxx> 31*b1cdbd2cSJim Jagielski #include <svx/tbxcolorupdate.hxx> 32*b1cdbd2cSJim Jagielski #include <svx/relfld.hxx> 33*b1cdbd2cSJim Jagielski #include <editeng/svxenum.hxx> 34*b1cdbd2cSJim Jagielski #include <editeng/fhgtitem.hxx> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XSidebar.hpp> 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski #include <boost/scoped_ptr.hpp> 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski #include <svx/sidebar/ColorPopup.hxx> 42*b1cdbd2cSJim Jagielski #include <vcl/vclenum.hxx> 43*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx> 44*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx> 45*b1cdbd2cSJim Jagielski #include <tools/fldunit.hxx> 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski #include "ParaBulletsPopup.hxx" 48*b1cdbd2cSJim Jagielski #include "ParaNumberingPopup.hxx" 49*b1cdbd2cSJim Jagielski #include "ParaLineSpacingPopup.hxx" 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski class FloatingWindow; 52*b1cdbd2cSJim Jagielski class ToolBox; 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski namespace css = ::com::sun::star; 55*b1cdbd2cSJim Jagielski namespace cssu = ::com::sun::star::uno; 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski namespace svx { namespace sidebar { 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski class PopupControl; 61*b1cdbd2cSJim Jagielski class PopupContainer; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski class ParaPropertyPanel 64*b1cdbd2cSJim Jagielski : public Control, 65*b1cdbd2cSJim Jagielski public ::sfx2::sidebar::IContextChangeReceiver, 66*b1cdbd2cSJim Jagielski public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface 67*b1cdbd2cSJim Jagielski { 68*b1cdbd2cSJim Jagielski public: 69*b1cdbd2cSJim Jagielski static ParaPropertyPanel* Create ( 70*b1cdbd2cSJim Jagielski Window* pParent, 71*b1cdbd2cSJim Jagielski const cssu::Reference<css::frame::XFrame>& rxFrame, 72*b1cdbd2cSJim Jagielski SfxBindings* pBindings, 73*b1cdbd2cSJim Jagielski const cssu::Reference<css::ui::XSidebar>& rxSidebar); 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski virtual void DataChanged (const DataChangedEvent& rEvent); 76*b1cdbd2cSJim Jagielski SfxBindings* GetBindings(); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski virtual void HandleContextChange ( 79*b1cdbd2cSJim Jagielski const ::sfx2::sidebar::EnumContext aContext); 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski virtual void NotifyItemUpdate( 82*b1cdbd2cSJim Jagielski const sal_uInt16 nSId, 83*b1cdbd2cSJim Jagielski const SfxItemState eState, 84*b1cdbd2cSJim Jagielski const SfxPoolItem* pState, 85*b1cdbd2cSJim Jagielski const bool bIsEnabled); 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski void ShowMenu (void); GetBulletTypeIndex()88*b1cdbd2cSJim Jagielski sal_uInt16 GetBulletTypeIndex(){ return mnBulletTypeIndex; } GetNumTypeIndex()89*b1cdbd2cSJim Jagielski sal_uInt16 GetNumTypeIndex(){ return mnNumTypeIndex; } 90*b1cdbd2cSJim Jagielski FieldUnit GetCurrentUnit( SfxItemState eState, const SfxPoolItem* pState ); 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski void EndSpacingPopupMode (void); 93*b1cdbd2cSJim Jagielski void EndBulletsPopupMode (void); 94*b1cdbd2cSJim Jagielski void EndNumberingPopupMode (void); 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski private: 97*b1cdbd2cSJim Jagielski /********************************************************** 98*b1cdbd2cSJim Jagielski ** 99*b1cdbd2cSJim Jagielski ** UI controls 100*b1cdbd2cSJim Jagielski ** 101*b1cdbd2cSJim Jagielski ***********************************************************/ 102*b1cdbd2cSJim Jagielski //Alignment 103*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpAlignToolBoxBackground; 104*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpAlignToolBox; 105*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpTBxVertAlignBackground; 106*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpTBxVertAlign; 107*b1cdbd2cSJim Jagielski //NumBullet&Backcolor 108*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpTBxNumBulletBackground; 109*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpTBxNumBullet; 110*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpTBxBackColorBackground; 111*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpTBxBackColor; 112*b1cdbd2cSJim Jagielski //Paragraph spacing 113*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<FixedText> mpFTUL; 114*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpTbxUL_IncDecBackground; 115*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpTbxUL_IncDec; 116*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxRelativeField> mpTopDist; 117*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxRelativeField> mpBottomDist; 118*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpLineSPTbxBackground; 119*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpLineSPTbx; 120*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<FixedText> mpFTIndent; 121*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpTbxIndent_IncDecBackground; 122*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpTbxIndent_IncDec; 123*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpTbxProDemoteBackground; 124*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpTbxProDemote; 125*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxRelativeField> mpLeftIndent; 126*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxRelativeField> mpRightIndent; 127*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxRelativeField> mpFLineIndent; 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski ::boost::scoped_ptr< ::svx::ToolboxButtonColorUpdater > mpColorUpdater; 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski /********************************************************** 132*b1cdbd2cSJim Jagielski ** 133*b1cdbd2cSJim Jagielski ** Resources 134*b1cdbd2cSJim Jagielski ** 135*b1cdbd2cSJim Jagielski ***********************************************************/ 136*b1cdbd2cSJim Jagielski FixedImage maFISpace1; 137*b1cdbd2cSJim Jagielski FixedImage maFISpace2; 138*b1cdbd2cSJim Jagielski FixedImage maFIndent1; 139*b1cdbd2cSJim Jagielski FixedImage maFIndent2; 140*b1cdbd2cSJim Jagielski FixedImage maFIndent3; 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski Image maSpace1; 143*b1cdbd2cSJim Jagielski Image maSpace2; 144*b1cdbd2cSJim Jagielski Image maSpace3; 145*b1cdbd2cSJim Jagielski Image maIndent1; 146*b1cdbd2cSJim Jagielski Image maIndent2; 147*b1cdbd2cSJim Jagielski Image maIndent3; 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski Image maIndHang; 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski ImageList maNumBImageList; 152*b1cdbd2cSJim Jagielski ImageList maNumBImageListH; 153*b1cdbd2cSJim Jagielski ImageList maNumBImageListRTL; 154*b1cdbd2cSJim Jagielski Image maImgBackColorHigh; 155*b1cdbd2cSJim Jagielski Image maImgBackColor; 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski /**************************************************************** 158*b1cdbd2cSJim Jagielski ** 159*b1cdbd2cSJim Jagielski ** Data Member 160*b1cdbd2cSJim Jagielski ** 161*b1cdbd2cSJim Jagielski *****************************************************************/ 162*b1cdbd2cSJim Jagielski long maTxtLeft; 163*b1cdbd2cSJim Jagielski //Line spacing 164*b1cdbd2cSJim Jagielski SvxLineSpacingItem *mpLnSPItem; 165*b1cdbd2cSJim Jagielski SfxItemState meLnSpState; 166*b1cdbd2cSJim Jagielski bool mbOutLineLeft; 167*b1cdbd2cSJim Jagielski bool mbOutLineRight; 168*b1cdbd2cSJim Jagielski long maUpper; 169*b1cdbd2cSJim Jagielski long maLower; 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski sal_uInt16 mnBulletTypeIndex; 172*b1cdbd2cSJim Jagielski sal_uInt16 mnNumTypeIndex; 173*b1cdbd2cSJim Jagielski Color maColor; 174*b1cdbd2cSJim Jagielski bool mbColorAvailable; 175*b1cdbd2cSJim Jagielski FieldUnit m_eMetricUnit; 176*b1cdbd2cSJim Jagielski FieldUnit m_last_eMetricUnit; 177*b1cdbd2cSJim Jagielski SfxMapUnit m_eLRSpaceUnit; 178*b1cdbd2cSJim Jagielski SfxMapUnit m_eULSpaceUnit; 179*b1cdbd2cSJim Jagielski /**************************************************************** 180*b1cdbd2cSJim Jagielski ** 181*b1cdbd2cSJim Jagielski ** Controll Items 182*b1cdbd2cSJim Jagielski ** 183*b1cdbd2cSJim Jagielski *****************************************************************/ 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maLeftAlignControl; 186*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maCenterAlignControl; 187*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maRightAlignControl; 188*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maJustifyAlignControl; 189*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maLRSpaceControl; 190*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maLNSpaceControl; 191*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maULSpaceControl; 192*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maOutLineLeftControl; 193*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maOutLineRightControl; 194*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maDecIndentControl; 195*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maIncIndentControl; 196*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maVertTop; 197*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maVertCenter; 198*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maVertBottom; 199*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maBulletOnOff; 200*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maNumberOnOff; 201*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maBackColorControl; 202*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem m_aMetricCtl; 203*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maBulletNumRuleIndex; 204*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem maNumNumRuleIndex; 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski cssu::Reference<css::frame::XFrame> mxFrame; 207*b1cdbd2cSJim Jagielski ::sfx2::sidebar::EnumContext maContext; 208*b1cdbd2cSJim Jagielski SfxBindings* mpBindings; 209*b1cdbd2cSJim Jagielski ParaLineSpacingPopup maLineSpacePopup; 210*b1cdbd2cSJim Jagielski ParaBulletsPopup maBulletsPopup; 211*b1cdbd2cSJim Jagielski ParaNumberingPopup maNumberingPopup; 212*b1cdbd2cSJim Jagielski ColorPopup maBGColorPopup; 213*b1cdbd2cSJim Jagielski cssu::Reference<css::ui::XSidebar> mxSidebar; 214*b1cdbd2cSJim Jagielski ::sfx2::sidebar::GridLayouter maLayouter; 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski ParaPropertyPanel ( 217*b1cdbd2cSJim Jagielski Window* pParent, 218*b1cdbd2cSJim Jagielski const cssu::Reference<css::frame::XFrame>& rxFrame, 219*b1cdbd2cSJim Jagielski SfxBindings* pBindings, 220*b1cdbd2cSJim Jagielski const cssu::Reference<css::ui::XSidebar>& rxSidebar); 221*b1cdbd2cSJim Jagielski virtual ~ParaPropertyPanel (void); 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski void InitImageList(::boost::scoped_ptr<ToolBox>& rTbx, ImageList& rImglst, ImageList& rImgHlst); 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski DECL_LINK(AlignStyleModifyHdl_Impl, ToolBox*); 226*b1cdbd2cSJim Jagielski DECL_LINK(VertTbxSelectHandler, ToolBox*); 227*b1cdbd2cSJim Jagielski DECL_LINK(NumBTbxSelectHandler, ToolBox*); 228*b1cdbd2cSJim Jagielski DECL_LINK(ModifyIndentHdl_Impl, SvxRelativeField*); 229*b1cdbd2cSJim Jagielski DECL_LINK(ClickIndent_IncDec_Hdl_Impl, ToolBox*); 230*b1cdbd2cSJim Jagielski DECL_LINK(ClickProDemote_Hdl_Impl, ToolBox*); 231*b1cdbd2cSJim Jagielski DECL_LINK(ULSpaceHdl_Impl, SvxRelativeField*); 232*b1cdbd2cSJim Jagielski DECL_LINK(ClickUL_IncDec_Hdl_Impl, ToolBox*); 233*b1cdbd2cSJim Jagielski DECL_LINK(ImplPopupModeEndHdl, FloatingWindow* ); 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski void VertStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState); 236*b1cdbd2cSJim Jagielski void ParaBKGStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState); 237*b1cdbd2cSJim Jagielski void StateChangedAlignmentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 238*b1cdbd2cSJim Jagielski void StateChangedIndentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 239*b1cdbd2cSJim Jagielski void StateChangedLnSPImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 240*b1cdbd2cSJim Jagielski void StateChangedULImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 241*b1cdbd2cSJim Jagielski void StateChangeOutLineImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 242*b1cdbd2cSJim Jagielski void StateChangeIncDecImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 243*b1cdbd2cSJim Jagielski // Add toggle state for numbering and bullet icons 244*b1cdbd2cSJim Jagielski void StateChangeBulletNumImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 245*b1cdbd2cSJim Jagielski //Modified for Numbering&Bullets Dialog UX Enh 246*b1cdbd2cSJim Jagielski //Handing the transferred the num rule index data of the current selection 247*b1cdbd2cSJim Jagielski void StateChangeBulletNumRuleImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 248*b1cdbd2cSJim Jagielski 249*b1cdbd2cSJim Jagielski void initial(); 250*b1cdbd2cSJim Jagielski void ReSize(bool bSize); 251*b1cdbd2cSJim Jagielski 252*b1cdbd2cSJim Jagielski // Inherited from vcl Window. 253*b1cdbd2cSJim Jagielski virtual void Resize (void); 254*b1cdbd2cSJim Jagielski 255*b1cdbd2cSJim Jagielski PopupControl* CreateLineSpacingControl (PopupContainer* pParent); 256*b1cdbd2cSJim Jagielski PopupControl* CreateBulletsPopupControl (PopupContainer* pParent); 257*b1cdbd2cSJim Jagielski PopupControl* CreateNumberingPopupControl (PopupContainer* pParent); 258*b1cdbd2cSJim Jagielski PopupControl* CreateBGColorPopupControl (PopupContainer* pParent); 259*b1cdbd2cSJim Jagielski DECL_LINK(ClickLineSPDropDownHdl_Impl, ToolBox*); 260*b1cdbd2cSJim Jagielski DECL_LINK(NumBTbxDDHandler, ToolBox*); 261*b1cdbd2cSJim Jagielski DECL_LINK(ToolBoxBackColorDDHandler, ToolBox *); 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski void InitToolBoxAlign(); 264*b1cdbd2cSJim Jagielski void InitToolBoxVertAlign(); 265*b1cdbd2cSJim Jagielski void InitToolBoxIndent(); 266*b1cdbd2cSJim Jagielski void InitToolBoxBGColor(); 267*b1cdbd2cSJim Jagielski void InitToolBoxBulletsNumbering(); 268*b1cdbd2cSJim Jagielski void InitToolBoxSpacing(); 269*b1cdbd2cSJim Jagielski void InitToolBoxLineSpacing(); 270*b1cdbd2cSJim Jagielski 271*b1cdbd2cSJim Jagielski void SetBGColor (const String& rsColorName, const Color aColor); 272*b1cdbd2cSJim Jagielski }; 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski } } // end of namespace ::svx::sidebar 275*b1cdbd2cSJim Jagielski 276*b1cdbd2cSJim Jagielski #endif 277*b1cdbd2cSJim Jagielski 278