xref: /AOO42X/main/sw/source/ui/sidebar/PagePropertyPanel.hxx (revision fb399032256bf013b5fb07ee6cf0a778fb36916b)
1ff0525f2SOliver-Rainer Wittmann /**************************************************************
2ff0525f2SOliver-Rainer Wittmann *
3ff0525f2SOliver-Rainer Wittmann * Licensed to the Apache Software Foundation (ASF) under one
4ff0525f2SOliver-Rainer Wittmann * or more contributor license agreements.  See the NOTICE file
5ff0525f2SOliver-Rainer Wittmann * distributed with this work for additional information
6ff0525f2SOliver-Rainer Wittmann * regarding copyright ownership.  The ASF licenses this file
7ff0525f2SOliver-Rainer Wittmann * to you under the Apache License, Version 2.0 (the
8ff0525f2SOliver-Rainer Wittmann * "License"); you may not use this file except in compliance
9ff0525f2SOliver-Rainer Wittmann * with the License.  You may obtain a copy of the License at
10ff0525f2SOliver-Rainer Wittmann *
11ff0525f2SOliver-Rainer Wittmann *   http://www.apache.org/licenses/LICENSE-2.0
12ff0525f2SOliver-Rainer Wittmann *
13ff0525f2SOliver-Rainer Wittmann * Unless required by applicable law or agreed to in writing,
14ff0525f2SOliver-Rainer Wittmann * software distributed under the License is distributed on an
15ff0525f2SOliver-Rainer Wittmann * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16ff0525f2SOliver-Rainer Wittmann * KIND, either express or implied.  See the License for the
17ff0525f2SOliver-Rainer Wittmann * specific language governing permissions and limitations
18ff0525f2SOliver-Rainer Wittmann * under the License.
19ff0525f2SOliver-Rainer Wittmann *
20ff0525f2SOliver-Rainer Wittmann *************************************************************/
21ff0525f2SOliver-Rainer Wittmann 
22*fb399032Smseidel 
23*fb399032Smseidel 
24ff0525f2SOliver-Rainer Wittmann #ifndef SW_SIDEBAR_PAGE_PROPERTY_PANEL_HXX
25ff0525f2SOliver-Rainer Wittmann #define SW_SIDEBAR_PAGE_PROPERTY_PANEL_HXX
26ff0525f2SOliver-Rainer Wittmann 
27550fbbbdSOliver-Rainer Wittmann #include <com/sun/star/frame/XFrame.hpp>
28550fbbbdSOliver-Rainer Wittmann #include <com/sun/star/document/XUndoManager.hpp>
29550fbbbdSOliver-Rainer Wittmann 
30ff0525f2SOliver-Rainer Wittmann #include <svx/sidebar/Popup.hxx>
31ff0525f2SOliver-Rainer Wittmann 
32ff0525f2SOliver-Rainer Wittmann #include <sfx2/sidebar/ControllerItem.hxx>
336a606da0SAndre Fischer #include <sfx2/sidebar/GridLayouter.hxx>
34ff0525f2SOliver-Rainer Wittmann 
35ff0525f2SOliver-Rainer Wittmann namespace svx { namespace sidebar {
36ff0525f2SOliver-Rainer Wittmann     class PopupControl;
37ff0525f2SOliver-Rainer Wittmann } }
38ff0525f2SOliver-Rainer Wittmann 
39ff0525f2SOliver-Rainer Wittmann #include <i18npool/paper.hxx>
40ff0525f2SOliver-Rainer Wittmann 
41ff0525f2SOliver-Rainer Wittmann #include <svx/pageitem.hxx>
42f120fe41SAndre Fischer #include <svx/rulritem.hxx>
43ff0525f2SOliver-Rainer Wittmann #include <editeng/sizeitem.hxx>
44ff0525f2SOliver-Rainer Wittmann 
45ff0525f2SOliver-Rainer Wittmann #include <vcl/ctrl.hxx>
46ff0525f2SOliver-Rainer Wittmann #include <vcl/fixed.hxx>
47ff0525f2SOliver-Rainer Wittmann #include <vcl/button.hxx>
48ff0525f2SOliver-Rainer Wittmann #include <vcl/toolbox.hxx>
49ff0525f2SOliver-Rainer Wittmann #include <vcl/lstbox.hxx>
50ff0525f2SOliver-Rainer Wittmann #include <vcl/field.hxx>
51f120fe41SAndre Fischer #include <svl/intitem.hxx>
52ff0525f2SOliver-Rainer Wittmann 
53ff0525f2SOliver-Rainer Wittmann #include <boost/scoped_ptr.hpp>
54ff0525f2SOliver-Rainer Wittmann 
55ff0525f2SOliver-Rainer Wittmann 
56f120fe41SAndre Fischer namespace css = ::com::sun::star;
57f120fe41SAndre Fischer namespace cssu = ::com::sun::star::uno;
58f120fe41SAndre Fischer 
59ff0525f2SOliver-Rainer Wittmann namespace sw { namespace sidebar {
60ff0525f2SOliver-Rainer Wittmann 
61ff0525f2SOliver-Rainer Wittmann     class PagePropertyPanel
62ff0525f2SOliver-Rainer Wittmann         : public Control,
63ff0525f2SOliver-Rainer Wittmann           public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
64ff0525f2SOliver-Rainer Wittmann     {
65ff0525f2SOliver-Rainer Wittmann     public:
66ff0525f2SOliver-Rainer Wittmann         static PagePropertyPanel* Create(
67ff0525f2SOliver-Rainer Wittmann             Window* pParent,
68550fbbbdSOliver-Rainer Wittmann             const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame>& rxFrame,
69ff0525f2SOliver-Rainer Wittmann             SfxBindings* pBindings );
70ff0525f2SOliver-Rainer Wittmann 
71ff0525f2SOliver-Rainer Wittmann         // interface of ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
72ff0525f2SOliver-Rainer Wittmann         virtual void NotifyItemUpdate(
73ff0525f2SOliver-Rainer Wittmann             const sal_uInt16 nSId,
74ff0525f2SOliver-Rainer Wittmann             const SfxItemState eState,
7545da7d5eSAndre Fischer             const SfxPoolItem* pState,
7645da7d5eSAndre Fischer             const bool bIsEnabled);
77ff0525f2SOliver-Rainer Wittmann 
GetBindings() const78ff0525f2SOliver-Rainer Wittmann         SfxBindings* GetBindings() const
79ff0525f2SOliver-Rainer Wittmann         {
80ff0525f2SOliver-Rainer Wittmann             return mpBindings;
81ff0525f2SOliver-Rainer Wittmann         }
82ff0525f2SOliver-Rainer Wittmann 
83ff0525f2SOliver-Rainer Wittmann 
84ff0525f2SOliver-Rainer Wittmann         ::svx::sidebar::PopupControl* CreatePageOrientationControl( ::svx::sidebar::PopupContainer* pParent );
85ff0525f2SOliver-Rainer Wittmann         void ExecuteOrientationChange( const sal_Bool bLandscape );
86ff0525f2SOliver-Rainer Wittmann         void ClosePageOrientationPopup();
87ff0525f2SOliver-Rainer Wittmann 
88ff0525f2SOliver-Rainer Wittmann         ::svx::sidebar::PopupControl* CreatePageMarginControl( ::svx::sidebar::PopupContainer* pParent );
89ff0525f2SOliver-Rainer Wittmann         void ExecuteMarginLRChange(
90ff0525f2SOliver-Rainer Wittmann             const long nPageLeftMargin,
91ff0525f2SOliver-Rainer Wittmann             const long nPageRightMargin );
92ff0525f2SOliver-Rainer Wittmann         void ExecuteMarginULChange(
93ff0525f2SOliver-Rainer Wittmann             const long nPageTopMargin,
94ff0525f2SOliver-Rainer Wittmann             const long nPageBottomMargin );
95ff0525f2SOliver-Rainer Wittmann         void ExecutePageLayoutChange( const bool bMirrored );
96ff0525f2SOliver-Rainer Wittmann         void ClosePageMarginPopup();
97ff0525f2SOliver-Rainer Wittmann 
98ff0525f2SOliver-Rainer Wittmann         ::svx::sidebar::PopupControl* CreatePageSizeControl( ::svx::sidebar::PopupContainer* pParent );
99ff0525f2SOliver-Rainer Wittmann         void ExecuteSizeChange( const Paper ePaper );
100ff0525f2SOliver-Rainer Wittmann         void ClosePageSizePopup();
101ff0525f2SOliver-Rainer Wittmann 
102ff0525f2SOliver-Rainer Wittmann         ::svx::sidebar::PopupControl* CreatePageColumnControl( ::svx::sidebar::PopupContainer* pParent );
103ff0525f2SOliver-Rainer Wittmann         void ExecuteColumnChange( const sal_uInt16 nColumnType );
104ff0525f2SOliver-Rainer Wittmann         void ClosePageColumnPopup();
105ff0525f2SOliver-Rainer Wittmann 
106550fbbbdSOliver-Rainer Wittmann         void StartUndo();
107550fbbbdSOliver-Rainer Wittmann         void EndUndo();
108550fbbbdSOliver-Rainer Wittmann 
1096a606da0SAndre Fischer         // Inherited from vcl Window.
1106a606da0SAndre Fischer         virtual void Resize (void);
1116a606da0SAndre Fischer 
112ff0525f2SOliver-Rainer Wittmann     private:
113ff0525f2SOliver-Rainer Wittmann         PagePropertyPanel(
114ff0525f2SOliver-Rainer Wittmann             Window* pParent,
115550fbbbdSOliver-Rainer Wittmann             const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame>& rxFrame,
116ff0525f2SOliver-Rainer Wittmann             SfxBindings* pBindings );
117ff0525f2SOliver-Rainer Wittmann         virtual ~PagePropertyPanel(void);
118ff0525f2SOliver-Rainer Wittmann 
119ff0525f2SOliver-Rainer Wittmann         SfxBindings* mpBindings;
120ff0525f2SOliver-Rainer Wittmann 
121ff0525f2SOliver-Rainer Wittmann         // toolboxes - on click open corresponding popup
122ff0525f2SOliver-Rainer Wittmann         FixedText maFtOrientation;
123ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<Window> mpToolBoxOrientationBackground;
124ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<ToolBox> mpToolBoxOrientation;
125ff0525f2SOliver-Rainer Wittmann         FixedText               maFtMargin;
126ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<Window> mpToolBoxMarginBackground;
127ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<ToolBox> mpToolBoxMargin;
128ff0525f2SOliver-Rainer Wittmann         FixedText               maFtSize;
129ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<Window> mpToolBoxSizeBackground;
130ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<ToolBox> mpToolBoxSize;
131ff0525f2SOliver-Rainer Wittmann         FixedText               maFtColumn;
132ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<Window> mpToolBoxColumnBackground;
133ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<ToolBox> mpToolBoxColumn;
134ff0525f2SOliver-Rainer Wittmann 
135ff0525f2SOliver-Rainer Wittmann         Image*                  maImgSize;
136ff0525f2SOliver-Rainer Wittmann         Image*                  maImgSize_L;
137ff0525f2SOliver-Rainer Wittmann         Image                   mImgPortrait;
138ff0525f2SOliver-Rainer Wittmann         Image                   mImgLandscape;
139ff0525f2SOliver-Rainer Wittmann         Image                   mImgNarrow;
140ff0525f2SOliver-Rainer Wittmann         Image                   mImgNormal;
141ff0525f2SOliver-Rainer Wittmann         Image                   mImgWide;
142ff0525f2SOliver-Rainer Wittmann         Image                   mImgMirrored;
143ff0525f2SOliver-Rainer Wittmann         Image                   mImgMarginCustom;
144ff0525f2SOliver-Rainer Wittmann         Image                   mImgNarrow_L;
145ff0525f2SOliver-Rainer Wittmann         Image                   mImgNormal_L;
146ff0525f2SOliver-Rainer Wittmann         Image                   mImgWide_L;
147ff0525f2SOliver-Rainer Wittmann         Image                   mImgMirrored_L;
148ff0525f2SOliver-Rainer Wittmann         Image                   mImgMarginCustom_L;
149ff0525f2SOliver-Rainer Wittmann         Image                   mImgA3;
150ff0525f2SOliver-Rainer Wittmann         Image                   mImgA4;
151ff0525f2SOliver-Rainer Wittmann         Image                   mImgA5;
152ff0525f2SOliver-Rainer Wittmann         Image                   mImgB4;
153ff0525f2SOliver-Rainer Wittmann         Image                   mImgB5;
154ff0525f2SOliver-Rainer Wittmann         Image                   mImgC5;
155ff0525f2SOliver-Rainer Wittmann         Image                   mImgLetter;
156ff0525f2SOliver-Rainer Wittmann         Image                   mImgLegal;
157ff0525f2SOliver-Rainer Wittmann         Image                   mImgSizeNone;
158ff0525f2SOliver-Rainer Wittmann         Image                   mImgA3_L;
159ff0525f2SOliver-Rainer Wittmann         Image                   mImgA4_L;
160ff0525f2SOliver-Rainer Wittmann         Image                   mImgA5_L;
161ff0525f2SOliver-Rainer Wittmann         Image                   mImgB4_L;
162ff0525f2SOliver-Rainer Wittmann         Image                   mImgB5_L;
163ff0525f2SOliver-Rainer Wittmann         Image                   mImgC5_L;
164ff0525f2SOliver-Rainer Wittmann         Image                   mImgLetter_L;
165ff0525f2SOliver-Rainer Wittmann         Image                   mImgLegal_L;
166ff0525f2SOliver-Rainer Wittmann         Image                   mImgSizeNone_L;
167ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumn1;
168ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumn2;
169ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumn3;
170ff0525f2SOliver-Rainer Wittmann         Image                   mImgLeft;
171ff0525f2SOliver-Rainer Wittmann         Image                   mImgRight;
172ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumnNone;
173ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumn1_L;
174ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumn2_L;
175ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumn3_L;
176ff0525f2SOliver-Rainer Wittmann         Image                   mImgLeft_L;
177ff0525f2SOliver-Rainer Wittmann         Image                   mImgRight_L;
178ff0525f2SOliver-Rainer Wittmann         Image                   mImgColumnNone_L;
179ff0525f2SOliver-Rainer Wittmann 
180ff0525f2SOliver-Rainer Wittmann         // item keeping the following page style attributes:
181ff0525f2SOliver-Rainer Wittmann         // - page orientation
182ff0525f2SOliver-Rainer Wittmann         // - page usage - only left, only right, both, mirrored
183ff0525f2SOliver-Rainer Wittmann         // item also hold the numbering type for the page style which should
184ff0525f2SOliver-Rainer Wittmann         // be kept stable.
185ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<SvxPageItem> mpPageItem;
186ff0525f2SOliver-Rainer Wittmann 
187ff0525f2SOliver-Rainer Wittmann         // item keeping the page style's left and right margins
188ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<SvxLongLRSpaceItem> mpPageLRMarginItem;
189ff0525f2SOliver-Rainer Wittmann         // item keeping the page style's top and bottom margins
190ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<SvxLongULSpaceItem> mpPageULMarginItem;
191ff0525f2SOliver-Rainer Wittmann 
192ff0525f2SOliver-Rainer Wittmann         // item keeping the page style's page size
193ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<SvxSizeItem> mpPageSizeItem;
194ff0525f2SOliver-Rainer Wittmann         // Paper corresponding to the page style's page size
195ff0525f2SOliver-Rainer Wittmann         Paper mePaper;
196ff0525f2SOliver-Rainer Wittmann 
197ff0525f2SOliver-Rainer Wittmann         // item keeping the page column type
198ff0525f2SOliver-Rainer Wittmann         ::boost::scoped_ptr<SfxInt16Item> mpPageColumnTypeItem;
199ff0525f2SOliver-Rainer Wittmann 
200ff0525f2SOliver-Rainer Wittmann         FieldUnit           meFUnit;
201ff0525f2SOliver-Rainer Wittmann         SfxMapUnit          meUnit;
202ff0525f2SOliver-Rainer Wittmann 
203ff0525f2SOliver-Rainer Wittmann         // controller items
204ff0525f2SOliver-Rainer Wittmann         ::sfx2::sidebar::ControllerItem m_aSwPagePgULControl;
205ff0525f2SOliver-Rainer Wittmann         ::sfx2::sidebar::ControllerItem m_aSwPagePgLRControl;
206ff0525f2SOliver-Rainer Wittmann         ::sfx2::sidebar::ControllerItem m_aSwPagePgSizeControl;
207ff0525f2SOliver-Rainer Wittmann         ::sfx2::sidebar::ControllerItem m_aSwPagePgControl;
208ff0525f2SOliver-Rainer Wittmann         ::sfx2::sidebar::ControllerItem m_aSwPageColControl;
209ff0525f2SOliver-Rainer Wittmann         ::sfx2::sidebar::ControllerItem m_aSwPagePgMetricControl;
210ff0525f2SOliver-Rainer Wittmann 
211ff0525f2SOliver-Rainer Wittmann         // popups
212550fbbbdSOliver-Rainer Wittmann         ::svx::sidebar::Popup maOrientationPopup;
213550fbbbdSOliver-Rainer Wittmann         ::svx::sidebar::Popup maMarginPopup;
214550fbbbdSOliver-Rainer Wittmann         ::svx::sidebar::Popup maSizePopup;
215550fbbbdSOliver-Rainer Wittmann         ::svx::sidebar::Popup maColumnPopup;
216550fbbbdSOliver-Rainer Wittmann 
217550fbbbdSOliver-Rainer Wittmann         const cssu::Reference< css::document::XUndoManager > mxUndoManager;
218ff0525f2SOliver-Rainer Wittmann 
2197dc3d34dSOliver-Rainer Wittmann         bool mbInvalidateSIDAttrPageOnSIDAttrPageSizeNotify;
2206a606da0SAndre Fischer         ::sfx2::sidebar::GridLayouter maLayouter;
2217dc3d34dSOliver-Rainer Wittmann 
222ff0525f2SOliver-Rainer Wittmann         // handler for popup toolboxes to show the popups
223ff0525f2SOliver-Rainer Wittmann         DECL_LINK(ClickOrientationHdl, ToolBox* );
224ff0525f2SOliver-Rainer Wittmann         DECL_LINK(ClickMarginHdl, ToolBox* );
225ff0525f2SOliver-Rainer Wittmann         DECL_LINK(ClickSizeHdl, ToolBox* );
226ff0525f2SOliver-Rainer Wittmann         DECL_LINK(ClickColumnHdl, ToolBox* );
227ff0525f2SOliver-Rainer Wittmann 
228ff0525f2SOliver-Rainer Wittmann         void Initialize();
229ff0525f2SOliver-Rainer Wittmann 
230ff0525f2SOliver-Rainer Wittmann         void MetricState( SfxItemState eState, const SfxPoolItem* pState );
231ff0525f2SOliver-Rainer Wittmann 
232ff0525f2SOliver-Rainer Wittmann         // helper to adjust popup toolbox' images
233ff0525f2SOliver-Rainer Wittmann         void ChangeMarginImage();
234ff0525f2SOliver-Rainer Wittmann         void ChangeSizeImage();
235ff0525f2SOliver-Rainer Wittmann         void ChangeColumnImage( const sal_uInt16 nColumnType );
236ff0525f2SOliver-Rainer Wittmann 
237ff0525f2SOliver-Rainer Wittmann     };
238ff0525f2SOliver-Rainer Wittmann 
239ff0525f2SOliver-Rainer Wittmann } } // end of namespace ::sw::sidebar
240ff0525f2SOliver-Rainer Wittmann 
241ff0525f2SOliver-Rainer Wittmann #endif
242*fb399032Smseidel 
243*fb399032Smseidel /* vim: set noet sw=4 ts=4: */
244