diff options
author | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-07 05:18:09 +0000 |
---|---|---|
committer | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-07 05:18:09 +0000 |
commit | 747e5512174b7c24d256f93f867cb02db0430298 (patch) | |
tree | d87e0c2006f7f05ba3ba2ea9389f5ead5dd9c38d /chrome/browser/autocomplete/autocomplete_popup_view_mac.mm | |
parent | 9c15cb8367e88dad4e6d13fe6a4fb8266f20c4dd (diff) | |
download | chromium_src-747e5512174b7c24d256f93f867cb02db0430298.zip chromium_src-747e5512174b7c24d256f93f867cb02db0430298.tar.gz chromium_src-747e5512174b7c24d256f93f867cb02db0430298.tar.bz2 |
Revert "Initial implemention of Mac Omnibox."
Reverts:
http://codereview.chromium.org/50074
http://src.chromium.org/viewvc/chrome?view=rev&revision=13201
Review URL: http://codereview.chromium.org/63047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13227 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autocomplete/autocomplete_popup_view_mac.mm')
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_popup_view_mac.mm | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_mac.mm b/chrome/browser/autocomplete/autocomplete_popup_view_mac.mm deleted file mode 100644 index d82e0a3..0000000 --- a/chrome/browser/autocomplete/autocomplete_popup_view_mac.mm +++ /dev/null @@ -1,248 +0,0 @@ -// 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. - -#include "chrome/browser/autocomplete/autocomplete_popup_view_mac.h" - -#include "base/sys_string_conversions.h" -#include "chrome/browser/autocomplete/autocomplete_edit.h" -#include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" -#include "chrome/browser/autocomplete/autocomplete_popup_model.h" - -// Thin Obj-C bridge class between the target and data source of the -// popup window's NSTableView and the AutocompletePopupView -// implementation. - -@interface AutocompleteTableTarget : NSObject { - @private - AutocompletePopupViewMac* popup_view_; // weak, owns us. -} -- initWithPopupView:(AutocompletePopupViewMac*)view; - -// Tell popup model via popup_view_ about the selected row. -- (void)select:sender; - -// NSTableDataSource methods, filled from data returned by -// the popup model via popup_view_. -- (NSInteger)numberOfRowsInTableView:(NSTableView*)aTableView; -- (id)tableView:(NSTableView*)aTableView -objectValueForTableColumn:(NSTableColumn*)aTableColumn - row:(int)ri; - -// Placeholder for finding the star image. -- (NSImage*)starImage; -@end - -AutocompletePopupViewMac::AutocompletePopupViewMac( - AutocompleteEditViewMac* edit_view, - AutocompleteEditModel* edit_model, - Profile* profile) - : model_(new AutocompletePopupModel(this, edit_model, profile)), - edit_view_(edit_view), - field_(nil), - table_target_([[AutocompleteTableTarget alloc] initWithPopupView:this]), - popup_(nil) { - DCHECK(edit_view); - DCHECK(edit_model); - DCHECK(profile); - edit_model->set_popup_model(model_.get()); -} - -AutocompletePopupViewMac::~AutocompletePopupViewMac() { - // TODO(shess): Having to be aware of destructor ordering in this - // way seems brittle. There must be a better way. - - // Destroy the popup model before this object is destroyed, because - // it can call back to us in the destructor. - model_.reset(); - - // Break references to table_target_ before it is released. - NSTableView* table = [popup_ contentView]; - [table setTarget:nil]; - [table setDataSource:nil]; -} - -bool AutocompletePopupViewMac::IsOpen() const { - return [popup_ isVisible] ? true : false; -} - -static NSTableColumn* MakeTableColumn(int tag, Class field_class) { - NSNumber* id = [NSNumber numberWithInt:tag]; - NSTableColumn* col = - [[[NSTableColumn alloc] initWithIdentifier:id] autorelease]; - - [col setEditable:NO]; - [col setResizingMask:NSTableColumnNoResizing]; - [col setDataCell:[[[field_class alloc] init] autorelease]]; - - return col; -} - -void AutocompletePopupViewMac::CreatePopupIfNeeded() { - if (!popup_) { - popup_.reset([[NSWindow alloc] initWithContentRect:NSZeroRect - styleMask:NSBorderlessWindowMask - backing:NSBackingStoreBuffered - defer:YES]); - [popup_ setMovableByWindowBackground:NO]; - [popup_ setOpaque:YES]; - [popup_ setHasShadow:YES]; - [popup_ setLevel:NSNormalWindowLevel]; - - NSTableView* table = - [[[NSTableView alloc] initWithFrame:NSZeroRect] autorelease]; - [popup_ setContentView:table]; - - [table setTarget:table_target_]; - [table setAction:@selector(select:)]; - [table setHeaderView:nil]; - [table setDataSource:table_target_]; - [table setIntercellSpacing:NSMakeSize(1.0, 0.0)]; - - [table addTableColumn:MakeTableColumn(0, [NSTextFieldCell class])]; - [table addTableColumn:MakeTableColumn(1, [NSImageCell class])]; - [table addTableColumn:MakeTableColumn(2, [NSTextFieldCell class])]; - } -} - -void AutocompletePopupViewMac::UpdatePopupAppearance() { - const AutocompleteResult& result = model_->result(); - if (result.empty()) { - [[popup_ parentWindow] removeChildWindow:popup_]; - [popup_ orderOut:nil]; - return; - } - - CreatePopupIfNeeded(); - - // Layout the popup and size it to land underneath the field. - // TODO(shess) Consider refactoring to remove this depenency, - // because the popup doesn't need any of the field-like aspects of - // field_. The edit view could expose helper methods for attaching - // the window to the field. - NSRect r = [field_ bounds]; - r = [field_ convertRectToBase:r]; - r.origin = [[field_ window] convertBaseToScreen:r.origin]; - - // TODO(shess): Derive this from the actual image size, once the - // image is in the project. - static const int kStarWidth = 25; - - NSArray* cols = [[popup_ contentView] tableColumns]; - [[cols objectAtIndex:0] setWidth:floor((r.size.width - kStarWidth) / 2)]; - [[cols objectAtIndex:1] setWidth:kStarWidth]; - [[cols objectAtIndex:2] setWidth:ceil((r.size.width - kStarWidth) / 2)]; - - [[popup_ contentView] reloadData]; - [[popup_ contentView] tile]; - r.size.height = [[popup_ contentView] frame].size.height; - r.origin.y -= r.size.height + 2; - - // Update the selection. - PaintUpdatesNow(); - - [popup_ setFrame:r display:YES]; - - if (!IsOpen()) { - [[field_ window] addChildWindow:popup_ ordered:NSWindowAbove]; - } -} - -// This is only called by model in SetSelectedLine() after updating -// everything. Popup should already be visible. -void AutocompletePopupViewMac::PaintUpdatesNow() { - NSIndexSet* set = [NSIndexSet indexSetWithIndex:model_->selected_line()]; - NSTableView* table = [popup_ contentView]; - [table selectRowIndexes:set byExtendingSelection:NO]; -} - -void AutocompletePopupViewMac::StopAutocomplete() { - model_->StopAutocomplete(); -} - -size_t AutocompletePopupViewMac::ResultRowCount() { - return model_->result().size(); -} - -const std::wstring& AutocompletePopupViewMac::ResultContentsAt(size_t i) { - return model_->result().match_at(i).contents; -} - -bool AutocompletePopupViewMac::ResultStarredAt(size_t i) { - return model_->result().match_at(i).starred; -} - -const std::wstring& AutocompletePopupViewMac::ResultDescriptionAt(size_t i) { - return model_->result().match_at(i).description; -} - -void AutocompletePopupViewMac::AcceptInput( - WindowOpenDisposition disposition, bool for_drop) { - edit_view_->AcceptInput(disposition, for_drop); -} - -@implementation AutocompleteTableTarget - -- initWithPopupView:(AutocompletePopupViewMac*)view { - self = [super init]; - if (self) { - popup_view_ = view; - } - return self; -} - -- (NSImage*)starImage { - return [NSImage imageNamed:@"starred.pdf"]; -} - -- (NSInteger)numberOfRowsInTableView:(NSTableView*)aTableView { - DCHECK(popup_view_); - return static_cast<NSInteger>(popup_view_->ResultRowCount()); -} - -- (id)tableView:(NSTableView*)aTableView -objectValueForTableColumn:(NSTableColumn*)aTableColumn - row:(int)ri { - int columnIndex = [[aTableColumn identifier] integerValue]; - size_t rowIndex = static_cast<size_t>(ri); - DCHECK(popup_view_); - DCHECK_LT(rowIndex, popup_view_->ResultRowCount()); - DCHECK_LT(columnIndex, 3); - - if (columnIndex == 1) { - if (popup_view_->ResultStarredAt(rowIndex)) { - return [self starImage]; - } - return nil; - } - - NSString* s; - if (columnIndex == 0) { - s = base::SysWideToNSString(popup_view_->ResultContentsAt(rowIndex)); - } else { - s = base::SysWideToNSString(popup_view_->ResultDescriptionAt(rowIndex)); - } - - NSMutableParagraphStyle* style = - [[[NSMutableParagraphStyle alloc] init] autorelease]; - [style setLineBreakMode:NSLineBreakByTruncatingTail]; - - NSMutableAttributedString* as = - [[[NSMutableAttributedString alloc] initWithString:s] autorelease]; - [as addAttribute:NSParagraphStyleAttributeName value:style - range:NSMakeRange(0, [s length])]; - - // TODO(shess): There is a ton more styling to be done, here, for - // instance URLs different from search suggestions different from secure - // URLs, etc. [See AutocompletePopupViewMac::UpdateAndStyleText().] - // Deferring in the interests of getting a minimal implementation in. - - return as; -} - -- (void)select:sender { - DCHECK(popup_view_); - popup_view_->AcceptInput(CURRENT_TAB, false); -} - -@end |