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