// Copyright (c) 2012 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 "ash/system/chromeos/label_tray_view.h" #include "ash/system/tray/hover_highlight_view.h" #include "ash/system/tray/tray_constants.h" #include "ash/system/tray/view_click_listener.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/font.h" #include "ui/views/controls/label.h" #include "ui/views/layout/fill_layout.h" namespace ash { namespace internal { LabelTrayView::LabelTrayView(ViewClickListener* click_listener, int icon_resource_id) : click_listener_(click_listener), icon_resource_id_(icon_resource_id) { SetLayoutManager(new views::FillLayout()); SetVisible(false); } LabelTrayView::~LabelTrayView() { } void LabelTrayView::SetMessage(const base::string16& message) { if (message_ == message) return; message_ = message; RemoveAllChildViews(true); if (!message_.empty()) { AddChildView(CreateChildView(message_)); SetVisible(true); } else { SetVisible(false); } } views::View* LabelTrayView::CreateChildView( const base::string16& message) const { ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); const gfx::ImageSkia* icon = rb.GetImageSkiaNamed(icon_resource_id_); HoverHighlightView* child = new HoverHighlightView(click_listener_); child->AddIconAndLabel(*icon, message, gfx::Font::NORMAL); child->text_label()->SetMultiLine(true); child->text_label()->SetAllowCharacterBreak(true); child->set_border(views::Border::CreateEmptyBorder(0, kTrayPopupPaddingHorizontal, 0, kTrayPopupPaddingHorizontal)); child->SetExpandable(true); child->SetVisible(true); return child; } } // namespace internal } // namespace ash