15ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen/*
25ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
35ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen *
45ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * Redistribution and use in source and binary forms, with or without
55ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * modification, are permitted provided that the following conditions
65ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * are met:
75ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 1. Redistributions of source code must retain the above copyright
85ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen *    notice, this list of conditions and the following disclaimer.
95ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * 2. Redistributions in binary form must reproduce the above copyright
105ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen *    notice, this list of conditions and the following disclaimer in the
115ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen *    documentation and/or other materials provided with the distribution.
125ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen *
135ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
145ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
155ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
165ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
175ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
185ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
195ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
205ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
215ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
225ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
235ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen */
245ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
255ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#ifndef EditorClientWinCE_h
265ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#define EditorClientWinCE_h
275ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
285ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#include "EditorClient.h"
2981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "TextCheckerClient.h"
305ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
315ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenclass WebView;
325ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
335ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsennamespace WebKit {
345ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass EditorClientWinCE : public WebCore::EditorClient, public WebCore::TextCheckerClient {
365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenpublic:
37bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    EditorClientWinCE(WebView*);
38bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    ~EditorClientWinCE();
395ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
405ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void pageDestroyed();
415ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
425ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldDeleteRange(WebCore::Range*);
435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldShowDeleteInterface(WebCore::HTMLElement*);
445ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool smartInsertDeleteEnabled();
455ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool isSelectTrailingWhitespaceEnabled();
465ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool isContinuousSpellCheckingEnabled();
475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void toggleContinuousSpellChecking();
485ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool isGrammarCheckingEnabled();
495ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void toggleGrammarChecking();
505ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual int spellCheckerDocumentTag();
515ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
525ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldBeginEditing(WebCore::Range*);
535ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldEndEditing(WebCore::Range*);
545ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction);
555ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction);
565ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldChangeSelectedRange(WebCore::Range*, WebCore::Range*, WebCore::EAffinity, bool);
575ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
585ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldApplyStyle(WebCore::CSSStyleDeclaration*, WebCore::Range*);
595ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*);
605ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
615ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void didBeginEditing();
625ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void respondToChangedContents();
635ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void respondToChangedSelection();
645ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void didEndEditing();
655ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void didWriteSelectionToPasteboard();
665ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void didSetSelectionTypesForPasteboard();
675ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
685ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void registerCommandForUndo(WTF::PassRefPtr<WebCore::EditCommand>);
695ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void registerCommandForRedo(WTF::PassRefPtr<WebCore::EditCommand>);
705ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void clearUndoRedoOperations();
715ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
7281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual bool canCopyCut(bool defaultValue) const;
7381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual bool canPaste(bool defaultValue) const;
745ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool canUndo() const;
755ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool canRedo() const;
765ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
775ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void undo();
785ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void redo();
795ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
80e14391e94c850b8bd03680c23b38978db68687a8John Reck    virtual const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
81e14391e94c850b8bd03680c23b38978db68687a8John Reck    virtual bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*);
825ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void handleKeyboardEvent(WebCore::KeyboardEvent*);
835ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void handleInputMethodKeydown(WebCore::KeyboardEvent*);
845ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
855ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void textFieldDidBeginEditing(WebCore::Element*);
865ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void textFieldDidEndEditing(WebCore::Element*);
875ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void textDidChangeInTextField(WebCore::Element*);
885ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool doTextFieldCommandFromEvent(WebCore::Element*, WebCore::KeyboardEvent*);
895ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void textWillBeDeletedInTextField(WebCore::Element*);
905ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void textDidChangeInTextArea(WebCore::Element*);
915ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
925ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void ignoreWordInSpellDocument(const WTF::String&);
935ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void learnWord(const WTF::String&);
945ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void checkSpellingOfString(const UChar*, int, int*, int*);
955ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&);
965ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void checkGrammarOfString(const UChar*, int, WTF::Vector<WebCore::GrammarDetail>&, int*, int*);
975ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail&);
985ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void updateSpellingUIWithMisspelledWord(const WTF::String&);
995ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void showSpellingUI(bool);
1005ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual bool spellingUIIsShowing();
101f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual void getGuessesForWord(const WTF::String& word, const WTF::String& context, WTF::Vector<WTF::String>& guesses);
1025ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void willSetInputMethodState();
1035ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void setInputMethodState(bool);
1042daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual void requestCheckingOfString(WebCore::SpellChecker*, int, WebCore::TextCheckingTypeMask, const WTF::String&) {}
10581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual WebCore::TextCheckerClient* textChecker() { return this; }
1065ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
1075ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsenprivate:
1085ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    WebView* m_webView;
1095ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen};
1105ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
1115ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen} // namespace WebKit
1125ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen
1135ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen#endif // EditorClientWinCE_h
114