1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file.
44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_JS_MODAL_DIALOG_VIEWS_H_
64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_JS_MODAL_DIALOG_VIEWS_H_
74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once
84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/app_modal_dialogs/js_modal_dialog.h"
104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <string>
124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/app_modal_dialogs/native_app_modal_dialog.h"
1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/message_box_flags.h"
154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/window/dialog_delegate.h"
164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace views {
184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass MessageBoxView;
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass JSModalDialogViews : public NativeAppModalDialog,
224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                           public views::DialogDelegate {
234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public:
244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  explicit JSModalDialogViews(JavaScriptAppModalDialog* parent);
254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual ~JSModalDialogViews();
264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Overridden from NativeAppModalDialog:
284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual int GetAppModalDialogButtons() const;
294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void ShowAppModalDialog();
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void ActivateAppModalDialog();
314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void CloseAppModalDialog();
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void AcceptAppModalDialog();
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void CancelAppModalDialog();
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Overridden from views::DialogDelegate:
364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual int GetDefaultDialogButton() const;
374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual int GetDialogButtons() const;
384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual std::wstring GetWindowTitle() const;
394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void WindowClosing();
404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void DeleteDelegate();
414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual bool Cancel();
424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual bool Accept();
434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual std::wstring GetDialogButtonLabel(
4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      ui::MessageBoxFlags::DialogButton button) const;
454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Overridden from views::WindowDelegate:
47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual bool IsModal() const;
484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual views::View* GetContentsView();
494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual views::View* GetInitiallyFocusedView();
504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void OnClose();
514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private:
534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // A pointer to the AppModalDialog that owns us.
544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  JavaScriptAppModalDialog* parent_;
554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The message box view whose commands we handle.
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  views::MessageBoxView* message_box_view_;
584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(JSModalDialogViews);
604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif  // CHROME_BROWSER_UI_VIEWS_JS_MODAL_DIALOG_VIEWS_H_
63