diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-10 05:07:39 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-10 05:07:39 +0000 |
commit | 64c40aa34646a198a04029ee6b78dd9559595dc5 (patch) | |
tree | c63c621bb798fcc63b60e5d2846f7a918a0408cf /chrome/browser/views/url_picker.h | |
parent | 75354378470fc3a4ee6f70f01378b7880129f978 (diff) | |
download | chromium_src-64c40aa34646a198a04029ee6b78dd9559595dc5.zip chromium_src-64c40aa34646a198a04029ee6b78dd9559595dc5.tar.gz chromium_src-64c40aa34646a198a04029ee6b78dd9559595dc5.tar.bz2 |
Renaming the class ShelfItemDialog to URLPicker, and ShelfItemDialogDelegate to URLPickerDelegate.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/164149
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22895 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/url_picker.h')
-rw-r--r-- | chrome/browser/views/url_picker.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/chrome/browser/views/url_picker.h b/chrome/browser/views/url_picker.h new file mode 100644 index 0000000..13376ba --- /dev/null +++ b/chrome/browser/views/url_picker.h @@ -0,0 +1,131 @@ +// 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. + +#ifndef CHROME_BROWSER_VIEWS_URL_PICKER_H_ +#define CHROME_BROWSER_VIEWS_URL_PICKER_H_ + +#include "chrome/browser/cancelable_request.h" +#include "chrome/browser/history/history.h" +#include "views/controls/button/native_button.h" +#include "views/controls/table/table_view_observer.h" +#include "views/controls/textfield/textfield.h" +#include "views/view.h" +#include "views/window/dialog_delegate.h" +#include "views/window/window.h" + +namespace views { +class Button; +class Label; +class TableView; +} + +class PossibleURLModel; +class Profile; +class UrlPicker; + +// UrlPicker delegate. Notified when the user accepts the entry. +class UrlPickerDelegate { + public: + virtual ~UrlPickerDelegate(); + + virtual void AddBookmark(UrlPicker* dialog, + const std::wstring& title, + const GURL& url) = 0; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +// This class implements the dialog that let the user add a bookmark or page +// to the list of urls to open on startup. +// UrlPicker deletes itself when the dialog is closed. +// +//////////////////////////////////////////////////////////////////////////////// +class UrlPicker : public views::View, + public views::DialogDelegate, + public views::Textfield::Controller, + public views::TableViewObserver { + public: + UrlPicker(UrlPickerDelegate* delegate, + Profile* profile, + bool show_title); + virtual ~UrlPicker(); + + // Show the dialog on the provided contents. + virtual void Show(HWND parent); + + // Closes the dialog. + void Close(); + + // DialogDelegate. + virtual std::wstring GetWindowTitle() const; + virtual bool IsModal() const; + virtual std::wstring GetDialogButtonLabel( + MessageBoxFlags::DialogButton button) const; + virtual bool Accept(); + virtual int GetDefaultDialogButton() const; + virtual bool IsDialogButtonEnabled( + MessageBoxFlags::DialogButton button) const; + virtual views::View* GetContentsView(); + + // TextField::Controller. + virtual void ContentsChanged(views::Textfield* sender, + const std::wstring& new_contents); + virtual bool HandleKeystroke(views::Textfield* sender, + const views::Textfield::Keystroke& key) { + return false; + } + + // Overridden from View. + virtual gfx::Size GetPreferredSize(); + virtual bool AcceleratorPressed(const views::Accelerator& accelerator); + + // TableViewObserver. + virtual void OnSelectionChanged(); + virtual void OnDoubleClick(); + + private: + // Modify the model from the user interface. + void PerformModelChange(); + + // Fetch the title for the entered URL. If we get the title in time before + // the user starts to modify the title field, the title field is changed. + void InitiateTitleAutoFill(const GURL& url); + + // Invoked by the history system when a title becomes available. + void OnURLInfoAvailable(HistoryService::Handle handle, + bool success, + const history::URLRow* info, + history::VisitVector* unused); + + // Returns the URL the user has typed. + GURL GetInputURL() const; + + // Profile. + Profile* profile_; + + // URL Field. + views::Textfield* url_field_; + + // Title field. This is NULL if we're not showing the title. + views::Textfield* title_field_; + + // The table model. + scoped_ptr<PossibleURLModel> url_table_model_; + + // The table of visited urls. + views::TableView* url_table_; + + // Handle of the title request we are expecting. + CancelableRequestProvider::Handle expected_title_handle_; + + // The consumer object for the history database. + CancelableRequestConsumer history_consumer_; + + // The delegate. + UrlPickerDelegate* delegate_; + + DISALLOW_COPY_AND_ASSIGN(UrlPicker); +}; + +#endif // CHROME_BROWSER_VIEWS_URL_PICKER_H_ |