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/profile_menu_button.h"
6
7#include "ui/base/text/text_elider.h"
8#include "ui/gfx/color_utils.h"
9#include "views/controls/button/button.h"
10#include "views/controls/menu/view_menu_delegate.h"
11
12namespace {
13
14// ActiveTextShadow is a darkened version of hsl_active_shift.
15const SkColor kActiveTextShadow = 0xFF708DB3;
16// InactiveTextShadow is slightly darker than grey-white inactive background.
17const SkColor kInactiveTextShadow = SK_ColorLTGRAY;
18// TextHover is slightly darker than enabled color, for a subtle hover shift.
19const SkColor kTextHover = 0xFFDDDDDD;
20const SkColor kTextEnabled = SK_ColorWHITE;
21const SkColor kTextHighlighted = SK_ColorWHITE;
22
23// Horizontal padding beside profile menu button, to center it in the
24// underlying tag image.
25const int kProfileButtonBorderSpacing = 10;
26
27// Maximum width for name string in pixels.
28const int kMaxTextWidth = 200;
29}
30
31namespace views {
32
33ProfileMenuButton::ProfileMenuButton(ButtonListener* listener,
34                                     const std::wstring& text,
35                                     ViewMenuDelegate* menu_delegate) :
36    MenuButton(listener, text, menu_delegate, true) {
37  // Turn off hover highlighting and position button in the center of the
38  // underlying profile tag image.
39  set_border(views::Border::CreateEmptyBorder(
40      0, kProfileButtonBorderSpacing, 0, kProfileButtonBorderSpacing));
41  SetTextShadowColors(kActiveTextShadow, kInactiveTextShadow);
42  SetHoverColor(kTextHover);
43  SetEnabledColor(kTextEnabled);
44  SetHighlightColor(kTextHighlighted);
45}
46
47ProfileMenuButton::~ProfileMenuButton() {}
48
49void ProfileMenuButton::SetText(const std::wstring& text) {
50  MenuButton::SetText(ui::ElideText(text, font(), kMaxTextWidth, false));
51}
52
53}  // namespace views
54
55