]> git.saurik.com Git - iphone-api.git/blob - WebCore/EditorClient.h
Add support for new WinterBoard Settings features.
[iphone-api.git] / WebCore / EditorClient.h
1 /*
2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27 #ifndef EditorClient_h
28 #define EditorClient_h
29
30 #include "EditorInsertAction.h"
31 #include "PlatformString.h"
32 #include "TextAffinity.h"
33 #include <wtf/Forward.h>
34 #include <wtf/Vector.h>
35
36 #if PLATFORM(MAC)
37 class NSArray;
38 class NSData;
39 class NSString;
40 class NSURL;
41 #endif
42
43 namespace WebCore {
44
45 class CSSStyleDeclaration;
46 class EditCommand;
47 class Element;
48 class Frame;
49 class HTMLElement;
50 class KeyboardEvent;
51 class Node;
52 class Range;
53 class Selection;
54 class String;
55 class VisiblePosition;
56
57 struct GrammarDetail {
58 int location;
59 int length;
60 Vector<String> guesses;
61 String userDescription;
62 };
63
64 class EditorClient {
65 public:
66 virtual ~EditorClient() { }
67 virtual void pageDestroyed() = 0;
68
69 virtual bool shouldDeleteRange(Range*) = 0;
70 virtual bool shouldShowDeleteInterface(HTMLElement*) = 0;
71 virtual bool smartInsertDeleteEnabled() = 0;
72 virtual bool isSelectTrailingWhitespaceEnabled() = 0;
73 virtual bool isContinuousSpellCheckingEnabled() = 0;
74 virtual void toggleContinuousSpellChecking() = 0;
75 virtual bool isGrammarCheckingEnabled() = 0;
76 virtual void toggleGrammarChecking() = 0;
77 virtual int spellCheckerDocumentTag() = 0;
78
79 virtual bool isEditable() = 0;
80
81 virtual bool shouldBeginEditing(Range*) = 0;
82 virtual bool shouldEndEditing(Range*) = 0;
83 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) = 0;
84 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) = 0;
85 virtual bool shouldChangeSelectedRange(Range* fromRange, Range* toRange, EAffinity, bool stillSelecting) = 0;
86
87 virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) = 0;
88 // virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) = 0;
89 // virtual bool doCommandBySelector(SEL selector) = 0;
90 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) = 0;
91
92 virtual void didBeginEditing() = 0;
93 virtual void respondToChangedContents() = 0;
94 virtual void respondToChangedSelection() = 0;
95 virtual void didEndEditing() = 0;
96 virtual void didWriteSelectionToPasteboard() = 0;
97 virtual void didSetSelectionTypesForPasteboard() = 0;
98 // virtual void didChangeTypingStyle:(NSNotification *)notification = 0;
99 // virtual void didChangeSelection:(NSNotification *)notification = 0;
100 // virtual NSUndoManager* undoManager:(WebView *)webView = 0;
101
102 virtual void registerCommandForUndo(PassRefPtr<EditCommand>) = 0;
103 virtual void registerCommandForRedo(PassRefPtr<EditCommand>) = 0;
104 virtual void clearUndoRedoOperations() = 0;
105
106 virtual bool canUndo() const = 0;
107 virtual bool canRedo() const = 0;
108
109 virtual void undo() = 0;
110 virtual void redo() = 0;
111
112 virtual void handleKeyboardEvent(KeyboardEvent*) = 0;
113 virtual void handleInputMethodKeydown(KeyboardEvent*) = 0;
114
115 virtual void textFieldDidBeginEditing(Element*) = 0;
116 virtual void textFieldDidEndEditing(Element*) = 0;
117 virtual void textDidChangeInTextField(Element*) = 0;
118 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) = 0;
119 virtual void textWillBeDeletedInTextField(Element*) = 0;
120 virtual void textDidChangeInTextArea(Element*) = 0;
121 virtual void formElementDidSetValue(Element*) = 0;
122 virtual void formElementDidFocus(Element*) = 0;
123 virtual void formElementDidBlur(Element*) = 0;
124 virtual void suppressFormNotifications() = 0;
125 virtual void restoreFormNotifications() = 0;
126 virtual void suppressSelectionNotifications() = 0;
127 virtual void restoreSelectionNotifications() = 0;
128 virtual void startDelayingAndCoalescingContentChangeNotifications() = 0;
129 virtual void stopDelayingAndCoalescingContentChangeNotifications() = 0;
130
131 #if PLATFORM(MAC)
132 virtual NSString* userVisibleString(NSURL*) = 0;
133 #ifdef BUILDING_ON_TIGER
134 virtual NSArray* pasteboardTypesForSelection(Frame*) = 0;
135 #endif
136 #endif
137
138 virtual void ignoreWordInSpellDocument(const String&) = 0;
139 virtual void learnWord(const String&) = 0;
140 virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength) = 0;
141 virtual void checkGrammarOfString(const UChar*, int length, Vector<GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength) = 0;
142 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail& detail) = 0;
143 virtual void updateSpellingUIWithMisspelledWord(const String&) = 0;
144 virtual void showSpellingUI(bool show) = 0;
145 virtual bool spellingUIIsShowing() = 0;
146 virtual void getGuessesForWord(const String&, Vector<String>& guesses) = 0;
147 virtual void setInputMethodState(bool enabled) = 0;
148 };
149
150 }
151
152 #endif // EditorClient_h