| Index: chrome/browser/autocomplete/autocomplete_edit_view_views.h
|
| diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_views.h b/chrome/browser/autocomplete/autocomplete_edit_view_views.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9c17ad813094ee53c0ba23afccadae551bce4c80
|
| --- /dev/null
|
| +++ b/chrome/browser/autocomplete/autocomplete_edit_view_views.h
|
| @@ -0,0 +1,207 @@
|
| +// Copyright (c) 2011 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_AUTOCOMPLETE_AUTOCOMPLETE_EDIT_VIEW_VIEWS_H_
|
| +#define CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_EDIT_VIEW_VIEWS_H_
|
| +#pragma once
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "chrome/browser/autocomplete/autocomplete_edit_view.h"
|
| +#include "chrome/browser/ui/toolbar/toolbar_model.h"
|
| +#include "chrome/common/notification_observer.h"
|
| +#include "chrome/common/notification_registrar.h"
|
| +#include "chrome/common/page_transition_types.h"
|
| +#include "views/controls/textfield/textfield.h"
|
| +#include "views/view.h"
|
| +#include "webkit/glue/window_open_disposition.h"
|
| +
|
| +class AutocompleteEditController;
|
| +class AutocompleteEditModel;
|
| +class AutocompletePopupView;
|
| +class Profile;
|
| +class TabContents;
|
| +
|
| +// Views-implementation of AutocompleteEditView. This is based on
|
| +// gtk implementation. The following features are not yet supported.
|
| +//
|
| +// IME supoprt.
|
| +// LTR support.
|
| +// Selection behavior.
|
| +// Cut,copy and paste behavior.
|
| +// URL styles (strikestrough insecure scheme, emphasize host).
|
| +// Custom context menu for omnibox.
|
| +// Instant.
|
| +class AutocompleteEditViewViews : public views::View,
|
| + public AutocompleteEditView,
|
| + public NotificationObserver,
|
| + public views::Textfield::Controller {
|
| + public:
|
| + AutocompleteEditViewViews(AutocompleteEditController* controller,
|
| + ToolbarModel* toolbar_model,
|
| + Profile* profile,
|
| + CommandUpdater* command_updater,
|
| + bool popup_window_mode,
|
| + const views::View* location_bar);
|
| + virtual ~AutocompleteEditViewViews();
|
| +
|
| + // Initialize, create the underlying views, etc;
|
| + void Init();
|
| +
|
| + // Sets the colors of the text view according to the theme.
|
| + void SetBaseColor();
|
| +
|
| + // Called after key even is handled either by HandleKeyEvent or by Textfield.
|
| + bool HandleAfterKeyEvent(const views::KeyEvent& event, bool handled);
|
| +
|
| + // Called when KeyRelease event is generated on textfield.
|
| + bool HandleKeyReleaseEvent(const views::KeyEvent& event);
|
| +
|
| + // Called when Focus is set/unset on textfield.
|
| + void HandleFocusIn();
|
| + void HandleFocusOut();
|
| +
|
| + // Implements views::View
|
| + virtual bool OnMousePressed(const views::MouseEvent& event);
|
| + virtual void Layout();
|
| +
|
| + // Implement the AutocompleteEditView interface.
|
| + virtual AutocompleteEditModel* model();
|
| + virtual const AutocompleteEditModel* model() const;
|
| +
|
| + virtual void SaveStateToTab(TabContents* tab);
|
| +
|
| + virtual void Update(const TabContents* tab_for_state_restoring);
|
| +
|
| + virtual void OpenURL(const GURL& url,
|
| + WindowOpenDisposition disposition,
|
| + PageTransition::Type transition,
|
| + const GURL& alternate_nav_url,
|
| + size_t selected_line,
|
| + const std::wstring& keyword);
|
| +
|
| + virtual std::wstring GetText() const;
|
| +
|
| + virtual bool IsEditingOrEmpty() const;
|
| + virtual int GetIcon() const;
|
| + virtual void SetUserText(const std::wstring& text);
|
| + virtual void SetUserText(const std::wstring& text,
|
| + const std::wstring& display_text,
|
| + bool update_popup);
|
| + virtual void SetWindowTextAndCaretPos(const std::wstring& text,
|
| + size_t caret_pos);
|
| + virtual void SetForcedQuery();
|
| + virtual bool IsSelectAll();
|
| + virtual bool DeleteAtEndPressed();
|
| + virtual void GetSelectionBounds(std::wstring::size_type* start,
|
| + std::wstring::size_type* end);
|
| + virtual void SelectAll(bool reversed);
|
| + virtual void RevertAll();
|
| + virtual void UpdatePopup();
|
| + virtual void ClosePopup();
|
| + virtual void SetFocus();
|
| + virtual void OnTemporaryTextMaybeChanged(const std::wstring& display_text,
|
| + bool save_original_selection);
|
| + virtual bool OnInlineAutocompleteTextMaybeChanged(
|
| + const std::wstring& display_text, size_t user_text_length);
|
| + virtual void OnRevertTemporaryText();
|
| + virtual void OnBeforePossibleChange();
|
| + virtual bool OnAfterPossibleChange();
|
| + virtual gfx::NativeView GetNativeView() const;
|
| + virtual CommandUpdater* GetCommandUpdater();
|
| + virtual views::View* AddToView(views::View* parent);
|
| + virtual int TextWidth() const;
|
| + virtual bool IsImeComposing() const;
|
| + virtual bool CommitInstantSuggestion(const std::wstring& typed_text,
|
| + const std::wstring& suggested_text);
|
| + virtual void SetInstantSuggestion(const string16& input);
|
| +
|
| + // Overridden from NotificationObserver:
|
| + virtual void Observe(NotificationType type,
|
| + const NotificationSource& source,
|
| + const NotificationDetails& details);
|
| +
|
| + // Overridden from Textfield::Controller
|
| + virtual void ContentsChanged(views::Textfield* sender,
|
| + const string16& new_contents);
|
| + virtual bool HandleKeyEvent(views::Textfield* sender,
|
| + const views::KeyEvent& key_event);
|
| +
|
| + private:
|
| + // Return the number of characers in the current buffer.
|
| + size_t GetTextLength() const;
|
| +
|
| + // Try to parse the current text as a URL and colorize the components.
|
| + void EmphasizeURLComponents();
|
| +
|
| + // Internally invoked whenever the text changes in some way.
|
| + void TextChanged();
|
| +
|
| + // Update the field with |text| and set the selection.
|
| + void SetTextAndSelectedRange(const std::wstring& text,
|
| + const views::TextRange& range);
|
| +
|
| + // Returns the selected text.
|
| + string16 GetSelectedText() const;
|
| +
|
| + // Selects the text given by |caret| and |end|.
|
| + void SelectRange(size_t caret, size_t end);
|
| +
|
| + views::Textfield* textfield_;
|
| +
|
| + scoped_ptr<AutocompleteEditModel> model_;
|
| + scoped_ptr<AutocompletePopupView> popup_view_;
|
| + AutocompleteEditController* controller_;
|
| + ToolbarModel* toolbar_model_;
|
| +
|
| + // The object that handles additional command functionality exposed on the
|
| + // edit, such as invoking the keyword editor.
|
| + CommandUpdater* command_updater_;
|
| +
|
| + // When true, the location bar view is read only and also is has a slightly
|
| + // different presentation (smaller font size). This is used for popups.
|
| + bool popup_window_mode_;
|
| +
|
| + ToolbarModel::SecurityLevel security_level_;
|
| +
|
| + // Selection at the point where the user started using the
|
| + // arrows to move around in the popup.
|
| + views::TextRange saved_temporary_selection_;
|
| +
|
| + // Tracking state before and after a possible change.
|
| + std::wstring text_before_change_;
|
| + views::TextRange sel_before_change_;
|
| +
|
| + // TODO(oshima): following flags are copied from gtk implementation.
|
| + // It should be possible to refactor this class to simplify flags and
|
| + // logic. I'll work on this refactoring once all features are completed.
|
| +
|
| + // Indicates whether the IME changed the text. It's possible for the IME to
|
| + // handle a key event but not change the text contents (e.g., when pressing
|
| + // shift+del with no selection).
|
| + bool text_changed_;
|
| +
|
| + // Was delete pressed?
|
| + bool delete_was_pressed_;
|
| +
|
| + // Was the delete key pressed with an empty selection at the end of the edit?
|
| + bool delete_at_end_pressed_;
|
| +
|
| + // Indicates if we are handling a key press event.
|
| + bool handling_key_press_;
|
| +
|
| + // Indicates if omnibox's content maybe changed by a key press event, so that
|
| + // we need to call OnAfterPossibleChange() after handling the event.
|
| + // This flag should be set for changes directly caused by a key press event,
|
| + // including changes to content text, selection range and preedit string.
|
| + // Changes caused by function calls like SetUserText() should not affect this
|
| + // flag.
|
| + bool content_maybe_changed_by_key_press_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AutocompleteEditViewViews);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_EDIT_VIEW_VIEWS_H_
|
|
|