summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/inc/dbtreelistbox.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/inc/dbtreelistbox.hxx')
-rw-r--r--dbaccess/source/ui/inc/dbtreelistbox.hxx167
1 files changed, 167 insertions, 0 deletions
diff --git a/dbaccess/source/ui/inc/dbtreelistbox.hxx b/dbaccess/source/ui/inc/dbtreelistbox.hxx
new file mode 100644
index 000000000000..fb32fc665e23
--- /dev/null
+++ b/dbaccess/source/ui/inc/dbtreelistbox.hxx
@@ -0,0 +1,167 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef DBAUI_DBTREELISTBOX_HXX
+#define DBAUI_DBTREELISTBOX_HXX
+
+#include "ScrollHelper.hxx"
+#include "moduledbu.hxx"
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+
+#include <svtools/svtreebx.hxx>
+#include <vcl/timer.hxx>
+
+#include <set>
+
+
+namespace dbaui
+{
+ struct DBTreeEditedEntry
+ {
+ SvLBoxEntry* pEntry;
+ XubString aNewText;
+ };
+
+ class IEntryFilter
+ {
+ public:
+ virtual bool includeEntry( SvLBoxEntry* _pEntry ) const = 0;
+ };
+
+ //========================================================================
+ class IControlActionListener;
+ class IContextMenuProvider;
+ class DBTreeListBox :public SvTreeListBox
+ {
+ OModuleClient m_aModuleClient;
+ OScrollHelper m_aScrollHelper;
+ Timer m_aTimer; // is needed for table updates
+ Point m_aMousePos;
+ ::std::set< SvListEntry* > m_aSelectedEntries;
+ SvLBoxEntry* m_pDragedEntry;
+ IControlActionListener* m_pActionListener;
+ IContextMenuProvider*
+ m_pContextMenuProvider;
+
+ Link m_aPreExpandHandler; // handler to be called before a node is expanded
+ Link m_aSelChangeHdl; // handlet to be called (asynchronously) when the selection changes in any way
+ Link m_aCutHandler; // called when someone press CTRL+X
+ Link m_aCopyHandler; // called when someone press CTRL+C
+ Link m_aPasteHandler; // called when someone press CTRL+V
+ Link m_aDeleteHandler; // called when someone press DELETE Key
+ Link m_aEditingHandler; // called before someone will edit an entry
+ Link m_aEditedHandler; // called after someone edited an entry
+ Link m_aEnterKeyHdl;
+
+
+ sal_Bool m_bHandleEnterKey;
+
+ protected:
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xORB;
+
+ private:
+ void init();
+ DECL_LINK( OnTimeOut, void* );
+ DECL_LINK( OnResetEntry, SvLBoxEntry* );
+ DECL_LINK( ScrollUpHdl, SvTreeListBox* );
+ DECL_LINK( ScrollDownHdl, SvTreeListBox* );
+
+ public:
+ DBTreeListBox( Window* pParent
+ ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB
+ ,WinBits nWinStyle=0
+ ,sal_Bool _bHandleEnterKey = sal_False);
+ DBTreeListBox( Window* pParent
+ ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB
+ ,const ResId& rResId
+ ,sal_Bool _bHandleEnterKey = sal_False);
+ ~DBTreeListBox();
+
+ void setControlActionListener( IControlActionListener* _pListener ) { m_pActionListener = _pListener; }
+ void setContextMenuProvider( IContextMenuProvider* _pContextMenuProvider ) { m_pContextMenuProvider = _pContextMenuProvider; }
+
+ inline void setORB(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB) { m_xORB = _xORB; }
+
+
+ void SetPreExpandHandler(const Link& _rHdl) { m_aPreExpandHandler = _rHdl; }
+ void SetSelChangeHdl( const Link& _rHdl ) { m_aSelChangeHdl = _rHdl; }
+ void setCutHandler(const Link& _rHdl) { m_aCutHandler = _rHdl; }
+ void setCopyHandler(const Link& _rHdl) { m_aCopyHandler = _rHdl; }
+ void setPasteHandler(const Link& _rHdl) { m_aPasteHandler = _rHdl; }
+ void setDeleteHandler(const Link& _rHdl) { m_aDeleteHandler = _rHdl; }
+ void setEditingHandler(const Link& _rHdl) { m_aEditingHandler = _rHdl; }
+ void setEditedHandler(const Link& _rHdl) { m_aEditedHandler = _rHdl; }
+
+ // modified the given entry so that the expand handler is called whenever the entry is expanded
+ // (normally, the expand handler is called only once)
+ void EnableExpandHandler(SvLBoxEntry* _pEntry);
+
+ SvLBoxEntry* GetEntryPosByName( const String& aName, SvLBoxEntry* pStart = NULL, const IEntryFilter* _pFilter = NULL ) const;
+ virtual void RequestingChilds( SvLBoxEntry* pParent );
+ virtual void SelectHdl();
+ virtual void DeselectHdl();
+ // Window
+ virtual void KeyInput( const KeyEvent& rKEvt );
+
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void InitEntry( SvLBoxEntry* pEntry, const XubString& aStr, const Image& aCollEntryBmp, const Image& aExpEntryBmp, SvLBoxButtonKind eButtonKind);
+
+ // enable editing for tables/views and queries
+ virtual sal_Bool EditingEntry( SvLBoxEntry* pEntry, Selection& );
+ virtual sal_Bool EditedEntry( SvLBoxEntry* pEntry, const XubString& rNewText );
+
+ virtual sal_Bool DoubleClickHdl();
+
+ virtual PopupMenu* CreateContextMenu( void );
+ virtual void ExcecuteContextMenuAction( sal_uInt16 nSelectedPopupEntry );
+
+ void SetEnterKeyHdl(const Link& rNewHdl) {m_aEnterKeyHdl = rNewHdl;}
+
+ void clearCurrentSelection() { m_aSelectedEntries.clear(); }
+
+ protected:
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void RequestHelp( const HelpEvent& rHEvt );
+
+ // DragSourceHelper overridables
+ virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel );
+ // DropTargetHelper overridables
+ virtual sal_Int8 AcceptDrop( const AcceptDropEvent& _rEvt );
+ virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& _rEvt );
+
+ virtual void ModelHasRemoved( SvListEntry* pEntry );
+ virtual void ModelHasEntryInvalidated( SvListEntry* pEntry );
+
+ void implStopSelectionTimer();
+ void implStartSelectionTimer();
+
+ protected:
+ using SvTreeListBox::ExecuteDrop;
+ };
+}
+
+#endif // DBAUI_DBTREELISTBOX_HXX