// 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 VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_H_ #define VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_H_ #pragma once #include "ui/base/models/simple_menu_model.h" #include "ui/gfx/point.h" #include "views/view.h" namespace views { // An interface implemented by a View that has text that can be selected. class VIEWS_EXPORT TouchSelectionClientView : public View, public ui::SimpleMenuModel::Delegate { public: // Select everything between start and end (points are in view's local // coordinate system). |start| is the logical start and |end| is the logical // end of selection. Visually, |start| may lie after |end|. virtual void SelectRect(const gfx::Point& start, const gfx::Point& end) = 0; protected: virtual ~TouchSelectionClientView() {} }; // This defines the callback interface for other code to be notified of changes // in the state of a TouchSelectionClientView. class VIEWS_EXPORT TouchSelectionController { public: virtual ~TouchSelectionController() {} // Creates a TouchSelectionController. Caller owns the returned object. static TouchSelectionController* create( TouchSelectionClientView* client_view); // Notification that the text selection in TouchSelectionClientView has // changed. p1 and p2 are lower corners of the start and end of selection: // ____________________________________ // | textfield with |selected text| | // ------------------------------------ // ^p1 ^p2 // // p1 is always the start and p2 is always the end of selection. Hence, // p1 could be to the right of p2 in the figure above. virtual void SelectionChanged(const gfx::Point& p1, const gfx::Point& p2) = 0; // Notification that the TouchSelectionClientView has lost focus. virtual void ClientViewLostFocus() = 0; }; } // namespace views #endif // VIEWS_TOUCHUI_TOUCH_SELECTION_CONTROLLER_H_