1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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
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)
64 @see Window::GetGetFocusFlags
67 SMART_TAB_TRAVEL
= 0x0008,
72 template<> struct typed_flags
<EditBrowseBoxFlags
> : is_typed_flags
<EditBrowseBoxFlags
, 0x0f> {};
83 class SVT_DLLPUBLIC CellController
: public SvRefBase
85 friend class EditBrowseBox
;
88 VclPtr
<Control
> pWindow
;
89 bool bSuspended
; // <true> if the window is hidden and disabled
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!
110 inline bool isSuspended( ) const { return bSuspended
; }
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
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
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
198 MultiLineTextCell( vcl::Window
* _pParent
, WinBits _nStyle
)
199 :MultiLineEdit( _pParent
, _nStyle
)
204 // Window overridables
205 virtual bool PreNotify( NotifyEvent
& rNEvt
) SAL_OVERRIDE
;
207 // MultiLineEdit overridables
208 virtual void Modify() SAL_OVERRIDE
;
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
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?
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
;
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
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
;
273 virtual bool MoveAllowed(const KeyEvent
& rEvt
) const SAL_OVERRIDE
;
274 virtual void SetModifyHdl(const Link
<>& rLink
) SAL_OVERRIDE
;
280 class SVT_DLLPUBLIC CheckBoxControl
: public Control
282 VclPtr
<CheckBox
> pBox
;
283 Rectangle aFocusRect
;
284 Link
<> m_aClickLink
,m_aModifyLink
;
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
;};
308 DECL_LINK( OnClick
, void* );
312 //= CheckBoxCellController
314 class SVT_DLLPUBLIC CheckBoxCellController
: public CellController
319 CheckBoxCellController(CheckBoxControl
* pWin
):CellController(pWin
){}
320 CheckBox
& GetCheckBox() const;
322 virtual bool IsModified() const SAL_OVERRIDE
;
323 virtual void ClearModified() SAL_OVERRIDE
;
326 virtual void SetModifyHdl(const Link
<>& rLink
) SAL_OVERRIDE
;
327 virtual bool WantMouseEvent() const SAL_OVERRIDE
;
333 class SVT_DLLPUBLIC ComboBoxControl
: public ComboBox
335 friend class ComboBoxCellController
;
338 ComboBoxControl(vcl::Window
* pParent
, WinBits nWinStyle
= 0);
341 virtual bool PreNotify( NotifyEvent
& rNEvt
) SAL_OVERRIDE
;
345 //= ComboBoxCellController
347 class SVT_DLLPUBLIC ComboBoxCellController
: public CellController
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
;
359 virtual bool MoveAllowed(const KeyEvent
& rEvt
) const SAL_OVERRIDE
;
360 virtual void SetModifyHdl(const Link
<>& rLink
) SAL_OVERRIDE
;
366 class SVT_DLLPUBLIC ListBoxControl
: public ListBox
368 friend class ListBoxCellController
;
371 ListBoxControl(vcl::Window
* pParent
, WinBits nWinStyle
= 0);
374 virtual bool PreNotify( NotifyEvent
& rNEvt
) SAL_OVERRIDE
;
378 //= ListBoxCellController
380 class SVT_DLLPUBLIC ListBoxCellController
: public CellController
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
;
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
404 FormattedFieldCellController( FormattedField
* _pFormatted
);
406 virtual void CommitModifications() SAL_OVERRIDE
;
410 //= EditBrowserHeader
412 class SVT_DLLPUBLIC EditBrowserHeader
: public BrowserHeader
415 EditBrowserHeader( BrowseBox
* pParent
, WinBits nWinBits
= WB_BUTTONSTYLE
)
416 :BrowserHeader(pParent
, nWinBits
){}
419 virtual void DoubleClick() SAL_OVERRIDE
;
425 class EditBrowseBoxImpl
;
426 class SVT_DLLPUBLIC EditBrowseBox
: public BrowseBox
428 friend class EditBrowserHeader
;
448 CURRENT_PRIMARYKEY
= 7,
454 EditBrowseBox(EditBrowseBox
&) SAL_DELETED_FUNCTION
;
455 EditBrowseBox
& operator=(EditBrowseBox
&) SAL_DELETED_FUNCTION
;
457 class BrowserMouseEventPtr
459 BrowserMouseEvent
* pEvent
;
463 BrowserMouseEventPtr()
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
);
479 CellControllerRef aController
,
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
;
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
;
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
; }
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;
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
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();
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.
623 The row index of the cell.
625 The column ID of the cell.
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.
637 The 0-based index of the control.
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.
646 The column ID of the header.
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
);
662 // creates the accessible which wraps the active cell
663 void implCreateActiveAccessible( );
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* );
687 #undef SVTOOLS_IN_EDITBROWSEBOX_HXX
688 #endif // INCLUDED_SVTOOLS_EDITBROWSEBOX_HXX
690 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */