| // Copyright (c) 2012 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 UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_CONTROLLER_H_ |
| #define UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_CONTROLLER_H_ |
| |
| #include <set> |
| |
| #include "base/strings/string16.h" |
| #include "ui/base/dragdrop/os_exchange_data.h" |
| #include "ui/views/views_export.h" |
| |
| namespace ui { |
| class KeyEvent; |
| class MouseEvent; |
| class SimpleMenuModel; |
| } // namespace ui |
| |
| namespace views { |
| |
| class Textfield; |
| |
| // This defines the callback interface for other code to be notified of changes |
| // in the state of a text field. |
| class VIEWS_EXPORT TextfieldController { |
| public: |
| // This method is called whenever the text in the field is changed by the |
| // user. It won't be called if the text is changed by calling |
| // Textfield::SetText() or Textfield::AppendText(). |
| virtual void ContentsChanged(Textfield* sender, |
| const base::string16& new_contents) {} |
| |
| // This method is called to get notified about keystrokes in the edit. |
| // Returns true if the message was handled and should not be processed |
| // further. If it returns false the processing continues. |
| virtual bool HandleKeyEvent(Textfield* sender, |
| const ui::KeyEvent& key_event); |
| |
| // This method is called to get notified about mouse events in the edit. |
| // Returns true if the message was handled and should not be processed |
| // further. Currently, only mouse down events are sent here. |
| virtual bool HandleMouseEvent(Textfield* sender, |
| const ui::MouseEvent& mouse_event); |
| |
| // Called before performing a user action that may change the textfield. |
| // It's currently only supported by Views implementation. |
| virtual void OnBeforeUserAction(Textfield* sender) {} |
| |
| // Called after performing a user action that may change the textfield. |
| // It's currently only supported by Views implementation. |
| virtual void OnAfterUserAction(Textfield* sender) {} |
| |
| // Called after performing a Cut or Copy operation. |
| virtual void OnAfterCutOrCopy(ui::ClipboardType clipboard_type) {} |
| |
| // Called after performing a Paste operation. |
| virtual void OnAfterPaste() {} |
| |
| // Called after the textfield has written drag data to give the controller a |
| // chance to modify the drag data. |
| virtual void OnWriteDragData(ui::OSExchangeData* data) {} |
| |
| // Called after the textfield has set default drag operations to give the |
| // controller a chance to update them. |
| virtual void OnGetDragOperationsForTextfield(int* drag_operations) {} |
| |
| // Enables the controller to append to the accepted drop formats. |
| virtual void AppendDropFormats( |
| int* formats, |
| std::set<ui::OSExchangeData::CustomFormat>* custom_formats) {} |
| |
| // Called when a drop of dragged data happens on the textfield. This method is |
| // called before regular handling of the drop. If this returns a drag |
| // operation other than |ui::DragDropTypes::DRAG_NONE|, regular handling is |
| // skipped. |
| virtual int OnDrop(const ui::OSExchangeData& data); |
| |
| // Gives the controller a chance to modify the context menu contents. |
| virtual void UpdateContextMenu(ui::SimpleMenuModel* menu_contents) {} |
| |
| protected: |
| virtual ~TextfieldController() {} |
| }; |
| |
| } // namespace views |
| |
| #endif // UI_VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_CONTROLLER_H_ |