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#ifndef CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_STAR_VIEW_H_
6#define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_STAR_VIEW_H_
7#pragma once
8
9#include "chrome/browser/ui/views/bubble/bubble.h"
10#include "views/controls/image_view.h"
11
12class CommandUpdater;
13class Bubble;
14
15namespace views {
16class KeyEvent;
17class MouseEvent;
18}
19
20class StarView : public views::ImageView, public BubbleDelegate {
21 public:
22  explicit StarView(CommandUpdater* command_updater);
23  virtual ~StarView();
24
25  // Toggles the star on or off.
26  void SetToggled(bool on);
27
28 private:
29  // views::ImageView overrides:
30  virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
31  virtual bool GetTooltipText(const gfx::Point& p,
32                              std::wstring* tooltip) OVERRIDE;
33  virtual bool OnMousePressed(const views::MouseEvent& event) OVERRIDE;
34  virtual void OnMouseReleased(const views::MouseEvent& event) OVERRIDE;
35  virtual bool OnKeyPressed(const views::KeyEvent& event) OVERRIDE;
36
37  // BubbleDelegate overrides:
38  virtual void BubbleClosing(Bubble* bubble, bool closed_by_escape) OVERRIDE;
39  virtual bool CloseOnEscape() OVERRIDE;
40  virtual bool FadeInOnShow() OVERRIDE;
41
42  // The CommandUpdater for the Browser object that owns the location bar.
43  CommandUpdater* command_updater_;
44
45  DISALLOW_IMPLICIT_CONSTRUCTORS(StarView);
46};
47
48#endif  // CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_STAR_VIEW_H_
49