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 13class 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. 24class 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