xref: /trunk/main/svx/source/inc/filtnav.hxx (revision 3334a7e6)
1*3334a7e6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*3334a7e6SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*3334a7e6SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*3334a7e6SAndrew Rist  * distributed with this work for additional information
6*3334a7e6SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*3334a7e6SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*3334a7e6SAndrew Rist  * "License"); you may not use this file except in compliance
9*3334a7e6SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*3334a7e6SAndrew Rist  *
11*3334a7e6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*3334a7e6SAndrew Rist  *
13*3334a7e6SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*3334a7e6SAndrew Rist  * software distributed under the License is distributed on an
15*3334a7e6SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3334a7e6SAndrew Rist  * KIND, either express or implied.  See the License for the
17*3334a7e6SAndrew Rist  * specific language governing permissions and limitations
18*3334a7e6SAndrew Rist  * under the License.
19*3334a7e6SAndrew Rist  *
20*3334a7e6SAndrew Rist  *************************************************************/
21*3334a7e6SAndrew Rist 
22*3334a7e6SAndrew Rist 
23cdf0e10cSrcweir #ifndef _SVX_FILTNAV_HXX
24cdf0e10cSrcweir #define _SVX_FILTNAV_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <com/sun/star/form/XForm.hpp>
27cdf0e10cSrcweir #include <com/sun/star/form/runtime/XFormController.hpp>
28cdf0e10cSrcweir #include <com/sun/star/form/runtime/XFilterController.hpp>
29cdf0e10cSrcweir #include <svl/lstner.hxx>
30cdf0e10cSrcweir #include <svl/brdcst.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include <vcl/window.hxx>
33cdf0e10cSrcweir #include <sfx2/childwin.hxx>
34cdf0e10cSrcweir #include <svl/poolitem.hxx>
35cdf0e10cSrcweir #include <sfx2/bindings.hxx>
36cdf0e10cSrcweir #include <sfx2/dockwin.hxx>
37cdf0e10cSrcweir #include <sfx2/ctrlitem.hxx>
38cdf0e10cSrcweir #include <vcl/image.hxx>
39cdf0e10cSrcweir #include <svtools/svtreebx.hxx>
40cdf0e10cSrcweir 
41cdf0e10cSrcweir #include <vcl/dialog.hxx>
42cdf0e10cSrcweir #include <vcl/group.hxx>
43cdf0e10cSrcweir #include <vcl/dockwin.hxx>
44cdf0e10cSrcweir #include "svx/fmtools.hxx"
45cdf0e10cSrcweir #include "fmexch.hxx"
46cdf0e10cSrcweir #include <connectivity/sqlparse.hxx>
47cdf0e10cSrcweir #include "fmexch.hxx"
48cdf0e10cSrcweir #include "sqlparserclient.hxx"
49cdf0e10cSrcweir 
50cdf0e10cSrcweir class FmFormShell;
51cdf0e10cSrcweir 
52cdf0e10cSrcweir //........................................................................
53cdf0e10cSrcweir namespace svxform
54cdf0e10cSrcweir {
55cdf0e10cSrcweir //........................................................................
56cdf0e10cSrcweir 
57cdf0e10cSrcweir class FmFilterItem;
58cdf0e10cSrcweir class FmFilterItems;
59cdf0e10cSrcweir class FmParentData;
60cdf0e10cSrcweir class FmFilterAdapter;
61cdf0e10cSrcweir 
62cdf0e10cSrcweir //========================================================================
63cdf0e10cSrcweir // data structure for the filter model
64cdf0e10cSrcweir //========================================================================
65cdf0e10cSrcweir class FmFilterData
66cdf0e10cSrcweir {
67cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xORB;
68cdf0e10cSrcweir 	FmParentData*			m_pParent;
69cdf0e10cSrcweir 	::rtl::OUString			m_aText;
70cdf0e10cSrcweir 
71cdf0e10cSrcweir public:
72cdf0e10cSrcweir 	TYPEINFO();
FmFilterData(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & _rxFactory,FmParentData * pParent=NULL,const::rtl::OUString & rText=::rtl::OUString ())73cdf0e10cSrcweir 	FmFilterData(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,FmParentData* pParent = NULL, const ::rtl::OUString& rText = ::rtl::OUString())
74cdf0e10cSrcweir 		:m_xORB( _rxFactory )
75cdf0e10cSrcweir         ,m_pParent( pParent )
76cdf0e10cSrcweir 		,m_aText( rText )
77cdf0e10cSrcweir 	{}
~FmFilterData()78cdf0e10cSrcweir 	virtual ~FmFilterData(){}
79cdf0e10cSrcweir 
SetText(const::rtl::OUString & rText)80cdf0e10cSrcweir 	void    SetText( const ::rtl::OUString& rText ){ m_aText = rText; }
GetText() const81cdf0e10cSrcweir 	::rtl::OUString  GetText() const { return m_aText; }
GetParent() const82cdf0e10cSrcweir 	FmParentData* GetParent() const {return m_pParent;}
83cdf0e10cSrcweir 
84cdf0e10cSrcweir 	virtual Image GetImage( BmpColorMode _eMode = BMP_COLOR_NORMAL ) const;
85cdf0e10cSrcweir };
86cdf0e10cSrcweir 
87cdf0e10cSrcweir //========================================================================
88cdf0e10cSrcweir class FmParentData : public FmFilterData
89cdf0e10cSrcweir {
90cdf0e10cSrcweir protected:
91cdf0e10cSrcweir 	::std::vector< FmFilterData* >  m_aChildren;
92cdf0e10cSrcweir 
93cdf0e10cSrcweir public:
94cdf0e10cSrcweir 	TYPEINFO();
FmParentData(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & _rxFactory,FmParentData * pParent,const::rtl::OUString & rText)95cdf0e10cSrcweir 	FmParentData(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,FmParentData* pParent, const ::rtl::OUString& rText)
96cdf0e10cSrcweir 		: FmFilterData(_rxFactory,pParent, rText)
97cdf0e10cSrcweir 	{}
98cdf0e10cSrcweir 	virtual ~FmParentData();
99cdf0e10cSrcweir 
GetChildren()100cdf0e10cSrcweir 	::std::vector< FmFilterData* >& GetChildren() { return m_aChildren; }
101cdf0e10cSrcweir };
102cdf0e10cSrcweir 
103cdf0e10cSrcweir //========================================================================
104cdf0e10cSrcweir // Item representing the forms and subforms
105cdf0e10cSrcweir class FmFormItem : public FmParentData
106cdf0e10cSrcweir {
107cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController >    m_xController;
108cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFilterController >  m_xFilterController;
109cdf0e10cSrcweir 
110cdf0e10cSrcweir public:
111cdf0e10cSrcweir 	TYPEINFO();
112cdf0e10cSrcweir 
FmFormItem(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & _rxFactory,FmParentData * _pParent,const::com::sun::star::uno::Reference<::com::sun::star::form::runtime::XFormController> & _xController,const::rtl::OUString & _rText)113cdf0e10cSrcweir     FmFormItem(  const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,FmParentData* _pParent,
114cdf0e10cSrcweir                  const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > & _xController,
115cdf0e10cSrcweir 				 const ::rtl::OUString& _rText)
116cdf0e10cSrcweir         :FmParentData( _rxFactory, _pParent, _rText )
117cdf0e10cSrcweir 		,m_xController( _xController )
118cdf0e10cSrcweir         ,m_xFilterController( _xController, ::com::sun::star::uno::UNO_QUERY_THROW )
119cdf0e10cSrcweir     {
120cdf0e10cSrcweir     }
121cdf0e10cSrcweir 
122cdf0e10cSrcweir 	inline const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController >&
GetController()123cdf0e10cSrcweir         GetController() { return m_xController; }
124cdf0e10cSrcweir 
125cdf0e10cSrcweir 	inline const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFilterController >&
GetFilterController()126cdf0e10cSrcweir         GetFilterController() { return m_xFilterController; }
127cdf0e10cSrcweir 
128cdf0e10cSrcweir 	virtual Image GetImage( BmpColorMode _eMode = BMP_COLOR_NORMAL ) const;
129cdf0e10cSrcweir };
130cdf0e10cSrcweir 
131cdf0e10cSrcweir //========================================================================
132cdf0e10cSrcweir class FmFilterItems : public FmParentData
133cdf0e10cSrcweir {
134cdf0e10cSrcweir public:
135cdf0e10cSrcweir 	TYPEINFO();
FmFilterItems(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & _rxFactory)136cdf0e10cSrcweir 	FmFilterItems(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory):FmParentData(_rxFactory,NULL, ::rtl::OUString()){}
FmFilterItems(const::com::sun::star::uno::Reference<::com::sun::star::lang::XMultiServiceFactory> & _rxFactory,FmFormItem * pParent,const::rtl::OUString & rText)137cdf0e10cSrcweir 	FmFilterItems(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,FmFormItem* pParent, const ::rtl::OUString& rText ):FmParentData(_rxFactory,pParent, rText){}
138cdf0e10cSrcweir 
139cdf0e10cSrcweir     FmFilterItem* Find( const ::sal_Int32 _nFilterComponentIndex ) const;
140cdf0e10cSrcweir 	virtual Image GetImage( BmpColorMode _eMode = BMP_COLOR_NORMAL ) const;
141cdf0e10cSrcweir };
142cdf0e10cSrcweir 
143cdf0e10cSrcweir //========================================================================
144cdf0e10cSrcweir class FmFilterItem : public FmFilterData
145cdf0e10cSrcweir {
146cdf0e10cSrcweir 	::rtl::OUString     m_aFieldName;
147cdf0e10cSrcweir     const sal_Int32     m_nComponentIndex;
148cdf0e10cSrcweir 
149cdf0e10cSrcweir public:
150cdf0e10cSrcweir 	TYPEINFO();
151cdf0e10cSrcweir 	FmFilterItem(
152cdf0e10cSrcweir         const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,
153cdf0e10cSrcweir 		FmFilterItems* pParent,
154cdf0e10cSrcweir 		const ::rtl::OUString& aFieldName,
155cdf0e10cSrcweir 		const ::rtl::OUString& aCondition,
156cdf0e10cSrcweir         const sal_Int32 _nComponentIndex
157cdf0e10cSrcweir     );
158cdf0e10cSrcweir 
GetFieldName() const159cdf0e10cSrcweir 	const ::rtl::OUString& GetFieldName() const {return m_aFieldName;}
GetComponentIndex() const160cdf0e10cSrcweir     sal_Int32 GetComponentIndex() const { return m_nComponentIndex; }
161cdf0e10cSrcweir 
162cdf0e10cSrcweir 	virtual Image GetImage( BmpColorMode _eMode = BMP_COLOR_NORMAL ) const;
163cdf0e10cSrcweir };
164cdf0e10cSrcweir 
165cdf0e10cSrcweir //========================================================================
166cdf0e10cSrcweir class FmFilterModel : public FmParentData
167cdf0e10cSrcweir 					 ,public SfxBroadcaster
168cdf0e10cSrcweir 					 ,public ::svxform::OSQLParserClient
169cdf0e10cSrcweir {
170cdf0e10cSrcweir 	friend class FmFilterAdapter;
171cdf0e10cSrcweir 
172cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >           m_xControllers;
173cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController >    m_xController;
174cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >        m_xORB;
175cdf0e10cSrcweir 	FmFilterAdapter*		m_pAdapter;
176cdf0e10cSrcweir 	FmFilterItems*			m_pCurrentItems;
177cdf0e10cSrcweir 
178cdf0e10cSrcweir public:
179cdf0e10cSrcweir 	TYPEINFO();
180cdf0e10cSrcweir 	FmFilterModel(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory);
181cdf0e10cSrcweir 	virtual ~FmFilterModel();
182cdf0e10cSrcweir 
183cdf0e10cSrcweir 	void Update(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & xControllers, const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > & xCurrent);
184cdf0e10cSrcweir 	void Clear();
185cdf0e10cSrcweir 	sal_Bool ValidateText(FmFilterItem* pItem, UniString& rText, UniString& rErrorMsg) const;
186cdf0e10cSrcweir 	void Append(FmFilterItems* pItems, FmFilterItem* pFilterItem);
187cdf0e10cSrcweir 	void SetTextForItem(FmFilterItem* pItem, const ::rtl::OUString& rText);
188cdf0e10cSrcweir 
GetCurrentForm() const189cdf0e10cSrcweir 	FmFormItem* GetCurrentForm() const {return m_pCurrentItems ? (FmFormItem*)m_pCurrentItems->GetParent() : NULL;}
GetCurrentItems() const190cdf0e10cSrcweir 	FmFilterItems* GetCurrentItems() const {return m_pCurrentItems;}
191cdf0e10cSrcweir 	void SetCurrentItems(FmFilterItems* pCurrent);
getORB() const192cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > getORB() const { return m_xORB; }
193cdf0e10cSrcweir 
GetControllers() const194cdf0e10cSrcweir 	const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & GetControllers() const {return m_xControllers;}
GetCurrentController() const195cdf0e10cSrcweir 	const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > & GetCurrentController() const {return m_xController;}
196cdf0e10cSrcweir 	void SetCurrentController(const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > & xController);
197cdf0e10cSrcweir 
198cdf0e10cSrcweir 	void Remove(FmFilterData* pFilterItem);
199cdf0e10cSrcweir 	void AppendFilterItems( FmFormItem& _rItem );
200cdf0e10cSrcweir 	void EnsureEmptyFilterRows( FmParentData& _rItem );
201cdf0e10cSrcweir 
202cdf0e10cSrcweir protected:
203cdf0e10cSrcweir 	void Insert(const ::std::vector<FmFilterData*>::iterator& rPos, FmFilterData* pFilterItem);
204cdf0e10cSrcweir 	void Remove( const ::std::vector<FmFilterData*>::iterator& rPos );
205cdf0e10cSrcweir 	FmFormItem* Find(const ::std::vector<FmFilterData*>& rItems, const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > & xController) const;
206cdf0e10cSrcweir 	FmFormItem* Find(const ::std::vector<FmFilterData*>& rItems, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm) const;
207cdf0e10cSrcweir 	void Update(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & xControllers, FmParentData* pParent);
208cdf0e10cSrcweir };
209cdf0e10cSrcweir 
210cdf0e10cSrcweir //========================================================================
211cdf0e10cSrcweir //========================================================================
212cdf0e10cSrcweir class OFilterItemExchange : public OLocalExchange
213cdf0e10cSrcweir {
214cdf0e10cSrcweir 	::std::vector<FmFilterItem*>	m_aDraggedEntries;
215cdf0e10cSrcweir 	FmFormItem*				m_pFormItem;		// ensure that we drop on the same form
216cdf0e10cSrcweir 
217cdf0e10cSrcweir public:
218cdf0e10cSrcweir 	OFilterItemExchange();
219cdf0e10cSrcweir 
220cdf0e10cSrcweir 	static sal_uInt32		getFormatId( );
221cdf0e10cSrcweir 	inline static sal_Bool	hasFormat( const DataFlavorExVector& _rFormats );
222cdf0e10cSrcweir 
getDraggedEntries() const223cdf0e10cSrcweir 	const ::std::vector<FmFilterItem*>& getDraggedEntries() const { return m_aDraggedEntries; }
setDraggedEntries(const::std::vector<FmFilterItem * > & _rList)224cdf0e10cSrcweir 	void setDraggedEntries(const ::std::vector<FmFilterItem*>& _rList) { m_aDraggedEntries = _rList; }
getFormItem() const225cdf0e10cSrcweir 	FmFormItem* getFormItem() const { return m_pFormItem; }
226cdf0e10cSrcweir 
setFormItem(FmFormItem * _pItem)227cdf0e10cSrcweir 	void setFormItem( FmFormItem* _pItem ) { m_pFormItem = _pItem; }
addSelectedItem(FmFilterItem * _pItem)228cdf0e10cSrcweir 	void addSelectedItem( FmFilterItem* _pItem) { m_aDraggedEntries.push_back(_pItem); }
229cdf0e10cSrcweir 
230cdf0e10cSrcweir protected:
231cdf0e10cSrcweir 	virtual void AddSupportedFormats();
232cdf0e10cSrcweir };
233cdf0e10cSrcweir 
hasFormat(const DataFlavorExVector & _rFormats)234cdf0e10cSrcweir inline sal_Bool OFilterItemExchange::hasFormat( const DataFlavorExVector& _rFormats )
235cdf0e10cSrcweir {
236cdf0e10cSrcweir 	return OLocalExchange::hasFormat( _rFormats, getFormatId() );
237cdf0e10cSrcweir }
238cdf0e10cSrcweir 
239cdf0e10cSrcweir //====================================================================
240cdf0e10cSrcweir //= OFilterExchangeHelper
241cdf0e10cSrcweir //====================================================================
242cdf0e10cSrcweir class OFilterExchangeHelper : public OLocalExchangeHelper
243cdf0e10cSrcweir {
244cdf0e10cSrcweir public:
OFilterExchangeHelper(Window * _pDragSource)245cdf0e10cSrcweir 	OFilterExchangeHelper(Window* _pDragSource) : OLocalExchangeHelper(_pDragSource) { }
246cdf0e10cSrcweir 
operator ->() const247cdf0e10cSrcweir 	OFilterItemExchange* operator->() const { return static_cast<OFilterItemExchange*>(m_pTransferable); }
248cdf0e10cSrcweir 
249cdf0e10cSrcweir protected:
250cdf0e10cSrcweir 	virtual OLocalExchange* createExchange() const;
251cdf0e10cSrcweir };
252cdf0e10cSrcweir 
253cdf0e10cSrcweir //========================================================================
254cdf0e10cSrcweir class FmFilterNavigator : public SvTreeListBox, public SfxListener
255cdf0e10cSrcweir {
256cdf0e10cSrcweir 	enum DROP_ACTION{ DA_SCROLLUP, DA_SCROLLDOWN, DA_EXPANDNODE };
257cdf0e10cSrcweir 
258cdf0e10cSrcweir 	FmFilterModel*			m_pModel;
259cdf0e10cSrcweir 	SvLBoxEntry*			m_pEditingCurrently;
260cdf0e10cSrcweir 	OFilterExchangeHelper	m_aControlExchange;
261cdf0e10cSrcweir 
262cdf0e10cSrcweir 
263cdf0e10cSrcweir 	AutoTimer           m_aDropActionTimer;
264cdf0e10cSrcweir 	unsigned short      m_aTimerCounter;
265cdf0e10cSrcweir 	Point               m_aTimerTriggered;      // die Position, an der der DropTimer angeschaltet wurde
266cdf0e10cSrcweir 	DROP_ACTION         m_aDropActionType;
267cdf0e10cSrcweir 
268cdf0e10cSrcweir public:
269cdf0e10cSrcweir 	FmFilterNavigator( Window* pParent );
270cdf0e10cSrcweir 	virtual ~FmFilterNavigator();
271cdf0e10cSrcweir 
272cdf0e10cSrcweir 	void UpdateContent(
273cdf0e10cSrcweir             const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & xControllers,
274cdf0e10cSrcweir             const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > & xCurrent
275cdf0e10cSrcweir         );
GetFilterModel() const276cdf0e10cSrcweir 	const FmFilterModel* GetFilterModel() const {return m_pModel;}
277cdf0e10cSrcweir 
278cdf0e10cSrcweir protected:
279cdf0e10cSrcweir     using Control::Notify;
280cdf0e10cSrcweir 
281cdf0e10cSrcweir 	virtual void KeyInput( const KeyEvent& rKEvt );
282cdf0e10cSrcweir 	virtual void Command( const CommandEvent& rEvt );
283cdf0e10cSrcweir 	virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
284cdf0e10cSrcweir 	virtual void InitEntry(SvLBoxEntry* pEntry, const XubString& rStr, const Image& rImg1, const Image& rImg2, SvLBoxButtonKind eButtonKind);
285cdf0e10cSrcweir 	virtual sal_Bool Select( SvLBoxEntry* pEntry, sal_Bool bSelect=sal_True );
286cdf0e10cSrcweir 	virtual sal_Bool EditingEntry( SvLBoxEntry* pEntry, Selection& rSelection );
287cdf0e10cSrcweir 	virtual sal_Bool EditedEntry( SvLBoxEntry* pEntry, const XubString& rNewText );
288cdf0e10cSrcweir 
289cdf0e10cSrcweir 	virtual sal_Int8	AcceptDrop( const AcceptDropEvent& rEvt );
290cdf0e10cSrcweir 	virtual sal_Int8	ExecuteDrop( const ExecuteDropEvent& rEvt );
291cdf0e10cSrcweir 	virtual void		StartDrag( sal_Int8 nAction, const Point& rPosPixel );
292cdf0e10cSrcweir 
293cdf0e10cSrcweir 	void DeleteSelection();
294cdf0e10cSrcweir 	void Clear();
295cdf0e10cSrcweir 	SvLBoxEntry* FindEntry(const FmFilterData* pItem) const;
296cdf0e10cSrcweir 	void Insert(FmFilterData* pItem, sal_Int32 nPos);
297cdf0e10cSrcweir 	void Remove(FmFilterData* pItem);
298cdf0e10cSrcweir 
299cdf0e10cSrcweir 	DECL_LINK(OnRemove, SvLBoxEntry*);
300cdf0e10cSrcweir 	DECL_LINK(OnEdited, SvLBoxEntry*);
301cdf0e10cSrcweir 	DECL_LINK(OnDropActionTimer, void*);
302cdf0e10cSrcweir 
303cdf0e10cSrcweir private:
304cdf0e10cSrcweir 	/** returns the first form item and the selected FilterItems in the vector
305cdf0e10cSrcweir 		@param	_rItemList
306cdf0e10cSrcweir 			Is filled inside. <OUT/>
307cdf0e10cSrcweir 		@return
308cdf0e10cSrcweir 			The first form item.
309cdf0e10cSrcweir 	*/
310cdf0e10cSrcweir 	FmFormItem* getSelectedFilterItems(::std::vector<FmFilterItem*>& _rItemList);
311cdf0e10cSrcweir 	/* inserts the filter items into the tree model and creates new FilterItems if needed.
312cdf0e10cSrcweir 		@param	_rFilterList
313cdf0e10cSrcweir 			The items which should be inserted.
314cdf0e10cSrcweir 		@param	_pTargetItems
315cdf0e10cSrcweir 			The target where to insert the items.
316cdf0e10cSrcweir 		@param	_bCopy
317cdf0e10cSrcweir 			If <TRUE/> the items will not be removed from the model, otherwise they will.
318cdf0e10cSrcweir 	*/
319cdf0e10cSrcweir 	void insertFilterItem(const ::std::vector<FmFilterItem*>& _rFilterList,FmFilterItems* _pTargetItems,sal_Bool _bCopy = sal_False);
320cdf0e10cSrcweir 	SvLBoxEntry* getPrevEntry(SvLBoxEntry* _pStartWith = NULL);
321cdf0e10cSrcweir 	SvLBoxEntry* getNextEntry(SvLBoxEntry* _pStartWith = NULL);
322cdf0e10cSrcweir 
323cdf0e10cSrcweir     using SvTreeListBox::Select;
324cdf0e10cSrcweir     using SvTreeListBox::ExecuteDrop;
325cdf0e10cSrcweir     using SvTreeListBox::Insert;
326cdf0e10cSrcweir };
327cdf0e10cSrcweir 
328cdf0e10cSrcweir //========================================================================
329cdf0e10cSrcweir class FmFilterNavigatorWin : public SfxDockingWindow, public SfxControllerItem
330cdf0e10cSrcweir {
331cdf0e10cSrcweir private:
332cdf0e10cSrcweir 	FmFilterNavigator* m_pNavigator;
333cdf0e10cSrcweir 
334cdf0e10cSrcweir protected:
335cdf0e10cSrcweir 	virtual void Resize();
336cdf0e10cSrcweir 	virtual sal_Bool Close();
337cdf0e10cSrcweir 	virtual Size CalcDockingSize( SfxChildAlignment );
338cdf0e10cSrcweir 	virtual SfxChildAlignment CheckAlignment( SfxChildAlignment, SfxChildAlignment );
339cdf0e10cSrcweir 
340cdf0e10cSrcweir public:
341cdf0e10cSrcweir 	FmFilterNavigatorWin( SfxBindings *pBindings, SfxChildWindow *pMgr,
342cdf0e10cSrcweir 				   Window* pParent );
343cdf0e10cSrcweir 	virtual ~FmFilterNavigatorWin();
344cdf0e10cSrcweir 
345cdf0e10cSrcweir 	void UpdateContent( FmFormShell* pFormShell );
346cdf0e10cSrcweir 	void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
347cdf0e10cSrcweir 	void FillInfo( SfxChildWinInfo& rInfo ) const;
348cdf0e10cSrcweir 
349cdf0e10cSrcweir     using SfxDockingWindow::StateChanged;
350cdf0e10cSrcweir 
351cdf0e10cSrcweir 	virtual void GetFocus();
352cdf0e10cSrcweir };
353cdf0e10cSrcweir 
354cdf0e10cSrcweir //========================================================================
355cdf0e10cSrcweir class FmFilterNavigatorWinMgr : public SfxChildWindow
356cdf0e10cSrcweir {
357cdf0e10cSrcweir public:
358cdf0e10cSrcweir 	FmFilterNavigatorWinMgr( Window *pParent, sal_uInt16 nId, SfxBindings *pBindings,
359cdf0e10cSrcweir 					  SfxChildWinInfo *pInfo );
360cdf0e10cSrcweir 	SFX_DECL_CHILDWINDOW( FmFilterNavigatorWinMgr );
361cdf0e10cSrcweir };
362cdf0e10cSrcweir 
363cdf0e10cSrcweir //........................................................................
364cdf0e10cSrcweir }	// namespace svxform
365cdf0e10cSrcweir //........................................................................
366cdf0e10cSrcweir 
367cdf0e10cSrcweir #endif // _SVX_FILTNAV_HXX
368cdf0e10cSrcweir 
369