Branch libreoffice-5-0-4
[LibreOffice.git] / include / svtools / editbrowsebox.hxx
blob5fdfc3758b7b5181a2dbe1180496c97caa091641
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SVTOOLS_EDITBROWSEBOX_HXX
21 #define INCLUDED_SVTOOLS_EDITBROWSEBOX_HXX
22 #define SVTOOLS_IN_EDITBROWSEBOX_HXX
24 #include <svtools/svtdllapi.h>
25 #include <tools/ref.hxx>
26 #include <tools/rtti.hxx>
27 #include <vcl/window.hxx>
28 #include <vcl/combobox.hxx>
29 #include <vcl/lstbox.hxx>
30 #include <vcl/spinfld.hxx>
32 #include <vcl/button.hxx>
33 #include <svtools/brwbox.hxx>
34 #include <vcl/timer.hxx>
35 #include <svtools/brwhead.hxx>
36 #include <svtools/svmedit.hxx>
37 #include <vcl/svapp.hxx>
38 #include <o3tl/typed_flags_set.hxx>
41 // EditBrowseBoxFlags (EBBF)
43 enum class EditBrowseBoxFlags
45 NONE = 0x0000,
46 /** if this bit is _not_ set, the handle column will be invalidated upon
47 changing the row in the browse box. This is for forcing the row picture to
48 be repainted. If you do not have row pictures or text, you don't need this
49 invalidation, then you would specify this bit to prevent flicker
51 NO_HANDLE_COLUMN_CONTENT = 0x0001,
52 /** set this bit to activate the cell on a MouseButtonDown, not a MouseButtonUp event
54 ACTIVATE_ON_BUTTONDOWN = 0x0002,
55 /** if this bit is set and EditBrowseBoxFlags::NO_HANDLE_COLUMN_CONTENT is _not_ set, the handle
56 column is drawn with the text contained in column 0 instead of an image
58 HANDLE_COLUMN_TEXT = 0x0004,
60 /** If this bit is set, tab traveling is somewhat modified<br/>
61 If the control gets the focus because the user pressed the TAB key, then the
62 first or last cell (depending on whether the traveling was cycling forward or backward)
63 gets activated.
64 @see Window::GetGetFocusFlags
65 @see GETFOCUS_*
67 SMART_TAB_TRAVEL = 0x0008,
70 namespace o3tl
72 template<> struct typed_flags<EditBrowseBoxFlags> : is_typed_flags<EditBrowseBoxFlags, 0x0f> {};
76 class Edit;
77 class SpinField;
78 class FormattedField;
81 namespace svt
83 class SVT_DLLPUBLIC CellController : public SvRefBase
85 friend class EditBrowseBox;
87 protected:
88 VclPtr<Control> pWindow;
89 bool bSuspended; // <true> if the window is hidden and disabled
91 public:
92 TYPEINFO();
94 CellController(Control* pW);
95 virtual ~CellController();
97 Control& GetWindow() const { return *const_cast< CellController* >( this )->pWindow; }
99 virtual void SetModified();
100 virtual void ClearModified() = 0;
101 virtual bool IsModified() const = 0;
103 // commit any current changes. Especially, do any reformatting you need (from input formatting
104 // to output formatting) here
105 virtual void CommitModifications();
107 // suspending the controller is not culmulative!
108 void suspend( );
109 void resume( );
110 inline bool isSuspended( ) const { return bSuspended; }
112 protected:
113 virtual bool MoveAllowed(const KeyEvent& rEvt) const;
114 virtual void SetModifyHdl(const Link<>& rLink) = 0;
115 virtual bool WantMouseEvent() const;
118 typedef tools::SvRef<CellController> CellControllerRef;
121 //= IEditImplementation
123 class SVT_DLLPUBLIC IEditImplementation
125 public:
126 virtual ~IEditImplementation() = 0;
128 virtual Control& GetControl() = 0;
130 virtual OUString GetText( LineEnd aSeparator ) const = 0;
131 virtual void SetText( const OUString& _rStr ) = 0;
133 virtual bool IsReadOnly() const = 0;
134 virtual void SetReadOnly( bool bReadOnly ) = 0;
136 virtual sal_Int32 GetMaxTextLen() const = 0;
137 virtual void SetMaxTextLen( sal_Int32 _nMaxLen ) = 0;
139 virtual Selection GetSelection() const = 0;
140 virtual void SetSelection( const Selection& _rSelection ) = 0;
142 virtual void ReplaceSelected( const OUString& _rStr ) = 0;
143 virtual void DeleteSelected() = 0;
144 virtual OUString GetSelected( LineEnd aSeparator ) const = 0;
146 virtual void SetModified() = 0;
147 virtual bool IsModified() const = 0;
148 virtual void ClearModified() = 0;
149 virtual void SetModifyHdl( const Link<>& _rLink ) = 0;
153 //= GenericEditImplementation
155 template <class EDIT>
156 class GenericEditImplementation : public IEditImplementation
158 EDIT& m_rEdit;
159 public:
160 GenericEditImplementation( EDIT& _rEdit );
162 EDIT& GetEditWindow() { return static_cast< EDIT& >( GetControl() ); }
164 virtual Control& GetControl() SAL_OVERRIDE;
166 virtual OUString GetText( LineEnd aSeparator ) const SAL_OVERRIDE;
167 virtual void SetText( const OUString& _rStr ) SAL_OVERRIDE;
169 virtual bool IsReadOnly() const SAL_OVERRIDE;
170 virtual void SetReadOnly( bool bReadOnly ) SAL_OVERRIDE;
172 virtual sal_Int32 GetMaxTextLen() const SAL_OVERRIDE;
173 virtual void SetMaxTextLen( sal_Int32 _nMaxLen ) SAL_OVERRIDE;
175 virtual Selection GetSelection() const SAL_OVERRIDE;
176 virtual void SetSelection( const Selection& _rSelection ) SAL_OVERRIDE;
178 virtual void ReplaceSelected( const OUString& _rStr ) SAL_OVERRIDE;
179 virtual void DeleteSelected() SAL_OVERRIDE;
180 virtual OUString GetSelected( LineEnd aSeparator ) const SAL_OVERRIDE;
182 virtual void SetModified() SAL_OVERRIDE;
183 virtual bool IsModified() const SAL_OVERRIDE;
184 virtual void ClearModified() SAL_OVERRIDE;
185 virtual void SetModifyHdl( const Link<>& _rLink ) SAL_OVERRIDE;
188 #include <svtools/editimplementation.hxx>
191 //= MultiLineTextCell
193 /** a multi line edit which can be used in a cell of a EditBrowseBox
195 class SVT_DLLPUBLIC MultiLineTextCell : public MultiLineEdit
197 public:
198 MultiLineTextCell( vcl::Window* _pParent, WinBits _nStyle )
199 :MultiLineEdit( _pParent, _nStyle )
203 protected:
204 // Window overridables
205 virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
207 // MultiLineEdit overridables
208 virtual void Modify() SAL_OVERRIDE;
210 private:
211 bool dispatchKeyEvent( const KeyEvent& _rEvent );
215 //= concrete edit implementations
217 typedef GenericEditImplementation< Edit > EditImplementation;
219 typedef GenericEditImplementation< MultiLineTextCell > MultiLineEditImplementation_Base;
220 class SVT_DLLPUBLIC MultiLineEditImplementation : public MultiLineEditImplementation_Base
222 public:
223 MultiLineEditImplementation( MultiLineTextCell& _rEdit ) : MultiLineEditImplementation_Base( _rEdit )
227 virtual OUString GetText( LineEnd aSeparator ) const SAL_OVERRIDE;
228 virtual OUString GetSelected( LineEnd aSeparator ) const SAL_OVERRIDE;
232 //= EditCellController
234 class SVT_DLLPUBLIC EditCellController : public CellController
236 IEditImplementation* m_pEditImplementation;
237 bool m_bOwnImplementation; // did we create m_pEditImplementation?
239 public:
240 TYPEINFO_OVERRIDE();
241 EditCellController( Edit* _pEdit );
242 EditCellController( IEditImplementation* _pImplementation );
243 virtual ~EditCellController( );
245 const IEditImplementation* GetEditImplementation( ) const { return m_pEditImplementation; }
246 IEditImplementation* GetEditImplementation( ) { return m_pEditImplementation; }
248 virtual void SetModified() SAL_OVERRIDE;
249 virtual bool IsModified() const SAL_OVERRIDE;
250 virtual void ClearModified() SAL_OVERRIDE;
252 protected:
253 virtual bool MoveAllowed(const KeyEvent& rEvt) const SAL_OVERRIDE;
254 virtual void SetModifyHdl(const Link<>& rLink) SAL_OVERRIDE;
258 //= SpinCellController
260 class SVT_DLLPUBLIC SpinCellController : public CellController
262 public:
263 TYPEINFO_OVERRIDE();
264 SpinCellController(SpinField* pSpinField);
265 const SpinField& GetSpinWindow() const { return static_cast<const SpinField &>(GetWindow()); }
266 SpinField& GetSpinWindow() { return static_cast<SpinField &>(GetWindow()); }
268 virtual void SetModified() SAL_OVERRIDE;
269 virtual bool IsModified() const SAL_OVERRIDE;
270 virtual void ClearModified() SAL_OVERRIDE;
272 protected:
273 virtual bool MoveAllowed(const KeyEvent& rEvt) const SAL_OVERRIDE;
274 virtual void SetModifyHdl(const Link<>& rLink) SAL_OVERRIDE;
278 //= CheckBoxControl
280 class SVT_DLLPUBLIC CheckBoxControl : public Control
282 VclPtr<CheckBox> pBox;
283 Rectangle aFocusRect;
284 Link<> m_aClickLink,m_aModifyLink;
286 public:
287 CheckBoxControl(vcl::Window* pParent, WinBits nWinStyle = 0);
288 virtual ~CheckBoxControl();
289 virtual void dispose() SAL_OVERRIDE;
291 virtual void GetFocus() SAL_OVERRIDE;
292 virtual bool PreNotify(NotifyEvent& rEvt) SAL_OVERRIDE;
293 virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rClientRect) SAL_OVERRIDE;
294 virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags ) SAL_OVERRIDE;
295 virtual void StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
296 virtual void DataChanged( const DataChangedEvent& _rEvent ) SAL_OVERRIDE;
297 virtual void Resize() SAL_OVERRIDE;
299 void SetClickHdl(const Link<>& rHdl) {m_aClickLink = rHdl;}
300 const Link<>& GetClickHdl() const {return m_aClickLink;}
302 void SetModifyHdl(const Link<>& rHdl) {m_aModifyLink = rHdl;}
303 const Link<>& GetModifyHdl() const {return m_aModifyLink;}
305 CheckBox& GetBox() {return *pBox;};
307 private:
308 DECL_LINK( OnClick, void* );
312 //= CheckBoxCellController
314 class SVT_DLLPUBLIC CheckBoxCellController : public CellController
316 public:
317 TYPEINFO_OVERRIDE();
319 CheckBoxCellController(CheckBoxControl* pWin):CellController(pWin){}
320 CheckBox& GetCheckBox() const;
322 virtual bool IsModified() const SAL_OVERRIDE;
323 virtual void ClearModified() SAL_OVERRIDE;
325 protected:
326 virtual void SetModifyHdl(const Link<>& rLink) SAL_OVERRIDE;
327 virtual bool WantMouseEvent() const SAL_OVERRIDE;
331 //= ComboBoxControl
333 class SVT_DLLPUBLIC ComboBoxControl : public ComboBox
335 friend class ComboBoxCellController;
337 public:
338 ComboBoxControl(vcl::Window* pParent, WinBits nWinStyle = 0);
340 protected:
341 virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
345 //= ComboBoxCellController
347 class SVT_DLLPUBLIC ComboBoxCellController : public CellController
349 public:
350 TYPEINFO_OVERRIDE();
352 ComboBoxCellController(ComboBoxControl* pParent);
353 ComboBoxControl& GetComboBox() const { return static_cast<ComboBoxControl &>(GetWindow()); }
355 virtual bool IsModified() const SAL_OVERRIDE;
356 virtual void ClearModified() SAL_OVERRIDE;
358 protected:
359 virtual bool MoveAllowed(const KeyEvent& rEvt) const SAL_OVERRIDE;
360 virtual void SetModifyHdl(const Link<>& rLink) SAL_OVERRIDE;
364 //= ListBoxControl
366 class SVT_DLLPUBLIC ListBoxControl : public ListBox
368 friend class ListBoxCellController;
370 public:
371 ListBoxControl(vcl::Window* pParent, WinBits nWinStyle = 0);
373 protected:
374 virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
378 //= ListBoxCellController
380 class SVT_DLLPUBLIC ListBoxCellController : public CellController
382 public:
383 TYPEINFO_OVERRIDE();
385 ListBoxCellController(ListBoxControl* pParent);
386 const ListBoxControl& GetListBox() const { return static_cast<const ListBoxControl &>(GetWindow()); }
387 ListBoxControl& GetListBox() { return static_cast<ListBoxControl &>(GetWindow()); }
389 virtual bool IsModified() const SAL_OVERRIDE;
390 virtual void ClearModified() SAL_OVERRIDE;
392 protected:
393 virtual bool MoveAllowed(const KeyEvent& rEvt) const SAL_OVERRIDE;
394 virtual void SetModifyHdl(const Link<>& rLink) SAL_OVERRIDE;
398 //= FormattedFieldCellController
400 class SVT_DLLPUBLIC FormattedFieldCellController : public EditCellController
402 public:
403 TYPEINFO_OVERRIDE();
404 FormattedFieldCellController( FormattedField* _pFormatted );
406 virtual void CommitModifications() SAL_OVERRIDE;
410 //= EditBrowserHeader
412 class SVT_DLLPUBLIC EditBrowserHeader : public BrowserHeader
414 public:
415 EditBrowserHeader( BrowseBox* pParent, WinBits nWinBits = WB_BUTTONSTYLE )
416 :BrowserHeader(pParent, nWinBits){}
418 protected:
419 virtual void DoubleClick() SAL_OVERRIDE;
423 //= EditBrowseBox
425 class EditBrowseBoxImpl;
426 class SVT_DLLPUBLIC EditBrowseBox: public BrowseBox
428 friend class EditBrowserHeader;
430 enum BrowseInfo
432 COLSELECT = 1,
433 ROWSELECT = 2,
434 ROWCHANGE = 4,
435 COLCHANGE = 8
438 public:
439 enum RowStatus
441 CLEAN = 0,
442 CURRENT = 1,
443 CURRENTNEW = 2,
444 MODIFIED = 3,
445 NEW = 4,
446 DELETED = 5,
447 PRIMARYKEY = 6,
448 CURRENT_PRIMARYKEY = 7,
449 FILTER = 8,
450 HEADERFOOTER = 9
453 private:
454 EditBrowseBox(EditBrowseBox&) SAL_DELETED_FUNCTION;
455 EditBrowseBox& operator=(EditBrowseBox&) SAL_DELETED_FUNCTION;
457 class BrowserMouseEventPtr
459 BrowserMouseEvent* pEvent;
460 bool bDown;
462 public:
463 BrowserMouseEventPtr()
464 : pEvent(NULL)
465 , bDown(false)
468 ~BrowserMouseEventPtr(){Clear();}
470 bool Is() const {return pEvent != NULL;}
471 bool IsDown() const {return bDown;}
472 const BrowserMouseEvent* operator->() const {return pEvent;}
473 const BrowserMouseEvent& operator*() const {return *pEvent;}
475 SVT_DLLPUBLIC void Clear();
476 void Set(const BrowserMouseEvent* pEvt, bool bIsDown);
477 } aMouseEvent;
479 CellControllerRef aController,
480 aOldController;
482 ImplSVEvent * nStartEvent, * nEndEvent, * nCellModifiedEvent; // event ids
483 VclPtr<vcl::Window> m_pFocusWhileRequest;
484 // In ActivateCell, we grab the focus asynchronously, but if between requesting activation
485 // and the asynchornous event the focus has changed, we won't grab it for ourself.
487 long nPaintRow; // row being painted
488 long nEditRow, nOldEditRow;
489 sal_uInt16 nEditCol, nOldEditCol;
491 bool bHasFocus : 1;
492 mutable bool bPaintStatus : 1; // paint a status (image) in the handle column
493 bool bActiveBeforeTracking;
495 VclPtr<CheckBoxControl> pCheckBoxPaint;
497 EditBrowseBoxFlags m_nBrowserFlags;
498 ImageList m_aStatusImages;
499 ::std::unique_ptr< EditBrowseBoxImpl> m_aImpl;
501 protected:
502 VclPtr<BrowserHeader> pHeader;
504 bool isGetCellFocusPending() const { return nStartEvent != 0; }
505 void cancelGetCellFocus() { if (nStartEvent) Application::RemoveUserEvent(nStartEvent); nStartEvent = 0; }
506 void forceGetCellFocus() { cancelGetCellFocus(); LINK(this, EditBrowseBox, StartEditHdl).Call((void*)NULL); }
508 BrowserMouseEventPtr& getMouseEvent() { return aMouseEvent; }
510 protected:
511 BrowserHeader* GetHeaderBar() const {return pHeader;}
513 virtual VclPtr<BrowserHeader> CreateHeaderBar(BrowseBox* pParent) SAL_OVERRIDE;
515 // if you want to have an own header ...
516 virtual VclPtr<BrowserHeader> imp_CreateHeaderBar(BrowseBox* pParent);
518 virtual void ColumnMoved(sal_uInt16 nId) SAL_OVERRIDE;
519 virtual void ColumnResized(sal_uInt16 nColId) SAL_OVERRIDE;
520 virtual void Resize() SAL_OVERRIDE;
521 virtual void ArrangeControls(sal_uInt16& nX, sal_uInt16 nY);
522 virtual bool SeekRow(long nRow) SAL_OVERRIDE;
524 virtual void GetFocus() SAL_OVERRIDE;
525 virtual void LoseFocus() SAL_OVERRIDE;
526 virtual void KeyInput(const KeyEvent& rEvt) SAL_OVERRIDE;
527 virtual void MouseButtonDown(const BrowserMouseEvent& rEvt) SAL_OVERRIDE;
528 virtual void MouseButtonUp(const BrowserMouseEvent& rEvt) SAL_OVERRIDE;
529 virtual void StateChanged( StateChangedType nType ) SAL_OVERRIDE;
530 virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
532 using BrowseBox::MouseButtonUp;
533 using BrowseBox::MouseButtonDown;
535 virtual bool PreNotify(NotifyEvent& rNEvt ) SAL_OVERRIDE;
536 virtual bool Notify(NotifyEvent& rNEvt) SAL_OVERRIDE;
538 virtual void EndScroll() SAL_OVERRIDE;
540 // should be used instead of GetFieldRectPixel, 'cause this method here takes into account the borders
541 Rectangle GetCellRect(long nRow, sal_uInt16 nColId, bool bRelToBrowser = true) const;
542 virtual sal_uInt32 GetTotalCellWidth(long nRow, sal_uInt16 nColId);
543 virtual sal_uInt32 GetAutoColumnWidth(sal_uInt16 nColId);
545 virtual void PaintStatusCell(OutputDevice& rDev, const Rectangle& rRect) const;
546 virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColId) const = 0;
548 virtual RowStatus GetRowStatus(long nRow) const;
550 virtual void RowHeightChanged() SAL_OVERRIDE;
552 // callbacks for the data window
553 virtual void ImplStartTracking() SAL_OVERRIDE;
554 virtual void ImplTracking() SAL_OVERRIDE;
555 virtual void ImplEndTracking() SAL_OVERRIDE;
557 // when changing a row:
558 // CursorMoving: cursor is being moved, but GetCurRow() still provides the old row
559 virtual bool CursorMoving(long nNewRow, sal_uInt16 nNewCol);
561 // cursor has been moved
562 virtual void CursorMoved() SAL_OVERRIDE;
564 virtual void CellModified(); // called whenever a cell has been modified
565 virtual bool SaveModified(); // called whenever a cell should be left, and it's content should be saved
566 // return sal_False prevents leaving the cell
567 virtual bool SaveRow(); // commit the current row
569 virtual bool IsModified() const {return aController.Is() && aController->IsModified();}
571 virtual CellController* GetController(long nRow, sal_uInt16 nCol);
572 virtual void InitController(CellControllerRef& rController, long nRow, sal_uInt16 nCol);
573 virtual void ResizeController(CellControllerRef& rController, const Rectangle&);
574 virtual void ReleaseController(CellControllerRef& pController, long nRow, sal_uInt16 nCol);
575 virtual void DoubleClick(const BrowserMouseEvent&) SAL_OVERRIDE;
577 void ActivateCell() { ActivateCell(GetCurRow(), GetCurColumnId()); }
579 // retrieve the image for the row status
580 virtual Image GetImage(RowStatus) const;
582 // inserting columns
583 // if you don't set a width, this will be calculated automatically
584 // if the id isn't set the smallest unused will do it ...
585 virtual sal_uInt16 AppendColumn(const OUString& rName, sal_uInt16 nWidth = 0, sal_uInt16 nPos = HEADERBAR_APPEND, sal_uInt16 nId = (sal_uInt16)-1);
587 // called whenever (Shift)Tab or Enter is pressed. If true is returned, these keys
588 // result in traveling to the next or to th previous cell
589 virtual bool IsTabAllowed(bool bForward) const;
591 virtual bool IsCursorMoveAllowed(long nNewRow, sal_uInt16 nNewColId) const SAL_OVERRIDE;
593 void PaintTristate(OutputDevice& rDev, const Rectangle& rRect, const TriState& eState, bool _bEnabled=true) const;
595 void AsynchGetFocus();
596 // secure starting of StartEditHdl
598 public:
599 EditBrowseBox(vcl::Window* pParent, EditBrowseBoxFlags nBrowserFlags = EditBrowseBoxFlags::NONE, WinBits nBits = WB_TABSTOP, BrowserMode nMode = BrowserMode::NONE );
600 EditBrowseBox(vcl::Window* pParent, const ResId& rId, EditBrowseBoxFlags nBrowserFlags = EditBrowseBoxFlags::NONE, BrowserMode nMode = BrowserMode::NONE );
601 virtual ~EditBrowseBox();
602 virtual void dispose() SAL_OVERRIDE;
604 bool IsEditing() const {return aController.Is();}
605 void InvalidateStatusCell(long nRow) {RowModified(nRow, 0);}
606 void InvalidateHandleColumn();
608 // late construction
609 virtual void Init();
610 virtual void RemoveRows();
611 virtual void Dispatch(sal_uInt16 nId);
613 CellControllerRef Controller() const { return aController; }
614 EditBrowseBoxFlags GetBrowserFlags() const { return m_nBrowserFlags; }
615 void SetBrowserFlags(EditBrowseBoxFlags nFlags);
617 virtual void ActivateCell(long nRow, sal_uInt16 nCol, bool bSetCellFocus = true);
618 virtual void DeactivateCell(bool bUpdate = true);
619 // Children ---------------------------------------------------------------
621 /** Creates the accessible object of a data table cell.
622 @param nRow
623 The row index of the cell.
624 @param nColumnId
625 The column ID of the cell.
626 @return
627 The XAccessible interface of the specified cell. */
628 virtual ::com::sun::star::uno::Reference<
629 ::com::sun::star::accessibility::XAccessible >
630 CreateAccessibleCell( sal_Int32 nRow, sal_uInt16 nColumnPos ) SAL_OVERRIDE;
632 /** @return The count of additional controls of the control area. */
633 virtual sal_Int32 GetAccessibleControlCount() const SAL_OVERRIDE;
635 /** Creates the accessible object of an additional control.
636 @param nIndex
637 The 0-based index of the control.
638 @return
639 The XAccessible interface of the specified control. */
640 virtual ::com::sun::star::uno::Reference<
641 ::com::sun::star::accessibility::XAccessible >
642 CreateAccessibleControl( sal_Int32 nIndex ) SAL_OVERRIDE;
644 /** Creates the accessible object of a column header.
645 @param nColumnId
646 The column ID of the header.
647 @return
648 The XAccessible interface of the specified column header. */
649 virtual ::com::sun::star::uno::Reference<
650 ::com::sun::star::accessibility::XAccessible >
651 CreateAccessibleRowHeader( sal_Int32 _nRow ) SAL_OVERRIDE;
653 /** Sets focus to current cell of the data table. */
654 virtual void GrabTableFocus() SAL_OVERRIDE;
656 virtual Rectangle GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex) SAL_OVERRIDE;
657 virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint) SAL_OVERRIDE;
659 ::com::sun::star::uno::Reference<
660 ::com::sun::star::accessibility::XAccessible > CreateAccessibleCheckBoxCell(long _nRow, sal_uInt16 _nColumnPos,const TriState& eState);
661 protected:
662 // creates the accessible which wraps the active cell
663 void implCreateActiveAccessible( );
665 private:
666 virtual void PaintField(OutputDevice& rDev, const Rectangle& rRect,
667 sal_uInt16 nColumnId ) const SAL_OVERRIDE;
668 using Control::ImplInitSettings;
669 SVT_DLLPRIVATE void ImplInitSettings( bool bFont, bool bForeground, bool bBackground );
670 SVT_DLLPRIVATE void DetermineFocus( const sal_uInt16 _nGetFocusFlags = 0);
671 static inline void HideAndDisable(CellControllerRef& rController);
672 inline void EnableAndShow() const;
674 SVT_DLLPRIVATE void implActivateCellOnMouseEvent(const BrowserMouseEvent& _rEvt, bool _bUp);
675 SVT_DLLPRIVATE void impl_construct();
677 DECL_DLLPRIVATE_LINK(ModifyHdl, void* );
678 DECL_DLLPRIVATE_LINK(StartEditHdl, void* );
679 DECL_DLLPRIVATE_LINK(EndEditHdl, void* );
680 DECL_DLLPRIVATE_LINK(CellModifiedHdl, void* );
684 } // namespace svt
687 #undef SVTOOLS_IN_EDITBROWSEBOX_HXX
688 #endif // INCLUDED_SVTOOLS_EDITBROWSEBOX_HXX
690 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */