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 SW_SIDEBAR_PAGE_PROPERTY_PANEL_HXX 23*b1cdbd2cSJim Jagielski #define SW_SIDEBAR_PAGE_PROPERTY_PANEL_HXX 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp> 26*b1cdbd2cSJim Jagielski #include <com/sun/star/document/XUndoManager.hpp> 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski #include <svx/sidebar/Popup.hxx> 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski #include <sfx2/sidebar/ControllerItem.hxx> 31*b1cdbd2cSJim Jagielski #include <sfx2/sidebar/GridLayouter.hxx> 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski namespace svx { namespace sidebar { 34*b1cdbd2cSJim Jagielski class PopupControl; 35*b1cdbd2cSJim Jagielski } } 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski #include <i18npool/paper.hxx> 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski #include <svx/pageitem.hxx> 40*b1cdbd2cSJim Jagielski #include <svx/rulritem.hxx> 41*b1cdbd2cSJim Jagielski #include <editeng/sizeitem.hxx> 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski #include <vcl/ctrl.hxx> 44*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx> 45*b1cdbd2cSJim Jagielski #include <vcl/button.hxx> 46*b1cdbd2cSJim Jagielski #include <vcl/toolbox.hxx> 47*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx> 48*b1cdbd2cSJim Jagielski #include <vcl/field.hxx> 49*b1cdbd2cSJim Jagielski #include <svl/intitem.hxx> 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski #include <boost/scoped_ptr.hpp> 52*b1cdbd2cSJim Jagielski 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 namespace sw { namespace sidebar { 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski class PagePropertyPanel 60*b1cdbd2cSJim Jagielski : public Control, 61*b1cdbd2cSJim Jagielski public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface 62*b1cdbd2cSJim Jagielski { 63*b1cdbd2cSJim Jagielski public: 64*b1cdbd2cSJim Jagielski static PagePropertyPanel* Create( 65*b1cdbd2cSJim Jagielski Window* pParent, 66*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame>& rxFrame, 67*b1cdbd2cSJim Jagielski SfxBindings* pBindings ); 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski // interface of ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface 70*b1cdbd2cSJim Jagielski virtual void NotifyItemUpdate( 71*b1cdbd2cSJim Jagielski const sal_uInt16 nSId, 72*b1cdbd2cSJim Jagielski const SfxItemState eState, 73*b1cdbd2cSJim Jagielski const SfxPoolItem* pState, 74*b1cdbd2cSJim Jagielski const bool bIsEnabled); 75*b1cdbd2cSJim Jagielski GetBindings() const76*b1cdbd2cSJim Jagielski SfxBindings* GetBindings() const 77*b1cdbd2cSJim Jagielski { 78*b1cdbd2cSJim Jagielski return mpBindings; 79*b1cdbd2cSJim Jagielski } 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski ::svx::sidebar::PopupControl* CreatePageOrientationControl( ::svx::sidebar::PopupContainer* pParent ); 83*b1cdbd2cSJim Jagielski void ExecuteOrientationChange( const sal_Bool bLandscape ); 84*b1cdbd2cSJim Jagielski void ClosePageOrientationPopup(); 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski ::svx::sidebar::PopupControl* CreatePageMarginControl( ::svx::sidebar::PopupContainer* pParent ); 87*b1cdbd2cSJim Jagielski void ExecuteMarginLRChange( 88*b1cdbd2cSJim Jagielski const long nPageLeftMargin, 89*b1cdbd2cSJim Jagielski const long nPageRightMargin ); 90*b1cdbd2cSJim Jagielski void ExecuteMarginULChange( 91*b1cdbd2cSJim Jagielski const long nPageTopMargin, 92*b1cdbd2cSJim Jagielski const long nPageBottomMargin ); 93*b1cdbd2cSJim Jagielski void ExecutePageLayoutChange( const bool bMirrored ); 94*b1cdbd2cSJim Jagielski void ClosePageMarginPopup(); 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski ::svx::sidebar::PopupControl* CreatePageSizeControl( ::svx::sidebar::PopupContainer* pParent ); 97*b1cdbd2cSJim Jagielski void ExecuteSizeChange( const Paper ePaper ); 98*b1cdbd2cSJim Jagielski void ClosePageSizePopup(); 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski ::svx::sidebar::PopupControl* CreatePageColumnControl( ::svx::sidebar::PopupContainer* pParent ); 101*b1cdbd2cSJim Jagielski void ExecuteColumnChange( const sal_uInt16 nColumnType ); 102*b1cdbd2cSJim Jagielski void ClosePageColumnPopup(); 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski void StartUndo(); 105*b1cdbd2cSJim Jagielski void EndUndo(); 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski // Inherited from vcl Window. 108*b1cdbd2cSJim Jagielski virtual void Resize (void); 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski private: 111*b1cdbd2cSJim Jagielski PagePropertyPanel( 112*b1cdbd2cSJim Jagielski Window* pParent, 113*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame>& rxFrame, 114*b1cdbd2cSJim Jagielski SfxBindings* pBindings ); 115*b1cdbd2cSJim Jagielski virtual ~PagePropertyPanel(void); 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski SfxBindings* mpBindings; 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski // toolboxes - on click open corresponding popup 120*b1cdbd2cSJim Jagielski FixedText maFtOrientation; 121*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpToolBoxOrientationBackground; 122*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpToolBoxOrientation; 123*b1cdbd2cSJim Jagielski FixedText maFtMargin; 124*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpToolBoxMarginBackground; 125*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpToolBoxMargin; 126*b1cdbd2cSJim Jagielski FixedText maFtSize; 127*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpToolBoxSizeBackground; 128*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpToolBoxSize; 129*b1cdbd2cSJim Jagielski FixedText maFtColumn; 130*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<Window> mpToolBoxColumnBackground; 131*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<ToolBox> mpToolBoxColumn; 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski Image* maImgSize; 134*b1cdbd2cSJim Jagielski Image* maImgSize_L; 135*b1cdbd2cSJim Jagielski Image mImgPortrait; 136*b1cdbd2cSJim Jagielski Image mImgLandscape; 137*b1cdbd2cSJim Jagielski Image mImgNarrow; 138*b1cdbd2cSJim Jagielski Image mImgNormal; 139*b1cdbd2cSJim Jagielski Image mImgWide; 140*b1cdbd2cSJim Jagielski Image mImgMirrored; 141*b1cdbd2cSJim Jagielski Image mImgMarginCustom; 142*b1cdbd2cSJim Jagielski Image mImgNarrow_L; 143*b1cdbd2cSJim Jagielski Image mImgNormal_L; 144*b1cdbd2cSJim Jagielski Image mImgWide_L; 145*b1cdbd2cSJim Jagielski Image mImgMirrored_L; 146*b1cdbd2cSJim Jagielski Image mImgMarginCustom_L; 147*b1cdbd2cSJim Jagielski Image mImgA3; 148*b1cdbd2cSJim Jagielski Image mImgA4; 149*b1cdbd2cSJim Jagielski Image mImgA5; 150*b1cdbd2cSJim Jagielski Image mImgB4; 151*b1cdbd2cSJim Jagielski Image mImgB5; 152*b1cdbd2cSJim Jagielski Image mImgC5; 153*b1cdbd2cSJim Jagielski Image mImgLetter; 154*b1cdbd2cSJim Jagielski Image mImgLegal; 155*b1cdbd2cSJim Jagielski Image mImgSizeNone; 156*b1cdbd2cSJim Jagielski Image mImgA3_L; 157*b1cdbd2cSJim Jagielski Image mImgA4_L; 158*b1cdbd2cSJim Jagielski Image mImgA5_L; 159*b1cdbd2cSJim Jagielski Image mImgB4_L; 160*b1cdbd2cSJim Jagielski Image mImgB5_L; 161*b1cdbd2cSJim Jagielski Image mImgC5_L; 162*b1cdbd2cSJim Jagielski Image mImgLetter_L; 163*b1cdbd2cSJim Jagielski Image mImgLegal_L; 164*b1cdbd2cSJim Jagielski Image mImgSizeNone_L; 165*b1cdbd2cSJim Jagielski Image mImgColumn1; 166*b1cdbd2cSJim Jagielski Image mImgColumn2; 167*b1cdbd2cSJim Jagielski Image mImgColumn3; 168*b1cdbd2cSJim Jagielski Image mImgLeft; 169*b1cdbd2cSJim Jagielski Image mImgRight; 170*b1cdbd2cSJim Jagielski Image mImgColumnNone; 171*b1cdbd2cSJim Jagielski Image mImgColumn1_L; 172*b1cdbd2cSJim Jagielski Image mImgColumn2_L; 173*b1cdbd2cSJim Jagielski Image mImgColumn3_L; 174*b1cdbd2cSJim Jagielski Image mImgLeft_L; 175*b1cdbd2cSJim Jagielski Image mImgRight_L; 176*b1cdbd2cSJim Jagielski Image mImgColumnNone_L; 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski // item keeping the following page style attributes: 179*b1cdbd2cSJim Jagielski // - page orientation 180*b1cdbd2cSJim Jagielski // - page usage - only left, only right, both, mirrored 181*b1cdbd2cSJim Jagielski // item also hold the numbering type for the page style which should 182*b1cdbd2cSJim Jagielski // be kept stable. 183*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxPageItem> mpPageItem; 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski // item keeping the page style's left and right margins 186*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxLongLRSpaceItem> mpPageLRMarginItem; 187*b1cdbd2cSJim Jagielski // item keeping the page style's top and bottom margins 188*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxLongULSpaceItem> mpPageULMarginItem; 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski // item keeping the page style's page size 191*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SvxSizeItem> mpPageSizeItem; 192*b1cdbd2cSJim Jagielski // Paper corresponding to the page style's page size 193*b1cdbd2cSJim Jagielski Paper mePaper; 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski // item keeping the page column type 196*b1cdbd2cSJim Jagielski ::boost::scoped_ptr<SfxInt16Item> mpPageColumnTypeItem; 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski FieldUnit meFUnit; 199*b1cdbd2cSJim Jagielski SfxMapUnit meUnit; 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski // controller items 202*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem m_aSwPagePgULControl; 203*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem m_aSwPagePgLRControl; 204*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem m_aSwPagePgSizeControl; 205*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem m_aSwPagePgControl; 206*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem m_aSwPageColControl; 207*b1cdbd2cSJim Jagielski ::sfx2::sidebar::ControllerItem m_aSwPagePgMetricControl; 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski // popups 210*b1cdbd2cSJim Jagielski ::svx::sidebar::Popup maOrientationPopup; 211*b1cdbd2cSJim Jagielski ::svx::sidebar::Popup maMarginPopup; 212*b1cdbd2cSJim Jagielski ::svx::sidebar::Popup maSizePopup; 213*b1cdbd2cSJim Jagielski ::svx::sidebar::Popup maColumnPopup; 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski const cssu::Reference< css::document::XUndoManager > mxUndoManager; 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski bool mbInvalidateSIDAttrPageOnSIDAttrPageSizeNotify; 218*b1cdbd2cSJim Jagielski ::sfx2::sidebar::GridLayouter maLayouter; 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski // handler for popup toolboxes to show the popups 221*b1cdbd2cSJim Jagielski DECL_LINK(ClickOrientationHdl, ToolBox* ); 222*b1cdbd2cSJim Jagielski DECL_LINK(ClickMarginHdl, ToolBox* ); 223*b1cdbd2cSJim Jagielski DECL_LINK(ClickSizeHdl, ToolBox* ); 224*b1cdbd2cSJim Jagielski DECL_LINK(ClickColumnHdl, ToolBox* ); 225*b1cdbd2cSJim Jagielski 226*b1cdbd2cSJim Jagielski void Initialize(); 227*b1cdbd2cSJim Jagielski 228*b1cdbd2cSJim Jagielski void MetricState( SfxItemState eState, const SfxPoolItem* pState ); 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski // helper to adjust popup toolbox' images 231*b1cdbd2cSJim Jagielski void ChangeMarginImage(); 232*b1cdbd2cSJim Jagielski void ChangeSizeImage(); 233*b1cdbd2cSJim Jagielski void ChangeColumnImage( const sal_uInt16 nColumnType ); 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski }; 236*b1cdbd2cSJim Jagielski 237*b1cdbd2cSJim Jagielski } } // end of namespace ::sw::sidebar 238*b1cdbd2cSJim Jagielski 239*b1cdbd2cSJim Jagielski #endif 240