1*2e2212a7SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2e2212a7SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2e2212a7SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2e2212a7SAndrew Rist  * distributed with this work for additional information
6*2e2212a7SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2e2212a7SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2e2212a7SAndrew Rist  * "License"); you may not use this file except in compliance
9*2e2212a7SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2e2212a7SAndrew Rist  *
11*2e2212a7SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2e2212a7SAndrew Rist  *
13*2e2212a7SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2e2212a7SAndrew Rist  * software distributed under the License is distributed on an
15*2e2212a7SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2e2212a7SAndrew Rist  * KIND, either express or implied.  See the License for the
17*2e2212a7SAndrew Rist  * specific language governing permissions and limitations
18*2e2212a7SAndrew Rist  * under the License.
19*2e2212a7SAndrew Rist  *
20*2e2212a7SAndrew Rist  *************************************************************/
21*2e2212a7SAndrew Rist 
22*2e2212a7SAndrew Rist 
23cdf0e10cSrcweir #ifndef DBAUI_QUERYDESIGN_OSELECTIONBROWSEBOX_HXX
24cdf0e10cSrcweir #define DBAUI_QUERYDESIGN_OSELECTIONBROWSEBOX_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #ifndef _SVTOOLS_EDITBROWSEBOX_HXX_
27cdf0e10cSrcweir #include <svtools/editbrowsebox.hxx>
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir //#ifndef DBAUI_QUERYCONTROLLER_HXX
30cdf0e10cSrcweir //#include "querycontroller.hxx"
31cdf0e10cSrcweir //#endif
32cdf0e10cSrcweir #ifndef DBAUI_TABLEFIELDDESC_HXX
33cdf0e10cSrcweir #include "TableFieldDescription.hxx"
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir #ifndef DBAUI_JOINEXCHANGE_HXX
36cdf0e10cSrcweir #include "JoinExchange.hxx"
37cdf0e10cSrcweir #endif
38cdf0e10cSrcweir #ifndef DBAUI_ENUMTYPES_HXX
39cdf0e10cSrcweir #include "QEnumTypes.hxx"
40cdf0e10cSrcweir #endif
41cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTER_HPP_
42cdf0e10cSrcweir #include <com/sun/star/util/XNumberFormatter.hpp>
43cdf0e10cSrcweir #endif
44cdf0e10cSrcweir #ifndef _STRING_HXX
45cdf0e10cSrcweir #include <tools/string.hxx>
46cdf0e10cSrcweir #endif
47cdf0e10cSrcweir #ifndef _TRANSFER_HXX
48cdf0e10cSrcweir #include <svtools/transfer.hxx>
49cdf0e10cSrcweir #endif
50cdf0e10cSrcweir 
51cdf0e10cSrcweir namespace connectivity
52cdf0e10cSrcweir {
53cdf0e10cSrcweir 	class OSQLParseNode;
54cdf0e10cSrcweir }
55cdf0e10cSrcweir 
56cdf0e10cSrcweir namespace dbaui
57cdf0e10cSrcweir {
58cdf0e10cSrcweir 	//==================================================================
59cdf0e10cSrcweir #define SIZ_NONE		0
60cdf0e10cSrcweir #define SIZ_TOP			1
61cdf0e10cSrcweir #define SIZ_BOTTOM		2
62cdf0e10cSrcweir #define SIZ_LEFT		4
63cdf0e10cSrcweir #define SIZ_RIGHT		8
64cdf0e10cSrcweir 
65cdf0e10cSrcweir #define BROW_FIELD_ROW			0
66cdf0e10cSrcweir #define BROW_COLUMNALIAS_ROW	1
67cdf0e10cSrcweir #define BROW_TABLE_ROW			2
68cdf0e10cSrcweir #define BROW_ORDER_ROW			3
69cdf0e10cSrcweir #define BROW_VIS_ROW			4
70cdf0e10cSrcweir #define BROW_FUNCTION_ROW		5
71cdf0e10cSrcweir #define BROW_CRIT1_ROW			6
72cdf0e10cSrcweir #define BROW_CRIT2_ROW			7
73cdf0e10cSrcweir #define BROW_CRIT3_ROW			8
74cdf0e10cSrcweir #define BROW_CRIT4_ROW			9
75cdf0e10cSrcweir #define BROW_CRIT5_ROW			10
76cdf0e10cSrcweir #define BROW_CRIT6_ROW			11
77cdf0e10cSrcweir #define BROW_ROW_CNT			12
78cdf0e10cSrcweir 
79cdf0e10cSrcweir 	//==================================================================
80cdf0e10cSrcweir 	class OQueryDesignView;
81cdf0e10cSrcweir 	class OSelectionBrowseBox : public ::svt::EditBrowseBox
82cdf0e10cSrcweir 	{
83cdf0e10cSrcweir 		friend class OQueryDesignView;
84cdf0e10cSrcweir 		::std::vector<bool> 				m_bVisibleRow;	// an Pos steht die RowId
85cdf0e10cSrcweir 		Timer								m_timerInvalidate;
86cdf0e10cSrcweir 
87cdf0e10cSrcweir 		long								m_nSeekRow;
88cdf0e10cSrcweir 		BrowserMode							m_nMode;						// Merken des BrowseModes
89cdf0e10cSrcweir 		Edit*								m_pTextCell;
90cdf0e10cSrcweir 		::svt::CheckBoxControl*				m_pVisibleCell;
91cdf0e10cSrcweir 		::svt::ComboBoxControl*				m_pFieldCell;
92cdf0e10cSrcweir 		::svt::ListBoxControl*				m_pFunctionCell;
93cdf0e10cSrcweir 		::svt::ListBoxControl*				m_pTableCell;
94cdf0e10cSrcweir 		::svt::ListBoxControl*				m_pOrderCell;
95cdf0e10cSrcweir 
96cdf0e10cSrcweir 		OTableFieldDescRef					m_pEmptyEntry;		// default entry in the list may reference more than once
97cdf0e10cSrcweir 
98cdf0e10cSrcweir 		sal_Int32							m_nMaxColumns;				// maximale Anzahl der Spalten in einem Select-Statement
99cdf0e10cSrcweir 
100cdf0e10cSrcweir 		String								m_aFunctionStrings;
101cdf0e10cSrcweir 		sal_uInt16							m_nVisibleCount;				// Anzahl der max sichtbaren Zeilen
102cdf0e10cSrcweir 		sal_Bool							m_bOrderByUnRelated;
103cdf0e10cSrcweir 		sal_Bool							m_bGroupByUnRelated;
104cdf0e10cSrcweir 		sal_Bool							m_bStopTimer;
105cdf0e10cSrcweir 		sal_Bool							m_bWasEditing;
106cdf0e10cSrcweir 		sal_Bool							m_bDisableErrorBox;
107cdf0e10cSrcweir 		sal_Bool							m_bInUndoMode;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 		DECL_LINK(OnInvalidateTimer, void*);
110cdf0e10cSrcweir 	public:							OSelectionBrowseBox( Window* pParent );
111cdf0e10cSrcweir 									~OSelectionBrowseBox();
112cdf0e10cSrcweir 
113cdf0e10cSrcweir 		void						initialize();
114cdf0e10cSrcweir 		OTableFieldDescRef			InsertField( const OJoinExchangeData& jxdSource, sal_uInt16 _nColumnPostion = BROWSER_INVALIDID, sal_Bool bVis=sal_True, sal_Bool bActivate=sal_True );
115cdf0e10cSrcweir 		OTableFieldDescRef			InsertField( const OTableFieldDescRef& rInfo, sal_uInt16 _nColumnPostion = BROWSER_INVALIDID, sal_Bool bVis=sal_True, sal_Bool bActivate=sal_True );
116cdf0e10cSrcweir 		void						InsertColumn( OTableFieldDescRef pEntry, sal_uInt16& _nColumnPostion );
117cdf0e10cSrcweir 		void						RemoveColumn( sal_uInt16 _nColumnId );
118cdf0e10cSrcweir 		void						DeleteFields( const String& rAliasName );
119cdf0e10cSrcweir 
120cdf0e10cSrcweir         bool                        HasFieldByAliasName(const ::rtl::OUString& rFieldName, OTableFieldDescRef& rInfo) const;
121cdf0e10cSrcweir 		// AddGroupBy:: F"ugt ein Feld mit Funktion == Grupierung. Falls das Feld schon vorhanden ist und ein Aggregate Funktion
122cdf0e10cSrcweir 		// benutzt, wird das Flag nicht gesetzt
123cdf0e10cSrcweir 		void						AddGroupBy( const OTableFieldDescRef& rInfo,sal_uInt32 _nCurrentPos);
124cdf0e10cSrcweir 		void						AddCondition( const OTableFieldDescRef& rInfo,
125cdf0e10cSrcweir 												  const String& rValue,
126cdf0e10cSrcweir 												  const sal_uInt16 nLevel,
127cdf0e10cSrcweir                                                   bool _bAddOrOnOneLine  );
128cdf0e10cSrcweir 		void						DuplicateConditionLevel( const sal_uInt16 nLevel);
129cdf0e10cSrcweir 		void						AddOrder(const OTableFieldDescRef& rInfo, const EOrderDir eDir, sal_uInt32 _nCurrentPos);
130cdf0e10cSrcweir 		void						ClearAll();
131cdf0e10cSrcweir 		OTableFieldDescRef			AppendNewCol( sal_uInt16 nCnt=1 );
132cdf0e10cSrcweir 		sal_Bool					Save();
133cdf0e10cSrcweir 		OQueryDesignView*			getDesignView();
134cdf0e10cSrcweir 		OQueryDesignView*			getDesignView() const;
135cdf0e10cSrcweir 		sal_uInt16					FieldsCount();
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 		void						SetColWidth(sal_uInt16 nColId, long lNewWidth);
138cdf0e10cSrcweir 									// beachtet im Gegensatz zum SetColumnWidth der Basisklasse auch eine eventuell aktive Zelle in dieser Spalte
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 		String						GetCellContents(sal_Int32 nCellIndex, sal_uInt16 nColId);
141cdf0e10cSrcweir 		void						SetCellContents(sal_Int32 nCellIndex, sal_uInt16 nColId, const String& strNewText);
142cdf0e10cSrcweir 										// Zelleninhalt (als String formatiert) setzen/liefern
143cdf0e10cSrcweir 		sal_Int32					GetNoneVisibleRows() const;
144cdf0e10cSrcweir 		void						SetNoneVisbleRow(long nRows);
145cdf0e10cSrcweir 		sal_Bool					IsRowVisible(sal_uInt16 _nWhich) const;
146cdf0e10cSrcweir 		void						SetRowVisible(sal_uInt16 _nWhich, sal_Bool _bVis);
147cdf0e10cSrcweir 
148cdf0e10cSrcweir 		void						SetReadOnly(sal_Bool bRO);
149cdf0e10cSrcweir 		// calculate an optimal size. Basically, this takes into account the number of visible rows.
150cdf0e10cSrcweir 		Size						CalcOptimalSize( const Size& _rAvailable );
151cdf0e10cSrcweir 
152cdf0e10cSrcweir 		// can the current content be cut
153cdf0e10cSrcweir 		sal_Bool					isPasteAllowed();
154cdf0e10cSrcweir 		sal_Bool					isCutAllowed();
155cdf0e10cSrcweir 		sal_Bool					isCopyAllowed();
156cdf0e10cSrcweir 		void						cut();
157cdf0e10cSrcweir 		void						paste();
158cdf0e10cSrcweir 		void						copy();
159cdf0e10cSrcweir 
160cdf0e10cSrcweir 		virtual void				GetFocus();
161cdf0e10cSrcweir 		virtual void				DeactivateCell(sal_Bool bUpdate = sal_True);
ColumnMoved(sal_uInt16 nColId)162cdf0e10cSrcweir 		virtual void				ColumnMoved( sal_uInt16 nColId ) { ColumnMoved(nColId,sal_True); }
163cdf0e10cSrcweir 		void						ColumnMoved( sal_uInt16 nColId,sal_Bool _bCreateUndo);
164cdf0e10cSrcweir 
165cdf0e10cSrcweir 		void						Fill();
166cdf0e10cSrcweir 		void						PreFill();
167cdf0e10cSrcweir 
168cdf0e10cSrcweir 		/** Disables the generation of undo actions
169cdf0e10cSrcweir 		*/
EnterUndoMode()170cdf0e10cSrcweir 		inline void					EnterUndoMode() { m_bInUndoMode = sal_True; }
171cdf0e10cSrcweir 		/** Enables the generation of undo actions
172cdf0e10cSrcweir 		*/
LeaveUndoMode()173cdf0e10cSrcweir 		inline void					LeaveUndoMode() { m_bInUndoMode = sal_False; }
174cdf0e10cSrcweir 
175cdf0e10cSrcweir 		/** GetCellText returns the text at the given position
176cdf0e10cSrcweir 			@param	_nRow
177cdf0e10cSrcweir 				the number of the row
178cdf0e10cSrcweir 			@param	_nColId
179cdf0e10cSrcweir 				the ID of the column
180cdf0e10cSrcweir 			@return
181cdf0e10cSrcweir 				the text out of the cell
182cdf0e10cSrcweir 		*/
183cdf0e10cSrcweir 		virtual String				GetCellText(long _nRow, sal_uInt16 _nColId) const;
184cdf0e10cSrcweir 
185cdf0e10cSrcweir 		/** returns the description of the row.
186cdf0e10cSrcweir 			@param	_nRow
187cdf0e10cSrcweir 				The row number.
188cdf0e10cSrcweir 			@return
189cdf0e10cSrcweir 				The header text of the specified row.
190cdf0e10cSrcweir 		*/
191cdf0e10cSrcweir 		virtual ::rtl::OUString		GetRowDescription( sal_Int32 _nRow ) const;
192cdf0e10cSrcweir 
193cdf0e10cSrcweir 		/** return the name of the specified object.
194cdf0e10cSrcweir 			@param	eObjType
195cdf0e10cSrcweir 				The type to ask for
196cdf0e10cSrcweir 			@param	_nPosition
197cdf0e10cSrcweir 				The position of a tablecell (index position), header bar  colum/row cell
198cdf0e10cSrcweir 			@return
199cdf0e10cSrcweir 				The name of the specified object.
200cdf0e10cSrcweir 		*/
201cdf0e10cSrcweir 		virtual ::rtl::OUString		GetAccessibleObjectName( ::svt::AccessibleBrowseBoxObjType eObjType,sal_Int32 _nPosition = -1) const;
202cdf0e10cSrcweir 
203cdf0e10cSrcweir 		// IAccessibleTableProvider
204cdf0e10cSrcweir 		/** Creates the accessible object of a data table cell.
205cdf0e10cSrcweir         @param nRow  The row index of the cell.
206cdf0e10cSrcweir         @param nColumnId  The column ID of the cell.
207cdf0e10cSrcweir         @return  The XAccessible interface of the specified cell. */
208cdf0e10cSrcweir 		virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessibleCell( sal_Int32 nRow, sal_uInt16 nColumnId );
209cdf0e10cSrcweir 
210cdf0e10cSrcweir 
211cdf0e10cSrcweir 	protected:
212cdf0e10cSrcweir 		virtual sal_Bool			SeekRow( long nRow );
213cdf0e10cSrcweir 
214cdf0e10cSrcweir 		virtual void				PaintStatusCell(OutputDevice& rDev, const Rectangle& rRect) const;
215cdf0e10cSrcweir 		virtual void				PaintCell(OutputDevice& rDev, const Rectangle& rRect,
216cdf0e10cSrcweir 											  sal_uInt16 nColumnId ) const;
217cdf0e10cSrcweir 
218cdf0e10cSrcweir 		virtual sal_Int8			AcceptDrop( const BrowserAcceptDropEvent& rEvt );
219cdf0e10cSrcweir 		virtual sal_Int8			ExecuteDrop( const BrowserExecuteDropEvent& rEvt );
220cdf0e10cSrcweir 		virtual void				MouseButtonDown( const BrowserMouseEvent& rEvt );
221cdf0e10cSrcweir 		virtual void				MouseButtonUp( const BrowserMouseEvent& rEvt );
222cdf0e10cSrcweir 		virtual void				KeyInput( const KeyEvent& rEvt );
223cdf0e10cSrcweir 		virtual void				Command(const CommandEvent& rEvt);
224cdf0e10cSrcweir 		virtual void				ArrangeControls(sal_uInt16& nX, sal_uInt16 nY);
225cdf0e10cSrcweir 
226cdf0e10cSrcweir 		virtual ::svt::CellController*	GetController(long nRow, sal_uInt16 nCol);
227cdf0e10cSrcweir 		virtual void				InitController(::svt::CellControllerRef& rController, long nRow, sal_uInt16 nCol);
228cdf0e10cSrcweir 		virtual void				CellModified();
229cdf0e10cSrcweir 		virtual sal_Bool			SaveModified();
230cdf0e10cSrcweir 		virtual void				Init();
231cdf0e10cSrcweir 		virtual sal_uInt32			GetTotalCellWidth(long nRow, sal_uInt16 nColId) const;
232cdf0e10cSrcweir 		virtual void				ColumnResized( sal_uInt16 nColId );
233cdf0e10cSrcweir 
234cdf0e10cSrcweir 		virtual sal_uInt32			GetTotalCellWidth(long nRow, sal_uInt16 nColId);
235cdf0e10cSrcweir 
236cdf0e10cSrcweir 		virtual sal_uInt16			GetDefaultColumnWidth(const String& rName) const;
237cdf0e10cSrcweir 		// if you want to have an own header ...
238cdf0e10cSrcweir 		virtual BrowserHeader*		imp_CreateHeaderBar(BrowseBox* pParent);
239cdf0e10cSrcweir 
240cdf0e10cSrcweir 		void						stopTimer();
241cdf0e10cSrcweir 		void						startTimer();
242cdf0e10cSrcweir 
243cdf0e10cSrcweir 	private:
244cdf0e10cSrcweir 		OTableFieldDescRef			FindFirstFreeCol(sal_uInt16& _rColumnPosition);
245cdf0e10cSrcweir 			// rCol enthaelt die Nummer (in pOTableFieldDescList) der ersten Spalte, die von sich sagt, dass sie leer ist
246cdf0e10cSrcweir 			// wenn es keine solche gibt, ist rCol undefiniert und der Rueckgabewert NULL
247cdf0e10cSrcweir 		void						CheckFreeColumns(sal_uInt16& _rColumnPosition);
248cdf0e10cSrcweir 			// testet, ob es noch freie Spalten gibt, wenn nicht, wird ein neuer Packen angefuegt
249cdf0e10cSrcweir 			// rCol enthaelt die Nummer der ersten freien Spalte (in pOTableFieldDescList)
250cdf0e10cSrcweir 
251cdf0e10cSrcweir 		void			RemoveField( sal_uInt16 nId );
252cdf0e10cSrcweir 		Rectangle		GetInvalidRect( sal_uInt16 nColId );
253cdf0e10cSrcweir 		long			GetRealRow(long nRow) const;
254cdf0e10cSrcweir 		long			GetBrowseRow(long nRowId) const;
255cdf0e10cSrcweir 		sal_Bool		GetFunctionName(sal_uInt32 _nFunctionTokenId,String& rFkt);
256cdf0e10cSrcweir 		void			appendUndoAction(const String& _rOldValue,const String& _rNewValue,sal_Int32 _nRow,sal_Bool& _bListAction);
257cdf0e10cSrcweir 		void			appendUndoAction(const String& _rOldValue,const String& _rNewValue,sal_Int32 _nRow);
258cdf0e10cSrcweir 		OTableFields&	getFields() const;
259cdf0e10cSrcweir 		void			enableControl(const OTableFieldDescRef& _rEntry,Window* _pControl);
260cdf0e10cSrcweir 		void			setTextCellContext(const OTableFieldDescRef& _rEntry,const String& _sText,const rtl::OString& _sHelpId);
261cdf0e10cSrcweir 		void			invalidateUndoRedo();
262cdf0e10cSrcweir 		OTableFieldDescRef getEntry(OTableFields::size_type _nPos);
263cdf0e10cSrcweir 
264cdf0e10cSrcweir 		void			adjustSelectionMode( sal_Bool _bClickedOntoHeader, sal_Bool _bClickedOntoHandleCol );
265cdf0e10cSrcweir 
266cdf0e10cSrcweir 		/** save the filed change in save modified
267cdf0e10cSrcweir 			@param	_sFieldName
268cdf0e10cSrcweir 				The field name inserted by the user.
269cdf0e10cSrcweir 			@param	_pEntry
270cdf0e10cSrcweir 				The entry which will contain the nescessary entries.
271cdf0e10cSrcweir 			@param	_bListAction
272cdf0e10cSrcweir 				Will be set to <TRUE/> when we are in a list action otherwise <FALSE/>
273cdf0e10cSrcweir 			@return
274cdf0e10cSrcweir 				<TRUE/> if an error occured otherwise <FALSE/>
275cdf0e10cSrcweir 		*/
276cdf0e10cSrcweir 		sal_Bool		saveField(const String& _sFieldName,OTableFieldDescRef& _pEntry,sal_Bool& _bListAction);
277cdf0e10cSrcweir 
278cdf0e10cSrcweir 		/** sets the table window at the _pEntry
279cdf0e10cSrcweir 			@param	_pEntry
280cdf0e10cSrcweir 				The entry where the window should be set.
281cdf0e10cSrcweir 			@param	_sTableName
282cdf0e10cSrcweir 				The table name to search for.
283cdf0e10cSrcweir 			@return
284cdf0e10cSrcweir 				<TRUE/> if the table name was set otherwise <FALSE/>
285cdf0e10cSrcweir 		*/
286cdf0e10cSrcweir 		sal_Bool		fillEntryTable(OTableFieldDescRef& _pEntry,const ::rtl::OUString& _sTableName);
287cdf0e10cSrcweir 
288cdf0e10cSrcweir 		/** uses the parse node to fill all information into the field
289cdf0e10cSrcweir 			@param	_pColumnRef
290cdf0e10cSrcweir 				The parse node used to fill the info into the field.
291cdf0e10cSrcweir 			@param	_xMetaData
292cdf0e10cSrcweir 				Use to parse the node to a string.
293cdf0e10cSrcweir 			@param	_pEntry
294cdf0e10cSrcweir 				The entry which will contain the nescessary entries.
295cdf0e10cSrcweir 			@param	_bListAction
296cdf0e10cSrcweir 				Will be set to <TRUE/> when we are in a list action otherwise <FALSE/>
297cdf0e10cSrcweir 			@return
298cdf0e10cSrcweir 				<TRUE/> if an error occured otherwise <FALSE/>
299cdf0e10cSrcweir 		*/
300cdf0e10cSrcweir 		sal_Bool		fillColumnRef(	const ::connectivity::OSQLParseNode* _pColumnRef,
301cdf0e10cSrcweir 										const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
302cdf0e10cSrcweir 										OTableFieldDescRef& _pEntry,
303cdf0e10cSrcweir 										sal_Bool& _bListAction);
304cdf0e10cSrcweir 		sal_Bool		fillColumnRef(	const ::rtl::OUString& _sColumnName,
305cdf0e10cSrcweir 										const ::rtl::OUString& _sTableRange,
306cdf0e10cSrcweir 										const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _xMetaData,
307cdf0e10cSrcweir 										OTableFieldDescRef& _pEntry,
308cdf0e10cSrcweir 										sal_Bool& _bListAction);
309cdf0e10cSrcweir 
310cdf0e10cSrcweir 
311cdf0e10cSrcweir 		/** append an undo action for the table field
312cdf0e10cSrcweir 			@param	_sOldAlias
313cdf0e10cSrcweir 				The old table alias.
314cdf0e10cSrcweir 			@param	_sAlias
315cdf0e10cSrcweir 				The new alias name.
316cdf0e10cSrcweir 			@param	_bListAction
317cdf0e10cSrcweir 				Will be set to <TRUE/> when we are in a list action otherwise <FALSE/>
318cdf0e10cSrcweir 		*/
319cdf0e10cSrcweir 		void			notifyTableFieldChanged(const String& _sOldAlias,const String& _sAlias,sal_Bool& _bListAction,sal_uInt16 _nColumnId);
320cdf0e10cSrcweir 
321cdf0e10cSrcweir 		/** append an undo action for the function field
322cdf0e10cSrcweir 			@param	_sOldFunctionName
323cdf0e10cSrcweir 				The old value.
324cdf0e10cSrcweir 			@param	_sFunctionName
325cdf0e10cSrcweir 				The new function name.
326cdf0e10cSrcweir 			@param	_bListAction
327cdf0e10cSrcweir 				Will be set to <TRUE/> when we are in a list action otherwise <FALSE/>
328cdf0e10cSrcweir 		*/
329cdf0e10cSrcweir 		void			notifyFunctionFieldChanged(const String& _sOldFunctionName,const String& _sFunctionName,sal_Bool& _bListAction,sal_uInt16 _nColumnId);
330cdf0e10cSrcweir 
331cdf0e10cSrcweir 		/** clears the function fields of the submitted entry if it doesn't match the SQL standard and append an undo action.
332cdf0e10cSrcweir 			E.q. AGGREGATE functions are only valid when the field name isn't an asterix
333cdf0e10cSrcweir 			@param	_sFieldName
334cdf0e10cSrcweir 				The field name.
335cdf0e10cSrcweir 			@param	_pEntry
336cdf0e10cSrcweir 				The entry to be cleared
337cdf0e10cSrcweir 			@param	_bListAction
338cdf0e10cSrcweir 				When <TRUE/> an list action will be created.
339cdf0e10cSrcweir 		*/
340cdf0e10cSrcweir 		void			clearEntryFunctionField(const String& _sFieldName,OTableFieldDescRef& _pEntry,sal_Bool& _bListAction,sal_uInt16 _nColumnId);
341cdf0e10cSrcweir 
342cdf0e10cSrcweir 		/** remove or insert the necessary function types
343cdf0e10cSrcweir 			@param	_pEntry
344cdf0e10cSrcweir 				The currently edited entry.
345cdf0e10cSrcweir 		*/
346cdf0e10cSrcweir 		void			setFunctionCell(OTableFieldDescRef& _pEntry);
347cdf0e10cSrcweir 
348cdf0e10cSrcweir     private:
349cdf0e10cSrcweir         using ::svt::EditBrowseBox::AcceptDrop;
350cdf0e10cSrcweir         using ::svt::EditBrowseBox::ExecuteDrop;
351cdf0e10cSrcweir         using ::svt::EditBrowseBox::MouseButtonDown;
352cdf0e10cSrcweir         using ::svt::EditBrowseBox::MouseButtonUp;
353cdf0e10cSrcweir 	};
354cdf0e10cSrcweir }
355cdf0e10cSrcweir #endif // DBAUI_QUERYDESIGN_OSELECTIONBROWSEBOX_HXX
356cdf0e10cSrcweir 
357cdf0e10cSrcweir 
358cdf0e10cSrcweir 
359