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