xref: /trunk/main/dbaccess/source/ui/inc/TableWindowListBox.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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 #ifndef DBAUI_TABLEWINDOWLISTBOX_HXX
28 #define DBAUI_TABLEWINDOWLISTBOX_HXX
29 
30 #include <svtools/svtreebx.hxx>
31 #include "callbacks.hxx"
32 
33 struct AcceptDropEvent;
34 struct ExecuteDropEvent;
35 namespace dbaui
36 {
37     class OTableWindowListBox;
38     struct OJoinExchangeData
39     {
40     public:
41         OTableWindowListBox*    pListBox;       // die ListBox innerhalb desselben (daraus kann man sich das TabWin und daraus den WinName besorgen)
42         SvLBoxEntry*            pEntry;         // der Eintrag, der gedraggt oder auf den gedroppt wurde
43 
44         OJoinExchangeData(OTableWindowListBox* pBox);
45         OJoinExchangeData() : pListBox(NULL), pEntry(NULL) { }
46     };
47     struct OJoinDropData
48     {
49         OJoinExchangeData aSource;
50         OJoinExchangeData aDest;
51     };
52 
53     class OTableWindow;
54     class OTableWindowListBox
55             :public SvTreeListBox
56             ,public IDragTransferableListener
57     {
58         DECL_LINK( OnDoubleClick, SvTreeListBox* );
59         DECL_LINK( ScrollUpHdl, SvTreeListBox* );
60         DECL_LINK( ScrollDownHdl, SvTreeListBox* );
61         DECL_LINK( DropHdl, void* );
62         DECL_LINK( LookForUiHdl, void* );
63 
64         Timer                       m_aScrollTimer;
65         Point                       m_aMousePos;
66 
67         OTableWindow*               m_pTabWin;
68         sal_uLong                       m_nDropEvent;
69         sal_uLong                       m_nUiEvent;
70         OJoinDropData               m_aDropInfo;
71 
72         sal_Bool                        m_bReallyScrolled : 1;
73         sal_Bool                        m_bDragSource : 1;
74 
75     protected:
76         virtual void LoseFocus();
77         virtual void GetFocus();
78         virtual void NotifyScrolled();
79         virtual void NotifyEndScroll();
80 
81         virtual long PreNotify(NotifyEvent& rNEvt);
82 
83         virtual void dragFinished( );
84 
85 
86 
87     public:
88         OTableWindowListBox(OTableWindow* pParent);
89         virtual ~OTableWindowListBox();
90 
91         // DnD stuff
92         virtual void        StartDrag( sal_Int8 nAction, const Point& rPosPixel );
93         virtual sal_Int8    AcceptDrop( const AcceptDropEvent& rEvt );
94         virtual sal_Int8    ExecuteDrop( const ExecuteDropEvent& rEvt );
95 
96         // window
97         virtual void Command(const CommandEvent& rEvt);
98 
99         OTableWindow* GetTabWin(){ return m_pTabWin; }
100         SvLBoxEntry* GetEntryFromText( const String& rEntryText );
101 
102     private:
103         using SvTreeListBox::ExecuteDrop;
104     };
105 }
106 #endif // DBAUI_TABLEWINDOWLISTBOX_HXX
107 
108 
109 
110