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

Unified Diff: chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm

Issue 7610011: Update Sad Tab help text and link. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync and merge. Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/cocoa/tab_contents/sad_tab_view.h ('k') | chrome/browser/ui/gtk/sad_tab_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm
diff --git a/chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm b/chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm
index 53ffcd928b9198308b4e375c32b2e501159249d0..dffe008fd3417956975c33d0205fe51486e26e1a 100644
--- a/chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm
+++ b/chrome/browser/ui/cocoa/tab_contents/sad_tab_view.mm
@@ -1,13 +1,20 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// 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.
#include "chrome/browser/ui/cocoa/tab_contents/sad_tab_view.h"
#include "base/logging.h"
+#include "base/sys_string_conversions.h"
#import "chrome/browser/ui/cocoa/hyperlink_button_cell.h"
+#import "chrome/browser/ui/cocoa/hyperlink_text_view.h"
+#include "chrome/browser/ui/cocoa/tab_contents/sad_tab_controller.h"
+#include "chrome/common/url_constants.h"
+#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/l10n/l10n_util_mac.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/image/image.h"
@@ -39,11 +46,8 @@ static const CGFloat kTabHorzMargin = 13;
NSFont* messageFont = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
[message_ setFont:messageFont];
- // If necessary, set font and color for link.
- if (linkButton_) {
- [linkButton_ setFont:messageFont];
- [linkCell_ setTextColor:[NSColor whiteColor]];
- }
+ DCHECK(controller_);
+ [self initializeHelpText];
// Initialize background color.
NSColor* backgroundColor = [[NSColor colorWithCalibratedRed:(35.0f/255.0f)
@@ -106,23 +110,63 @@ static const CGFloat kTabHorzMargin = 13;
titleY - kTitleMessageSpacing - NSHeight(messageFrame);
[message_ setFrame:messageFrame];
- if (linkButton_) {
+ // Set new frame for help text and link.
+ if (help_) {
if (callSizeToFit)
- [linkButton_ sizeToFit];
+ [help_.get() sizeToFit];
+ CGFloat helpHeight = [help_.get() frame].size.height;
+ [help_.get() setFrameSize:NSMakeSize(maxWidth, helpHeight)];
// Set new frame origin for link.
- NSRect linkFrame = [linkButton_ frame];
- CGFloat linkX = (maxWidth - NSWidth(linkFrame)) / 2;
- CGFloat linkY =
- NSMinY(messageFrame) - kMessageLinkSpacing - NSHeight(linkFrame);
- [linkButton_ setFrameOrigin:NSMakePoint(linkX, linkY)];
+ NSRect helpFrame = [help_.get() frame];
+ CGFloat helpX = (maxWidth - NSWidth(helpFrame)) / 2;
+ CGFloat helpY =
+ NSMinY(messageFrame) - kMessageLinkSpacing - NSHeight(helpFrame);
+ [help_.get() setFrameOrigin:NSMakePoint(helpX, helpY)];
}
}
-- (void)removeLinkButton {
- if (linkButton_) {
- [linkButton_ removeFromSuperview];
- linkButton_ = nil;
+- (void)removeHelpText {
+ if (help_.get()) {
+ [help_.get() removeFromSuperview];
+ help_.reset(nil);
}
}
+- (void)initializeHelpText {
+ // Replace the help placeholder NSTextField with the real help NSTextView.
+ // The former doesn't show links in a nice way, but the latter can't be added
+ // in IB without a containing scroll view, so create the NSTextView
+ // programmatically. Taken from -[InfoBarController initializeLabel].
+ help_.reset(
+ [[HyperlinkTextView alloc] initWithFrame:[helpPlaceholder_ frame]]);
+ [help_.get() setAutoresizingMask:[helpPlaceholder_ autoresizingMask]];
+ [[helpPlaceholder_ superview]
+ replaceSubview:helpPlaceholder_ with:help_.get()];
+ helpPlaceholder_ = nil; // Now released.
+ [help_.get() setDelegate:self];
+ [help_.get() setAlignment:NSCenterTextAlignment];
+
+ // Get the help text and link.
+ size_t linkOffset = 0;
+ NSString* helpMessage(base::SysUTF16ToNSString(l10n_util::GetStringFUTF16(
+ IDS_SAD_TAB_HELP_MESSAGE, string16(), &linkOffset)));
+ NSString* helpLink = l10n_util::GetNSString(IDS_SAD_TAB_HELP_LINK);
+ NSFont* font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
+ [help_.get() setMessageAndLink:helpMessage
+ withLink:helpLink
+ atOffset:linkOffset
+ font:font
+ messageColor:[NSColor whiteColor]
+ linkColor:[NSColor whiteColor]];
+}
+
+// Called when someone clicks on the embedded link.
+- (BOOL) textView:(NSTextView*)textView
+ clickedOnLink:(id)link
+ atIndex:(NSUInteger)charIndex {
+ if (controller_)
+ [controller_ openLearnMoreAboutCrashLink:nil];
+ return YES;
+}
+
@end
« no previous file with comments | « chrome/browser/ui/cocoa/tab_contents/sad_tab_view.h ('k') | chrome/browser/ui/gtk/sad_tab_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698