| Index: chrome/browser/ui/cocoa/back_forward_menu_controller.mm
|
| ===================================================================
|
| --- chrome/browser/ui/cocoa/back_forward_menu_controller.mm (revision 71837)
|
| +++ chrome/browser/ui/cocoa/back_forward_menu_controller.mm (working copy)
|
| @@ -1,102 +0,0 @@
|
| -// Copyright (c) 2011 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.
|
| -
|
| -#import "chrome/browser/ui/cocoa/back_forward_menu_controller.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/scoped_ptr.h"
|
| -#include "base/sys_string_conversions.h"
|
| -#import "chrome/browser/ui/cocoa/event_utils.h"
|
| -#import "chrome/browser/ui/cocoa/menu_button.h"
|
| -#include "chrome/browser/ui/toolbar/back_forward_menu_model.h"
|
| -#include "skia/ext/skia_utils_mac.h"
|
| -#include "third_party/skia/include/core/SkBitmap.h"
|
| -
|
| -using base::SysUTF16ToNSString;
|
| -using gfx::SkBitmapToNSImage;
|
| -
|
| -@implementation BackForwardMenuController
|
| -
|
| -// Accessors and mutators:
|
| -
|
| -@synthesize type = type_;
|
| -
|
| -// Own methods:
|
| -
|
| -- (id)initWithBrowser:(Browser*)browser
|
| - modelType:(BackForwardMenuType)type
|
| - button:(MenuButton*)button {
|
| - if ((self = [super init])) {
|
| - type_ = type;
|
| - button_ = button;
|
| - model_.reset(new BackForwardMenuModel(browser, type_));
|
| - DCHECK(model_.get());
|
| - backForwardMenu_.reset([[NSMenu alloc] initWithTitle:@""]);
|
| - DCHECK(backForwardMenu_.get());
|
| - [backForwardMenu_ setDelegate:self];
|
| -
|
| - [button_ setAttachedMenu:backForwardMenu_];
|
| - [button_ setOpenMenuOnClick:NO];
|
| - }
|
| - return self;
|
| -}
|
| -
|
| -// Methods as delegate:
|
| -
|
| -// Called by backForwardMenu_ just before tracking begins.
|
| -//TODO(viettrungluu): should we do anything for chapter stops (see model)?
|
| -- (void)menuNeedsUpdate:(NSMenu*)menu {
|
| - DCHECK(menu == backForwardMenu_);
|
| -
|
| - // Remove old menu items (backwards order is as good as any).
|
| - for (NSInteger i = [menu numberOfItems]; i > 0; i--)
|
| - [menu removeItemAtIndex:(i - 1)];
|
| -
|
| - // 0-th item must be blank. (This is because we use a pulldown list, for which
|
| - // Cocoa uses the 0-th item as "title" in the button.)
|
| - [menu insertItemWithTitle:@""
|
| - action:nil
|
| - keyEquivalent:@""
|
| - atIndex:0];
|
| - for (int menuID = 0; menuID < model_->GetItemCount(); menuID++) {
|
| - if (model_->IsSeparator(menuID)) {
|
| - [menu insertItem:[NSMenuItem separatorItem]
|
| - atIndex:(menuID + 1)];
|
| - } else {
|
| - // Create a menu item with the right label.
|
| - NSMenuItem* menuItem = [[NSMenuItem alloc]
|
| - initWithTitle:SysUTF16ToNSString(model_->GetLabelAt(menuID))
|
| - action:nil
|
| - keyEquivalent:@""];
|
| - [menuItem autorelease];
|
| -
|
| - SkBitmap icon;
|
| - // Icon (if it has one).
|
| - if (model_->GetIconAt(menuID, &icon))
|
| - [menuItem setImage:SkBitmapToNSImage(icon)];
|
| -
|
| - // This will make it call our |-executeMenuItem:| method. We store the
|
| - // |menuID| (or |menu_id|) in the tag.
|
| - [menuItem setTag:menuID];
|
| - [menuItem setTarget:self];
|
| - [menuItem setAction:@selector(executeMenuItem:)];
|
| -
|
| - // Put it in the menu!
|
| - [menu insertItem:menuItem
|
| - atIndex:(menuID + 1)];
|
| - }
|
| - }
|
| -}
|
| -
|
| -// Action methods:
|
| -
|
| -- (void)executeMenuItem:(id)sender {
|
| - DCHECK([sender isKindOfClass:[NSMenuItem class]]);
|
| - int menuID = [sender tag];
|
| - model_->ActivatedAtWithDisposition(
|
| - menuID,
|
| - event_utils::WindowOpenDispositionFromNSEvent([NSApp currentEvent]));
|
| -}
|
| -
|
| -@end // @implementation BackForwardMenuController
|
|
|