diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-01 16:34:49 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-01 16:34:49 +0000 |
commit | 7d791652c7ede4209a2014d885148e2713f49bce (patch) | |
tree | c26baf12593bed381c631b81c736106809d46b44 /chrome/browser/ui/cocoa/task_manager_mac.h | |
parent | 3b94427c99bdf12836fd455eeb1499fdde511e26 (diff) | |
download | chromium_src-7d791652c7ede4209a2014d885148e2713f49bce.zip chromium_src-7d791652c7ede4209a2014d885148e2713f49bce.tar.gz chromium_src-7d791652c7ede4209a2014d885148e2713f49bce.tar.bz2 |
Move browser/cocoa to browser/ui/cocoa
BUG=none
TEST=none
TBR=brettw
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67854 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/cocoa/task_manager_mac.h')
-rw-r--r-- | chrome/browser/ui/cocoa/task_manager_mac.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/task_manager_mac.h b/chrome/browser/ui/cocoa/task_manager_mac.h new file mode 100644 index 0000000..9e6e70b --- /dev/null +++ b/chrome/browser/ui/cocoa/task_manager_mac.h @@ -0,0 +1,118 @@ +// Copyright (c) 2009 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_BROWSER_UI_COCOA_TASK_MANAGER_MAC_H_ +#define CHROME_BROWSER_UI_COCOA_TASK_MANAGER_MAC_H_ +#pragma once + +#import <Cocoa/Cocoa.h> +#include <vector> + +#include "base/cocoa_protocols_mac.h" +#include "base/scoped_nsobject.h" +#include "chrome/browser/task_manager/task_manager.h" +#include "chrome/browser/ui/cocoa/table_row_nsimage_cache.h" + +@class WindowSizeAutosaver; +class SkBitmap; +class TaskManagerMac; + +// This class is responsible for loading the task manager window and for +// managing it. +@interface TaskManagerWindowController : + NSWindowController<NSTableViewDataSource, + NSTableViewDelegate> { + @private + IBOutlet NSTableView* tableView_; + IBOutlet NSButton* endProcessButton_; + TaskManagerMac* taskManagerObserver_; // weak + TaskManager* taskManager_; // weak + TaskManagerModel* model_; // weak + + scoped_nsobject<WindowSizeAutosaver> size_saver_; + + // These contain a permutation of [0..|model_->ResourceCount() - 1|]. Used to + // implement sorting. + std::vector<int> viewToModelMap_; + std::vector<int> modelToViewMap_; + + // Descriptor of the current sort column. + scoped_nsobject<NSSortDescriptor> currentSortDescriptor_; +} + +// Creates and shows the task manager's window. +- (id)initWithTaskManagerObserver:(TaskManagerMac*)taskManagerObserver; + +// Refreshes all data in the task manager table. +- (void)reloadData; + +// Callback for "Stats for nerds" link. +- (IBAction)statsLinkClicked:(id)sender; + +// Callback for "End process" button. +- (IBAction)killSelectedProcesses:(id)sender; + +// Callback for double clicks on the table. +- (void)selectDoubleClickedTab:(id)sender; +@end + +@interface TaskManagerWindowController (TestingAPI) +- (NSTableView*)tableView; +@end + +// This class listens to task changed events sent by chrome. +class TaskManagerMac : public TaskManagerModelObserver, + public TableRowNSImageCache::Table { + public: + TaskManagerMac(TaskManager* task_manager); + virtual ~TaskManagerMac(); + + // TaskManagerModelObserver + virtual void OnModelChanged(); + virtual void OnItemsChanged(int start, int length); + virtual void OnItemsAdded(int start, int length); + virtual void OnItemsRemoved(int start, int length); + + // Called by the cocoa window controller when its window closes and the + // controller destroyed itself. Informs the model to stop updating. + void WindowWasClosed(); + + // TableRowNSImageCache::Table + virtual int RowCount() const; + virtual SkBitmap GetIcon(int r) const; + + // Creates the task manager if it doesn't exist; otherwise, it activates the + // existing task manager window. + static void Show(); + + // Returns the TaskManager observed by |this|. + TaskManager* task_manager() { return task_manager_; } + + // Lazily converts the image at the given row and caches it in |icon_cache_|. + NSImage* GetImageForRow(int row); + + // Returns the cocoa object. Used for testing. + TaskManagerWindowController* cocoa_controller() { return window_controller_; } + private: + // The task manager. + TaskManager* const task_manager_; // weak + + // Our model. + TaskManagerModel* const model_; // weak + + // Controller of our window, destroys itself when the task manager window + // is closed. + TaskManagerWindowController* window_controller_; // weak + + // Caches favicons for all rows. Needs to be initalized after |model_|. + TableRowNSImageCache icon_cache_; + + // An open task manager window. There can only be one open at a time. This + // is reset to NULL when the window is closed. + static TaskManagerMac* instance_; + + DISALLOW_COPY_AND_ASSIGN(TaskManagerMac); +}; + +#endif // CHROME_BROWSER_UI_COCOA_TASK_MANAGER_MAC_H_ |