xref: /trunk/main/extensions/source/dbpilots/controlwizard.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _EXTENSIONS_DBP_CONTROLWIZARD_HXX
29 #define _EXTENSIONS_DBP_CONTROLWIZARD_HXX
30 
31 #include <svtools/wizardmachine.hxx>
32 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
33 #include <com/sun/star/form/FormComponentType.hpp>
34 #include <com/sun/star/sdbc/XConnection.hpp>
35 #include <com/sun/star/task/XInteractionHandler.hpp>
36 #include <vcl/fixed.hxx>
37 #include <vcl/edit.hxx>
38 #ifndef _SV_BUTTON_HXX
39 #include <vcl/button.hxx>
40 #endif
41 #include <vcl/lstbox.hxx>
42 #include <vcl/combobox.hxx>
43 #include "dbptypes.hxx"
44 #ifndef _EXTENSIONS_DBP_DBPRESID_HRC_
45 #include "dbpresid.hrc"
46 #endif
47 #include "componentmodule.hxx"
48 #include "wizardcontext.hxx"
49 
50 class ResId;
51 //.........................................................................
52 namespace dbp
53 {
54 //.........................................................................
55 
56     //=====================================================================
57     //= OControlWizardSettings
58     //=====================================================================
59     struct OControlWizardSettings
60     {
61         String      sControlLabel;
62     };
63 
64     //=====================================================================
65     //= OControlWizardPage
66     //=====================================================================
67     class OControlWizard;
68     typedef ::svt::OWizardPage OControlWizardPage_Base;
69     class OControlWizardPage : public OControlWizardPage_Base
70     {
71     protected:
72         FixedLine*      m_pFormSettingsSeparator;
73         FixedText*      m_pFormDatasourceLabel;
74         FixedText*      m_pFormDatasource;
75         FixedText*      m_pFormContentTypeLabel;
76         FixedText*      m_pFormContentType;
77         FixedText*      m_pFormTableLabel;
78         FixedText*      m_pFormTable;
79 
80     protected:
81         OControlWizard*                 getDialog();
82         const OControlWizard*           getDialog() const;
83         const OControlWizardContext&    getContext();
84         sal_Bool                        updateContext();
85         void                            setFormConnection(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn, sal_Bool _bAutoDispose = sal_True );
86         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
87                                         getFormConnection() const;
88 
89     public:
90         OControlWizardPage( OControlWizard* _pParent, const ResId& _rResId );
91         ~OControlWizardPage();
92 
93     protected:
94         void fillListBox(
95             ListBox& _rList,
96             const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rItems,
97             sal_Bool _bClear = sal_True);
98         void fillListBox(
99             ComboBox& _rList,
100             const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rItems,
101             sal_Bool _bClear = sal_True);
102 
103     protected:
104         void enableFormDatasourceDisplay();
105         void adjustControlForNoDSDisplay(Control* _pControl, sal_Bool bConstLowerDistance = sal_False);
106 
107     protected:
108         // OWizardPage overridables
109         virtual void        initializePage();
110     };
111 
112     struct OAccessRegulator;
113     //=====================================================================
114     //= OControlWizard
115     //=====================================================================
116     typedef ::svt::OWizardMachine OControlWizard_Base;
117     class OControlWizard : public OControlWizard_Base
118     {
119     private:
120         OControlWizardContext   m_aContext;
121 
122     protected:
123         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
124                     m_xORB;
125 
126     public:
127         OControlWizard(
128             Window* _pParent,
129             const ResId& _rId,
130             const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObjectModel,
131             const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB
132         );
133         ~OControlWizard();
134 
135         // make the some base class methods public
136         sal_Bool    travelNext() { return OControlWizard_Base::travelNext(); }
137 
138     public:
139         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
140             getServiceFactory() const { return m_xORB; }
141 
142         const OControlWizardContext&    getContext() const { return m_aContext; }
143         sal_Bool                        updateContext(const OAccessRegulator&);
144         void                            setFormConnection(const OAccessRegulator&, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn, sal_Bool _bAutoDispose = sal_True );
145         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
146                                         getFormConnection(const OAccessRegulator&) const;
147 
148         /** returns the com.sun.star.task.InteractionHandler
149             @param  _pWindow    The window will be used when an error message has to be shown.
150         */
151         ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler > getInteractionHandler(Window* _pWindow) const;
152 
153     protected:
154         // initialize the derivees settings (which have to be derived from OControlWizardSettings)
155         // with some common data extracted from the control model
156         void initControlSettings(OControlWizardSettings* _pSettings);
157         // commit the control-relevant settings
158         void commitControlSettings(OControlWizardSettings* _pSettings);
159 
160         sal_Bool needDatasourceSelection();
161 
162         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
163                                         getFormConnection() const;
164 
165         virtual sal_Bool approveControl(sal_Int16 _nClassId) = 0;
166 
167         // ModalDialog overridables
168         virtual short   Execute();
169 
170     private:
171         sal_Bool initContext();
172 
173         void implGetDSContext();
174         void implDetermineForm();
175         void implDeterminePage();
176         void implDetermineShape();
177 
178         // made private. Not to be used by derived (or external) classes
179         virtual void ActivatePage();
180     };
181 
182 //.........................................................................
183 }   // namespace dbp
184 //.........................................................................
185 
186 #endif // _EXTENSIONS_DBP_CONTROLWIZARD_HXX
187 
188