blob: 32281bf3b4ddaa77fc7524c0c1f002e330e61122 [file] [log] [blame]
// Copyright 2016 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/extensions/chooser_dialog_cocoa_controller.h"
#include "base/strings/sys_string_conversions.h"
#include "chrome/browser/chooser_controller/chooser_controller.h"
#import "chrome/browser/ui/cocoa/device_chooser_content_view_cocoa.h"
#import "chrome/browser/ui/cocoa/extensions/chooser_dialog_cocoa.h"
@implementation ChooserDialogCocoaController
- (instancetype)
initWithChooserDialogCocoa:(ChooserDialogCocoa*)chooserDialogCocoa
chooserController:
(std::unique_ptr<ChooserController>)chooserController {
DCHECK(chooserDialogCocoa);
DCHECK(chooserController);
if ((self = [super init]))
chooserDialogCocoa_ = chooserDialogCocoa;
base::string16 chooserTitle = chooserController->GetTitle();
deviceChooserContentView_.reset([[DeviceChooserContentViewCocoa alloc]
initWithChooserTitle:base::SysUTF16ToNSString(chooserTitle)
chooserController:std::move(chooserController)]);
tableView_ = [deviceChooserContentView_ tableView];
connectButton_ = [deviceChooserContentView_ connectButton];
cancelButton_ = [deviceChooserContentView_ cancelButton];
[connectButton_ setTarget:self];
[connectButton_ setAction:@selector(onConnect:)];
[cancelButton_ setTarget:self];
[cancelButton_ setAction:@selector(onCancel:)];
[tableView_ setDelegate:self];
[tableView_ setDataSource:self];
self.view = deviceChooserContentView_;
[deviceChooserContentView_ updateTableView];
return self;
}
- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
return [deviceChooserContentView_ numberOfOptions];
}
- (NSView*)tableView:(NSTableView*)tableView
viewForTableColumn:(NSTableColumn*)tableColumn
row:(NSInteger)row {
return [deviceChooserContentView_ createTableRowView:row].autorelease();
}
- (BOOL)tableView:(NSTableView*)aTableView
shouldEditTableColumn:(NSTableColumn*)aTableColumn
row:(NSInteger)rowIndex {
return NO;
}
- (CGFloat)tableView:(NSTableView*)tableView heightOfRow:(NSInteger)row {
return [deviceChooserContentView_ tableRowViewHeight:row];
}
- (void)tableViewSelectionDidChange:(NSNotification*)aNotification {
[deviceChooserContentView_ updateContentRowColor];
[connectButton_ setEnabled:[tableView_ numberOfSelectedRows] > 0];
}
// Selection changes (while the mouse button is still down).
- (void)tableViewSelectionIsChanging:(NSNotification*)aNotification {
[deviceChooserContentView_ updateContentRowColor];
[connectButton_ setEnabled:[tableView_ numberOfSelectedRows] > 0];
}
- (void)onConnect:(id)sender {
[deviceChooserContentView_ accept];
chooserDialogCocoa_->Dismissed();
}
- (void)onCancel:(id)sender {
[deviceChooserContentView_ cancel];
chooserDialogCocoa_->Dismissed();
}
- (DeviceChooserContentViewCocoa*)deviceChooserContentView {
return deviceChooserContentView_.get();
}
@end