Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: chrome/browser/ui/cocoa/web_intent_sheet_controller.mm

Issue 10917077: [WebIntents, OSX] Clean up inline disposition to match mock. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to HEAD. Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/web_intent_sheet_controller.h" 5 #import "chrome/browser/ui/cocoa/web_intent_sheet_controller.h"
6 6
7 #include "base/memory/scoped_nsobject.h" 7 #include "base/memory/scoped_nsobject.h"
8 #include "base/sys_string_conversions.h" 8 #include "base/sys_string_conversions.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/ui/browser_list.h" 10 #include "chrome/browser/ui/browser_list.h"
(...skipping 19 matching lines...) Expand all
30 #include "ui/base/l10n/l10n_util.h" 30 #include "ui/base/l10n/l10n_util.h"
31 #include "ui/base/l10n/l10n_util_mac.h" 31 #include "ui/base/l10n/l10n_util_mac.h"
32 #include "ui/base/resource/resource_bundle.h" 32 #include "ui/base/resource/resource_bundle.h"
33 #include "ui/base/text/text_elider.h" 33 #include "ui/base/text/text_elider.h"
34 #include "ui/gfx/font.h" 34 #include "ui/gfx/font.h"
35 #include "ui/gfx/image/image.h" 35 #include "ui/gfx/image/image.h"
36 36
37 using content::OpenURLParams; 37 using content::OpenURLParams;
38 using content::Referrer; 38 using content::Referrer;
39 39
40 @interface HyperlinkButtonCell (Private)
41 - (void)customizeButtonCell;
42 @end
43
44 @interface CustomLinkButtonCell : HyperlinkButtonCell
45 @end
46
40 namespace { 47 namespace {
41 48
42 // The width of a service button, in view coordinates. 49 // The width of a service button, in view coordinates.
43 const CGFloat kServiceButtonWidth = 300; 50 const CGFloat kServiceButtonWidth = 300;
44 51
45 // Spacing in between sections. 52 // Spacing in between sections.
46 const CGFloat kVerticalSpacing = 18; 53 const CGFloat kVerticalSpacing = 18;
47 54
48 // Square size of the close button. 55 // Square size of the close button.
49 const CGFloat kCloseButtonSize = 16; 56 const CGFloat kCloseButtonSize = 16;
50 57
51 // Font size for picker header.
52 const CGFloat kHeaderFontSize = 14.5;
53
54 // Width of the text fields. 58 // Width of the text fields.
55 const CGFloat kTextWidth = WebIntentPicker::kWindowWidth - 59 const CGFloat kTextWidth = WebIntentPicker::kWindowWidth -
56 (WebIntentPicker::kContentAreaBorder * 2.0 + kCloseButtonSize); 60 (WebIntentPicker::kContentAreaBorder * 2.0 + kCloseButtonSize);
57 61
58 // Maximum number of intents (suggested and installed) displayed. 62 // Maximum number of intents (suggested and installed) displayed.
59 const int kMaxIntentRows = 4; 63 const int kMaxIntentRows = 4;
60 64
61 // Sets properties on the given |field| to act as title or description labels. 65 // Sets properties on the given |field| to act as title or description labels.
62 void ConfigureTextFieldAsLabel(NSTextField* field) { 66 void ConfigureTextFieldAsLabel(NSTextField* field) {
63 [field setEditable:NO]; 67 [field setEditable:NO];
64 [field setSelectable:YES]; 68 [field setSelectable:YES];
65 [field setDrawsBackground:NO]; 69 [field setDrawsBackground:NO];
66 [field setBezeled:NO]; 70 [field setBezeled:NO];
67 } 71 }
68 72
69 NSButton* CreateHyperlinkButton(NSString* title, const NSRect& frame) { 73 NSButton* CreateHyperlinkButton(NSString* title, const NSRect& frame) {
70 NSButton* button = [[NSButton alloc] initWithFrame:frame]; 74 NSButton* button = [[NSButton alloc] initWithFrame:frame];
71 scoped_nsobject<HyperlinkButtonCell> cell( 75 scoped_nsobject<CustomLinkButtonCell> cell(
72 [[HyperlinkButtonCell alloc] initTextCell:title]); 76 [[CustomLinkButtonCell alloc] initTextCell:title]);
73 [cell setControlSize:NSSmallControlSize]; 77 [cell setControlSize:NSSmallControlSize];
74 [button setCell:cell.get()]; 78 [button setCell:cell.get()];
75 [button setButtonType:NSMomentaryPushInButton]; 79 [button setButtonType:NSMomentaryPushInButton];
76 [button setBezelStyle:NSRegularSquareBezelStyle]; 80 [button setBezelStyle:NSRegularSquareBezelStyle];
77 81
78 return button; 82 return button;
79 } 83 }
80 84
81 } // namespace 85 } // namespace
82 86
87
88 // Provide custom link format for intent picker. Removes underline attribute,
89 // since UX direction is "look like WebUI".
90 @implementation CustomLinkButtonCell
91 - (void)customizeButtonCell {
92 [super customizeButtonCell];
93 [self setTextColor:[NSColor colorWithDeviceRed:0xff/255.0
94 green:0x11/255.0
95 blue:0x55/255.0
96 alpha:0xcc/255.0]];
97 }
98
99 - (NSDictionary*)linkAttributes {
100 scoped_nsobject<NSMutableParagraphStyle> paragraphStyle(
101 [[NSParagraphStyle defaultParagraphStyle] mutableCopy]);
102 [paragraphStyle setAlignment:[self alignment]];
103
104 return @{
105 NSForegroundColorAttributeName: [self textColor],
106 NSFontAttributeName: [self font],
107 NSCursorAttributeName: [NSCursor pointingHandCursor],
108 NSParagraphStyleAttributeName: paragraphStyle.get()
109 };
110 }
111 @end
112
83 // This simple NSView subclass is used as the single subview of the page info 113 // This simple NSView subclass is used as the single subview of the page info
84 // bubble's window's contentView. Drawing is flipped so that layout of the 114 // bubble's window's contentView. Drawing is flipped so that layout of the
85 // sections is easier. Apple recommends flipping the coordinate origin when 115 // sections is easier. Apple recommends flipping the coordinate origin when
86 // doing a lot of text layout because it's more natural. 116 // doing a lot of text layout because it's more natural.
87 @interface WebIntentsContentView : NSView 117 @interface WebIntentsContentView : NSView
88 @end 118 @end
89 @implementation WebIntentsContentView 119 @implementation WebIntentsContentView
90 - (BOOL)isFlipped { 120 - (BOOL)isFlipped {
91 return YES; 121 return YES;
92 } 122 }
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 kTextWidth, 1); 276 kTextWidth, 1);
247 subtitleField_.reset([[NSTextField alloc] initWithFrame:frame]); 277 subtitleField_.reset([[NSTextField alloc] initWithFrame:frame]);
248 ConfigureTextFieldAsLabel(subtitleField_); 278 ConfigureTextFieldAsLabel(subtitleField_);
249 gfx::Font textFont = rb.GetFont(ConstrainedWindow::kTextFontStyle); 279 gfx::Font textFont = rb.GetFont(ConstrainedWindow::kTextFontStyle);
250 [subtitleField_ setFont:textFont.GetNativeFont()]; 280 [subtitleField_ setFont:textFont.GetNativeFont()];
251 281
252 frame = NSMakeRect(0, 0, WebIntentPicker::kWindowWidth, 1.0); 282 frame = NSMakeRect(0, 0, WebIntentPicker::kWindowWidth, 1.0);
253 spacer_.reset([[NSBox alloc] initWithFrame:frame]); 283 spacer_.reset([[NSBox alloc] initWithFrame:frame]);
254 [spacer_ setBoxType:NSBoxSeparator]; 284 [spacer_ setBoxType:NSBoxSeparator];
255 [spacer_ setBorderColor:[NSColor blackColor]]; 285 [spacer_ setBorderColor:[NSColor blackColor]];
286 [spacer_ setAlphaValue:0.2];
256 287
257 NSArray* subviews = @[titleField_, subtitleField_, spacer_]; 288 NSArray* subviews = @[titleField_, subtitleField_, spacer_];
258 [self setSubviews:subviews]; 289 [self setSubviews:subviews];
259 } 290 }
260 return self; 291 return self;
261 } 292 }
262 293
263 - (void)setTitle:(NSString*)title { 294 - (void)setTitle:(NSString*)title {
264 NSRect frame = [titleField_ frame]; 295 NSRect frame = [titleField_ frame];
265 [titleField_ setStringValue:title]; 296 [titleField_ setStringValue:title];
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 528
498 label_.reset([[NSTextField alloc] initWithFrame:frame]); 529 label_.reset([[NSTextField alloc] initWithFrame:frame]);
499 ConfigureTextFieldAsLabel(label_); 530 ConfigureTextFieldAsLabel(label_);
500 [label_ setStringValue:string]; 531 [label_ setStringValue:string];
501 frame.size.height += 532 frame.size.height +=
502 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField: 533 [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:
503 label_]; 534 label_];
504 frame.origin.y = (kMaxHeight - NSHeight(frame)) / 2.0; 535 frame.origin.y = (kMaxHeight - NSHeight(frame)) / 2.0;
505 [label_ setFrame:frame]; 536 [label_ setFrame:frame];
506 537
507 [self setActionButton:@"Select" 538 string = l10n_util::GetNSStringWithFixup(
539 IDS_INTENT_PICKER_SELECT_INTENT);
540 [self setActionButton:string
508 withSelector:@selector(invokeService:) 541 withSelector:@selector(invokeService:)
509 forController:controller]; 542 forController:controller];
510 [installButton_ setTag:index]; 543 [installButton_ setTag:index];
511 return [self init]; 544 return [self init];
512 } 545 }
513 546
514 - (NSInteger)tag { 547 - (NSInteger)tag {
515 return [installButton_ tag]; 548 return [installButton_ tag];
516 } 549 }
517 550
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 styleMask:NSTitledWindowMask 720 styleMask:NSTitledWindowMask
688 backing:NSBackingStoreBuffered 721 backing:NSBackingStoreBuffered
689 defer:YES]); 722 defer:YES]);
690 if ((self = [super initWithWindow:window.get()])) { 723 if ((self = [super initWithWindow:window.get()])) {
691 picker_ = picker; 724 picker_ = picker;
692 if (picker) 725 if (picker)
693 model_ = picker->model(); 726 model_ = picker->model();
694 727
695 inlineDispositionTitleField_.reset([[NSTextField alloc] init]); 728 inlineDispositionTitleField_.reset([[NSTextField alloc] init]);
696 ConfigureTextFieldAsLabel(inlineDispositionTitleField_); 729 ConfigureTextFieldAsLabel(inlineDispositionTitleField_);
697 730 [inlineDispositionTitleField_ setFont:
731 [NSFont boldSystemFontOfSize:[NSFont systemFontSize]]];
698 flipView_.reset([[WebIntentsContentView alloc] init]); 732 flipView_.reset([[WebIntentsContentView alloc] init]);
699 [flipView_ setAutoresizingMask:NSViewMinYMargin]; 733 [flipView_ setAutoresizingMask:NSViewMinYMargin];
700 [[[self window] contentView] setSubviews:@[flipView_]]; 734 [[[self window] contentView] setSubviews:@[flipView_]];
701 735
702 [self performLayoutWithModel:model_]; 736 [self performLayoutWithModel:model_];
703 } 737 }
704 return self; 738 return self;
705 } 739 }
706 740
707 // Handle default OSX dialog cancel mechanisms. (Cmd-.) 741 // Handle default OSX dialog cancel mechanisms. (Cmd-.)
(...skipping 29 matching lines...) Expand all
737 containerSize.height += 771 containerSize.height +=
738 [webContentView frame].origin.y + WebIntentPicker::kContentAreaBorder; 772 [webContentView frame].origin.y + WebIntentPicker::kContentAreaBorder;
739 containerSize.width += 2 * WebIntentPicker::kContentAreaBorder; 773 containerSize.width += 2 * WebIntentPicker::kContentAreaBorder;
740 774
741 // Ensure minimum container width. 775 // Ensure minimum container width.
742 containerSize.width = 776 containerSize.width =
743 std::max(CGFloat(WebIntentPicker::kWindowWidth), containerSize.width); 777 std::max(CGFloat(WebIntentPicker::kWindowWidth), containerSize.width);
744 778
745 // Resize web contents. 779 // Resize web contents.
746 [webContentView setFrameSize:inlineContentSize]; 780 [webContentView setFrameSize:inlineContentSize];
747
748 // Position close button.
749 NSRect buttonFrame = [closeButton_ frame];
750 buttonFrame.origin.x = containerSize.width -
751 WebIntentPicker::kContentAreaBorder - kCloseButtonSize;
752 [closeButton_ setFrame:buttonFrame];
753
754 [self setContainerSize:containerSize]; 781 [self setContainerSize:containerSize];
755 } 782 }
756 783
757 - (void)setContainerSize:(NSSize)containerSize { 784 - (void)setContainerSize:(NSSize)containerSize {
758 // Resize container views 785 // Resize container views
759 NSRect frame = NSMakeRect(0, 0, 0, 0); 786 NSRect frame = NSMakeRect(0, 0, 0, 0);
760 frame.size = containerSize; 787 frame.size = containerSize;
761 [[[self window] contentView] setFrame:frame]; 788 [[[self window] contentView] setFrame:frame];
762 [flipView_ setFrame:frame]; 789 [flipView_ setFrame:frame];
763 790
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 [button setAction:@selector(showChromeWebStore:)]; 863 [button setAction:@selector(showChromeWebStore:)];
837 [subviews addObject:button.get()]; 864 [subviews addObject:button.get()];
838 865
839 // Call size-to-fit to fixup for the localized string. 866 // Call size-to-fit to fixup for the localized string.
840 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button.get()]; 867 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button.get()];
841 868
842 return NSHeight([button frame]); 869 return NSHeight([button frame]);
843 } 870 }
844 871
845 - (void)addCloseButtonToSubviews:(NSMutableArray*)subviews { 872 - (void)addCloseButtonToSubviews:(NSMutableArray*)subviews {
873 const CGFloat kButtonPadding = 4.0; // whitespace inside button frame.
846 if (!closeButton_.get()) { 874 if (!closeButton_.get()) {
847 NSRect buttonFrame = NSMakeRect( 875 NSRect buttonFrame = NSMakeRect(
848 WebIntentPicker::kContentAreaBorder + kTextWidth, 876 WebIntentPicker::kContentAreaBorder + kTextWidth + kButtonPadding,
849 WebIntentPicker::kContentAreaBorder, 877 WebIntentPicker::kContentAreaBorder - kButtonPadding,
850 kCloseButtonSize, kCloseButtonSize); 878 kCloseButtonSize, kCloseButtonSize);
851 closeButton_.reset( 879 closeButton_.reset(
852 [[HoverCloseButton alloc] initWithFrame:buttonFrame]); 880 [[HoverCloseButton alloc] initWithFrame:buttonFrame]);
881 // Anchor close button to upper right.
882 // (NSViewMaxYMargin since parent view is flipped.)
883 [closeButton_ setAutoresizingMask:NSViewMaxYMargin|NSViewMinXMargin];
853 [closeButton_ setTarget:self]; 884 [closeButton_ setTarget:self];
854 [closeButton_ setAction:@selector(cancelOperation:)]; 885 [closeButton_ setAction:@selector(cancelOperation:)];
855 [[closeButton_ cell] setKeyEquivalent:@"\e"]; 886 [[closeButton_ cell] setKeyEquivalent:@"\e"];
856 } 887 }
857 [subviews addObject:closeButton_]; 888 [subviews addObject:closeButton_];
858 } 889 }
859 890
860 // Adds a header (icon and explanatory text) to picker bubble. 891 // Adds a header (icon and explanatory text) to picker bubble.
861 // Returns the y position delta for the next offset. 892 // Returns the y position delta for the next offset.
862 - (CGFloat)addHeaderToSubviews:(NSMutableArray*)subviews 893 - (CGFloat)addHeaderToSubviews:(NSMutableArray*)subviews
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 WebIntentPicker::kContentAreaBorder, offset, size.width(), size.height()); 929 WebIntentPicker::kContentAreaBorder, offset, size.width(), size.height());
899 930
900 [contents_->web_contents()->GetNativeView() setFrame:frame]; 931 [contents_->web_contents()->GetNativeView() setFrame:frame];
901 [subviews addObject:contents_->web_contents()->GetNativeView()]; 932 [subviews addObject:contents_->web_contents()->GetNativeView()];
902 933
903 return NSHeight(frame); 934 return NSHeight(frame);
904 } 935 }
905 936
906 - (CGFloat)addAnotherServiceLinkToSubviews:(NSMutableArray*)subviews 937 - (CGFloat)addAnotherServiceLinkToSubviews:(NSMutableArray*)subviews
907 atOffset:(CGFloat)offset { 938 atOffset:(CGFloat)offset {
939 DCHECK(model_);
940 DCHECK(model_->IsInlineDisposition());
941 GURL url = model_->inline_disposition_url();
908 942
943 const WebIntentPickerModel::InstalledService* service =
944 model_->GetInstalledServiceWithURL(url);
945 DCHECK(service);
946
947 CGFloat originalOffset = offset;
948
949 // Icon for current service.
950 scoped_nsobject<NSImageView> icon;
951 NSRect imageFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, offset,
952 0, 0);
953 icon.reset([[NSImageView alloc] initWithFrame:imageFrame]);
954 [icon setImage:service->favicon.ToNSImage()];
955 [icon setImageFrameStyle:NSImageFrameNone];
956 [icon setEnabled:YES];
957
958 imageFrame.size = [service->favicon.ToNSImage() size];
959 [icon setFrame:imageFrame];
960
961 [subviews addObject:icon];
962
963 // Resize control to fit text
909 NSRect textFrame = 964 NSRect textFrame =
910 NSMakeRect(WebIntentPicker::kContentAreaBorder, offset, kTextWidth, 1); 965 NSMakeRect(NSMaxX(imageFrame) + 4,
966 offset,
967 WebIntentPicker::kTitleLinkMaxWidth, 1);
911 [inlineDispositionTitleField_ setFrame:textFrame]; 968 [inlineDispositionTitleField_ setFrame:textFrame];
912 [subviews addObject:inlineDispositionTitleField_]; 969 [subviews addObject:inlineDispositionTitleField_];
913 [GTMUILocalizerAndLayoutTweaker sizeToFitView:inlineDispositionTitleField_]; 970 [GTMUILocalizerAndLayoutTweaker sizeToFitView:inlineDispositionTitleField_];
914 textFrame = [inlineDispositionTitleField_ frame]; 971 textFrame = [inlineDispositionTitleField_ frame];
915 972
916 // Add link for "choose another service" if other suggestions are available 973 // Add link for "choose another service" if other suggestions are available
917 // or if more than one (the current) service is installed. 974 // or if more than one (the current) service is installed.
918 if (model_->GetInstalledServiceCount() > 1 || 975 if (model_->GetInstalledServiceCount() > 1 ||
919 model_->GetSuggestedExtensionCount()) { 976 model_->GetSuggestedExtensionCount()) {
920 NSRect frame = NSMakeRect( 977 NSRect frame = NSMakeRect(
921 NSMaxX(textFrame) + WebIntentPicker::kContentAreaBorder, offset, 978 NSMaxX(textFrame) + WebIntentPicker::kContentAreaBorder, offset,
922 WebIntentPicker::kTitleLinkMaxWidth, 1); 979 1, 1);
923 NSString* string = l10n_util::GetNSStringWithFixup( 980 NSString* string = l10n_util::GetNSStringWithFixup(
924 IDS_INTENT_PICKER_USE_ALTERNATE_SERVICE); 981 IDS_INTENT_PICKER_USE_ALTERNATE_SERVICE);
925 scoped_nsobject<NSButton> button(CreateHyperlinkButton(string, frame)); 982 scoped_nsobject<NSButton> button(CreateHyperlinkButton(string, frame));
926 [[button cell] setControlSize:NSRegularControlSize]; 983 [[button cell] setControlSize:NSRegularControlSize];
984 [[button cell] setFont:
985 [NSFont controlContentFontOfSize:[NSFont systemFontSize]]];
927 [button setTarget:self]; 986 [button setTarget:self];
928 [button setAction:@selector(chooseAnotherService:)]; 987 [button setAction:@selector(chooseAnotherService:)];
929 [subviews addObject:button]; 988 [subviews addObject:button];
930 989
931 // Call size-to-fit to fixup for the localized string. 990 // Call size-to-fit to fixup for the localized string.
932 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button]; 991 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button];
933 992
993 // Right-align the "use another service" button.
994 frame = [button frame];
995 frame.origin.x = WebIntentPicker::kWindowWidth - NSWidth(frame) -
996 2 * WebIntentPicker::kContentAreaBorder - kCloseButtonSize;
997 [button setFrame:frame];
998 [button setAutoresizingMask:NSViewMinXMargin];
999
934 // And finally, make sure the link and the title are horizontally centered. 1000 // And finally, make sure the link and the title are horizontally centered.
935 frame = [button frame]; 1001 frame = [button frame];
936 CGFloat height = std::max(NSHeight(textFrame), NSHeight(frame)); 1002 CGFloat height = std::max(NSHeight(textFrame), NSHeight(frame));
937 frame.origin.y += (height - NSHeight(frame)) / 2.0; 1003 frame.origin.y += (height - NSHeight(frame)) / 2.0;
938 frame.size.height = height; 1004 frame.size.height = height;
939 textFrame.origin.y += (height - NSHeight(textFrame)) / 2.0; 1005 textFrame.origin.y += (height - NSHeight(textFrame)) / 2.0;
940 textFrame.size.height = height; 1006 textFrame.size.height = height;
941 [button setFrame:frame]; 1007 [button setFrame:frame];
942 [inlineDispositionTitleField_ setFrame:textFrame]; 1008 [inlineDispositionTitleField_ setFrame:textFrame];
943 } 1009 }
944 1010
945 return NSHeight(textFrame); 1011 offset += NSHeight(textFrame) + kVerticalSpacing;
1012
1013 scoped_nsobject<NSBox> spacer;
1014
1015 NSRect frame = NSMakeRect(0, offset, WebIntentPicker::kWindowWidth, 1.0);
1016 spacer.reset([[NSBox alloc] initWithFrame:frame]);
1017 [spacer setBoxType:NSBoxSeparator];
1018 [spacer setAlphaValue:0.2];
1019 [spacer setAutoresizingMask:NSViewWidthSizable];
1020 [subviews addObject: spacer];
1021
1022 return offset + kVerticalSpacing - originalOffset;
946 } 1023 }
947 1024
948 - (NSView*)createEmptyView { 1025 - (NSView*)createEmptyView {
949 NSRect titleFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, 1026 NSRect titleFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder,
950 WebIntentPicker::kContentAreaBorder, 1027 WebIntentPicker::kContentAreaBorder,
951 kTextWidth, 1); 1028 kTextWidth, 1);
952 scoped_nsobject<NSTextField> title( 1029 scoped_nsobject<NSTextField> title(
953 [[NSTextField alloc] initWithFrame:titleFrame]); 1030 [[NSTextField alloc] initWithFrame:titleFrame]);
954 ConfigureTextFieldAsLabel(title); 1031 ConfigureTextFieldAsLabel(title);
955 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 1032 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 waitingView_.reset([[WaitingView alloc] init]); 1089 waitingView_.reset([[WaitingView alloc] init]);
1013 [subviews addObject:waitingView_]; 1090 [subviews addObject:waitingView_];
1014 offset += NSHeight([waitingView_ frame]); 1091 offset += NSHeight([waitingView_ frame]);
1015 } else if (isEmpty) { 1092 } else if (isEmpty) {
1016 scoped_nsobject<NSView> emptyView([self createEmptyView]); 1093 scoped_nsobject<NSView> emptyView([self createEmptyView]);
1017 [subviews addObject:emptyView]; 1094 [subviews addObject:emptyView];
1018 offset += NSHeight([emptyView frame]); 1095 offset += NSHeight([emptyView frame]);
1019 } else if (contents_) { 1096 } else if (contents_) {
1020 offset += [self addAnotherServiceLinkToSubviews:subviews 1097 offset += [self addAnotherServiceLinkToSubviews:subviews
1021 atOffset:offset]; 1098 atOffset:offset];
1022 offset += WebIntentPicker::kContentAreaBorder;
1023 offset += [self addInlineHtmlToSubviews:subviews atOffset:offset]; 1099 offset += [self addInlineHtmlToSubviews:subviews atOffset:offset];
1024 } else { 1100 } else {
1025 offset += [self addHeaderToSubviews:subviews atOffset:offset]; 1101 offset += [self addHeaderToSubviews:subviews atOffset:offset];
1026 1102
1027 if (model) { 1103 if (model) {
1028 intentView_.reset( 1104 intentView_.reset(
1029 [[IntentView alloc] initWithModel:model forController:self]); 1105 [[IntentView alloc] initWithModel:model forController:self]);
1030 offset += [self addStackedView:intentView_ 1106 offset += [self addStackedView:intentView_
1031 toSubviews:subviews 1107 toSubviews:subviews
1032 atOffset:offset]; 1108 atOffset:offset];
1033 } 1109 }
1034 offset += [self addCwsButtonToSubviews:subviews atOffset:offset]; 1110 offset += [self addCwsButtonToSubviews:subviews atOffset:offset];
1035 } 1111 }
1036 [self addCloseButtonToSubviews:subviews];
1037 1112
1038 // Add the bottom padding. 1113 // Add the bottom padding.
1039 offset += WebIntentPicker::kContentAreaBorder; 1114 offset += WebIntentPicker::kContentAreaBorder;
1040 1115
1116 // Resize to fit.
1117 [self setContainerSize:NSMakeSize(WebIntentPicker::kWindowWidth, offset)];
1118
1119 [self addCloseButtonToSubviews:subviews];
1120
1041 // Replace the window's content. 1121 // Replace the window's content.
1042 [flipView_ setSubviews:subviews]; 1122 [flipView_ setSubviews:subviews];
1043
1044 // And resize to fit.
1045 [self setContainerSize:NSMakeSize(WebIntentPicker::kWindowWidth, offset)];
1046 } 1123 }
1047 1124
1048 - (void)setActionString:(NSString*)actionString { 1125 - (void)setActionString:(NSString*)actionString {
1049 NSRect textFrame; 1126 NSRect textFrame;
1050 if (!actionTextField_.get()) { 1127 if (!actionTextField_.get()) {
1051 textFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, 0, 1128 textFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, 0,
1052 kTextWidth, 1); 1129 kTextWidth, 1);
1053 1130
1054 actionTextField_.reset([[NSTextField alloc] initWithFrame:textFrame]); 1131 actionTextField_.reset([[NSTextField alloc] initWithFrame:textFrame]);
1055 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 1132 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
(...skipping 25 matching lines...) Expand all
1081 - (void)stopThrobber { 1158 - (void)stopThrobber {
1082 [closeButton_ setEnabled:YES]; 1159 [closeButton_ setEnabled:YES];
1083 [intentView_ stopThrobber]; 1160 [intentView_ stopThrobber];
1084 } 1161 }
1085 1162
1086 - (void)closeSheet { 1163 - (void)closeSheet {
1087 [NSApp endSheet:[self window]]; 1164 [NSApp endSheet:[self window]];
1088 } 1165 }
1089 1166
1090 @end // WebIntentPickerSheetController 1167 @end // WebIntentPickerSheetController
OLDNEW
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698