xref: /AOO41X/main/dbaccess/source/ui/inc/JoinController.hxx (revision 2e2212a7c22e96cf6f6fab0dd042c34a45a64bd6)
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 #ifndef DBAUI_JOINCONTROLLER_HXX
24 #define DBAUI_JOINCONTROLLER_HXX
25 
26 #include "singledoccontroller.hxx"
27 #include <com/sun/star/beans/XPropertySet.hpp>
28 #include "moduledbu.hxx"
29 #include "JoinTableView.hxx"
30 #include "JoinDesignView.hxx"
31 #include "TableConnectionData.hxx"
32 #include "TableWindowData.hxx"
33 #include <memory>
34 #include <boost/shared_ptr.hpp>
35 
36 namespace comphelper
37 {
38     class NamedValueCollection;
39 }
40 
41 class VCLXWindow;
42 namespace dbaui
43 {
44     class OAddTableDlg;
45     class AddTableDialogContext;
46     class OTableConnectionData;
47     class OTableWindowData;
48     class OTableWindow;
49     typedef OSingleDocumentController OJoinController_BASE;
50 
51     class OJoinController : public OJoinController_BASE
52     {
53         OModuleClient                    m_aModuleClient;
54     protected:
55         TTableConnectionData m_vTableConnectionData;
56         TTableWindowData     m_vTableData;
57 
58         Fraction                                m_aZoom;
59         ::dbtools::SQLExceptionInfo             m_aExceptionInfo;
60 
61         OAddTableDlg*                               m_pAddTableDialog;
62         ::std::auto_ptr< AddTableDialogContext >    m_pDialogContext;
63         Point                                   m_aMinimumTableViewSize;
64 
65         // state of a feature. 'feature' may be the handle of a ::com::sun::star::util::URL somebody requested a dispatch interface for OR a toolbar slot.
66         virtual FeatureState    GetState(sal_uInt16 nId) const;
67         // execute a feature
68         virtual void            Execute(sal_uInt16 nId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
69 
70         /** loads the information for the windows.
71             @param  i_rViewSettings
72                 The properties which comes from the layout information.
73         */
74         void loadTableWindows( const ::comphelper::NamedValueCollection& i_rViewSettings );
75 
76         /** loads the information for one window.
77             @param  _rTable
78                 The properties which comes from the layout information.
79         */
80         void loadTableWindow( const ::comphelper::NamedValueCollection& i_rTableWindowSettings );
81 
82         /** saves the TableWindows structure in a sequence of property values
83             @param  _rViewProps
84                 Contains the new sequence.
85         */
86         void saveTableWindows( ::comphelper::NamedValueCollection& o_rViewSettings ) const;
87 
88         virtual ~OJoinController();
89     public:
90         OJoinController(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM);
91 
92         // ---------------------------------------------------------------
93         // attribute access
getTableWindowData()94         inline TTableWindowData*        getTableWindowData()     { return &m_vTableData; }
getTableConnectionData()95         inline TTableConnectionData*    getTableConnectionData() { return &m_vTableConnectionData;}
getAddTableDialog() const96         inline OAddTableDlg*            getAddTableDialog()const { return m_pAddTableDialog; }
97 
98         // ---------------------------------------------------------------
99         // OSingleDocumentController overridables
100         virtual void        reconnect( sal_Bool _bUI );
101         virtual void        impl_onModifyChanged();
102 
103         // ---------------------------------------------------------------
104         // own overridables
105         /** determines whether or not it's allowed for database views to participate in the game
106         */
107         virtual bool allowViews() const = 0;
108 
109         /** determines whether or not it's allowed for queries to participate in the game
110         */
111         virtual bool allowQueries() const = 0;
112 
113         /** provides access to the OJoinDesignView belonging to the controller, which might
114             or might not be the direct view (getView)
115         */
116         virtual OJoinDesignView*    getJoinView();
117 
118 
119         // ---------------------------------------------------------------
120         /** erase the data in the data vector
121             @param  _pData
122                     the data whioch should be erased
123         */
124         void    removeConnectionData(const TTableConnectionData::value_type& _pData);
125 
126         void    SaveTabWinsPosSize( OJoinTableView::OTableWindowMap* pTabWinList, long nOffsetX, long nOffsetY );
127 
128         void    SaveTabWinPosSize(OTableWindow* pTabWin, long nOffsetX, long nOffsetY);
129 
130         // ---------------------------------------------------------------
131         // UNO interface overridables
132         // XEventListener
133         virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
134 
135         // ::com::sun::star::lang::XComponent
136         virtual void    SAL_CALL disposing();
137         // ::com::sun::star::frame::XController
138         virtual sal_Bool SAL_CALL suspend(sal_Bool bSuspend) throw( ::com::sun::star::uno::RuntimeException );
139 
140 
141         // ---------------------------------------------------------------
142         // misc
143         /** only defines a method to save a SQLException in d&d methods to show the error at a later state
144             set the internal member m_aExceptionInfo to _rInfo
145         */
setErrorOccured(const::dbtools::SQLExceptionInfo & _rInfo)146         void setErrorOccured(const ::dbtools::SQLExceptionInfo& _rInfo)
147         {
148             m_aExceptionInfo = _rInfo;
149         }
150         /**
151             just returns the internal member and clears it
152         */
clearOccuredError()153         ::dbtools::SQLExceptionInfo clearOccuredError()
154         {
155             ::dbtools::SQLExceptionInfo aInfo = m_aExceptionInfo;
156             m_aExceptionInfo = ::dbtools::SQLExceptionInfo();
157             return aInfo;
158         }
159 
160     protected:
161         TTableWindowData::value_type createTableWindowData(const ::rtl::OUString& _sComposedName,const ::rtl::OUString& _sTableName,const ::rtl::OUString& _sWindowName);
162         // ask the user if the design should be saved when it is modified
163         virtual short saveModified() = 0;
164         // called when the orignal state should be reseted (first time load)
165         virtual void reset()         = 0;
166         virtual void describeSupportedFeatures();
167 
168         AddTableDialogContext&  impl_getDialogContext() const;
169     };
170 }
171 #endif // DBAUI_JOINCONTROLLER_HXX
172 
173