PageRenderTime 24ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 1ms

/chrome/browser/ui/views/new_task_manager_view.h

https://gitlab.com/jonnialva90/iridium-browser
C Header | 148 lines | 90 code | 35 blank | 23 comment | 0 complexity | 7a906fd8fede782e290cf7c449c33dfd MD5 | raw file
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef CHROME_BROWSER_UI_VIEWS_NEW_TASK_MANAGER_VIEW_H_
  5. #define CHROME_BROWSER_UI_VIEWS_NEW_TASK_MANAGER_VIEW_H_
  6. #include <vector>
  7. #include "chrome/browser/ui/host_desktop.h"
  8. #include "chrome/browser/ui/task_manager/task_manager_table_model.h"
  9. #include "ui/base/models/simple_menu_model.h"
  10. #include "ui/base/models/table_model.h"
  11. #include "ui/views/context_menu_controller.h"
  12. #include "ui/views/controls/button/label_button.h"
  13. #include "ui/views/controls/link_listener.h"
  14. #include "ui/views/controls/menu/menu_runner.h"
  15. #include "ui/views/controls/table/table_grouper.h"
  16. #include "ui/views/controls/table/table_view_observer.h"
  17. #include "ui/views/window/dialog_delegate.h"
  18. namespace views {
  19. class LabelButton;
  20. class Link;
  21. class TableView;
  22. class View;
  23. } // namespace views
  24. namespace task_management {
  25. class TaskManagerTableModel;
  26. // The new task manager UI container.
  27. class NewTaskManagerView
  28. : public TableViewDelegate,
  29. public views::ButtonListener,
  30. public views::DialogDelegateView,
  31. public views::TableGrouper,
  32. public views::TableViewObserver,
  33. public views::LinkListener,
  34. public views::ContextMenuController,
  35. public ui::SimpleMenuModel::Delegate {
  36. public:
  37. ~NewTaskManagerView() override;
  38. // Shows the Task Manager window, or re-activates an existing one.
  39. static void Show(Browser* browser);
  40. // Hides the Task Manager if it is showing.
  41. static void Hide();
  42. // task_management::TableViewDelegate:
  43. bool IsColumnVisible(int column_id) const override;
  44. void SetColumnVisibility(int column_id, bool new_visibility) override;
  45. bool IsTableSorted() const override;
  46. TableSortDescriptor GetSortDescriptor() const override;
  47. void ToggleSortOrder(int visible_column_index) override;
  48. // views::View:
  49. void Layout() override;
  50. gfx::Size GetPreferredSize() const override;
  51. bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
  52. void ViewHierarchyChanged(
  53. const ViewHierarchyChangedDetails& details) override;
  54. // views::ButtonListener:
  55. void ButtonPressed(views::Button* sender, const ui::Event& event) override;
  56. // views::DialogDelegateView:
  57. bool CanResize() const override;
  58. bool CanMaximize() const override;
  59. bool CanMinimize() const override;
  60. bool ExecuteWindowsCommand(int command_id) override;
  61. base::string16 GetWindowTitle() const override;
  62. std::string GetWindowName() const override;
  63. int GetDialogButtons() const override;
  64. void WindowClosing() override;
  65. bool UseNewStyleForThisDialog() const override;
  66. // views::TableGrouper:
  67. void GetGroupRange(int model_index, views::GroupRange* range) override;
  68. // views::TableViewObserver:
  69. void OnSelectionChanged() override;
  70. void OnDoubleClick() override;
  71. void OnKeyDown(ui::KeyboardCode keycode) override;
  72. // views::LinkListener:
  73. void LinkClicked(views::Link* source, int event_flags) override;
  74. // views::ContextMenuController:
  75. void ShowContextMenuForView(views::View* source,
  76. const gfx::Point& point,
  77. ui::MenuSourceType source_type) override;
  78. // ui::SimpleMenuModel::Delegate:
  79. bool IsCommandIdChecked(int id) const override;
  80. bool IsCommandIdEnabled(int id) const override;
  81. bool GetAcceleratorForCommandId(int command_id,
  82. ui::Accelerator* accelerator) override;
  83. void ExecuteCommand(int id, int event_flags) override;
  84. private:
  85. friend class NewTaskManagerViewTest;
  86. explicit NewTaskManagerView(chrome::HostDesktopType desktop_type);
  87. static NewTaskManagerView* GetInstanceForTests();
  88. // Creates the child controls.
  89. void Init();
  90. // Initializes the state of the always-on-top setting as the window is shown.
  91. void InitAlwaysOnTopState();
  92. // Activates the tab associated with the focused row.
  93. void ActivateFocusedTab();
  94. // Restores saved "always on top" state from a previous session.
  95. void RetriveSavedAlwaysOnTopState();
  96. scoped_ptr<TaskManagerTableModel> table_model_;
  97. scoped_ptr<views::MenuRunner> menu_runner_;
  98. // We need to own the text of the menu, the Windows API does not copy it.
  99. base::string16 always_on_top_menu_text_;
  100. views::LabelButton* kill_button_;
  101. views::Link* about_memory_link_;
  102. views::TableView* tab_table_;
  103. views::View* tab_table_parent_;
  104. // all possible columns, not necessarily visible
  105. std::vector<ui::TableColumn> columns_;
  106. // The host desktop type this task manager belongs to.
  107. const chrome::HostDesktopType desktop_type_;
  108. // True when the Task Manager window should be shown on top of other windows.
  109. bool is_always_on_top_;
  110. DISALLOW_COPY_AND_ASSIGN(NewTaskManagerView);
  111. };
  112. } // namespace task_management
  113. #endif // CHROME_BROWSER_UI_VIEWS_NEW_TASK_MANAGER_VIEW_H_