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