Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Unified Diff: chrome/browser/input_window_dialog_win.cc

Issue 5582002: Move:... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/input_window_dialog_gtk.cc ('k') | chrome/browser/instant/instant_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/input_window_dialog_win.cc
===================================================================
--- chrome/browser/input_window_dialog_win.cc (revision 68008)
+++ chrome/browser/input_window_dialog_win.cc (working copy)
@@ -1,235 +0,0 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/input_window_dialog.h"
-
-#include "base/compiler_specific.h"
-#include "base/message_loop.h"
-#include "base/task.h"
-#include "views/grid_layout.h"
-#include "views/controls/label.h"
-#include "views/controls/textfield/textfield.h"
-#include "views/standard_layout.h"
-#include "views/window/dialog_delegate.h"
-#include "views/window/window.h"
-#include "grit/generated_resources.h"
-
-// Width to make the text field, in pixels.
-static const int kTextfieldWidth = 200;
-
-class ContentView;
-
-// The Windows implementation of the cross platform input dialog interface.
-class WinInputWindowDialog : public InputWindowDialog {
- public:
- WinInputWindowDialog(HWND parent,
- const std::wstring& window_title,
- const std::wstring& label,
- const std::wstring& contents,
- Delegate* delegate);
- virtual ~WinInputWindowDialog();
-
- virtual void Show();
- virtual void Close();
-
- const std::wstring& window_title() const { return window_title_; }
- const std::wstring& label() const { return label_; }
- const std::wstring& contents() const { return contents_; }
-
- InputWindowDialog::Delegate* delegate() { return delegate_.get(); }
-
- private:
- // Our chrome views window.
- views::Window* window_;
-
- // Strings to feed to the on screen window.
- std::wstring window_title_;
- std::wstring label_;
- std::wstring contents_;
-
- // Our delegate. Consumes the window's output.
- scoped_ptr<InputWindowDialog::Delegate> delegate_;
-};
-
-// ContentView, as the name implies, is the content view for the InputWindow.
-// It registers accelerators that accept/cancel the input.
-class ContentView : public views::View,
- public views::DialogDelegate,
- public views::Textfield::Controller {
- public:
- explicit ContentView(WinInputWindowDialog* delegate)
- : delegate_(delegate),
- ALLOW_THIS_IN_INITIALIZER_LIST(focus_grabber_factory_(this)) {
- DCHECK(delegate_);
- }
-
- // views::DialogDelegate overrides:
- virtual bool IsDialogButtonEnabled(
- MessageBoxFlags::DialogButton button) const;
- virtual bool Accept();
- virtual bool Cancel();
- virtual void DeleteDelegate();
- virtual std::wstring GetWindowTitle() const;
- virtual bool IsModal() const { return true; }
- virtual views::View* GetContentsView();
-
- // views::Textfield::Controller overrides:
- virtual void ContentsChanged(views::Textfield* sender,
- const std::wstring& new_contents);
- virtual bool HandleKeystroke(views::Textfield*,
- const views::Textfield::Keystroke&) {
- return false;
- }
-
- protected:
- // views::View overrides:
- virtual void ViewHierarchyChanged(bool is_add, views::View* parent,
- views::View* child);
-
- private:
- // Set up dialog controls and layout.
- void InitControlLayout();
-
- // Sets focus to the first focusable element within the dialog.
- void FocusFirstFocusableControl();
-
- // The Textfield that the user can type into.
- views::Textfield* text_field_;
-
- // The delegate that the ContentView uses to communicate changes to the
- // caller.
- WinInputWindowDialog* delegate_;
-
- // Helps us set focus to the first Textfield in the window.
- ScopedRunnableMethodFactory<ContentView> focus_grabber_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(ContentView);
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// ContentView, views::DialogDelegate implementation:
-
-bool ContentView::IsDialogButtonEnabled(
- MessageBoxFlags::DialogButton button) const {
- if (button == MessageBoxFlags::DIALOGBUTTON_OK &&
- !delegate_->delegate()->IsValid(text_field_->text())) {
- return false;
- }
- return true;
-}
-
-bool ContentView::Accept() {
- delegate_->delegate()->InputAccepted(text_field_->text());
- return true;
-}
-
-bool ContentView::Cancel() {
- delegate_->delegate()->InputCanceled();
- return true;
-}
-
-void ContentView::DeleteDelegate() {
- delete delegate_;
-}
-
-std::wstring ContentView::GetWindowTitle() const {
- return delegate_->window_title();
-}
-
-views::View* ContentView::GetContentsView() {
- return this;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// ContentView, views::Textfield::Controller implementation:
-
-void ContentView::ContentsChanged(views::Textfield* sender,
- const std::wstring& new_contents) {
- GetDialogClientView()->UpdateDialogButtons();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// ContentView, protected:
-
-void ContentView::ViewHierarchyChanged(bool is_add,
- views::View* parent,
- views::View* child) {
- if (is_add && child == this)
- InitControlLayout();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// ContentView, private:
-
-void ContentView::InitControlLayout() {
- text_field_ = new views::Textfield;
- text_field_->SetText(delegate_->contents());
- text_field_->SetController(this);
-
- using views::ColumnSet;
- using views::GridLayout;
-
- // TODO(sky): Vertical alignment should be baseline.
- GridLayout* layout = CreatePanelGridLayout(this);
- SetLayoutManager(layout);
-
- ColumnSet* c1 = layout->AddColumnSet(0);
- c1->AddColumn(GridLayout::CENTER, GridLayout::CENTER, 0,
- GridLayout::USE_PREF, 0, 0);
- c1->AddPaddingColumn(0, kRelatedControlHorizontalSpacing);
- c1->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1,
- GridLayout::USE_PREF, kTextfieldWidth, kTextfieldWidth);
-
- layout->StartRow(0, 0);
- views::Label* label = new views::Label(delegate_->label());
- layout->AddView(label);
- layout->AddView(text_field_);
-
- MessageLoop::current()->PostTask(FROM_HERE,
- focus_grabber_factory_.NewRunnableMethod(
- &ContentView::FocusFirstFocusableControl));
-}
-
-void ContentView::FocusFirstFocusableControl() {
- text_field_->SelectAll();
- text_field_->RequestFocus();
-}
-
-WinInputWindowDialog::WinInputWindowDialog(HWND parent,
- const std::wstring& window_title,
- const std::wstring& label,
- const std::wstring& contents,
- Delegate* delegate)
- : window_title_(window_title),
- label_(label),
- contents_(contents),
- delegate_(delegate) {
- window_ = views::Window::CreateChromeWindow(parent, gfx::Rect(),
- new ContentView(this));
- window_->GetClientView()->AsDialogClientView()->UpdateDialogButtons();
-}
-
-WinInputWindowDialog::~WinInputWindowDialog() {
-}
-
-void WinInputWindowDialog::Show() {
- window_->Show();
-}
-
-void WinInputWindowDialog::Close() {
- window_->Close();
-}
-
-// static
-InputWindowDialog* InputWindowDialog::Create(HWND parent,
- const std::wstring& window_title,
- const std::wstring& label,
- const std::wstring& contents,
- Delegate* delegate) {
- return new WinInputWindowDialog(parent,
- window_title,
- label,
- contents,
- delegate);
-}
« no previous file with comments | « chrome/browser/input_window_dialog_gtk.cc ('k') | chrome/browser/instant/instant_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698