1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/views/location_bar/selected_keyword_view.h" 6 7#include "base/logging.h" 8#include "base/utf_string_conversions.h" 9#include "chrome/browser/search_engines/template_url_model.h" 10#include "chrome/browser/profiles/profile.h" 11#include "chrome/browser/ui/omnibox/location_bar_util.h" 12#include "chrome/browser/ui/views/location_bar/keyword_hint_view.h" 13#include "grit/generated_resources.h" 14#include "ui/base/l10n/l10n_util.h" 15 16SelectedKeywordView::SelectedKeywordView(const int background_images[], 17 int contained_image, 18 const SkColor& color, 19 Profile* profile) 20 : IconLabelBubbleView(background_images, contained_image, color), 21 profile_(profile) { 22 full_label_.SetVisible(false); 23 partial_label_.SetVisible(false); 24} 25 26SelectedKeywordView::~SelectedKeywordView() { 27} 28 29void SelectedKeywordView::SetFont(const gfx::Font& font) { 30 IconLabelBubbleView::SetFont(font); 31 full_label_.SetFont(font); 32 partial_label_.SetFont(font); 33} 34 35gfx::Size SelectedKeywordView::GetPreferredSize() { 36 gfx::Size size(GetNonLabelSize()); 37 size.Enlarge(full_label_.GetPreferredSize().width(), 0); 38 return size; 39} 40 41gfx::Size SelectedKeywordView::GetMinimumSize() { 42 gfx::Size size(GetNonLabelSize()); 43 size.Enlarge(partial_label_.GetMinimumSize().width(), 0); 44 return size; 45} 46 47void SelectedKeywordView::Layout() { 48 SetLabel((width() == GetPreferredSize().width()) ? 49 full_label_.GetText() : partial_label_.GetText()); 50 IconLabelBubbleView::Layout(); 51} 52 53void SelectedKeywordView::SetKeyword(const string16& keyword) { 54 keyword_ = keyword; 55 if (keyword.empty()) 56 return; 57 DCHECK(profile_); 58 if (!profile_->GetTemplateURLModel()) 59 return; 60 61 bool is_extension_keyword; 62 const string16 short_name = profile_->GetTemplateURLModel()-> 63 GetKeywordShortName(keyword, &is_extension_keyword); 64 int message_id = is_extension_keyword ? 65 IDS_OMNIBOX_EXTENSION_KEYWORD_TEXT : IDS_OMNIBOX_KEYWORD_TEXT; 66 full_label_.SetText(UTF16ToWide( 67 l10n_util::GetStringFUTF16(message_id, short_name))); 68 const std::wstring min_string( 69 location_bar_util::CalculateMinString(UTF16ToWide(short_name))); 70 partial_label_.SetText(min_string.empty() ? 71 full_label_.GetText() : 72 UTF16ToWide(l10n_util::GetStringFUTF16(message_id, 73 WideToUTF16(min_string)))); 74} 75