xref: /AOO41X/main/extensions/source/dbpilots/controlwizard.hxx (revision 46dbaceef8c12a09e4905feda473ecab36e10d03)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _EXTENSIONS_DBP_CONTROLWIZARD_HXX
25 #define _EXTENSIONS_DBP_CONTROLWIZARD_HXX
26 
27 #include <svtools/wizardmachine.hxx>
28 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
29 #include <com/sun/star/form/FormComponentType.hpp>
30 #include <com/sun/star/sdbc/XConnection.hpp>
31 #include <com/sun/star/task/XInteractionHandler.hpp>
32 #include <vcl/fixed.hxx>
33 #include <vcl/edit.hxx>
34 #ifndef _SV_BUTTON_HXX
35 #include <vcl/button.hxx>
36 #endif
37 #include <vcl/lstbox.hxx>
38 #include <vcl/combobox.hxx>
39 #include "dbptypes.hxx"
40 #ifndef _EXTENSIONS_DBP_DBPRESID_HRC_
41 #include "dbpresid.hrc"
42 #endif
43 #include "componentmodule.hxx"
44 #include "wizardcontext.hxx"
45 
46 class ResId;
47 //.........................................................................
48 namespace dbp
49 {
50 //.........................................................................
51 
52     //=====================================================================
53     //= OControlWizardSettings
54     //=====================================================================
55     struct OControlWizardSettings
56     {
57         String      sControlLabel;
58     };
59 
60     //=====================================================================
61     //= OControlWizardPage
62     //=====================================================================
63     class OControlWizard;
64     typedef ::svt::OWizardPage OControlWizardPage_Base;
65     class OControlWizardPage : public OControlWizardPage_Base
66     {
67     protected:
68         FixedLine*      m_pFormSettingsSeparator;
69         FixedText*      m_pFormDatasourceLabel;
70         FixedText*      m_pFormDatasource;
71         FixedText*      m_pFormContentTypeLabel;
72         FixedText*      m_pFormContentType;
73         FixedText*      m_pFormTableLabel;
74         FixedText*      m_pFormTable;
75 
76     protected:
77         OControlWizard*                 getDialog();
78         const OControlWizard*           getDialog() const;
79         const OControlWizardContext&    getContext();
80         sal_Bool                        updateContext();
81         void                            setFormConnection(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn, sal_Bool _bAutoDispose = sal_True );
82         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
83                                         getFormConnection() const;
84 
85     public:
86         OControlWizardPage( OControlWizard* _pParent, const ResId& _rResId );
87         ~OControlWizardPage();
88 
89     protected:
90         void fillListBox(
91             ListBox& _rList,
92             const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rItems,
93             sal_Bool _bClear = sal_True);
94         void fillListBox(
95             ComboBox& _rList,
96             const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rItems,
97             sal_Bool _bClear = sal_True);
98 
99     protected:
100         void enableFormDatasourceDisplay();
101         void adjustControlForNoDSDisplay(Control* _pControl, sal_Bool bConstLowerDistance = sal_False);
102 
103     protected:
104         // OWizardPage overridables
105         virtual void        initializePage();
106     };
107 
108     struct OAccessRegulator;
109     //=====================================================================
110     //= OControlWizard
111     //=====================================================================
112     typedef ::svt::OWizardMachine OControlWizard_Base;
113     class OControlWizard : public OControlWizard_Base
114     {
115     private:
116         OControlWizardContext   m_aContext;
117 
118     protected:
119         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
120                     m_xORB;
121 
122     public:
123         OControlWizard(
124             Window* _pParent,
125             const ResId& _rId,
126             const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObjectModel,
127             const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB
128         );
129         ~OControlWizard();
130 
131         // make the some base class methods public
travelNext()132         sal_Bool    travelNext() { return OControlWizard_Base::travelNext(); }
133 
134     public:
135         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
getServiceFactory() const136             getServiceFactory() const { return m_xORB; }
137 
getContext() const138         const OControlWizardContext&    getContext() const { return m_aContext; }
139         sal_Bool                        updateContext(const OAccessRegulator&);
140         void                            setFormConnection(const OAccessRegulator&, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn, sal_Bool _bAutoDispose = sal_True );
141         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
142                                         getFormConnection(const OAccessRegulator&) const;
143 
144         /** returns the com.sun.star.task.InteractionHandler
145             @param  _pWindow    The window will be used when an error message has to be shown.
146         */
147         ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler > getInteractionHandler(Window* _pWindow) const;
148 
149     protected:
150         // initialize the derivees settings (which have to be derived from OControlWizardSettings)
151         // with some common data extracted from the control model
152         void initControlSettings(OControlWizardSettings* _pSettings);
153         // commit the control-relevant settings
154         void commitControlSettings(OControlWizardSettings* _pSettings);
155 
156         sal_Bool needDatasourceSelection();
157 
158         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
159                                         getFormConnection() const;
160 
161         virtual sal_Bool approveControl(sal_Int16 _nClassId) = 0;
162 
163         // ModalDialog overridables
164         virtual short   Execute();
165 
166     private:
167         sal_Bool initContext();
168 
169         void implGetDSContext();
170         void implDetermineForm();
171         void implDeterminePage();
172         void implDetermineShape();
173 
174         // made private. Not to be used by derived (or external) classes
175         virtual void ActivatePage();
176     };
177 
178 //.........................................................................
179 }   // namespace dbp
180 //.........................................................................
181 
182 #endif // _EXTENSIONS_DBP_CONTROLWIZARD_HXX
183 
184