WebCore:
[WebKit-https.git] / WebKit / WebView.subproj / WebDefaultUIDelegate.m
1 /*      
2     WebDefaultPolicyDelegate.m
3     Copyright 2003, Apple Computer, Inc.
4 */
5 #import <Cocoa/Cocoa.h>
6
7 #import <Foundation/NSURLRequest.h>
8
9 #import <WebKit/WebDefaultUIDelegate.h>
10 #import <WebKit/WebJavaScriptTextInputPanel.h>
11 #import <WebKit/WebView.h>
12 #import <WebKit/WebUIDelegatePrivate.h>
13 #import <WebKit/DOM.h>
14
15 @interface NSApplication (DeclarationStolenFromAppKit)
16 - (void)_cycleWindowsReversed:(BOOL)reversed;
17 @end
18
19 @implementation WebDefaultUIDelegate
20
21 static WebDefaultUIDelegate *sharedDelegate = nil;
22
23 // Return a object with vanilla implementations of the protocol's methods
24 // Note this feature relies on our default delegate being stateless.  This
25 // is probably an invalid assumption for the WebUIDelegate.
26 // If we add any real functionality to this default delegate we probably
27 // won't be able to use a singleton.
28 + (WebDefaultUIDelegate *)sharedUIDelegate
29 {
30     if (!sharedDelegate) {
31         sharedDelegate = [[WebDefaultUIDelegate alloc] init];
32     }
33     return sharedDelegate;
34 }
35
36 - (WebView *)webView: (WebView *)wv createWebViewWithRequest:(NSURLRequest *)request
37 {
38     return nil;
39 }
40
41 - (void)webViewShow: (WebView *)wv
42 {
43 }
44
45 - (void)webViewClose: (WebView *)wv
46 {
47     [[wv window] close];
48 }
49
50 - (void)webViewFocus: (WebView *)wv
51 {
52     [[wv window] makeKeyAndOrderFront:wv];
53 }
54
55 - (void)webViewUnfocus: (WebView *)wv
56 {
57     if ([[wv window] isKeyWindow] || [[[wv window] attachedSheet] isKeyWindow]) {
58         [NSApp _cycleWindowsReversed:FALSE];
59     }
60 }
61
62 - (NSResponder *)webViewFirstResponder: (WebView *)wv;
63 {
64     return [[wv window] firstResponder];
65 }
66
67 - (void)webView: (WebView *)wv makeFirstResponder:(NSResponder *)responder
68 {
69     [[wv window] makeFirstResponder:responder];
70 }
71
72 - (void)webView: (WebView *)wv setStatusText:(NSString *)text
73 {
74 }
75
76 - (NSString *)webViewStatusText: (WebView *)wv
77 {
78     return nil;
79 }
80
81 - (void)webView: (WebView *)wv mouseDidMoveOverElement:(NSDictionary *)elementInformation modifierFlags:(unsigned int)modifierFlags
82 {
83 }
84
85 - (BOOL)webViewAreToolbarsVisible: (WebView *)wv
86 {
87     return NO;
88 }
89
90 - (void)webView: (WebView *)wv setToolbarsVisible:(BOOL)visible
91 {
92 }
93
94 - (BOOL)webViewIsStatusBarVisible: (WebView *)wv
95 {
96     return NO;
97 }
98
99 - (void)webView: (WebView *)wv setStatusBarVisible:(BOOL)visible
100 {
101 }
102
103 - (BOOL)webViewIsResizable: (WebView *)wv
104 {
105     return [[wv window] showsResizeIndicator];
106 }
107
108 - (void)webView: (WebView *)wv setResizable:(BOOL)resizable;
109 {
110     // FIXME: This doesn't actually change the resizability of the window,
111     // only visibility of the indicator.
112     [[wv window] setShowsResizeIndicator:resizable];
113 }
114
115 - (void)webView: (WebView *)wv setFrame:(NSRect)frame
116 {
117     [[wv window] setFrame:frame display:YES];
118 }
119
120 - (NSRect)webViewFrame: (WebView *)wv
121 {
122     NSWindow *window = [wv window];
123     return window == nil ? NSZeroRect : [window frame];
124 }
125
126 - (void)webView:(WebView *)webView setContentRect:(NSRect)contentRect
127 {
128     [self webView:webView setFrame:[NSWindow frameRectForContentRect:contentRect styleMask:[[webView window] styleMask]]];
129 }
130
131 - (NSRect)webViewContentRect:(WebView *)webView
132 {
133     NSWindow *window = [webView window];
134     return window == nil ? NSZeroRect : [NSWindow contentRectForFrameRect:[window frame] styleMask:[window styleMask]];
135 }
136
137 - (void)webView: (WebView *)wv runJavaScriptAlertPanelWithMessage:(NSString *)message
138 {
139     // FIXME: We want a default here, but that would add localized strings.
140 }
141
142 - (BOOL)webView: (WebView *)wv runJavaScriptConfirmPanelWithMessage:(NSString *)message
143 {
144     // FIXME: We want a default here, but that would add localized strings.
145     return NO;
146 }
147
148 - (NSString *)webView: (WebView *)wv runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText
149 {
150     WebJavaScriptTextInputPanel *panel = [[WebJavaScriptTextInputPanel alloc] initWithPrompt:prompt text:defaultText];
151     [panel showWindow:nil];
152     NSString *result;
153     if ([NSApp runModalForWindow:[panel window]]) {
154         result = [panel text];
155     } else {
156         result = nil;
157     }
158     [[panel window] close];
159     [panel release];
160     return result;
161 }
162
163 - (void)webView: (WebView *)wv runOpenPanelForFileButtonWithResultListener:(id<WebOpenPanelResultListener>)resultListener
164 {
165     // FIXME: We want a default here, but that would add localized strings.
166 }
167
168 - (void)webViewPrint:(WebView *)sender
169 {
170 }
171
172 - (void)webView:(WebView *)sender printFrameView:(WebFrameView *)frameView
173 {
174 }
175
176
177 - (BOOL)webView:(WebView *)webView shouldBeginDragForElement:(NSDictionary *)element dragImage:(NSImage *)dragImage mouseDownEvent:(NSEvent *)mouseDownEvent mouseDraggedEvent:(NSEvent *)mouseDraggedEvent
178 {
179     return YES;
180 }
181
182 - (unsigned)webView:(WebView *)webView dragDestinationActionMaskForDraggingInfo:(id <NSDraggingInfo>)draggingInfo;
183 {
184     return WebDragDestinationActionAny;
185 }
186
187 - (void)webView:(WebView *)webView willPerformDragDestinationAction:(WebDragDestinationAction)action forDraggingInfo:(id <NSDraggingInfo>)draggingInfo
188 {
189 }
190
191 - (unsigned)webView:(WebView *)webView dragSourceActionMaskForPoint:(NSPoint)point;
192 {
193     DOMElement *elementAtPoint = [[webView elementAtPoint:point] objectForKey:WebElementDOMNodeKey];
194     if ([elementAtPoint respondsToSelector:@selector(isContentEditable)] && [(id)elementAtPoint isContentEditable])
195         return (WebDragSourceActionAny & ~WebDragSourceActionLink);
196
197     return WebDragSourceActionAny;
198 }
199
200 - (void)webView:(WebView *)webView willPerformDragSourceAction:(WebDragSourceAction)action fromPoint:(NSPoint)point withPasteboard:(NSPasteboard *)pasteboard;
201 {
202 }
203
204 @end