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