xref: /AOO41X/main/dbaccess/source/ui/app/AppView.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_APPVIEW_HXX
24 #define DBAUI_APPVIEW_HXX
25 
26 #ifndef DBAUI_DATAVIEW_HXX
27 #include "dataview.hxx"
28 #endif
29 #ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
30 #include <com/sun/star/container/XNameAccess.hpp>
31 #endif
32 #ifndef _COM_SUN_STAR_SDBC_XDATABASEMETADATA_HPP_
33 #include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
34 #endif
35 #ifndef _COM_SUN_STAR_UCB_XCONTENT_HPP_
36 #include <com/sun/star/ucb/XContent.hpp>
37 #endif
38 #ifndef _COM_SUN_STAR_SDB_APPLICATION_NAMEDDATABASEOBJECT_HPP_
39 #include <com/sun/star/sdb/application/NamedDatabaseObject.hpp>
40 #endif
41 #ifndef _SV_FIXED_HXX
42 #include <vcl/fixed.hxx>
43 #endif
44 #ifndef _UNOTOOLS_EVENTLISTENERADAPTER_HXX_
45 #include <unotools/eventlisteneradapter.hxx>
46 #endif
47 #ifndef DBACCESS_TABLEDESIGN_ICLIPBOARDTEST_HXX
48 #include "IClipBoardTest.hxx"
49 #endif
50 #ifndef DBAUI_APPELEMENTTYPE_HXX
51 #include "AppElementType.hxx"
52 #endif
53 
54 namespace com{ namespace sun { namespace star { namespace beans    { class XPropertySet; } } } }
55 
56 class Control;
57 class SvLBoxEntry;
58 class MnemonicGenerator;
59 
60 namespace dbaui
61 {
62     class IControlActionListener;
63     class IApplicationController;
64     class OApplicationView;
65     class OApplicationDetailView;
66     class OApplicationSwapWindow;
67     class OTitleWindow;
68     //==================================================================
69     class OAppBorderWindow : public Window
70     {
71         OTitleWindow*                       m_pPanel;
72         OApplicationDetailView*             m_pDetailView;
73         OApplicationView*                   m_pView;
74 
75         void ImplInitSettings();
76     protected:
77         // Window
78         virtual void DataChanged( const DataChangedEvent& rDCEvt );
79     public:
80         OAppBorderWindow(OApplicationView* _pParent,PreviewMode _ePreviewMode);
81         virtual ~OAppBorderWindow();
82 
83         // window overloads
84         virtual void GetFocus();
85         virtual void Resize();
86 
87         OApplicationView*       getView() const;
88         OApplicationSwapWindow* getPanel() const;
89         OApplicationDetailView* getDetailView() const;
90     };
91 
92     //==================================================================
93     class OApplicationView : public ODataView
94                             ,public IClipboardTest
95                             ,public ::utl::OEventListenerAdapter
96     {
97         enum ChildFocusState
98         {
99             PANELSWAP,
100             DETAIL,
101             NONE
102         };
103     private:
104         ::com::sun::star::lang::Locale      m_aLocale;
105         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
106                                             m_xObject;
107         OAppBorderWindow*                   m_pWin;
108         IApplicationController&             m_rAppController;
109         ChildFocusState                     m_eChildFocus;
110 
111         IClipboardTest* getActiveChild() const;
112 
113         void ImplInitSettings();
114     protected:
115 
116 
117         // return the Rectangle where I can paint myself
118         virtual void resizeDocumentView(Rectangle& rRect);
119 
120         // OEventListenerAdapter
121         virtual void _disposing( const ::com::sun::star::lang::EventObject& _rSource );
122 
123         // Window
124         virtual void DataChanged( const DataChangedEvent& rDCEvt );
125     public:
126         OApplicationView(   Window* pParent
127                             ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
128                             ,IApplicationController&            _rAppController
129                             ,PreviewMode _ePreviewMode
130                             );
131         virtual ~OApplicationView();
132 
133         /// automatically creates mnemonics for the icon/texts in our left hand side panel
134         void    createIconAutoMnemonics( MnemonicGenerator& _rMnemonics );
135 
136         /// automatically creates mnemonics for the texts in our task pane
137         void    setTaskExternalMnemonics( MnemonicGenerator& _rMnemonics );
138 
139         // window overloads
140         virtual long PreNotify( NotifyEvent& rNEvt );
141         virtual void GetFocus();
142 
getAppController() const143         inline IApplicationController&                  getAppController() const { return m_rAppController; }
getLocale() const144         inline const ::com::sun::star::lang::Locale&    getLocale() const { return m_aLocale;}
145 
146         // IClipboardTest
147         virtual sal_Bool isCutAllowed();
148         virtual sal_Bool isCopyAllowed();
149         virtual sal_Bool isPasteAllowed();
hasChildPathFocus()150         virtual sal_Bool hasChildPathFocus() { return HasChildPathFocus(); }
151         virtual void copy();
152         virtual void cut();
153         virtual void paste();
154 
155         /// get the left panel
getPanel() const156         inline OApplicationSwapWindow*  getPanel()      const { return m_pWin->getPanel(); }
157         /// get the detail page
getDetailView() const158         inline OApplicationDetailView*  getDetailView() const { return m_pWin->getDetailView(); }
159 
160         /** return the qualified name.
161             @param  _pEntry
162                 The entry of a table, or query, form, report to get the qualified name.
163                 If the entry is <NULL/>, the first selected is chosen.
164             @return
165                 the qualified name
166         */
167         ::rtl::OUString getQualifiedName( SvLBoxEntry* _pEntry ) const;
168 
169         /** returns if an entry is a leaf
170             @param _pEntry
171                 The entry to check
172             @return
173                 <TRUE/> if the entry is a leaf, otherwise <FALSE/>
174         */
175         sal_Bool isLeaf(SvLBoxEntry* _pEntry) const;
176 
177         /** returns if one of the selected entries is a leaf
178             @return
179                 <TRUE/> if the entry is a leaf, otherwise <FALSE/>
180         */
181         sal_Bool isALeafSelected() const;
182 
183         /** select all entries in the detail page
184         */
185         void selectAll();
186 
187         /// returns <TRUE/> if it sorts ascending
188         sal_Bool isSortUp() const;
189 
190         /// sort the entries in the detail page down
191         void sortDown();
192 
193         /// sort the entries in the detail page up
194         void sortUp();
195 
196         /// returns <TRUE/> when a detail page was filled
197         sal_Bool isFilled() const;
198 
199         /// return the element of currently select entry
200         ElementType getElementType() const;
201 
202         /// returns the count of entries
203         sal_Int32 getElementCount();
204 
205         /// returns the count of selected entries
206         sal_Int32 getSelectionCount();
207 
208         /** clears the detail page and the selection on the left side.
209             @param  _bTaskAlso
210                 If <TRUE/> the task window will also be cleared.
211         */
212         void clearPages(sal_Bool _bTaskAlso = sal_True);
213 
214         /** returns the element names which are selected
215             @param  _rNames
216                 The list will be filled.
217         */
218         void getSelectionElementNames( ::std::vector< ::rtl::OUString>& _rNames ) const;
219 
220         /** describes the current selection for the given control
221         */
222         void    describeCurrentSelectionForControl(
223                     const Control& _rControl,
224                     ::com::sun::star::uno::Sequence< ::com::sun::star::sdb::application::NamedDatabaseObject >& _out_rSelectedObjects
225                 );
226 
227         /** describes the current selection for the given ElementType
228         */
229         void    describeCurrentSelectionForType(
230                     const ElementType _eType,
231                     ::com::sun::star::uno::Sequence< ::com::sun::star::sdb::application::NamedDatabaseObject >& _out_rSelectedObjects
232                 );
233 
234         /** select all names on the currently selected container. Non existence names where ignored.
235         *
236         * \param _aNames the element names
237         */
238         void selectElements(const ::com::sun::star::uno::Sequence< ::rtl::OUString>& _aNames);
239 
240         /** adds a new object to the detail page.
241             @param  _eType
242                 The type where the entry shold be appended.
243             @param  _rName
244                 The name of the object to be inserted
245             @param  _rObject
246                 The object to add.
247             @param  _rxConn
248                 If we insert a table, the connection must be set.
249         */
250         SvLBoxEntry* elementAdded(ElementType _eType
251                         ,const ::rtl::OUString& _rName
252                         ,const ::com::sun::star::uno::Any& _rObject );
253 
254         /** replaces a objects name with a new one
255             @param  _eType
256                 The type where the entry shold be appended.
257             @param  _rOldName
258                 The old name of the object to be replaced
259             @param  _rNewName
260                 The new name of the object to be replaced
261             @param  _rxConn
262                 If we insert a table, the connection must be set.
263             @param  _xObject
264                 The object which was replaced
265         */
266         void elementReplaced(ElementType eType
267                         ,const ::rtl::OUString& _rOldName
268                         ,const ::rtl::OUString& _rNewName );
269 
270         /** removes an element from the detail page.
271             @param  _eType
272                 The type where the entry shold be appended.
273             @param  _rName
274                 The name of the element to be removed.
275             @param  _rxConn
276                 If we remove a table, the connection must be set.
277         */
278         void elementRemoved(ElementType _eType
279                             ,const ::rtl::OUString& _rName );
280 
281 
282         /** changes the container which should be displayed. The select handler will also be called.
283             @param  _eType
284                 Which container to show.
285         */
286         void selectContainer(ElementType _eType);
287 
288         /// returns the preview mode
289         PreviewMode getPreviewMode();
290 
291         /// <TRUE/> if the preview is enabled
292         sal_Bool isPreviewEnabled();
293 
294         /** switches to the given preview mode
295             @param  _eMode
296                 the mode to set for the preview
297         */
298         void switchPreview(PreviewMode _eMode);
299 
300         /** shows the Preview of the content when it is enabled.
301             @param  _xContent
302                 The content which must support the "preview" command.
303         */
304         void showPreview(const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _xContent);
305 
306         /** shows the Preview of a table or query
307             @param  _sDataSourceName
308                 the name of the data source
309             @param  _xConnection
310                 the connection which will be shared
311             @param  _sName
312                 the name of table or query
313             @param  _bTable
314                 <TRUE/> if it is a table, otherwise <FALSE/>
315             @return void
316         */
317         void showPreview(   const ::rtl::OUString& _sDataSourceName,
318                             const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,
319                             const ::rtl::OUString& _sName,
320                             sal_Bool _bTable);
321 
322         SvLBoxEntry* getEntry( const Point& _aPosPixel ) const;
323 
324         DECL_LINK( SwitchHdl, Accelerator* );
325     };
326 }
327 #endif // DBAUI_APPVIEW_HXX
328 
329