diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-14 17:48:40 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-14 17:48:40 +0000 |
commit | 405ed122f92ca9248de2a65103edba9b02471a9f (patch) | |
tree | 9d8cb957ff47ba6790107feec65acdfa592d9747 /chrome/views | |
parent | 296d61e24b5a5311f120a767a59ac006176f6f9a (diff) | |
download | chromium_src-405ed122f92ca9248de2a65103edba9b02471a9f.zip chromium_src-405ed122f92ca9248de2a65103edba9b02471a9f.tar.gz chromium_src-405ed122f92ca9248de2a65103edba9b02471a9f.tar.bz2 |
Port some files in chrome/browser/
#ifdef out windows-specific portion of chrome/common/l10n_util.h,
which allows me to port some other files.
I also extracted parts of chrome/views/tree_view.h to tree_model.h,
so that ATL/WTL-specific parts stay in tree_view.h, but tree_model.h
is platform-independent and can be included in files using it as base class.
Review URL: http://codereview.chromium.org/8618
Patch from Paweł Hajdan jr.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5483 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/views')
-rw-r--r-- | chrome/views/tree_model.h | 86 | ||||
-rw-r--r-- | chrome/views/tree_node_model.h | 19 | ||||
-rw-r--r-- | chrome/views/tree_view.h | 69 | ||||
-rw-r--r-- | chrome/views/views.vcproj | 4 |
4 files changed, 102 insertions, 76 deletions
diff --git a/chrome/views/tree_model.h b/chrome/views/tree_model.h new file mode 100644 index 0000000..68a3ff7 --- /dev/null +++ b/chrome/views/tree_model.h @@ -0,0 +1,86 @@ +// Copyright (c) 2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_VIEWS_TREE_MODEL_H_ +#define CHROME_VIEWS_TREE_MODEL_H_ + +#include <string> + +#include "base/logging.h" + +class SkBitmap; + +namespace views { + +class TreeModel; + +// TreeModelNode -------------------------------------------------------------- + +// Type of class returned from the model. +class TreeModelNode { + public: + // Returns the title for the node. + virtual std::wstring GetTitle() = 0; +}; + +// Observer for the TreeModel. Notified of significant events to the model. +class TreeModelObserver { + public: + // Notification that nodes were added to the specified parent. + virtual void TreeNodesAdded(TreeModel* model, + TreeModelNode* parent, + int start, + int count) = 0; + + // Notification that nodes were removed from the specified parent. + virtual void TreeNodesRemoved(TreeModel* model, + TreeModelNode* parent, + int start, + int count) = 0; + + // Notification that the contents of a node has changed. + virtual void TreeNodeChanged(TreeModel* model, TreeModelNode* node) = 0; +}; + +// TreeModel ------------------------------------------------------------------ + +// The model for TreeView. +class TreeModel { + public: + // Returns the root of the tree. This may or may not be shown in the tree, + // see SetRootShown for details. + virtual TreeModelNode* GetRoot() = 0; + + // Returns the number of children in the specified node. + virtual int GetChildCount(TreeModelNode* parent) = 0; + + // Returns the child node at the specified index. + virtual TreeModelNode* GetChild(TreeModelNode* parent, int index) = 0; + + // Returns the parent of a node, or NULL if node is the root. + virtual TreeModelNode* GetParent(TreeModelNode* node) = 0; + + // Sets the observer of the model. + virtual void SetObserver(TreeModelObserver* observer) = 0; + + // Sets the title of the specified node. + // This is only invoked if the node is editable and the user edits a node. + virtual void SetTitle(TreeModelNode* node, + const std::wstring& title) { + NOTREACHED(); + } + + // Returns the set of icons for the nodes in the tree. You only need override + // this if you don't want to use the default folder icons. + virtual void GetIcons(std::vector<SkBitmap>* icons) {} + + // Returns the index of the icon to use for |node|. Return -1 to use the + // default icon. The index is relative to the list of icons returned from + // GetIcons. + virtual int GetIconIndex(TreeModelNode* node) { return -1; } +}; + +} // namespace views + +#endif // CHROME_VIEWS_TREE_MODEL_H_ diff --git a/chrome/views/tree_node_model.h b/chrome/views/tree_node_model.h index 2d9040e..0d33fff 100644 --- a/chrome/views/tree_node_model.h +++ b/chrome/views/tree_node_model.h @@ -9,7 +9,7 @@ #include "base/basictypes.h" #include "chrome/common/scoped_vector.h" -#include "chrome/views/tree_view.h" +#include "chrome/views/tree_model.h" namespace views { @@ -115,7 +115,7 @@ class TreeNode : public TreeModelNode { // Returns the index of the specified child, or -1 if node is a not a child. int IndexOfChild(const NodeType* node) { DCHECK(node); - std::vector<NodeType*>::iterator i = + typename std::vector<NodeType*>::iterator i = find(children_->begin(), children_->end(), node); if (i != children_->end()) return static_cast<int>(i - children_->begin()); @@ -154,26 +154,29 @@ class TreeNode : public TreeModelNode { // Children. ScopedVector<NodeType> children_; - DISALLOW_EVIL_CONSTRUCTORS(TreeNode); + DISALLOW_COPY_AND_ASSIGN(TreeNode); }; // TreeNodeWithValue ---------------------------------------------------------- template <class ValueType> -class TreeNodeWithValue : public TreeNode<TreeNodeWithValue<ValueType>> { +class TreeNodeWithValue : public TreeNode< TreeNodeWithValue<ValueType> > { + private: + typedef TreeNode< TreeNodeWithValue<ValueType> > ParentType; + public: TreeNodeWithValue() { } TreeNodeWithValue(const ValueType& value) - : TreeNode(std::wstring()), value(value) { } + : ParentType(std::wstring()), value(value) { } TreeNodeWithValue(const std::wstring& title, const ValueType& value) - : TreeNode(title), value(value) { } + : ParentType(title), value(value) { } ValueType value; private: - DISALLOW_EVIL_CONSTRUCTORS(TreeNodeWithValue); + DISALLOW_COPY_AND_ASSIGN(TreeNodeWithValue); }; // TreeNodeModel -------------------------------------------------------------- @@ -264,7 +267,7 @@ class TreeNodeModel : public TreeModel { // The observer. TreeModelObserver* observer_; - DISALLOW_EVIL_CONSTRUCTORS(TreeNodeModel); + DISALLOW_COPY_AND_ASSIGN(TreeNodeModel); }; } // namespace views diff --git a/chrome/views/tree_view.h b/chrome/views/tree_view.h index c2fe4d3..582de9f 100644 --- a/chrome/views/tree_view.h +++ b/chrome/views/tree_view.h @@ -10,79 +10,12 @@ #include "base/basictypes.h" #include "base/logging.h" #include "chrome/views/native_control.h" +#include "chrome/views/tree_model.h" namespace views { -class TreeModel; -class TreeModelNode; class TreeView; -// Observer for the TreeModel. Notified of significant events to the model. -class TreeModelObserver { - public: - // Notification that nodes were added to the specified parent. - virtual void TreeNodesAdded(TreeModel* model, - TreeModelNode* parent, - int start, - int count) = 0; - - // Notification that nodes were removed from the specified parent. - virtual void TreeNodesRemoved(TreeModel* model, - TreeModelNode* parent, - int start, - int count) = 0; - - // Notification that the contents of a node has changed. - virtual void TreeNodeChanged(TreeModel* model, TreeModelNode* node) = 0; -}; - -// TreeModelNode -------------------------------------------------------------- - -// Type of class returned from the model. -class TreeModelNode { - public: - // Returns the title for the node. - virtual std::wstring GetTitle() = 0; -}; - -// TreeModel ------------------------------------------------------------------ - -// The model for TreeView. -class TreeModel { - public: - // Returns the root of the tree. This may or may not be shown in the tree, - // see SetRootShown for details. - virtual TreeModelNode* GetRoot() = 0; - - // Returns the number of children in the specified node. - virtual int GetChildCount(TreeModelNode* parent) = 0; - - // Returns the child node at the specified index. - virtual TreeModelNode* GetChild(TreeModelNode* parent, int index) = 0; - - // Returns the parent of a node, or NULL if node is the root. - virtual TreeModelNode* GetParent(TreeModelNode* node) = 0; - - // Sets the observer of the model. - virtual void SetObserver(TreeModelObserver* observer) = 0; - - // Sets the title of the specified node. - // This is only invoked if the node is editable and the user edits a node. - virtual void SetTitle(TreeModelNode* node, - const std::wstring& title) { - NOTREACHED(); - } - - // Returns the set of icons for the nodes in the tree. You only need override - // this if you don't want to use the default folder icons. - virtual void GetIcons(std::vector<SkBitmap>* icons) {} - - // Returns the index of the icon to use for |node|. Return -1 to use the - // default icon. The index is relative to the list of icons returned from - // GetIcons. - virtual int GetIconIndex(TreeModelNode* node) { return -1; } -}; - // TreeViewController --------------------------------------------------------- // Controller for the treeview. diff --git a/chrome/views/views.vcproj b/chrome/views/views.vcproj index 91dce86..505186f 100644 --- a/chrome/views/views.vcproj +++ b/chrome/views/views.vcproj @@ -589,6 +589,10 @@ RelativePath=".\tooltip_manager.h" > </File> + <File + RelativePath=".\tree_model.h" + > + </File> <File RelativePath=".\tree_node_model.h" > |