selection in the tree view. git-svn-id: svn://10.0.0.236/trunk@16695 18797224-902f-48f8-a5cc-f745e15eee43
136 lines
5.0 KiB
C++
136 lines
5.0 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
#ifndef nsHTTreeDataModel_h___
|
|
#define nsHTTreeDataModel_h___
|
|
|
|
#include "nsHTDataModel.h"
|
|
#include "nsTreeDataModel.h"
|
|
#include "nsIImageObserver.h"
|
|
|
|
class nsTreeColumn;
|
|
class nsTreeControlStripItem;
|
|
|
|
//------------------------------------------------------------
|
|
// An abstract API for communication with a hierarchical store of
|
|
// information. Iteration over children in the model is provided.
|
|
// The model also provides a flattened view of the tree (a list
|
|
// of visible nodes).
|
|
//------------------------------------------------------------
|
|
|
|
class nsHTTreeDataModel : public nsHTDataModel, public nsTreeDataModel, public nsIImageRequestObserver
|
|
|
|
{
|
|
public:
|
|
nsHTTreeDataModel();
|
|
virtual ~nsHTTreeDataModel();
|
|
|
|
// Isupports interface ------------------
|
|
NS_DECL_ISUPPORTS
|
|
|
|
// IImageRequestObserver Interface ----------------
|
|
void Notify(nsIImageRequest *aImageRequest,
|
|
nsIImage *aImage,
|
|
nsImageNotification aNotificationType,
|
|
PRInt32 aParam1, PRInt32 aParam2,
|
|
void *aParam3);
|
|
|
|
void NotifyError(nsIImageRequest *aImageRequest,
|
|
nsImageError aErrorType);
|
|
// End of interfaces
|
|
|
|
// Functions inherited from abstract hierarchical data model should be delegated to our
|
|
// concrete base class
|
|
// Setting the Content Root for the tree
|
|
virtual void SetContentRoot(nsIContent* pContent);
|
|
virtual nsHierarchicalDataItem* GetRoot() const { return GetRootDelegate(); }
|
|
virtual PRUint32 GetFirstVisibleItemIndex() const { return GetFirstVisibleItemIndexDelegate(); };
|
|
virtual void SetFirstVisibleItemIndex(PRUint32 index) { SetFirstVisibleItemIndexDelegate(index); };
|
|
virtual nsHierarchicalDataItem* GetNthItem(PRUint32 n) const { return GetNthItemDelegate(n) ;};
|
|
virtual void SetDataModelListener(nsDataModelWidget* pListener) { SetDataModelListenerDelegate(pListener); };
|
|
|
|
virtual void SetSelection(nsHierarchicalDataItem* pDataItem)
|
|
{ SetSelectionDelegate(pDataItem); };
|
|
|
|
virtual void ToggleSelection(nsHierarchicalDataItem* pDataItem)
|
|
{ ToggleSelectionDelegate(pDataItem); };
|
|
|
|
virtual void RangedSelection(PRUint32 n, PRUint32 count)
|
|
{ RangedSelectionDelegate(n, count); };
|
|
|
|
virtual void ClearSelection()
|
|
{ ClearSelectionDelegate(); };
|
|
|
|
// End of delegated functions
|
|
|
|
// Column Iteration
|
|
virtual PRUint32 GetVisibleColumnCount() const;
|
|
virtual PRUint32 GetColumnCount() const;
|
|
virtual nsTreeColumn* GetNthColumn(PRUint32 n) const;
|
|
virtual void SetVisibleColumnCount(PRUint32 n);
|
|
|
|
// Control Strip Iteration
|
|
virtual PRUint32 GetControlStripItemCount() const;
|
|
virtual nsTreeControlStripItem* GetNthControlStripItem(PRUint32 n) const;
|
|
virtual void GetControlStripCloseText(nsString& closeText) const;
|
|
|
|
// Visibility Queries
|
|
virtual PRBool ShowTitleBar() const;
|
|
virtual PRBool ShowTitleBarText() const;
|
|
virtual PRBool ShowColumnHeaders() const;
|
|
virtual PRBool ShowControlStrip() const;
|
|
|
|
// Style Retrievers
|
|
virtual void GetTitleBarStyle(nsIDeviceContext* pContext,
|
|
nsBasicStyleInfo& styleInfo) const;
|
|
virtual void GetColumnHeaderStyle(nsIDeviceContext* pContext,
|
|
nsColumnHeaderStyleInfo& styleInfo) const;
|
|
virtual void GetControlStripStyle(nsIDeviceContext* pContext,
|
|
nsBasicStyleInfo& styleInfo) const;
|
|
|
|
virtual PRInt32 GetSelectedColumnIndex() const { return mSelectedColumnIndex; };
|
|
virtual void SetSelectedColumnIndex(PRInt32 n) { mSelectedColumnIndex = n; };
|
|
|
|
// Text for the title bar, control strip and column headers
|
|
virtual void GetTitleBarText(nsString& text) const;
|
|
|
|
public:
|
|
// Inherited functions from HTDataModel go here.
|
|
nsHierarchicalDataItem* CreateDataItemWithContentNode(nsIContent* pContent);
|
|
|
|
protected:
|
|
nsIImageRequest* RequestImage(nsString& reqUrl) const; // Helper to kick off the image load.
|
|
nsIImage* GetTitleBGImage() const;
|
|
nsIImage* GetControlStripBGImage() const;
|
|
nsIImage* GetColumnHeaderBGImage() const;
|
|
|
|
private:
|
|
nsVoidArray mColumnArray;
|
|
nsTreeControlStripItem *mSingleControlStripItem;
|
|
|
|
PRUint32 mVisibleColumnCount;
|
|
PRUint32 mTotalColumnCount;
|
|
nsIImageRequest* mTitleBGRequest; // The title bar background image
|
|
nsIImageRequest* mControlStripBGRequest;// The control strip bg image
|
|
nsIImageRequest* mColumnHeaderBGRequest;// The column header background image
|
|
|
|
PRInt32 mSelectedColumnIndex;
|
|
};
|
|
|
|
#endif /* nsHTTreeDataModel_h___ */
|