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

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: Added comment. 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 18 matching lines...) Expand all
29 #include "ui/base/l10n/l10n_util.h" 29 #include "ui/base/l10n/l10n_util.h"
30 #include "ui/base/l10n/l10n_util_mac.h" 30 #include "ui/base/l10n/l10n_util_mac.h"
31 #include "ui/base/resource/resource_bundle.h" 31 #include "ui/base/resource/resource_bundle.h"
32 #include "ui/base/text/text_elider.h" 32 #include "ui/base/text/text_elider.h"
33 #include "ui/gfx/font.h" 33 #include "ui/gfx/font.h"
34 #include "ui/gfx/image/image.h" 34 #include "ui/gfx/image/image.h"
35 35
36 using content::OpenURLParams; 36 using content::OpenURLParams;
37 using content::Referrer; 37 using content::Referrer;
38 38
39 @interface HyperlinkButtonCell (Private)
40 - (void)customizeButtonCell;
41 @end
42
43 @interface CustomLinkButtonCell : HyperlinkButtonCell
44 @end
45
39 namespace { 46 namespace {
40 47
41 // The width of a service button, in view coordinates. 48 // The width of a service button, in view coordinates.
42 const CGFloat kServiceButtonWidth = 300; 49 const CGFloat kServiceButtonWidth = 300;
43 50
44 // Spacing in between sections. 51 // Spacing in between sections.
45 const CGFloat kVerticalSpacing = 18; 52 const CGFloat kVerticalSpacing = 18;
46 53
47 // Square size of the close button. 54 // Square size of the close button.
48 const CGFloat kCloseButtonSize = 16; 55 const CGFloat kCloseButtonSize = 16;
49 56
50 // Font size for picker header.
51 const CGFloat kHeaderFontSize = 14.5;
52
53 // Width of the text fields. 57 // Width of the text fields.
54 const CGFloat kTextWidth = WebIntentPicker::kWindowWidth - 58 const CGFloat kTextWidth = WebIntentPicker::kWindowWidth -
55 (WebIntentPicker::kContentAreaBorder * 2.0 + kCloseButtonSize); 59 (WebIntentPicker::kContentAreaBorder * 2.0 + kCloseButtonSize);
56 60
57 // Maximum number of intents (suggested and installed) displayed. 61 // Maximum number of intents (suggested and installed) displayed.
58 const int kMaxIntentRows = 4; 62 const int kMaxIntentRows = 4;
59 63
60 // Sets properties on the given |field| to act as title or description labels. 64 // Sets properties on the given |field| to act as title or description labels.
61 void ConfigureTextFieldAsLabel(NSTextField* field) { 65 void ConfigureTextFieldAsLabel(NSTextField* field) {
62 [field setEditable:NO]; 66 [field setEditable:NO];
63 [field setSelectable:YES]; 67 [field setSelectable:YES];
64 [field setDrawsBackground:NO]; 68 [field setDrawsBackground:NO];
65 [field setBezeled:NO]; 69 [field setBezeled:NO];
66 } 70 }
67 71
68 NSButton* CreateHyperlinkButton(NSString* title, const NSRect& frame) { 72 NSButton* CreateHyperlinkButton(NSString* title, const NSRect& frame) {
69 NSButton* button = [[NSButton alloc] initWithFrame:frame]; 73 NSButton* button = [[NSButton alloc] initWithFrame:frame];
70 scoped_nsobject<HyperlinkButtonCell> cell( 74 scoped_nsobject<CustomLinkButtonCell> cell(
71 [[HyperlinkButtonCell alloc] initTextCell:title]); 75 [[CustomLinkButtonCell alloc] initTextCell:title]);
72 [cell setControlSize:NSSmallControlSize]; 76 [cell setControlSize:NSSmallControlSize];
73 [button setCell:cell.get()]; 77 [button setCell:cell.get()];
74 [button setButtonType:NSMomentaryPushInButton]; 78 [button setButtonType:NSMomentaryPushInButton];
75 [button setBezelStyle:NSRegularSquareBezelStyle]; 79 [button setBezelStyle:NSRegularSquareBezelStyle];
76 80
77 return button; 81 return button;
78 } 82 }
79 83
80 } // namespace 84 } // namespace
81 85
86
87 // Provide custom link format for intent picker. Removes underline attribute,
88 // since UX direction is "look like WebUI".
89 @implementation CustomLinkButtonCell
90 - (void)customizeButtonCell {
91 [super customizeButtonCell];
92 [self setTextColor:[NSColor colorWithDeviceRed:0xff/255.0
93 green:0x11/255.0
94 blue:0x55/255.0
95 alpha:0xcc/255.0]];
96 }
97
98 - (NSDictionary*)linkAttributes {
99 scoped_nsobject<NSMutableParagraphStyle> paragraphStyle(
100 [[NSParagraphStyle defaultParagraphStyle] mutableCopy]);
Nico 2012/09/11 06:56:36 indent 2 more
groby-ooo-7-16 2012/09/12 22:39:11 Done.
101 [paragraphStyle setAlignment:[self alignment]];
102
103 return @{
104 NSForegroundColorAttributeName: [self textColor],
105 NSFontAttributeName: [self font],
106 NSCursorAttributeName: [NSCursor pointingHandCursor],
107 NSParagraphStyleAttributeName: paragraphStyle.get()
108 };
109 }
110 @end
111
82 // This simple NSView subclass is used as the single subview of the page info 112 // This simple NSView subclass is used as the single subview of the page info
83 // bubble's window's contentView. Drawing is flipped so that layout of the 113 // bubble's window's contentView. Drawing is flipped so that layout of the
84 // sections is easier. Apple recommends flipping the coordinate origin when 114 // sections is easier. Apple recommends flipping the coordinate origin when
85 // doing a lot of text layout because it's more natural. 115 // doing a lot of text layout because it's more natural.
86 @interface WebIntentsContentView : NSView 116 @interface WebIntentsContentView : NSView
87 @end 117 @end
88 @implementation WebIntentsContentView 118 @implementation WebIntentsContentView
89 - (BOOL)isFlipped { 119 - (BOOL)isFlipped {
90 return YES; 120 return YES;
91 } 121 }
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 kTextWidth, 1); 274 kTextWidth, 1);
245 subtitleField_.reset([[NSTextField alloc] initWithFrame:frame]); 275 subtitleField_.reset([[NSTextField alloc] initWithFrame:frame]);
246 ConfigureTextFieldAsLabel(subtitleField_); 276 ConfigureTextFieldAsLabel(subtitleField_);
247 gfx::Font textFont = rb.GetFont(ConstrainedWindow::kTextFontStyle); 277 gfx::Font textFont = rb.GetFont(ConstrainedWindow::kTextFontStyle);
248 [subtitleField_ setFont:textFont.GetNativeFont()]; 278 [subtitleField_ setFont:textFont.GetNativeFont()];
249 279
250 frame = NSMakeRect(0, 0, WebIntentPicker::kWindowWidth, 1.0); 280 frame = NSMakeRect(0, 0, WebIntentPicker::kWindowWidth, 1.0);
251 spacer_.reset([[NSBox alloc] initWithFrame:frame]); 281 spacer_.reset([[NSBox alloc] initWithFrame:frame]);
252 [spacer_ setBoxType:NSBoxSeparator]; 282 [spacer_ setBoxType:NSBoxSeparator];
253 [spacer_ setBorderColor:[NSColor blackColor]]; 283 [spacer_ setBorderColor:[NSColor blackColor]];
284 [spacer_ setAlphaValue:0.2];
254 285
255 NSArray* subviews = @[titleField_, subtitleField_, spacer_]; 286 NSArray* subviews = @[titleField_, subtitleField_, spacer_];
256 [self setSubviews:subviews]; 287 [self setSubviews:subviews];
257 } 288 }
258 return self; 289 return self;
259 } 290 }
260 291
261 - (void)setTitle:(NSString*)title { 292 - (void)setTitle:(NSString*)title {
262 NSRect frame = [titleField_ frame]; 293 NSRect frame = [titleField_ frame];
263 [titleField_ setStringValue:title]; 294 [titleField_ setStringValue:title];
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 styleMask:NSTitledWindowMask 716 styleMask:NSTitledWindowMask
686 backing:NSBackingStoreBuffered 717 backing:NSBackingStoreBuffered
687 defer:YES]); 718 defer:YES]);
688 if ((self = [super initWithWindow:window.get()])) { 719 if ((self = [super initWithWindow:window.get()])) {
689 picker_ = picker; 720 picker_ = picker;
690 if (picker) 721 if (picker)
691 model_ = picker->model(); 722 model_ = picker->model();
692 723
693 inlineDispositionTitleField_.reset([[NSTextField alloc] init]); 724 inlineDispositionTitleField_.reset([[NSTextField alloc] init]);
694 ConfigureTextFieldAsLabel(inlineDispositionTitleField_); 725 ConfigureTextFieldAsLabel(inlineDispositionTitleField_);
695 726 [inlineDispositionTitleField_ setFont:[NSFont boldSystemFontOfSize:0]];
696 flipView_.reset([[WebIntentsContentView alloc] init]); 727 flipView_.reset([[WebIntentsContentView alloc] init]);
697 [flipView_ setAutoresizingMask:NSViewMinYMargin]; 728 [flipView_ setAutoresizingMask:NSViewMinYMargin];
698 [[[self window] contentView] setSubviews: 729 [[[self window] contentView] setSubviews:
699 [NSArray arrayWithObject:flipView_]]; 730 [NSArray arrayWithObject:flipView_]];
700 731
701 [self performLayoutWithModel:model_]; 732 [self performLayoutWithModel:model_];
702 [[self window] makeFirstResponder:self]; 733 [[self window] makeFirstResponder:self];
703 } 734 }
704 return self; 735 return self;
705 } 736 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 containerSize.height += 777 containerSize.height +=
747 [webContentView frame].origin.y + WebIntentPicker::kContentAreaBorder; 778 [webContentView frame].origin.y + WebIntentPicker::kContentAreaBorder;
748 containerSize.width += 2 * WebIntentPicker::kContentAreaBorder; 779 containerSize.width += 2 * WebIntentPicker::kContentAreaBorder;
749 780
750 // Ensure minimum container width. 781 // Ensure minimum container width.
751 containerSize.width = 782 containerSize.width =
752 std::max(CGFloat(WebIntentPicker::kWindowWidth), containerSize.width); 783 std::max(CGFloat(WebIntentPicker::kWindowWidth), containerSize.width);
753 784
754 // Resize web contents. 785 // Resize web contents.
755 [webContentView setFrameSize:inlineContentSize]; 786 [webContentView setFrameSize:inlineContentSize];
756
757 // Position close button.
758 NSRect buttonFrame = [closeButton_ frame];
759 buttonFrame.origin.x = containerSize.width -
760 WebIntentPicker::kContentAreaBorder - kCloseButtonSize;
761 [closeButton_ setFrame:buttonFrame];
762
763 [self setContainerSize:containerSize]; 787 [self setContainerSize:containerSize];
764 } 788 }
765 789
766 - (void)setContainerSize:(NSSize)containerSize { 790 - (void)setContainerSize:(NSSize)containerSize {
767 // Resize container views 791 // Resize container views
768 NSRect frame = NSMakeRect(0, 0, 0, 0); 792 NSRect frame = NSMakeRect(0, 0, 0, 0);
769 frame.size = containerSize; 793 frame.size = containerSize;
770 [[[self window] contentView] setFrame:frame]; 794 [[[self window] contentView] setFrame:frame];
771 [flipView_ setFrame:frame]; 795 [flipView_ setFrame:frame];
772 796
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 [button setAction:@selector(showChromeWebStore:)]; 867 [button setAction:@selector(showChromeWebStore:)];
844 [subviews addObject:button.get()]; 868 [subviews addObject:button.get()];
845 869
846 // Call size-to-fit to fixup for the localized string. 870 // Call size-to-fit to fixup for the localized string.
847 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button.get()]; 871 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button.get()];
848 872
849 return NSHeight([button frame]); 873 return NSHeight([button frame]);
850 } 874 }
851 875
852 - (void)addCloseButtonToSubviews:(NSMutableArray*)subviews { 876 - (void)addCloseButtonToSubviews:(NSMutableArray*)subviews {
877 const CGFloat kButtonPadding = 4.0; // whitespace inside button frame.
853 if (!closeButton_.get()) { 878 if (!closeButton_.get()) {
854 NSRect buttonFrame = NSMakeRect( 879 NSRect buttonFrame = NSMakeRect(
855 WebIntentPicker::kContentAreaBorder + kTextWidth, 880 WebIntentPicker::kContentAreaBorder + kTextWidth + kButtonPadding,
856 WebIntentPicker::kContentAreaBorder, 881 WebIntentPicker::kContentAreaBorder - kButtonPadding,
857 kCloseButtonSize, kCloseButtonSize); 882 kCloseButtonSize, kCloseButtonSize);
858 closeButton_.reset( 883 closeButton_.reset(
859 [[HoverCloseButton alloc] initWithFrame:buttonFrame]); 884 [[HoverCloseButton alloc] initWithFrame:buttonFrame]);
885 // Anchor close button to upper right.
886 // (NSViewMaxYMargin since parent view is flipped.)
887 [closeButton_ setAutoresizingMask:NSViewMaxYMargin|NSViewMinXMargin];
860 [closeButton_ setTarget:self]; 888 [closeButton_ setTarget:self];
861 [closeButton_ setAction:@selector(cancelOperation:)]; 889 [closeButton_ setAction:@selector(cancelOperation:)];
862 } 890 }
863 [subviews addObject:closeButton_]; 891 [subviews addObject:closeButton_];
864 } 892 }
865 893
866 // Adds a header (icon and explanatory text) to picker bubble. 894 // Adds a header (icon and explanatory text) to picker bubble.
867 // Returns the y position delta for the next offset. 895 // Returns the y position delta for the next offset.
868 - (CGFloat)addHeaderToSubviews:(NSMutableArray*)subviews 896 - (CGFloat)addHeaderToSubviews:(NSMutableArray*)subviews
869 atOffset:(CGFloat)offset { 897 atOffset:(CGFloat)offset {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 WebIntentPicker::kContentAreaBorder, offset, size.width(), size.height()); 932 WebIntentPicker::kContentAreaBorder, offset, size.width(), size.height());
905 933
906 [contents_->web_contents()->GetNativeView() setFrame:frame]; 934 [contents_->web_contents()->GetNativeView() setFrame:frame];
907 [subviews addObject:contents_->web_contents()->GetNativeView()]; 935 [subviews addObject:contents_->web_contents()->GetNativeView()];
908 936
909 return NSHeight(frame); 937 return NSHeight(frame);
910 } 938 }
911 939
912 - (CGFloat)addAnotherServiceLinkToSubviews:(NSMutableArray*)subviews 940 - (CGFloat)addAnotherServiceLinkToSubviews:(NSMutableArray*)subviews
913 atOffset:(CGFloat)offset { 941 atOffset:(CGFloat)offset {
942 DCHECK(model_);
943 DCHECK(model_->IsInlineDisposition());
944 GURL url = model_->inline_disposition_url();
914 945
946 const WebIntentPickerModel::InstalledService* service =
947 model_->GetInstalledServiceWithURL(url);
948 DCHECK(service);
949
950 CGFloat originalOffset = offset;
951
952 // Icon for current service.
953 scoped_nsobject<NSImageView> icon;
954 NSRect imageFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, offset,
955 0, 0);
956 icon.reset([[NSImageView alloc] initWithFrame:imageFrame]);
957 [icon setImage:service->favicon.ToNSImage()];
958 [icon setImageFrameStyle:NSImageFrameNone];
959 [icon setEnabled:YES];
960
961 imageFrame.size = [service->favicon.ToNSImage() size];
962 [icon setFrame:imageFrame];
963
964 [subviews addObject:icon];
965
966 // Resize control to fit text
915 NSRect textFrame = 967 NSRect textFrame =
916 NSMakeRect(WebIntentPicker::kContentAreaBorder, offset, kTextWidth, 1); 968 NSMakeRect(NSMaxX(imageFrame) + 4,
969 offset,
970 WebIntentPicker::kTitleLinkMaxWidth, 1);
917 [inlineDispositionTitleField_ setFrame:textFrame]; 971 [inlineDispositionTitleField_ setFrame:textFrame];
918 [subviews addObject:inlineDispositionTitleField_]; 972 [subviews addObject:inlineDispositionTitleField_];
919 [GTMUILocalizerAndLayoutTweaker sizeToFitView:inlineDispositionTitleField_]; 973 [GTMUILocalizerAndLayoutTweaker sizeToFitView:inlineDispositionTitleField_];
920 textFrame = [inlineDispositionTitleField_ frame]; 974 textFrame = [inlineDispositionTitleField_ frame];
921 975
922 // Add link for "choose another service" if other suggestions are available 976 // Add link for "choose another service" if other suggestions are available
923 // or if more than one (the current) service is installed. 977 // or if more than one (the current) service is installed.
924 if (model_->GetInstalledServiceCount() > 1 || 978 if (model_->GetInstalledServiceCount() > 1 ||
925 model_->GetSuggestedExtensionCount()) { 979 model_->GetSuggestedExtensionCount()) {
926 NSRect frame = NSMakeRect( 980 NSRect frame = NSMakeRect(
927 NSMaxX(textFrame) + WebIntentPicker::kContentAreaBorder, offset, 981 NSMaxX(textFrame) + WebIntentPicker::kContentAreaBorder, offset,
928 WebIntentPicker::kTitleLinkMaxWidth, 1); 982 1, 1);
929 NSString* string = l10n_util::GetNSStringWithFixup( 983 NSString* string = l10n_util::GetNSStringWithFixup(
930 IDS_INTENT_PICKER_USE_ALTERNATE_SERVICE); 984 IDS_INTENT_PICKER_USE_ALTERNATE_SERVICE);
931 scoped_nsobject<NSButton> button(CreateHyperlinkButton(string, frame)); 985 scoped_nsobject<NSButton> button(CreateHyperlinkButton(string, frame));
932 [[button cell] setControlSize:NSRegularControlSize]; 986 [[button cell] setControlSize:NSRegularControlSize];
987 [[button cell] setFont:[NSFont controlContentFontOfSize:0]];
Nico 2012/09/11 06:56:36 nit: i think you replaced "0" with the explicit fo
groby-ooo-7-16 2012/09/12 22:39:11 Done.
933 [button setTarget:self]; 988 [button setTarget:self];
934 [button setAction:@selector(chooseAnotherService:)]; 989 [button setAction:@selector(chooseAnotherService:)];
935 [subviews addObject:button]; 990 [subviews addObject:button];
936 991
937 // Call size-to-fit to fixup for the localized string. 992 // Call size-to-fit to fixup for the localized string.
938 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button]; 993 [GTMUILocalizerAndLayoutTweaker sizeToFitView:button];
939 994
995 // Right-align the "use another service" button.
996 frame = [button frame];
997 frame.origin.x = WebIntentPicker::kWindowWidth - NSWidth(frame) -
998 2 * WebIntentPicker::kContentAreaBorder - kCloseButtonSize;
999 [button setFrame:frame];
1000 [button setAutoresizingMask:NSViewMinXMargin];
1001
940 // And finally, make sure the link and the title are horizontally centered. 1002 // And finally, make sure the link and the title are horizontally centered.
941 frame = [button frame]; 1003 frame = [button frame];
942 CGFloat height = std::max(NSHeight(textFrame), NSHeight(frame)); 1004 CGFloat height = std::max(NSHeight(textFrame), NSHeight(frame));
943 frame.origin.y += (height - NSHeight(frame)) / 2.0; 1005 frame.origin.y += (height - NSHeight(frame)) / 2.0;
944 frame.size.height = height; 1006 frame.size.height = height;
945 textFrame.origin.y += (height - NSHeight(textFrame)) / 2.0; 1007 textFrame.origin.y += (height - NSHeight(textFrame)) / 2.0;
946 textFrame.size.height = height; 1008 textFrame.size.height = height;
947 [button setFrame:frame]; 1009 [button setFrame:frame];
948 [inlineDispositionTitleField_ setFrame:textFrame]; 1010 [inlineDispositionTitleField_ setFrame:textFrame];
949 } 1011 }
950 1012
951 return NSHeight(textFrame); 1013 offset += NSHeight(textFrame) + kVerticalSpacing;
1014
1015 scoped_nsobject<NSBox> spacer;
1016
1017 NSRect frame = NSMakeRect(0, offset, WebIntentPicker::kWindowWidth, 1.0);
1018 spacer.reset([[NSBox alloc] initWithFrame:frame]);
1019 [spacer setBoxType:NSBoxSeparator];
1020 [spacer setAlphaValue:0.2];
1021 [spacer setAutoresizingMask:NSViewWidthSizable];
1022 [subviews addObject: spacer];
1023
1024 return offset + kVerticalSpacing - originalOffset;
952 } 1025 }
953 1026
954 - (NSView*)createEmptyView { 1027 - (NSView*)createEmptyView {
955 NSRect titleFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, 1028 NSRect titleFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder,
956 WebIntentPicker::kContentAreaBorder, 1029 WebIntentPicker::kContentAreaBorder,
957 kTextWidth, 1); 1030 kTextWidth, 1);
958 scoped_nsobject<NSTextField> title( 1031 scoped_nsobject<NSTextField> title(
959 [[NSTextField alloc] initWithFrame:titleFrame]); 1032 [[NSTextField alloc] initWithFrame:titleFrame]);
960 ConfigureTextFieldAsLabel(title); 1033 ConfigureTextFieldAsLabel(title);
961 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 1034 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 waitingView_.reset([[WaitingView alloc] init]); 1091 waitingView_.reset([[WaitingView alloc] init]);
1019 [subviews addObject:waitingView_]; 1092 [subviews addObject:waitingView_];
1020 offset += NSHeight([waitingView_ frame]); 1093 offset += NSHeight([waitingView_ frame]);
1021 } else if (isEmpty) { 1094 } else if (isEmpty) {
1022 scoped_nsobject<NSView> emptyView([self createEmptyView]); 1095 scoped_nsobject<NSView> emptyView([self createEmptyView]);
1023 [subviews addObject:emptyView]; 1096 [subviews addObject:emptyView];
1024 offset += NSHeight([emptyView frame]); 1097 offset += NSHeight([emptyView frame]);
1025 } else if (contents_) { 1098 } else if (contents_) {
1026 offset += [self addAnotherServiceLinkToSubviews:subviews 1099 offset += [self addAnotherServiceLinkToSubviews:subviews
1027 atOffset:offset]; 1100 atOffset:offset];
1028 offset += WebIntentPicker::kContentAreaBorder;
1029 offset += [self addInlineHtmlToSubviews:subviews atOffset:offset]; 1101 offset += [self addInlineHtmlToSubviews:subviews atOffset:offset];
1030 } else { 1102 } else {
1031 offset += [self addHeaderToSubviews:subviews atOffset:offset]; 1103 offset += [self addHeaderToSubviews:subviews atOffset:offset];
1032 1104
1033 if (model) { 1105 if (model) {
1034 intentView_.reset( 1106 intentView_.reset(
1035 [[IntentView alloc] initWithModel:model forController:self]); 1107 [[IntentView alloc] initWithModel:model forController:self]);
1036 offset += [self addStackedView:intentView_ 1108 offset += [self addStackedView:intentView_
1037 toSubviews:subviews 1109 toSubviews:subviews
1038 atOffset:offset]; 1110 atOffset:offset];
1039 } 1111 }
1040 offset += [self addCwsButtonToSubviews:subviews atOffset:offset]; 1112 offset += [self addCwsButtonToSubviews:subviews atOffset:offset];
1041 } 1113 }
1042 [self addCloseButtonToSubviews:subviews];
1043 1114
1044 // Add the bottom padding. 1115 // Add the bottom padding.
1045 offset += WebIntentPicker::kContentAreaBorder; 1116 offset += WebIntentPicker::kContentAreaBorder;
1046 1117
1118 // Resize to fit.
1119 [self setContainerSize:NSMakeSize(WebIntentPicker::kWindowWidth, offset)];
1120
1121 [self addCloseButtonToSubviews:subviews];
1122
1047 // Replace the window's content. 1123 // Replace the window's content.
1048 [flipView_ setSubviews:subviews]; 1124 [flipView_ setSubviews:subviews];
1049
1050 // And resize to fit.
1051 [self setContainerSize:NSMakeSize(WebIntentPicker::kWindowWidth, offset)];
1052 } 1125 }
1053 1126
1054 - (void)setActionString:(NSString*)actionString { 1127 - (void)setActionString:(NSString*)actionString {
1055 NSRect textFrame; 1128 NSRect textFrame;
1056 if (!actionTextField_.get()) { 1129 if (!actionTextField_.get()) {
1057 textFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, 0, 1130 textFrame = NSMakeRect(WebIntentPicker::kContentAreaBorder, 0,
1058 kTextWidth, 1); 1131 kTextWidth, 1);
1059 1132
1060 actionTextField_.reset([[NSTextField alloc] initWithFrame:textFrame]); 1133 actionTextField_.reset([[NSTextField alloc] initWithFrame:textFrame]);
1061 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 1134 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
(...skipping 25 matching lines...) Expand all
1087 - (void)stopThrobber { 1160 - (void)stopThrobber {
1088 [closeButton_ setEnabled:YES]; 1161 [closeButton_ setEnabled:YES];
1089 [intentView_ stopThrobber]; 1162 [intentView_ stopThrobber];
1090 } 1163 }
1091 1164
1092 - (void)closeSheet { 1165 - (void)closeSheet {
1093 [NSApp endSheet:[self window]]; 1166 [NSApp endSheet:[self window]];
1094 } 1167 }
1095 1168
1096 @end // WebIntentPickerSheetController 1169 @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