LCOV - code coverage report
Current view: top level - libreoffice/solver/unxlngi6.pro/inc/svtools - editbrowsebox.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 44 2.3 %
Date: 2012-12-27 Functions: 2 63 3.2 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       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/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      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 .
      18             :  */
      19             : 
      20             : #ifndef _SVTOOLS_EDITBROWSEBOX_HXX_
      21             : #define _SVTOOLS_EDITBROWSEBOX_HXX_
      22             : #define SVTOOLS_IN_EDITBROWSEBOX_HXX
      23             : 
      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             : 
      31             : #include <vcl/button.hxx>
      32             : #include <svtools/brwbox.hxx>
      33             : #include <vcl/timer.hxx>
      34             : #include <svtools/brwhead.hxx>
      35             : #include <svtools/svmedit.hxx>
      36             : #include <vcl/svapp.hxx>
      37             : 
      38             : //==================================================================
      39             : // EditBrowseBoxFlags (EBBF)
      40             : 
      41             : #define EBBF_NONE                       ((sal_Int32)0x0000)
      42             : /** if this bit is _not_ set, the handle column will be invalidated upon
      43             :     changing the row in the browse box.  This is for forcing the row picture to
      44             :     be repainted. If you do not have row pictures or text, you don't need this
      45             :     invalidation, then you would specify this bit to prevent flicker
      46             : */
      47             : #define EBBF_NO_HANDLE_COLUMN_CONTENT   ((sal_Int32)0x0001)
      48             : /** set this bit to activate the cell on a MouseButtonDown, not a MouseButtonUp event
      49             :  */
      50             : #define EBBF_ACTIVATE_ON_BUTTONDOWN     ((sal_Int32)0x0002)
      51             : /** if this bit is set and EBBF_NO_HANDLE_COLUMN_CONTENT is _not_ set, the handle
      52             :     column is drawn with the text contained in column 0 instead of an image
      53             : */
      54             : #define EBBF_HANDLE_COLUMN_TEXT         ((sal_Int32)0x0004)
      55             : 
      56             : /** If this bit is set, tab traveling is somewhat modified<br/>
      57             :     If the control gets the focus because the user pressed the TAB key, then the
      58             :     first or last cell (depending on whether the traveling was cycling forward or backward)
      59             :     gets activated.
      60             :     @see Window::GetGetFocusFlags
      61             :     @see GETFOCUS_*
      62             : */
      63             : #define EBBF_SMART_TAB_TRAVEL           ((sal_Int32)0x0008)
      64             : 
      65             : /// @deprecated
      66             : #define EBBF_NOROWPICTURE               EBBF_NO_HANDLE_COLUMN_CONTENT
      67             : 
      68             : //==================================================================
      69             : 
      70             : class Edit;
      71             : class SpinField;
      72             : class FormattedField;
      73             : 
      74             : // .......................................................................
      75             : namespace svt
      76             : {
      77             : // .......................................................................
      78             : 
      79             :     class CellControllerRef;
      80             : 
      81             :     //==================================================================
      82             :     //= CellController
      83             :     //==================================================================
      84             :     class SVT_DLLPUBLIC CellController : public SvRefBase
      85             :     {
      86             :         friend class EditBrowseBox;
      87             : 
      88             :     protected:
      89             :         Control*    pWindow;
      90             :         sal_Bool    bSuspended;     // <sal_True> if the window is hidden and disabled
      91             : 
      92             :     public:
      93             :         TYPEINFO();
      94             : 
      95             :         CellController(Control* pW);
      96             :         virtual ~CellController();
      97             : 
      98           0 :         Control& GetWindow() const { return *const_cast< CellController* >( this )->pWindow; }
      99             : 
     100             :         virtual void SetModified();
     101             :         virtual void ClearModified() = 0;
     102             :         virtual sal_Bool IsModified() const = 0;
     103             : 
     104             :         // commit any current changes. Especially, do any reformatting you need (from input formatting
     105             :         // to output formatting) here
     106             :         virtual void CommitModifications();
     107             : 
     108             :         // suspending the controller is not culmulative!
     109             :                 void        suspend( );
     110             :                 void        resume( );
     111           0 :         inline  sal_Bool    isSuspended( ) const { return bSuspended; }
     112             : 
     113             :     protected:
     114             :         virtual sal_Bool MoveAllowed(const KeyEvent& rEvt) const;
     115             :         virtual void SetModifyHdl(const Link& rLink) = 0;
     116             :         virtual sal_Bool WantMouseEvent() const;
     117             :     };
     118             : 
     119          42 :     SV_DECL_IMPL_REF(CellController);
     120             : 
     121             :     //==================================================================
     122             :     //= IEditImplementation
     123             :     //==================================================================
     124           0 :     class SVT_DLLPUBLIC IEditImplementation
     125             :     {
     126             :     public:
     127             :         virtual ~IEditImplementation() = 0;
     128             : 
     129             :         virtual Control&            GetControl() = 0;
     130             : 
     131             :         virtual String              GetText( LineEnd aSeparator ) const = 0;
     132             :         virtual void                SetText( const String& _rStr ) = 0;
     133             : 
     134             :         virtual sal_Bool                IsReadOnly() const = 0;
     135             :         virtual void                SetReadOnly( sal_Bool bReadOnly ) = 0;
     136             : 
     137             :         virtual xub_StrLen          GetMaxTextLen() const = 0;
     138             :         virtual void                SetMaxTextLen( xub_StrLen _nMaxLen ) = 0;
     139             : 
     140             :         virtual Selection           GetSelection() const = 0;
     141             :         virtual void                SetSelection( const Selection& _rSelection ) = 0;
     142             : 
     143             :         virtual void                ReplaceSelected( const String& _rStr ) = 0;
     144             :         virtual void                DeleteSelected() = 0;
     145             :         virtual String              GetSelected( LineEnd aSeparator ) const = 0;
     146             : 
     147             :         virtual void                SetModified() = 0;
     148             :         virtual sal_Bool            IsModified() const = 0;
     149             :         virtual void                ClearModified() = 0;
     150             :         virtual void                SetModifyHdl( const Link& _rLink ) = 0;
     151             :     };
     152             : 
     153             :     //==================================================================
     154             :     //= GenericEditImplementation
     155             :     //==================================================================
     156             :     template <class EDIT>
     157           0 :     class GenericEditImplementation : public IEditImplementation
     158             :     {
     159             :         EDIT&   m_rEdit;
     160             :     public:
     161             :         GenericEditImplementation( EDIT& _rEdit );
     162             : 
     163           0 :         EDIT& GetEditWindow() { return static_cast< EDIT& >( GetControl() ); }
     164             : 
     165             :         virtual Control&            GetControl();
     166             : 
     167             :         virtual String              GetText( LineEnd aSeparator ) const;
     168             :         virtual void                SetText( const String& _rStr );
     169             : 
     170             :         virtual sal_Bool                IsReadOnly() const;
     171             :         virtual void                SetReadOnly( sal_Bool bReadOnly );
     172             : 
     173             :         virtual xub_StrLen          GetMaxTextLen() const;
     174             :         virtual void                SetMaxTextLen( xub_StrLen _nMaxLen );
     175             : 
     176             :         virtual Selection           GetSelection() const;
     177             :         virtual void                SetSelection( const Selection& _rSelection );
     178             : 
     179             :         virtual void                ReplaceSelected( const String& _rStr );
     180             :         virtual void                DeleteSelected();
     181             :         virtual String              GetSelected( LineEnd aSeparator ) const;
     182             : 
     183             :         virtual void                SetModified();
     184             :         virtual sal_Bool            IsModified() const;
     185             :         virtual void                ClearModified();
     186             :         virtual void                SetModifyHdl( const Link& _rLink );
     187             :     };
     188             : 
     189             :     #include <svtools/editimplementation.hxx>
     190             : 
     191             :     //==================================================================
     192             :     //= MultiLineTextCell
     193             :     //==================================================================
     194             :     /** a multi line edit which can be used in a cell of a EditBrowseBox
     195             :     */
     196           0 :     class SVT_DLLPUBLIC MultiLineTextCell : public MultiLineEdit
     197             :     {
     198             :     public:
     199           0 :         MultiLineTextCell( Window* _pParent, WinBits _nStyle )
     200           0 :             :MultiLineEdit( _pParent, _nStyle )
     201             :         {
     202           0 :         }
     203             : 
     204             :     protected:
     205             :         // Window overridables
     206             :         virtual long PreNotify( NotifyEvent& rNEvt );
     207             : 
     208             :         // MultiLineEdit overridables
     209             :         virtual void Modify();
     210             : 
     211             :     private:
     212             :         sal_Bool    dispatchKeyEvent( const KeyEvent& _rEvent );
     213             :     };
     214             : 
     215             :     //==================================================================
     216             :     //= concrete edit implementations
     217             :     //==================================================================
     218             :     typedef GenericEditImplementation< Edit >             EditImplementation;
     219             : 
     220             :     typedef GenericEditImplementation< MultiLineTextCell >  MultiLineEditImplementation_Base;
     221           0 :     class SVT_DLLPUBLIC MultiLineEditImplementation : public MultiLineEditImplementation_Base
     222             :     {
     223             :     public:
     224           0 :         MultiLineEditImplementation( MultiLineTextCell& _rEdit ) : MultiLineEditImplementation_Base( _rEdit )
     225             :         {
     226           0 :         }
     227             : 
     228             :         virtual String GetText( LineEnd aSeparator ) const;
     229             :         virtual String GetSelected( LineEnd aSeparator ) const;
     230             :     };
     231             : 
     232             :     //==================================================================
     233             :     //= EditCellController
     234             :     //==================================================================
     235             :     class SVT_DLLPUBLIC EditCellController : public CellController
     236             :     {
     237             :         IEditImplementation*    m_pEditImplementation;
     238             :         sal_Bool                    m_bOwnImplementation;   // did we create m_pEditImplementation?
     239             : 
     240             :     public:
     241             :         TYPEINFO();
     242             :         EditCellController( Edit* _pEdit );
     243             :         EditCellController( IEditImplementation* _pImplementation );
     244             :         ~EditCellController( );
     245             : 
     246             :         const IEditImplementation* GetEditImplementation( ) const { return m_pEditImplementation; }
     247           0 :               IEditImplementation* GetEditImplementation( )       { return m_pEditImplementation; }
     248             : 
     249             :         virtual void SetModified();
     250             :         virtual sal_Bool IsModified() const;
     251             :         virtual void ClearModified();
     252             : 
     253             :     protected:
     254             :         virtual sal_Bool MoveAllowed(const KeyEvent& rEvt) const;
     255             :         virtual void SetModifyHdl(const Link& rLink);
     256             :     };
     257             : 
     258             :     //==================================================================
     259             :     //= SpinCellController
     260             :     //==================================================================
     261           0 :     class SVT_DLLPUBLIC SpinCellController : public CellController
     262             :     {
     263             :     public:
     264             :         TYPEINFO();
     265             :         SpinCellController(SpinField* pSpinField);
     266           0 :         SpinField& GetSpinWindow() const {return (SpinField &)GetWindow();}
     267             : 
     268             :         virtual void SetModified();
     269             :         virtual sal_Bool IsModified() const;
     270             :         virtual void ClearModified();
     271             : 
     272             :     protected:
     273             :         virtual sal_Bool MoveAllowed(const KeyEvent& rEvt) const;
     274             :         virtual void SetModifyHdl(const Link& rLink);
     275             :     };
     276             : 
     277             :     //==================================================================
     278             :     //= CheckBoxControl
     279             :     //==================================================================
     280             :     class SVT_DLLPUBLIC CheckBoxControl : public Control
     281             :     {
     282             :         CheckBox*   pBox;
     283             :         Rectangle   aFocusRect;
     284             :         Link        m_aClickLink,m_aModifyLink;
     285             : 
     286             :     public:
     287             :         CheckBoxControl(Window* pParent, WinBits nWinStyle = 0);
     288             :         ~CheckBoxControl();
     289             : 
     290             :         virtual void GetFocus();
     291             :         virtual long PreNotify(NotifyEvent& rEvt);
     292             :         virtual void Paint(const Rectangle& rClientRect);
     293             :         virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
     294             :         virtual void StateChanged( StateChangedType nStateChange );
     295             :         virtual void DataChanged( const DataChangedEvent& _rEvent );
     296             :         virtual void Resize();
     297             : 
     298           0 :         void SetClickHdl(const Link& rHdl) {m_aClickLink = rHdl;}
     299             :         const Link& GetClickHdl() const {return m_aClickLink;}
     300             : 
     301           0 :         void SetModifyHdl(const Link& rHdl) {m_aModifyLink = rHdl;}
     302             :         const Link& GetModifyHdl() const {return m_aModifyLink;}
     303             : 
     304           0 :         CheckBox&   GetBox() {return *pBox;};
     305             : 
     306             :     private:
     307             :         DECL_LINK( OnClick, void* );
     308             :     };
     309             : 
     310             :     //==================================================================
     311             :     //= CheckBoxCellController
     312             :     //==================================================================
     313           0 :     class SVT_DLLPUBLIC CheckBoxCellController : public CellController
     314             :     {
     315             :     public:
     316             :         TYPEINFO();
     317             : 
     318           0 :         CheckBoxCellController(CheckBoxControl* pWin):CellController(pWin){}
     319             :         CheckBox& GetCheckBox() const;
     320             : 
     321             :         virtual sal_Bool IsModified() const;
     322             :         virtual void ClearModified();
     323             : 
     324             :     protected:
     325             :         virtual void SetModifyHdl(const Link& rLink);
     326             :         virtual sal_Bool WantMouseEvent() const;
     327             :     };
     328             : 
     329             :     //==================================================================
     330             :     //= ComboBoxControl
     331             :     //==================================================================
     332           0 :     class SVT_DLLPUBLIC ComboBoxControl : public ComboBox
     333             :     {
     334             :         friend class ComboBoxCellController;
     335             : 
     336             :     public:
     337             :         ComboBoxControl(Window* pParent, WinBits nWinStyle = 0);
     338             : 
     339             :     protected:
     340             :         virtual long PreNotify( NotifyEvent& rNEvt );
     341             :     };
     342             : 
     343             :     //==================================================================
     344             :     //= ComboBoxCellController
     345             :     //==================================================================
     346           0 :     class SVT_DLLPUBLIC ComboBoxCellController : public CellController
     347             :     {
     348             :     public:
     349             :         TYPEINFO();
     350             : 
     351             :         ComboBoxCellController(ComboBoxControl* pParent);
     352           0 :         ComboBoxControl& GetComboBox() const {return (ComboBoxControl &)GetWindow();}
     353             : 
     354             :         virtual sal_Bool IsModified() const;
     355             :         virtual void ClearModified();
     356             : 
     357             :     protected:
     358             :         virtual sal_Bool MoveAllowed(const KeyEvent& rEvt) const;
     359             :         virtual void SetModifyHdl(const Link& rLink);
     360             :     };
     361             : 
     362             :     //==================================================================
     363             :     //= ListBoxControl
     364             :     //==================================================================
     365           0 :     class SVT_DLLPUBLIC ListBoxControl : public ListBox
     366             :     {
     367             :         friend class ListBoxCellController;
     368             : 
     369             :     public:
     370             :         ListBoxControl(Window* pParent, WinBits nWinStyle = 0);
     371             : 
     372             :     protected:
     373             :         virtual long PreNotify( NotifyEvent& rNEvt );
     374             :     };
     375             : 
     376             :     //==================================================================
     377             :     //= ListBoxCellController
     378             :     //==================================================================
     379           0 :     class SVT_DLLPUBLIC ListBoxCellController : public CellController
     380             :     {
     381             :     public:
     382             :         TYPEINFO();
     383             : 
     384             :         ListBoxCellController(ListBoxControl* pParent);
     385           0 :         ListBoxControl& GetListBox() const {return (ListBoxControl &)GetWindow();}
     386             : 
     387             :         virtual sal_Bool IsModified() const;
     388             :         virtual void ClearModified();
     389             : 
     390             :     protected:
     391             :         virtual sal_Bool MoveAllowed(const KeyEvent& rEvt) const;
     392             :         virtual void SetModifyHdl(const Link& rLink);
     393             :     };
     394             : 
     395             :     //==================================================================
     396             :     //= FormattedFieldCellController
     397             :     //==================================================================
     398           0 :     class SVT_DLLPUBLIC FormattedFieldCellController : public EditCellController
     399             :     {
     400             :     public:
     401             :         TYPEINFO();
     402             :         FormattedFieldCellController( FormattedField* _pFormatted );
     403             : 
     404             :         virtual void CommitModifications();
     405             :     };
     406             : 
     407             :     //==================================================================
     408             :     //= EditBrowserHeader
     409             :     //==================================================================
     410           0 :     class SVT_DLLPUBLIC EditBrowserHeader : public BrowserHeader
     411             :     {
     412             :     public:
     413           0 :         EditBrowserHeader( BrowseBox* pParent, WinBits nWinBits = WB_BUTTONSTYLE )
     414           0 :             :BrowserHeader(pParent, nWinBits){}
     415             : 
     416             :     protected:
     417             :         virtual void DoubleClick();
     418             :     };
     419             : 
     420             :     //==================================================================
     421             :     //= EditBrowseBox
     422             :     //==================================================================
     423             :     class EditBrowseBoxImpl;
     424             :     class SVT_DLLPUBLIC EditBrowseBox: public BrowseBox
     425             :     {
     426             :         friend class EditBrowserHeader;
     427             : 
     428             :         enum BrowseInfo
     429             :         {
     430             :             COLSELECT   =   1,
     431             :             ROWSELECT   =   2,
     432             :             ROWCHANGE   =   4,
     433             :             COLCHANGE   =   8
     434             :         };
     435             : 
     436             :     public:
     437             :         enum RowStatus
     438             :         {
     439             :             CLEAN               =   0,
     440             :             CURRENT             =   1,
     441             :             CURRENTNEW          =   2,
     442             :             MODIFIED            =   3,
     443             :             NEW                 =   4,
     444             :             DELETED             =   5,
     445             :             PRIMARYKEY          =   6,
     446             :             CURRENT_PRIMARYKEY  =   7,
     447             :             FILTER              =   8,
     448             :             HEADERFOOTER        =   9
     449             :         };
     450             : 
     451             :     private:
     452             :         // forbid these ones
     453             :         EditBrowseBox(EditBrowseBox&);
     454             :         EditBrowseBox& operator=(EditBrowseBox&);
     455             : 
     456             :         class BrowserMouseEventPtr
     457             :         {
     458             :             BrowserMouseEvent* pEvent;
     459             :             sal_Bool bDown;
     460             : 
     461             :         public:
     462           0 :             BrowserMouseEventPtr():pEvent(NULL){}
     463           0 :             ~BrowserMouseEventPtr(){Clear();}
     464             : 
     465           0 :             sal_Bool Is() const {return pEvent != NULL;}
     466           0 :             sal_Bool IsDown() const {return bDown;}
     467           0 :             const BrowserMouseEvent* operator->() const {return pEvent;}
     468             :             const BrowserMouseEvent& operator*() const {return *pEvent;}
     469             : 
     470             :             SVT_DLLPUBLIC void Clear();
     471             :             void Set(const BrowserMouseEvent* pEvt, sal_Bool bIsDown);
     472             :         } aMouseEvent;
     473             : 
     474             :         const BrowserMouseEvent* pMouseEvent;   // is set during a mouse event
     475             :         CellControllerRef        aController,
     476             :                                  aOldController;
     477             : 
     478             :         sal_uLong   nStartEvent, nEndEvent, nCellModifiedEvent;     // event ids
     479             :         Window* m_pFocusWhileRequest;
     480             :             // In ActivateCell, we grab the focus asynchronously, but if between requesting activation
     481             :             // and the asynchornous event the focus has changed, we won't grab it for ourself.
     482             : 
     483             :         long    nPaintRow;  // row beeing painted
     484             :         long    nEditRow, nOldEditRow;
     485             :         sal_uInt16  nEditCol, nOldEditCol;
     486             : 
     487             :         sal_Bool            bHasFocus : 1;
     488             :         mutable sal_Bool    bPaintStatus : 1;   // paint a status (image) in the handle column
     489             :         sal_Bool            bActiveBeforeTracking;
     490             : 
     491             :         CheckBoxControl* pCheckBoxPaint;
     492             : 
     493             :         sal_Int32   m_nBrowserFlags;
     494             :         ImageList   m_aStatusImages;
     495             :         ::std::auto_ptr< EditBrowseBoxImpl> m_aImpl;
     496             : 
     497             :     protected:
     498             :         BrowserHeader*  pHeader;
     499             : 
     500             :         sal_Bool isGetCellFocusPending() const { return nStartEvent != 0; }
     501             :         void cancelGetCellFocus() { if (nStartEvent) Application::RemoveUserEvent(nStartEvent); nStartEvent = 0; }
     502             :         void forceGetCellFocus() { cancelGetCellFocus(); LINK(this, EditBrowseBox, StartEditHdl).Call((void*)NULL); }
     503             : 
     504           0 :         BrowserMouseEventPtr& getMouseEvent() { return aMouseEvent; }
     505             : 
     506             :     protected:
     507           0 :         BrowserHeader*  GetHeaderBar() const {return pHeader;}
     508             : 
     509             :         virtual BrowserHeader* CreateHeaderBar(BrowseBox* pParent);
     510             : 
     511             :         // if you want to have an own header ...
     512             :         virtual BrowserHeader* imp_CreateHeaderBar(BrowseBox* pParent);
     513             : 
     514             :         virtual void ColumnMoved(sal_uInt16 nId);
     515             :         virtual void ColumnResized(sal_uInt16 nColId);
     516             :         virtual void Resize();
     517             :         virtual void ArrangeControls(sal_uInt16& nX, sal_uInt16 nY);
     518             :         virtual sal_Bool SeekRow(long nRow);
     519             : 
     520             :         virtual void GetFocus();
     521             :         virtual void LoseFocus();
     522             :         virtual void KeyInput(const KeyEvent& rEvt);
     523             :         virtual void MouseButtonDown(const BrowserMouseEvent& rEvt);
     524             :         virtual void MouseButtonUp(const BrowserMouseEvent& rEvt);
     525             :         virtual void StateChanged( StateChangedType nType );
     526             :         virtual void DataChanged( const DataChangedEvent& rDCEvt );
     527             : 
     528             :         using BrowseBox::MouseButtonUp;
     529             :         using BrowseBox::MouseButtonDown;
     530             : 
     531             :         virtual long PreNotify(NotifyEvent& rNEvt );
     532             :         virtual long Notify(NotifyEvent& rNEvt);
     533             : 
     534             :         virtual void EndScroll();
     535             : 
     536             :         // should be used instead of GetFieldRectPixel, 'cause this method here takes into account the borders
     537             :         Rectangle GetCellRect(long nRow, sal_uInt16 nColId, sal_Bool bRelToBrowser = sal_True) const;
     538             :         virtual sal_uInt32 GetTotalCellWidth(long nRow, sal_uInt16 nColId);
     539             :         virtual sal_uInt32 GetAutoColumnWidth(sal_uInt16 nColId);
     540             : 
     541             :         virtual void PaintStatusCell(OutputDevice& rDev, const Rectangle& rRect) const;
     542             :         virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColId) const = 0;
     543             : 
     544             :         virtual RowStatus GetRowStatus(long nRow) const;
     545             : 
     546             :         virtual void    RowHeightChanged();
     547             : 
     548             :         // callbacks for the data window
     549             :         virtual void    ImplStartTracking();
     550             :         virtual void    ImplTracking();
     551             :         virtual void    ImplEndTracking();
     552             : 
     553             :         // when changing a row:
     554             :         // CursorMoving:    cursor is beeing moved, but GetCurRow() still provides the old row
     555             :         virtual sal_Bool CursorMoving(long nNewRow, sal_uInt16 nNewCol);
     556             : 
     557             :         // cursor has been moved
     558             :         virtual void CursorMoved();
     559             : 
     560             :         virtual void CellModified();        // called whenever a cell has been modified
     561             :         virtual sal_Bool SaveModified();    // called whenever a cell should be left, and it's content should be saved
     562             :                                             // return sal_False prevents leaving the cell
     563             :         virtual sal_Bool SaveRow();         // commit the current row
     564             : 
     565           0 :         virtual sal_Bool IsModified() const {return aController.Is() && aController->IsModified();}
     566             : 
     567             :         virtual CellController* GetController(long nRow, sal_uInt16 nCol);
     568             :         virtual void InitController(CellControllerRef& rController, long nRow, sal_uInt16 nCol);
     569             :         virtual void ResizeController(CellControllerRef& rController, const Rectangle&);
     570             :         virtual void ReleaseController(CellControllerRef& pController, long nRow, sal_uInt16 nCol);
     571             :         virtual void DoubleClick(const BrowserMouseEvent&);
     572             : 
     573           0 :         void ActivateCell() { ActivateCell(GetCurRow(), GetCurColumnId()); }
     574             : 
     575             :         // retrieve the image for the row status
     576             :         virtual Image GetImage(RowStatus) const;
     577             : 
     578             :         // inserting columns
     579             :         // if you don't set a width, this will be calculated automatically
     580             :         // if the id isn't set the smallest unused will do it ...
     581             :         virtual sal_uInt16 AppendColumn(const String& rName, sal_uInt16 nWidth = 0, sal_uInt16 nPos = HEADERBAR_APPEND, sal_uInt16 nId = (sal_uInt16)-1);
     582             : 
     583             :         // called whenever (Shift)Tab or Enter is pressed. If true is returned, these keys
     584             :         // result in traveling to the next or to th previous cell
     585             :         virtual sal_Bool IsTabAllowed(sal_Bool bForward) const;
     586             : 
     587             :         virtual sal_Bool IsCursorMoveAllowed(long nNewRow, sal_uInt16 nNewColId) const;
     588             : 
     589             :         void    PaintTristate(OutputDevice& rDev, const Rectangle& rRect,const TriState& eState,sal_Bool _bEnabled=sal_True) const;
     590             : 
     591             :         void AsynchGetFocus();
     592             :             // secure starting of StartEditHdl
     593             : 
     594             :     public:
     595             :         EditBrowseBox(Window* pParent, sal_Int32 nBrowserFlags = EBBF_NONE, WinBits nBits = WB_TABSTOP, BrowserMode nMode = 0 );
     596             :         EditBrowseBox(Window* pParent, const ResId& rId, sal_Int32 nBrowserFlags = EBBF_NONE, BrowserMode nMode = 0 );
     597             :         ~EditBrowseBox();
     598             : 
     599           0 :         sal_Bool IsEditing() const {return aController.Is();}
     600           0 :         void InvalidateStatusCell(long nRow) {RowModified(nRow, 0);}
     601             :         void InvalidateHandleColumn();
     602             : 
     603             :         // late construction
     604             :         virtual void Init();
     605             :         virtual void RemoveRows();
     606             :         virtual void Dispatch(sal_uInt16 nId);
     607             : 
     608           0 :         CellControllerRef Controller() const { return aController; }
     609           0 :         sal_Int32   GetBrowserFlags() const { return m_nBrowserFlags; }
     610             :         void    SetBrowserFlags(sal_Int32 nFlags);
     611             : 
     612             :         virtual void ActivateCell(long nRow, sal_uInt16 nCol, sal_Bool bSetCellFocus = sal_True);
     613             :         virtual void DeactivateCell(sal_Bool bUpdate = sal_True);
     614             :         // Children ---------------------------------------------------------------
     615             : 
     616             :         /** Creates the accessible object of a data table cell.
     617             :         @param nRow
     618             :             The row index of the cell.
     619             :         @param nColumnId
     620             :             The column ID of the cell.
     621             :         @return
     622             :             The XAccessible interface of the specified cell. */
     623             :         virtual ::com::sun::star::uno::Reference<
     624             :             ::com::sun::star::accessibility::XAccessible >
     625             :         CreateAccessibleCell( sal_Int32 nRow, sal_uInt16 nColumnPos );
     626             : 
     627             :         /** @return  The count of additional controls of the control area. */
     628             :         virtual sal_Int32 GetAccessibleControlCount() const;
     629             : 
     630             :         /** Creates the accessible object of an additional control.
     631             :             @param nIndex
     632             :                 The 0-based index of the control.
     633             :             @return
     634             :                 The XAccessible interface of the specified control. */
     635             :         virtual ::com::sun::star::uno::Reference<
     636             :             ::com::sun::star::accessibility::XAccessible >
     637             :         CreateAccessibleControl( sal_Int32 nIndex );
     638             : 
     639             :         /** Creates the accessible object of a column header.
     640             :             @param nColumnId
     641             :                 The column ID of the header.
     642             :             @return
     643             :                 The XAccessible interface of the specified column header. */
     644             :         virtual ::com::sun::star::uno::Reference<
     645             :             ::com::sun::star::accessibility::XAccessible >
     646             :         CreateAccessibleRowHeader( sal_Int32 _nRow );
     647             : 
     648             :         /** Sets focus to current cell of the data table. */
     649             :         virtual void GrabTableFocus();
     650             : 
     651             :         virtual Rectangle GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex);
     652             :         virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint);
     653             : 
     654             :         ::com::sun::star::uno::Reference<
     655             :             ::com::sun::star::accessibility::XAccessible > CreateAccessibleCheckBoxCell(long _nRow, sal_uInt16 _nColumnPos,const TriState& eState);
     656             :     protected:
     657             :         // creates the accessible which wraps the active cell
     658             :         void    implCreateActiveAccessible( );
     659             : 
     660             :     private:
     661             :         virtual void PaintField(OutputDevice& rDev, const Rectangle& rRect,
     662             :                                 sal_uInt16 nColumnId ) const;
     663             :         using Control::ImplInitSettings;
     664             :         SVT_DLLPRIVATE void ImplInitSettings( sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground );
     665             :         SVT_DLLPRIVATE void DetermineFocus( const sal_uInt16 _nGetFocusFlags = 0);
     666             :         inline void HideAndDisable(CellControllerRef& rController);
     667             :         inline void EnableAndShow() const;
     668             : 
     669             :         SVT_DLLPRIVATE void implActivateCellOnMouseEvent(const BrowserMouseEvent& _rEvt, sal_Bool _bUp);
     670             :         SVT_DLLPRIVATE void impl_construct();
     671             : 
     672             :         DECL_DLLPRIVATE_LINK(ModifyHdl, void* );
     673             :         DECL_DLLPRIVATE_LINK(StartEditHdl, void* );
     674             :         DECL_DLLPRIVATE_LINK(EndEditHdl, void* );
     675             :         DECL_DLLPRIVATE_LINK(CellModifiedHdl, void* );
     676             :     };
     677             : 
     678             : // .......................................................................
     679             : }   // namespace svt
     680             : // .......................................................................
     681             : 
     682             : #undef SVTOOLS_IN_EDITBROWSEBOX_HXX
     683             : #endif // _SVTOOLS_EDITBROWSEBOX_HXX_
     684             : 
     685             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10