1dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/* 2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> 3dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2006 Zack Rusin <zack@kde.org> 4dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2006 Apple Computer, Inc. 5dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia 6dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2009-2010 ProFUSION embedded systems 7dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2009-2010 Samsung Electronics 8dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 9dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * All rights reserved. 10dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 11dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Redistribution and use in source and binary forms, with or without 12dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * modification, are permitted provided that the following conditions 13dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * are met: 14dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 1. Redistributions of source code must retain the above copyright 15dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * notice, this list of conditions and the following disclaimer. 16dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 2. Redistributions in binary form must reproduce the above copyright 17dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * notice, this list of conditions and the following disclaimer in the 18dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * documentation and/or other materials provided with the distribution. 19dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 20dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 21dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 24dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 28dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block */ 32dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 33dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#ifndef EditorClientEfl_h 34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#define EditorClientEfl_h 35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "EditorClient.h" 3781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "TextCheckerClient.h" 38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/Forward.h> 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 4106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsentypedef struct _Evas_Object Evas_Object; 4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocknamespace WebCore { 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass Page; 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass EditorClientEfl : public EditorClient, public TextCheckerClient { 47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockpublic: 48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block EditorClientEfl(Evas_Object *view); 49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ~EditorClientEfl(); 50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // from EditorClient 52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void pageDestroyed(); 53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldDeleteRange(Range*); 55dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldShowDeleteInterface(HTMLElement*); 56dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool smartInsertDeleteEnabled(); 57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool isSelectTrailingWhitespaceEnabled(); 58dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool isContinuousSpellCheckingEnabled(); 59dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void toggleContinuousSpellChecking(); 60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool isGrammarCheckingEnabled(); 61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void toggleGrammarChecking(); 62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual int spellCheckerDocumentTag(); 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldBeginEditing(Range*); 65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldEndEditing(Range*); 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction); 67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldInsertText(const String&, Range*, EditorInsertAction); 68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldChangeSelectedRange(Range* fromRange, Range* toRange, EAffinity, bool stillSelecting); 69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*); 71dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool shouldMoveRangeAfterDelete(Range*, Range*); 73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didBeginEditing(); 75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void respondToChangedContents(); 76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void respondToChangedSelection(); 77dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didEndEditing(); 78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didWriteSelectionToPasteboard(); 79dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void didSetSelectionTypesForPasteboard(); 80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 81dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void registerCommandForUndo(WTF::PassRefPtr<EditCommand>); 82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void registerCommandForRedo(WTF::PassRefPtr<EditCommand>); 83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void clearUndoRedoOperations(); 84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 8581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool canCopyCut(bool defaultValue) const; 8681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool canPaste(bool defaultValue) const; 87dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool canUndo() const; 88dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool canRedo() const; 89dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void undo(); 91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void redo(); 92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual const char* interpretKeyEvent(const KeyboardEvent* event); 94dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool handleEditingKeyboardEvent(KeyboardEvent*); 95dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void handleKeyboardEvent(KeyboardEvent*); 96dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void handleInputMethodKeydown(KeyboardEvent*); 97dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 98dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void textFieldDidBeginEditing(Element*); 99dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void textFieldDidEndEditing(Element*); 100dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void textDidChangeInTextField(Element*); 101dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*); 102dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void textWillBeDeletedInTextField(Element*); 103dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void textDidChangeInTextArea(Element*); 104dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 105dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void ignoreWordInSpellDocument(const String&); 106dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void learnWord(const String&); 107dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength); 108dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual String getAutoCorrectSuggestionForMisspelledWord(const String& misspelledWord); 109dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void checkGrammarOfString(const UChar*, int length, WTF::Vector<GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength); 110dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&); 111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void updateSpellingUIWithMisspelledWord(const String&); 112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void showSpellingUI(bool show); 113dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual bool spellingUIIsShowing(); 114f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void getGuessesForWord(const String& word, const String& context, WTF::Vector<String>& guesses); 115967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch virtual void willSetInputMethodState(); 116dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void setInputMethodState(bool enabled); 1172daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual void requestCheckingOfString(WebCore::SpellChecker*, int, WebCore::TextCheckingTypeMask, const WTF::String&) {} 11881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual TextCheckerClient* textChecker() { return this; } 119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 120dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprivate: 121dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block Evas_Object *m_view; 122dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block}; 123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 124dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 125dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif // EditorClientEfl_h 126