2000-09-18 16:07:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
|
|
|
* $RCSfile: svimpbox.hxx,v $
|
|
|
|
*
|
2004-11-17 14:01:51 +00:00
|
|
|
* $Revision: 1.15 $
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2004-11-17 14:01:51 +00:00
|
|
|
* last change: $Author: obo $ $Date: 2004-11-17 15:01:51 $
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
|
|
|
* The Contents of this file are made available subject to the terms of
|
|
|
|
* either of the following licenses
|
|
|
|
*
|
|
|
|
* - GNU Lesser General Public License Version 2.1
|
|
|
|
* - Sun Industry Standards Source License Version 1.1
|
|
|
|
*
|
|
|
|
* Sun Microsystems Inc., October, 2000
|
|
|
|
*
|
|
|
|
* GNU Lesser General Public License Version 2.1
|
|
|
|
* =============================================
|
|
|
|
* Copyright 2000 by Sun Microsystems, Inc.
|
|
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License version 2.1, as published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
* MA 02111-1307 USA
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Sun Industry Standards Source License Version 1.1
|
|
|
|
* =================================================
|
|
|
|
* The contents of this file are subject to the Sun Industry Standards
|
|
|
|
* Source License Version 1.1 (the "License"); You may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of the
|
|
|
|
* License at http://www.openoffice.org/license.html.
|
|
|
|
*
|
|
|
|
* Software provided under this License is provided on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
|
|
|
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
|
|
|
|
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
|
|
|
|
* See the License for the specific provisions governing your rights and
|
|
|
|
* obligations concerning the Software.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
|
|
|
|
*
|
|
|
|
* Copyright: 2000 by Sun Microsystems, Inc.
|
|
|
|
*
|
|
|
|
* All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s): _______________________________________
|
|
|
|
*
|
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#ifndef _SVIMPLBOX_HXX
|
|
|
|
#define _SVIMPLBOX_HXX
|
|
|
|
|
|
|
|
#ifndef _SELENG_HXX
|
|
|
|
#include <vcl/seleng.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SCRBAR_HXX
|
|
|
|
#include <vcl/scrbar.hxx>
|
|
|
|
#endif
|
2002-06-12 06:52:28 +00:00
|
|
|
#ifndef _VCL_VCLEVENT_HXX
|
|
|
|
#include <vcl/vclevent.hxx>
|
|
|
|
#endif
|
2002-09-06 08:06:09 +00:00
|
|
|
// #102891# ----------------
|
|
|
|
#ifndef _UNOTOOLS_INTLWRAPPER_HXX
|
|
|
|
#include <unotools/intlwrapper.hxx>
|
|
|
|
#endif
|
2003-03-27 13:40:07 +00:00
|
|
|
// #97680# -----------------
|
|
|
|
#include <vector>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
class SvTreeListBox;
|
|
|
|
class Point;
|
|
|
|
class DropEvent;
|
|
|
|
class SvLBoxTreeList;
|
|
|
|
class SvImpLBox;
|
|
|
|
class SvLBoxEntry;
|
|
|
|
class SvLBoxItem;
|
|
|
|
class SvLBoxTab;
|
|
|
|
class TabBar;
|
|
|
|
|
|
|
|
class ImpLBSelEng : public FunctionSet
|
|
|
|
{
|
|
|
|
SvImpLBox* pImp;
|
|
|
|
SelectionEngine* pSelEng;
|
|
|
|
SvTreeListBox* pView;
|
|
|
|
|
|
|
|
public:
|
|
|
|
ImpLBSelEng( SvImpLBox* pImp, SelectionEngine* pSelEng,
|
|
|
|
SvTreeListBox* pView );
|
|
|
|
~ImpLBSelEng();
|
|
|
|
void BeginDrag();
|
|
|
|
void CreateAnchor();
|
|
|
|
void DestroyAnchor();
|
|
|
|
BOOL SetCursorAtPoint( const Point& rPoint,
|
|
|
|
BOOL bDontSelectAtCursor=FALSE );
|
|
|
|
BOOL IsSelectionAtPoint( const Point& rPoint );
|
|
|
|
void DeselectAtPoint( const Point& rPoint );
|
|
|
|
void DeselectAll();
|
|
|
|
};
|
|
|
|
|
|
|
|
// Flags fuer nFlag
|
|
|
|
#define F_VER_SBARSIZE_WITH_HBAR 0x0001
|
|
|
|
#define F_HOR_SBARSIZE_WITH_VBAR 0x0002
|
|
|
|
#define F_IGNORE_NEXT_MOUSEMOVE 0x0004 // OS/2 only
|
|
|
|
#define F_IN_SCROLLING 0x0008
|
|
|
|
#define F_DESEL_ALL 0x0010
|
|
|
|
#define F_START_EDITTIMER 0x0020 // MAC only
|
|
|
|
#define F_IGNORE_SELECT 0x0040
|
|
|
|
#define F_IN_RESIZE 0x0080
|
|
|
|
#define F_REMOVED_ENTRY_INVISIBLE 0x0100
|
|
|
|
#define F_REMOVED_RECALC_MOST_RIGHT 0x0200
|
|
|
|
#define F_IGNORE_CHANGED_TABS 0x0400
|
|
|
|
#define F_PAINTED 0x0800
|
|
|
|
#define F_IN_PAINT 0x1000
|
|
|
|
#define F_ENDSCROLL_SET_VIS_SIZE 0x2000
|
|
|
|
#define F_FILLING 0x4000
|
|
|
|
|
|
|
|
|
|
|
|
class SvImpLBox
|
|
|
|
{
|
|
|
|
friend class ImpLBSelEng;
|
|
|
|
friend class SvTreeListBox;
|
|
|
|
private:
|
|
|
|
SvTreeListBox* pView;
|
|
|
|
SvLBoxTreeList* pTree;
|
|
|
|
SvLBoxEntry* pCursor;
|
|
|
|
SvLBoxEntry* pStartEntry;
|
|
|
|
SvLBoxEntry* pAnchor;
|
|
|
|
SvLBoxEntry* pMostRightEntry;
|
|
|
|
SvLBoxButton* pActiveButton;
|
|
|
|
SvLBoxEntry* pActiveEntry;
|
|
|
|
SvLBoxTab* pActiveTab;
|
|
|
|
TabBar* pTabBar;
|
|
|
|
|
|
|
|
ScrollBar aVerSBar;
|
|
|
|
ScrollBar aHorSBar;
|
|
|
|
ScrollBarBox aScrBarBox;
|
|
|
|
|
2004-09-20 14:12:07 +00:00
|
|
|
static Image* s_pDefCollapsed;
|
|
|
|
static Image* s_pDefExpanded;
|
|
|
|
static Image* s_pDefCollapsedHC;
|
|
|
|
static Image* s_pDefExpandedHC;
|
2004-11-17 14:01:51 +00:00
|
|
|
static oslInterlockedCount s_nImageRefCount; /// When 0 all static images will be destroyed
|
2004-09-20 14:12:07 +00:00
|
|
|
|
2002-05-17 07:31:59 +00:00
|
|
|
// Node Bitmaps
|
|
|
|
enum ImageType
|
|
|
|
{
|
|
|
|
itNodeExpanded = 0, // node is expanded ( usually a bitmap showing a minus )
|
|
|
|
itNodeCollapsed, // node is collapsed ( usually a bitmap showing a plus )
|
|
|
|
itNodeDontKnow, // don't know the node state
|
|
|
|
itEntryDefExpanded, // default for expanded entries
|
|
|
|
itEntryDefCollapsed, // default for collapsed entries
|
|
|
|
|
|
|
|
IT_IMAGE_COUNT
|
|
|
|
};
|
|
|
|
|
|
|
|
// all our images
|
|
|
|
Image m_aNodeAndEntryImages[ IT_IMAGE_COUNT ];
|
|
|
|
// plus the high contrast versions
|
|
|
|
Image m_aNodeAndEntryImages_HC[ IT_IMAGE_COUNT ];
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
// wg. kompat. hier
|
|
|
|
Size aOutputSize;
|
|
|
|
SelectionEngine aSelEng;
|
|
|
|
ImpLBSelEng aFctSet;
|
|
|
|
Timer aAsyncBeginDragTimer;
|
|
|
|
Point aAsyncBeginDragPos;
|
|
|
|
|
|
|
|
long nYoffsNodeBmp;
|
|
|
|
long nNodeBmpTabDistance; // typisch kleiner 0
|
|
|
|
long nNodeBmpWidth;
|
|
|
|
long nNextVerVisSize;
|
|
|
|
long nMostRight;
|
|
|
|
ULONG nVisibleCount; // Anzahl Zeilen im Control
|
|
|
|
ULONG nCurUserEvent; //-1 == kein Userevent amn Laufen
|
|
|
|
short nHorSBarHeight, nVerSBarWidth;
|
|
|
|
USHORT nFlags;
|
2003-03-27 13:40:07 +00:00
|
|
|
USHORT nCurTabPos;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
WinBits nWinBits;
|
2001-09-14 13:49:08 +00:00
|
|
|
BOOL bSimpleTravel : 1; // ist TRUE bei SINGLE_SELECTION
|
|
|
|
BOOL bUpdateMode : 1;
|
|
|
|
BOOL bInVScrollHdl : 1;
|
|
|
|
BOOL bAsyncBeginDrag : 1;
|
|
|
|
BOOL bSubLstOpRet : 1; // open/close sublist with return/enter, defaulted with FALSE
|
|
|
|
BOOL bSubLstOpLR : 1; // open/close sublist with cursor left/right, defaulted with FALSE
|
2002-03-13 13:28:49 +00:00
|
|
|
BOOL bContextMenuHandling : 1;
|
2003-03-27 13:40:07 +00:00
|
|
|
BOOL bIsCellFocusEnabled : 1;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-23 10:44:30 +00:00
|
|
|
Point aEditClickPos;
|
2000-09-18 16:07:07 +00:00
|
|
|
Timer aEditTimer;
|
2002-09-06 08:06:09 +00:00
|
|
|
|
|
|
|
// #102891# -------------------
|
|
|
|
IntlWrapper * pIntlWrapper;
|
|
|
|
|
2003-03-27 13:40:07 +00:00
|
|
|
// #97680# --------------------
|
|
|
|
std::vector< short > aContextBmpWidthVector;
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
DECL_LINK( EditTimerCall, Timer * );
|
|
|
|
|
|
|
|
DECL_LINK( BeginDragHdl, void* );
|
|
|
|
DECL_LINK( MyUserEvent,void*);
|
|
|
|
void StopUserEvent();
|
|
|
|
|
|
|
|
void InvalidateEntriesFrom( long nY ) const;
|
|
|
|
void InvalidateEntry( long nY ) const;
|
|
|
|
void ShowVerSBar();
|
|
|
|
// setzt Thumb auf FirstEntryToDraw
|
|
|
|
void SyncVerThumb();
|
|
|
|
BOOL IsLineVisible( long nY ) const;
|
|
|
|
long GetEntryLine( SvLBoxEntry* pEntry ) const;
|
|
|
|
void FillView();
|
|
|
|
void CursorDown();
|
|
|
|
void CursorUp();
|
|
|
|
void KeyLeftRight( long nDiff );
|
|
|
|
void PageDown( USHORT nDelta );
|
|
|
|
void PageUp( USHORT nDelta );
|
|
|
|
|
|
|
|
void SetCursor( SvLBoxEntry* pEntry, BOOL bForceNoSelect = FALSE );
|
|
|
|
|
|
|
|
void DrawNet();
|
|
|
|
|
|
|
|
// ScrollBar-Handler
|
|
|
|
DECL_LINK( ScrollUpDownHdl, ScrollBar * );
|
|
|
|
DECL_LINK( ScrollLeftRightHdl, ScrollBar * );
|
|
|
|
DECL_LINK( EndScrollHdl, ScrollBar * );
|
|
|
|
|
|
|
|
void SetNodeBmpYOffset( const Image& );
|
|
|
|
void SetNodeBmpTabDistance();
|
|
|
|
|
|
|
|
// Selection-Engine
|
|
|
|
SvLBoxEntry* MakePointVisible( const Point& rPoint,
|
|
|
|
BOOL bNotifyScroll=TRUE );
|
|
|
|
|
|
|
|
void SetAnchorSelection( SvLBoxEntry* pOld,
|
|
|
|
SvLBoxEntry* pNewCursor );
|
|
|
|
void BeginDrag();
|
|
|
|
BOOL ButtonDownCheckCtrl( const MouseEvent& rMEvt,
|
|
|
|
SvLBoxEntry* pEntry, long nY );
|
|
|
|
BOOL MouseMoveCheckCtrl( const MouseEvent& rMEvt,
|
|
|
|
SvLBoxEntry* pEntry );
|
|
|
|
BOOL ButtonUpCheckCtrl( const MouseEvent& rMEvt );
|
|
|
|
BOOL ButtonDownCheckExpand( const MouseEvent&,
|
|
|
|
SvLBoxEntry*,long nY );
|
|
|
|
|
|
|
|
void PositionScrollBars( Size& rOSize, USHORT nMask );
|
|
|
|
USHORT AdjustScrollBars( Size& rSize );
|
|
|
|
|
|
|
|
void BeginScroll();
|
|
|
|
void EndScroll();
|
|
|
|
BOOL InScroll() const { return (BOOL)(nFlags & F_IN_SCROLLING)!=0;}
|
|
|
|
Rectangle GetVisibleArea() const;
|
|
|
|
BOOL EntryReallyHit(SvLBoxEntry* pEntry,const Point& rPos,long nLine);
|
|
|
|
void InitScrollBarBox();
|
|
|
|
SvLBoxTab* NextTab( SvLBoxTab* );
|
|
|
|
|
|
|
|
BOOL SetMostRight( SvLBoxEntry* pEntry );
|
|
|
|
void FindMostRight( SvLBoxEntry* EntryToIgnore );
|
|
|
|
void FindMostRight( SvLBoxEntry* pParent, SvLBoxEntry* EntryToIgnore );
|
|
|
|
void FindMostRight_Impl( SvLBoxEntry* pParent,SvLBoxEntry* EntryToIgnore );
|
|
|
|
void NotifyTabsChanged();
|
|
|
|
|
2001-09-14 13:49:08 +00:00
|
|
|
inline BOOL IsExpandable() const // if element at cursor can be expanded in general
|
|
|
|
{ return pCursor->HasChilds() || pCursor->HasChildsOnDemand(); }
|
|
|
|
inline BOOL IsNowExpandable() const // if element at cursor can be expanded at this moment
|
|
|
|
{ return IsExpandable() && !pView->IsExpanded( pCursor ); }
|
2002-07-19 12:25:51 +00:00
|
|
|
|
|
|
|
static void implInitDefaultNodeImages();
|
2002-09-06 08:06:09 +00:00
|
|
|
|
|
|
|
// #102891# -------------------
|
|
|
|
void UpdateIntlWrapper();
|
|
|
|
|
2003-03-27 13:40:07 +00:00
|
|
|
// #97680# --------------------
|
|
|
|
short UpdateContextBmpWidthVector( SvLBoxEntry* pEntry, short nWidth );
|
|
|
|
void UpdateContextBmpWidthMax( SvLBoxEntry* pEntry );
|
|
|
|
void UpdateContextBmpWidthVectorFromMovedEntry( SvLBoxEntry* pEntry );
|
|
|
|
|
|
|
|
void CalcCellFocusRect( SvLBoxEntry* pEntry, Rectangle& rRect );
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
public:
|
|
|
|
SvImpLBox( SvTreeListBox* pView, SvLBoxTreeList*, WinBits nWinStyle );
|
|
|
|
~SvImpLBox();
|
|
|
|
|
|
|
|
void Clear();
|
|
|
|
void SetWindowBits( WinBits nWinStyle );
|
|
|
|
void SetModel( SvLBoxTreeList* pModel ) { pTree = pModel;}
|
|
|
|
|
|
|
|
void EntryInserted( SvLBoxEntry*);
|
|
|
|
void RemovingEntry( SvLBoxEntry* pEntry );
|
|
|
|
void EntryRemoved();
|
|
|
|
void MovingEntry( SvLBoxEntry* pEntry );
|
|
|
|
void EntryMoved( SvLBoxEntry* pEntry );
|
|
|
|
void TreeInserted( SvLBoxEntry* pEntry );
|
|
|
|
|
|
|
|
void IndentChanged( short nIndentPixel );
|
|
|
|
void EntryExpanded( SvLBoxEntry* pEntry );
|
|
|
|
void EntryCollapsed( SvLBoxEntry* pEntry );
|
|
|
|
void CollapsingEntry( SvLBoxEntry* pEntry );
|
|
|
|
void EntrySelected( SvLBoxEntry*, BOOL bSelect );
|
|
|
|
|
|
|
|
void Paint( const Rectangle& rRect );
|
|
|
|
void RepaintSelectionItems();
|
|
|
|
void MouseButtonDown( const MouseEvent& );
|
|
|
|
void MouseButtonUp( const MouseEvent& );
|
|
|
|
void MouseMove( const MouseEvent&);
|
|
|
|
BOOL KeyInput( const KeyEvent& );
|
|
|
|
void Resize();
|
|
|
|
void GetFocus();
|
|
|
|
void LoseFocus();
|
|
|
|
void UpdateAll(
|
|
|
|
BOOL bInvalidateCompleteView= TRUE,
|
|
|
|
BOOL bUpdateVerSBar = TRUE );
|
|
|
|
void SetEntryHeight( short nHeight );
|
|
|
|
void PaintEntry( SvLBoxEntry* pEntry );
|
|
|
|
void InvalidateEntry( SvLBoxEntry* );
|
|
|
|
void RecalcFocusRect();
|
|
|
|
|
|
|
|
inline void SelectEntry( SvLBoxEntry* pEntry, BOOL bSelect );
|
|
|
|
void SetDragDropMode( DragDropMode eDDMode );
|
|
|
|
void SetSelectionMode( SelectionMode eSelMode );
|
|
|
|
void SetAddMode( BOOL bAdd ) { aSelEng.AddAlways(FALSE); }
|
|
|
|
BOOL IsAddMode() const { return aSelEng.IsAlwaysAdding(); }
|
|
|
|
|
|
|
|
SvLBoxEntry* GetCurrentEntry() const { return pCursor; }
|
|
|
|
BOOL IsEntryInView( SvLBoxEntry* ) const;
|
|
|
|
SvLBoxEntry* GetEntry( const Point& rPos ) const;
|
|
|
|
// gibt letzten Eintrag zurueck, falls Pos unter letztem Eintrag
|
|
|
|
SvLBoxEntry* GetClickedEntry( const Point& ) const;
|
|
|
|
SvLBoxEntry* GetCurEntry() const { return pCursor; }
|
|
|
|
void SetCurEntry( SvLBoxEntry* );
|
|
|
|
Point GetEntryPos( SvLBoxEntry* ) const;
|
|
|
|
void MakeVisible( SvLBoxEntry* pEntry, BOOL bMoveToTop=FALSE );
|
|
|
|
|
|
|
|
void PaintDDCursor( SvLBoxEntry* );
|
|
|
|
|
2002-05-17 07:31:59 +00:00
|
|
|
// Images
|
|
|
|
inline Image& implGetImageLocation( const ImageType _eType, BmpColorMode _eMode );
|
|
|
|
inline Image& implGetImageLocationWithFallback( const ImageType _eType, BmpColorMode _eMode ) const;
|
|
|
|
|
|
|
|
inline void SetExpandedNodeBmp( const Image& _rImg, BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
inline void SetCollapsedNodeBmp( const Image& _rImg, BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
inline void SetDontKnowNodeBmp( const Image& rImg, BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
|
|
|
|
inline const Image& GetExpandedNodeBmp( BmpColorMode _eMode = BMP_COLOR_NORMAL ) const;
|
|
|
|
inline const Image& GetCollapsedNodeBmp( BmpColorMode _eMode = BMP_COLOR_NORMAL ) const;
|
|
|
|
inline const Image& GetDontKnowNodeBmp( BmpColorMode _eMode = BMP_COLOR_NORMAL ) const;
|
|
|
|
|
|
|
|
inline void SetDefaultEntryExpBmp( const Image& _rImg, BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
inline void SetDefaultEntryColBmp( const Image& _rImg, BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
inline const Image& GetDefaultEntryExpBmp( BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
inline const Image& GetDefaultEntryColBmp( BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-07-19 12:25:51 +00:00
|
|
|
static const Image& GetDefaultExpandedNodeImage( BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
static const Image& GetDefaultCollapsedNodeImage( BmpColorMode _eMode = BMP_COLOR_NORMAL );
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
const Size& GetOutputSize() const { return aOutputSize;}
|
|
|
|
void KeyUp( BOOL bPageUp, BOOL bNotifyScroll = TRUE );
|
|
|
|
void KeyDown( BOOL bPageDown, BOOL bNotifyScroll = TRUE );
|
|
|
|
void Command( const CommandEvent& rCEvt );
|
|
|
|
|
|
|
|
void Invalidate();
|
|
|
|
void DestroyAnchor() { pAnchor=0; aSelEng.Reset(); }
|
|
|
|
void SelAllDestrAnch( BOOL bSelect,
|
|
|
|
BOOL bDestroyAnchor = TRUE,
|
|
|
|
BOOL bSingleSelToo = FALSE );
|
|
|
|
void ShowCursor( BOOL bShow );
|
|
|
|
|
|
|
|
BOOL RequestHelp( const HelpEvent& rHEvt );
|
|
|
|
void EndSelection();
|
|
|
|
BOOL IsNodeButton( const Point& rPosPixel, SvLBoxEntry* pEntry ) const;
|
|
|
|
void RepaintScrollBars();
|
|
|
|
void EnableAsyncDrag( BOOL b) { bAsyncBeginDrag = b; }
|
|
|
|
void SetUpdateMode( BOOL );
|
|
|
|
void SetUpdateModeFast( BOOL );
|
|
|
|
BOOL GetUpdateMode() const { return bUpdateMode; }
|
|
|
|
Rectangle GetClipRegionRect() const;
|
|
|
|
BOOL HasHorScrollBar() const { return aHorSBar.IsVisible(); }
|
|
|
|
void ShowFocusRect( const SvLBoxEntry* pEntry );
|
|
|
|
void SetTabBar( TabBar* pTabBar );
|
2001-10-29 13:32:40 +00:00
|
|
|
void CancelPendingEdit();
|
2002-06-12 06:52:28 +00:00
|
|
|
|
|
|
|
void CallEventListeners( ULONG nEvent, void* pData = NULL );
|
2003-03-27 13:40:07 +00:00
|
|
|
|
|
|
|
/** Enables, that one cell of a tablistbox entry can be focused */
|
|
|
|
inline BOOL IsCellFocusEnabled() const { return bIsCellFocusEnabled; }
|
|
|
|
inline void EnableCellFocus() { bIsCellFocusEnabled = TRUE; }
|
|
|
|
bool SetCurrentTabPos( USHORT _nNewPos );
|
|
|
|
inline USHORT GetCurrentTabPos() const { return nCurTabPos; }
|
2000-09-18 16:07:07 +00:00
|
|
|
};
|
|
|
|
|
2002-05-17 07:31:59 +00:00
|
|
|
inline Image& SvImpLBox::implGetImageLocation( const ImageType _eType, BmpColorMode _eMode )
|
|
|
|
{
|
|
|
|
DBG_ASSERT( ( BMP_COLOR_HIGHCONTRAST == _eMode ) || ( BMP_COLOR_NORMAL == _eMode ),
|
|
|
|
"SvImpLBox::implGetImageLocation: invalid mode!" );
|
|
|
|
DBG_ASSERT( ( _eType >= 0 ) && ( _eType < IT_IMAGE_COUNT ),
|
|
|
|
"SvImpLBox::implGetImageLocation: invalid image index (will crash)!" );
|
|
|
|
|
|
|
|
Image* _pSet = ( BMP_COLOR_HIGHCONTRAST == _eMode ) ? m_aNodeAndEntryImages_HC : m_aNodeAndEntryImages;
|
|
|
|
return *( _pSet + (sal_Int32)_eType );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline Image& SvImpLBox::implGetImageLocationWithFallback( const ImageType _eType, BmpColorMode _eMode ) const
|
|
|
|
{
|
|
|
|
Image& rImage = const_cast< SvImpLBox* >( this )->implGetImageLocation( _eType, _eMode );
|
|
|
|
if ( !rImage )
|
|
|
|
// fallback to normal images in case the one for the special mode has not been set
|
|
|
|
rImage = const_cast< SvImpLBox* >( this )->implGetImageLocation( _eType, BMP_COLOR_NORMAL );
|
|
|
|
return rImage;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void SvImpLBox::SetDontKnowNodeBmp( const Image& rImg, BmpColorMode _eMode )
|
|
|
|
{
|
|
|
|
implGetImageLocation( itNodeDontKnow, _eMode ) = rImg;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void SvImpLBox::SetExpandedNodeBmp( const Image& rImg, BmpColorMode _eMode )
|
|
|
|
{
|
|
|
|
implGetImageLocation( itNodeExpanded, _eMode ) = rImg;
|
|
|
|
SetNodeBmpYOffset( rImg );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void SvImpLBox::SetCollapsedNodeBmp( const Image& rImg, BmpColorMode _eMode )
|
|
|
|
{
|
|
|
|
implGetImageLocation( itNodeCollapsed, _eMode ) = rImg;
|
|
|
|
SetNodeBmpYOffset( rImg );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline const Image& SvImpLBox::GetDontKnowNodeBmp( BmpColorMode _eMode ) const
|
|
|
|
{
|
|
|
|
return implGetImageLocationWithFallback( itNodeDontKnow, _eMode );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline const Image& SvImpLBox::GetExpandedNodeBmp( BmpColorMode _eMode ) const
|
|
|
|
{
|
|
|
|
return implGetImageLocationWithFallback( itNodeExpanded, _eMode );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline const Image& SvImpLBox::GetCollapsedNodeBmp( BmpColorMode _eMode ) const
|
|
|
|
{
|
|
|
|
return implGetImageLocationWithFallback( itNodeCollapsed, _eMode );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void SvImpLBox::SetDefaultEntryExpBmp( const Image& _rImg, BmpColorMode _eMode )
|
|
|
|
{
|
|
|
|
implGetImageLocation( itEntryDefExpanded, _eMode ) = _rImg;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void SvImpLBox::SetDefaultEntryColBmp( const Image& _rImg, BmpColorMode _eMode )
|
|
|
|
{
|
|
|
|
implGetImageLocation( itEntryDefCollapsed, _eMode ) = _rImg;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline const Image& SvImpLBox::GetDefaultEntryExpBmp( BmpColorMode _eMode )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-17 07:31:59 +00:00
|
|
|
return implGetImageLocationWithFallback( itEntryDefExpanded, _eMode );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-17 07:31:59 +00:00
|
|
|
inline const Image& SvImpLBox::GetDefaultEntryColBmp( BmpColorMode _eMode )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-17 07:31:59 +00:00
|
|
|
return implGetImageLocationWithFallback( itEntryDefCollapsed, _eMode );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
inline Point SvImpLBox::GetEntryPos( SvLBoxEntry* pEntry ) const
|
|
|
|
{
|
|
|
|
return Point( 0, GetEntryLine( pEntry ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void SvImpLBox::PaintEntry( SvLBoxEntry* pEntry )
|
|
|
|
{
|
|
|
|
long nY = GetEntryLine( pEntry );
|
|
|
|
pView->PaintEntry( pEntry, nY );
|
|
|
|
}
|
|
|
|
|
|
|
|
inline BOOL SvImpLBox::IsLineVisible( long nY ) const
|
|
|
|
{
|
|
|
|
BOOL bRet = TRUE;
|
|
|
|
if ( nY < 0 || nY >= aOutputSize.Height() )
|
|
|
|
bRet = FALSE;
|
|
|
|
return bRet;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void SvImpLBox::TreeInserted( SvLBoxEntry* pTree )
|
|
|
|
{
|
|
|
|
EntryInserted( pTree );
|
|
|
|
}
|
|
|
|
|
2003-03-27 13:40:07 +00:00
|
|
|
#endif // #ifndef _SVIMPLBOX_HXX
|
2000-09-18 16:07:07 +00:00
|
|
|
|