1 // Copyright (c) 2012 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_CONFIRM_BUBBLE_VIEWS_H_ 6 #define CHROME_BROWSER_UI_VIEWS_CONFIRM_BUBBLE_VIEWS_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "ui/views/controls/link_listener.h" 11 #include "ui/views/window/dialog_delegate.h" 12 13 class ConfirmBubbleModel; 14 15 // A dialog (with the standard Title/(x)/[OK]/[Cancel] UI elements), as well as 16 // a message Label and optional Link. The dialog ultimately appears like this: 17 // +------------------------+ 18 // | Title (x) | 19 // | Label | 20 // | Link [OK] [Cancel] | 21 // +------------------------+ 22 // 23 // TODO(msw): Remove this class or merge it with DialogDelegateView. 24 class ConfirmBubbleViews : public views::DialogDelegateView, 25 public views::LinkListener { 26 public: 27 explicit ConfirmBubbleViews(ConfirmBubbleModel* model); 28 29 protected: 30 virtual ~ConfirmBubbleViews(); 31 32 // views::DialogDelegate implementation. 33 virtual base::string16 GetDialogButtonLabel( 34 ui::DialogButton button) const OVERRIDE; 35 virtual bool IsDialogButtonEnabled(ui::DialogButton button) const OVERRIDE; 36 virtual views::View* CreateExtraView() OVERRIDE; 37 virtual bool Cancel() OVERRIDE; 38 virtual bool Accept() OVERRIDE; 39 40 // views::WidgetDelegate implementation. 41 virtual ui::ModalType GetModalType() const OVERRIDE; 42 virtual base::string16 GetWindowTitle() const OVERRIDE; 43 44 // views::LinkListener implementation. 45 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE; 46 47 private: 48 // The model to customize this bubble view. 49 scoped_ptr<ConfirmBubbleModel> model_; 50 51 views::Link* link_; 52 53 DISALLOW_COPY_AND_ASSIGN(ConfirmBubbleViews); 54 }; 55 56 #endif // CHROME_BROWSER_UI_VIEWS_CONFIRM_BUBBLE_VIEWS_H_ 57