overflow_bubble.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
1// Copyright 2013 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 ASH_SHELF_OVERFLOW_BUBBLE_H_ 6#define ASH_SHELF_OVERFLOW_BUBBLE_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "ui/events/event_handler.h" 11#include "ui/views/widget/widget_observer.h" 12 13namespace ui { 14class LocatedEvent; 15} 16 17namespace views { 18class View; 19} 20 21namespace ash { 22 23class LauncherDelegate; 24class LauncherModel; 25 26namespace internal { 27 28class LauncherView; 29 30// OverflowBubble displays the overflown launcher items in a bubble. 31class OverflowBubble : public ui::EventHandler, 32 public views::WidgetObserver { 33 public: 34 OverflowBubble(); 35 virtual ~OverflowBubble(); 36 37 // Shows an bubble pointing to |anchor| with |launcher_view| as its content. 38 void Show(views::View* anchor, LauncherView* launcher_view); 39 40 void Hide(); 41 42 // This method as name indicates will hide bubble and schedule paint 43 // for overflow button. 44 void HideBubbleAndRefreshButton(); 45 46 bool IsShowing() const { return !!bubble_; } 47 LauncherView* launcher_view() { return launcher_view_; } 48 49 private: 50 void ProcessPressedEvent(ui::LocatedEvent* event); 51 52 // Overridden from ui::EventHandler: 53 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE; 54 virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE; 55 56 // Overridden from views::WidgetObserver: 57 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE; 58 59 views::View* bubble_; // Owned by views hierarchy. 60 views::View* anchor_; // Owned by LauncherView. 61 LauncherView* launcher_view_; // Owned by |bubble_|. 62 63 DISALLOW_COPY_AND_ASSIGN(OverflowBubble); 64}; 65 66} // namespace internal 67} // namespace ash 68 69#endif // ASH_SHELF_OVERFLOW_BUBBLE_H_ 70