bookmark_app_bubble_view.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright 2014 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_EXTENSIONS_BOOKMARK_APP_BUBBLE_VIEW_H_ 6#define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BOOKMARK_APP_BUBBLE_VIEW_H_ 7 8#include "base/basictypes.h" 9#include "base/strings/string16.h" 10#include "chrome/browser/extensions/app_icon_loader.h" 11#include "chrome/common/web_application_info.h" 12#include "ui/views/bubble/bubble_delegate.h" 13#include "ui/views/controls/button/button.h" 14 15class Profile; 16 17namespace extensions { 18class AppIconLoader; 19} 20 21namespace gfx { 22class ImageSkia; 23} 24 25namespace views { 26class Checkbox; 27class ImageView; 28class LabelButton; 29class Textfield; 30} 31 32// BookmarkAppBubbleView is a view intended to be used as the content of a 33// Bubble. BookmarkAppBubbleView provides views for editing the bookmark app it 34// is created with. Don't create a BookmarkAppBubbleView directly, instead use 35// the static ShowBubble method. 36class BookmarkAppBubbleView : public views::BubbleDelegateView, 37 public views::ButtonListener, 38 public extensions::AppIconLoader::Delegate { 39 public: 40 virtual ~BookmarkAppBubbleView(); 41 42 static void ShowBubble(views::View* anchor_view, 43 Profile* profile, 44 const WebApplicationInfo& web_app_info, 45 const std::string& extension_id); 46 47 private: 48 // Creates a BookmarkAppBubbleView. 49 BookmarkAppBubbleView(views::View* anchor_view, 50 Profile* profile, 51 const WebApplicationInfo& web_app_info, 52 const std::string& extension_id); 53 54 // Overriden from views::BubbleDelegateView: 55 virtual void Init() OVERRIDE; 56 virtual views::View* GetInitiallyFocusedView() OVERRIDE; 57 58 // Overridden from views::WidgetDelegate: 59 virtual void WindowClosing() OVERRIDE; 60 61 // Overridden from views::View: 62 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; 63 virtual gfx::Size GetMinimumSize() const OVERRIDE; 64 65 // Overridden from views::ButtonListener: 66 // Closes the bubble or opens the edit dialog. 67 virtual void ButtonPressed(views::Button* sender, 68 const ui::Event& event) OVERRIDE; 69 70 // Overridden from extensions::AppIconLoader::Delegate: 71 virtual void SetAppImage(const std::string& id, 72 const gfx::ImageSkia& image) OVERRIDE; 73 74 // Handle the message when the user presses a button. 75 void HandleButtonPressed(views::Button* sender); 76 77 // Sets the title and launch type of the app. 78 void ApplyEdits(); 79 80 // The bookmark app bubble, if we're showing one. 81 static BookmarkAppBubbleView* bookmark_app_bubble_; 82 83 // The profile. 84 Profile* profile_; 85 86 // The WebApplicationInfo being used to create the app. 87 const WebApplicationInfo web_app_info_; 88 89 // The extension id of the bookmark app. 90 const std::string extension_id_; 91 92 // Button for removing the bookmark. 93 views::LabelButton* add_button_; 94 95 // Button to close the window. 96 views::LabelButton* cancel_button_; 97 98 // Checkbox to launch as a tab. 99 views::Checkbox* open_as_tab_checkbox_; 100 101 // Textfield showing the title of the app. 102 views::Textfield* title_tf_; 103 104 // Image showing the icon of the app. 105 views::ImageView* icon_image_view_; 106 107 // When the destructor is invoked should the app be removed? 108 bool remove_app_; 109 110 // Used to load the icon. 111 scoped_ptr<extensions::AppIconLoader> app_icon_loader_; 112 113 DISALLOW_COPY_AND_ASSIGN(BookmarkAppBubbleView); 114}; 115 116#endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BOOKMARK_APP_BUBBLE_VIEW_H_ 117