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 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef FRAMEWORK_BACKINGWINDOW_HXX
25*b1cdbd2cSJim Jagielski #define FRAMEWORK_BACKINGWINDOW_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "rtl/ustring.hxx"
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include "vcl/button.hxx"
30*b1cdbd2cSJim Jagielski #include "vcl/menubtn.hxx"
31*b1cdbd2cSJim Jagielski #include "vcl/fixed.hxx"
32*b1cdbd2cSJim Jagielski #include "vcl/bitmapex.hxx"
33*b1cdbd2cSJim Jagielski #include "vcl/toolbox.hxx"
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #include "unotools/moduleoptions.hxx"
36*b1cdbd2cSJim Jagielski #include "svtools/acceleratorexecute.hxx"
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XUIControllerFactory.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XPopupMenuController.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/XPopupMenu.hpp>
42*b1cdbd2cSJim Jagielski #include "com/sun/star/frame/XDispatchProvider.hpp"
43*b1cdbd2cSJim Jagielski #include "com/sun/star/frame/XDesktop.hpp"
44*b1cdbd2cSJim Jagielski #include "com/sun/star/frame/XFrame.hpp"
45*b1cdbd2cSJim Jagielski #include "com/sun/star/frame/XTerminateListener.hpp"
46*b1cdbd2cSJim Jagielski #include "com/sun/star/document/XEventListener.hpp"
47*b1cdbd2cSJim Jagielski #include "com/sun/star/document/XEventBroadcaster.hpp"
48*b1cdbd2cSJim Jagielski #include "com/sun/star/util/XURLTransformer.hpp"
49*b1cdbd2cSJim Jagielski #include "com/sun/star/ui/dialogs/XFilePicker.hpp"
50*b1cdbd2cSJim Jagielski #include "com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp"
51*b1cdbd2cSJim Jagielski #include "com/sun/star/ui/dialogs/XFilterManager.hpp"
52*b1cdbd2cSJim Jagielski #include "com/sun/star/ui/dialogs/XFolderPicker.hpp"
53*b1cdbd2cSJim Jagielski #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
54*b1cdbd2cSJim Jagielski #include "com/sun/star/ui/dialogs/ExecutableDialogResults.hpp"
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski #include <set>
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski class MnemonicGenerator;
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski namespace framework
61*b1cdbd2cSJim Jagielski {
62*b1cdbd2cSJim Jagielski         // To get the transparent mouse-over look, the closer is actually a toolbox
63*b1cdbd2cSJim Jagielski     // overload DataChange to handle style changes correctly
64*b1cdbd2cSJim Jagielski     class DecoToolBox : public ToolBox
65*b1cdbd2cSJim Jagielski     {
66*b1cdbd2cSJim Jagielski         Size maMinSize;
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski         using Window::ImplInit;
69*b1cdbd2cSJim Jagielski     public:
70*b1cdbd2cSJim Jagielski                 DecoToolBox( Window* pParent, WinBits nStyle = 0 );
71*b1cdbd2cSJim Jagielski                 DecoToolBox( Window* pParent, const ResId& rResId );
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski         void    DataChanged( const DataChangedEvent& rDCEvt );
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski         void    calcMinSize();
76*b1cdbd2cSJim Jagielski         Size    getMinSize();
77*b1cdbd2cSJim Jagielski     };
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski     class BackingWindow : public Window
80*b1cdbd2cSJim Jagielski     {
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski         com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >         mxContext;
83*b1cdbd2cSJim Jagielski         com::sun::star::uno::Reference<com::sun::star::frame::XDesktop>                  mxDesktop;
84*b1cdbd2cSJim Jagielski         com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider >        mxDesktopDispatchProvider;
85*b1cdbd2cSJim Jagielski         com::sun::star::uno::Reference<com::sun::star::frame::XFrame>                    mxFrame;
86*b1cdbd2cSJim Jagielski         com::sun::star::uno::Reference< com::sun::star::frame::XUIControllerFactory >    mxPopupMenuFactory;
87*b1cdbd2cSJim Jagielski         com::sun::star::uno::Reference< com::sun::star::frame::XPopupMenuController >    mxPopupMenuController;
88*b1cdbd2cSJim Jagielski         com::sun::star::uno::Reference< com::sun::star::awt::XPopupMenu >                mxPopupMenu;
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski         FixedText                       maWelcome;
91*b1cdbd2cSJim Jagielski         Size                            maWelcomeSize;
92*b1cdbd2cSJim Jagielski         FixedText                       maProduct;
93*b1cdbd2cSJim Jagielski         Size                            maProductSize;
94*b1cdbd2cSJim Jagielski         ImageButton                     maWriterButton;
95*b1cdbd2cSJim Jagielski         ImageButton                     maCalcButton;
96*b1cdbd2cSJim Jagielski         ImageButton                     maImpressButton;
97*b1cdbd2cSJim Jagielski         MenuButton                      maOpenButton;
98*b1cdbd2cSJim Jagielski         ImageButton                     maDrawButton;
99*b1cdbd2cSJim Jagielski         ImageButton                     maDBButton;
100*b1cdbd2cSJim Jagielski         ImageButton                     maMathButton;
101*b1cdbd2cSJim Jagielski         ImageButton                     maTemplateButton;
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski         DecoToolBox                     maToolbox;
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski         BitmapEx                        maBackgroundLeft;
106*b1cdbd2cSJim Jagielski         BitmapEx                        maBackgroundMiddle;
107*b1cdbd2cSJim Jagielski         BitmapEx                        maBackgroundRight;
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski         String                          maWelcomeString;
110*b1cdbd2cSJim Jagielski         String                          maProductString;
111*b1cdbd2cSJim Jagielski         String                          maCreateString;
112*b1cdbd2cSJim Jagielski         String                          maOpenString;
113*b1cdbd2cSJim Jagielski         String                          maTemplateString;
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski         Font                            maTextFont;
116*b1cdbd2cSJim Jagielski         Rectangle                       maControlRect;
117*b1cdbd2cSJim Jagielski 
118*b1cdbd2cSJim Jagielski         long                            mnColumnWidth[2];
119*b1cdbd2cSJim Jagielski         long                            mnTextColumnWidth[2];
120*b1cdbd2cSJim Jagielski         Color                           maLabelTextColor;
121*b1cdbd2cSJim Jagielski         Color                           maWelcomeTextColor;
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski         Size                            maButtonImageSize;
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski         bool                            mbInitControls;
126*b1cdbd2cSJim Jagielski         sal_Int32                       mnLayoutStyle;
127*b1cdbd2cSJim Jagielski         svt::AcceleratorExecute*        mpAccExec;
128*b1cdbd2cSJim Jagielski         long                            mnBtnPos;
129*b1cdbd2cSJim Jagielski         long                            mnBtnTop;
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski         static const int nItemId_Extensions = 1;
132*b1cdbd2cSJim Jagielski         static const int nItemId_Reg = 2;
133*b1cdbd2cSJim Jagielski         static const int nItemId_Info = 3;
134*b1cdbd2cSJim Jagielski         static const int nItemId_TplRep = 4;
135*b1cdbd2cSJim Jagielski         static const int nShadowTop = 32;
136*b1cdbd2cSJim Jagielski         static const int nShadowLeft = 35;
137*b1cdbd2cSJim Jagielski         static const int nShadowRight = 45;
138*b1cdbd2cSJim Jagielski         static const int nShadowBottom = 50;
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski         void loadImage( const ResId& i_rId, PushButton& i_rButton );
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski         void layoutButton( const char* i_pURL, int nColumn, const std::set<rtl::OUString>& i_rURLS,
143*b1cdbd2cSJim Jagielski                            SvtModuleOptions& i_rOpt, SvtModuleOptions::EModule i_eMod,
144*b1cdbd2cSJim Jagielski                            PushButton& i_rBtn,
145*b1cdbd2cSJim Jagielski                            MnemonicGenerator& i_rMnemonicGen,
146*b1cdbd2cSJim Jagielski                            const String& i_rStr = String()
147*b1cdbd2cSJim Jagielski                            );
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski         void dispatchURL( const rtl::OUString& i_rURL,
150*b1cdbd2cSJim Jagielski                           const rtl::OUString& i_rTarget = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "_default" ) ),
151*b1cdbd2cSJim Jagielski                           const com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >& i_xProv = com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >(),
152*b1cdbd2cSJim Jagielski                           const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& = com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >()
153*b1cdbd2cSJim Jagielski                           );
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski         DECL_LINK( ClickHdl, Button* );
156*b1cdbd2cSJim Jagielski         DECL_LINK( ActivateHdl, Button* );
157*b1cdbd2cSJim Jagielski         DECL_LINK( ToolboxHdl, void* );
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski         void initControls();
160*b1cdbd2cSJim Jagielski         void initBackground();
161*b1cdbd2cSJim Jagielski         void prepareRecentFileMenu();
162*b1cdbd2cSJim Jagielski         public:
163*b1cdbd2cSJim Jagielski         BackingWindow( Window* pParent );
164*b1cdbd2cSJim Jagielski         ~BackingWindow();
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski         virtual void        Paint( const Rectangle& rRect );
167*b1cdbd2cSJim Jagielski         virtual void        Resize();
168*b1cdbd2cSJim Jagielski         virtual long        Notify( NotifyEvent& rNEvt );
169*b1cdbd2cSJim Jagielski         virtual void        DataChanged( const DataChangedEvent& rDCEvt );
170*b1cdbd2cSJim Jagielski         virtual void        GetFocus();
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski         void setOwningFrame( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& xFrame );
173*b1cdbd2cSJim Jagielski     };
174*b1cdbd2cSJim Jagielski 
175*b1cdbd2cSJim Jagielski }
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski #endif
178*b1cdbd2cSJim Jagielski 
179