OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/views/tree_view.h" | 5 #include "chrome/views/tree_view.h" |
6 | 6 |
7 #include <shellapi.h> | 7 #include <shellapi.h> |
8 | 8 |
9 #include "base/win_util.h" | 9 #include "base/win_util.h" |
10 #include "chrome/app/theme/theme_resources.h" | 10 #include "chrome/app/theme/theme_resources.h" |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 } | 150 } |
151 // And expand this item. | 151 // And expand this item. |
152 TreeView_Expand(tree_view_, GetNodeDetails(node)->tree_item, TVE_EXPAND); | 152 TreeView_Expand(tree_view_, GetNodeDetails(node)->tree_item, TVE_EXPAND); |
153 } | 153 } |
154 | 154 |
155 void TreeView::ExpandAll() { | 155 void TreeView::ExpandAll() { |
156 DCHECK(model_); | 156 DCHECK(model_); |
157 ExpandAll(model_->GetRoot()); | 157 ExpandAll(model_->GetRoot()); |
158 } | 158 } |
159 | 159 |
| 160 void TreeView::ExpandAll(TreeModelNode* node) { |
| 161 DCHECK(node); |
| 162 // Expand the node. |
| 163 if (node != model_->GetRoot() || root_shown_) |
| 164 TreeView_Expand(tree_view_, GetNodeDetails(node)->tree_item, TVE_EXPAND); |
| 165 // And recursively expand all the children. |
| 166 for (int i = model_->GetChildCount(node) - 1; i >= 0; --i) { |
| 167 TreeModelNode* child = model_->GetChild(node, i); |
| 168 ExpandAll(child); |
| 169 } |
| 170 } |
| 171 |
160 bool TreeView::IsExpanded(TreeModelNode* node) { | 172 bool TreeView::IsExpanded(TreeModelNode* node) { |
161 TreeModelNode* parent = model_->GetParent(node); | 173 TreeModelNode* parent = model_->GetParent(node); |
162 if (!parent) | 174 if (!parent) |
163 return true; | 175 return true; |
164 if (!IsExpanded(parent)) | 176 if (!IsExpanded(parent)) |
165 return false; | 177 return false; |
166 NodeDetails* details = GetNodeDetails(node); | 178 NodeDetails* details = GetNodeDetails(node); |
167 return (TreeView_GetItemState(tree_view_, details->tree_item, TVIS_EXPANDED) & | 179 return (TreeView_GetItemState(tree_view_, details->tree_item, TVIS_EXPANDED) & |
168 TVIS_EXPANDED) != 0; | 180 TVIS_EXPANDED) != 0; |
169 } | 181 } |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 TreeModelNode* TreeView::GetNodeForTreeItem(HTREEITEM tree_item) { | 475 TreeModelNode* TreeView::GetNodeForTreeItem(HTREEITEM tree_item) { |
464 NodeDetails* details = GetNodeDetailsByTreeItem(tree_item); | 476 NodeDetails* details = GetNodeDetailsByTreeItem(tree_item); |
465 return details ? details->node : NULL; | 477 return details ? details->node : NULL; |
466 } | 478 } |
467 | 479 |
468 HTREEITEM TreeView::GetTreeItemForNode(TreeModelNode* node) { | 480 HTREEITEM TreeView::GetTreeItemForNode(TreeModelNode* node) { |
469 NodeDetails* details = GetNodeDetails(node); | 481 NodeDetails* details = GetNodeDetails(node); |
470 return details ? details->tree_item : NULL; | 482 return details ? details->tree_item : NULL; |
471 } | 483 } |
472 | 484 |
473 void TreeView::ExpandAll(TreeModelNode* node) { | |
474 DCHECK(node); | |
475 // Expand the node. | |
476 if (node != model_->GetRoot() || root_shown_) | |
477 TreeView_Expand(tree_view_, GetNodeDetails(node)->tree_item, TVE_EXPAND); | |
478 // And recursively expand all the children. | |
479 for (int i = model_->GetChildCount(node) - 1; i >= 0; --i) { | |
480 TreeModelNode* child = model_->GetChild(node, i); | |
481 ExpandAll(child); | |
482 } | |
483 } | |
484 | |
485 void TreeView::DeleteRootItems() { | 485 void TreeView::DeleteRootItems() { |
486 HTREEITEM root = TreeView_GetRoot(tree_view_); | 486 HTREEITEM root = TreeView_GetRoot(tree_view_); |
487 if (root) { | 487 if (root) { |
488 if (root_shown_) { | 488 if (root_shown_) { |
489 RecursivelyDelete(GetNodeDetailsByTreeItem(root)); | 489 RecursivelyDelete(GetNodeDetailsByTreeItem(root)); |
490 } else { | 490 } else { |
491 HTREEITEM node; | 491 HTREEITEM node; |
492 while ((node = TreeView_GetChild(tree_view_, root))) { | 492 while ((node = TreeView_GetChild(tree_view_, root))) { |
493 RecursivelyDelete(GetNodeDetailsByTreeItem(node)); | 493 RecursivelyDelete(GetNodeDetailsByTreeItem(node)); |
494 } | 494 } |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 } | 646 } |
647 // Fall through and let the default handler process as well. | 647 // Fall through and let the default handler process as well. |
648 break; | 648 break; |
649 } | 649 } |
650 WNDPROC handler = tree->original_handler_; | 650 WNDPROC handler = tree->original_handler_; |
651 DCHECK(handler); | 651 DCHECK(handler); |
652 return CallWindowProc(handler, window, message, w_param, l_param); | 652 return CallWindowProc(handler, window, message, w_param, l_param); |
653 } | 653 } |
654 | 654 |
655 } // namespace views | 655 } // namespace views |
OLD | NEW |