/* ============================================================================== This file is part of the JUCE 6 technical preview. Copyright (c) 2017 - ROLI Ltd. You may use this code under the terms of the GPL v3 (see www.gnu.org/licenses). For this technical preview, this file is not subject to commercial licensing. JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ namespace juce { //============================================================================== /** An abstract base class which can be implemented by components that function as text editors. This class allows different types of text editor component to provide a uniform interface, which can be used by things like OS-specific input methods, on-screen keyboards, etc. @tags{GUI} */ class JUCE_API TextInputTarget { public: //============================================================================== /** */ TextInputTarget() = default; /** Destructor. */ virtual ~TextInputTarget() = default; /** Returns true if this input target is currently accepting input. For example, a text editor might return false if it's in read-only mode. */ virtual bool isTextInputActive() const = 0; /** Returns the extents of the selected text region, or an empty range if nothing is selected, */ virtual Range getHighlightedRegion() const = 0; /** Sets the currently-selected text region. */ virtual void setHighlightedRegion (const Range& newRange) = 0; /** Sets a number of temporarily underlined sections. This is needed by MS Windows input method UI. */ virtual void setTemporaryUnderlining (const Array>& underlinedRegions) = 0; /** Returns a specified sub-section of the text. */ virtual String getTextInRange (const Range& range) const = 0; /** Inserts some text, overwriting the selected text region, if there is one. */ virtual void insertTextAtCaret (const String& textToInsert) = 0; /** Returns the position of the caret, relative to the component's origin. */ virtual Rectangle getCaretRectangle() = 0; /** A set of possible on-screen keyboard types, for use in the getKeyboardType() method. */ enum VirtualKeyboardType { textKeyboard = 0, numericKeyboard, decimalKeyboard, urlKeyboard, emailAddressKeyboard, phoneNumberKeyboard }; /** Returns the target's preference for the type of keyboard that would be most appropriate. This may be ignored, depending on the capabilities of the OS. */ virtual VirtualKeyboardType getKeyboardType() { return textKeyboard; } }; } // namespace juce