annotate dwt/browser/Safari.d @ 46:cfa563df4fdd

Updated Widget and Display to 3.514
author Jacob Carlborg <doob@me.com>
date Fri, 05 Dec 2008 16:00:41 +0100
parents d8635bb48c7c
children 5583f8eeee6c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1 /*******************************************************************************
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
7 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
8 * Contributors:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
10 *******************************************************************************/
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
11 module dwt.browser.Safari;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
12
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
13 import dwt.dwthelper.utils;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
14
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
15 import dwt.DWT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
16 import dwt.graphics.Point;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
17 import dwt.graphics.Rectangle;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
18 import dwt.internal.C;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
19 import dwt.internal.Callback;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
20 import dwt.internal.Compatibility;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
21 import dwt.internal.cocoa.DOMDocument;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
22 import dwt.internal.cocoa.DOMKeyboardEvent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
23 import dwt.internal.cocoa.DOMMouseEvent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
24 import dwt.internal.cocoa.DOMWheelEvent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
25 import dwt.internal.cocoa.NSArray;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
26 import dwt.internal.cocoa.NSDictionary;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
27 import dwt.internal.cocoa.NSError;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
28 import dwt.internal.cocoa.NSHTTPCookie;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
29 import dwt.internal.cocoa.NSHTTPCookieStorage;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
30 import dwt.internal.cocoa.NSNotificationCenter;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
31 import dwt.internal.cocoa.NSNumber;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
32 import dwt.internal.cocoa.NSPrintInfo;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
33 import dwt.internal.cocoa.NSPrintOperation;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
34 import dwt.internal.cocoa.NSRect;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
35 import dwt.internal.cocoa.NSString;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
36 import dwt.internal.cocoa.NSURL;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
37 import dwt.internal.cocoa.NSURLDownload;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
38 import dwt.internal.cocoa.NSURLRequest;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
39 import dwt.internal.cocoa.OS;
35
7d135fe0caf2 Ported dwt.graphics.Cursor and dwt.widgets.MenuItem
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents: 13
diff changeset
40 import dwt.internal.cocoa.SWTWebViewDelegate;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
41 import dwt.internal.cocoa.WebDataSource;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
42 import dwt.internal.cocoa.WebDocumentRepresentation;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
43 import dwt.internal.cocoa.WebFrame;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
44 import dwt.internal.cocoa.WebFrameView;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
45 import dwt.internal.cocoa.WebOpenPanelResultListener;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
46 import dwt.internal.cocoa.WebPolicyDecisionListener;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
47 import dwt.internal.cocoa.WebPreferences;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
48 import dwt.internal.cocoa.WebView;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
49 import dwt.internal.cocoa.id;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
50 import dwt.widgets.Composite;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
51 import dwt.widgets.Display;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
52 import dwt.widgets.Event;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
53 import dwt.widgets.FileDialog;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
54 import dwt.widgets.Listener;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
55 import dwt.widgets.Menu;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
56 import dwt.widgets.MessageBox;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
57 import dwt.widgets.Shell;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
58 import dwt.widgets.Widget;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
59
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
60 class Safari extends WebBrowser {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
61 WebView webView;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
62 SWTWebViewDelegate delegate;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
63 bool changingLocation;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
64 String lastHoveredLinkURL;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
65 String html;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
66 int /*long*/ identifier;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
67 int resourceCount;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
68 String url = ""; //$NON-NLS-1$
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
69 Point location;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
70 Point size;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
71 bool statusBar = true, toolBar = true, ignoreDispose;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
72 int lastMouseMoveX, lastMouseMoveY;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
73 //TEMPORARY CODE
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
74 // bool doit;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
75
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
76 static bool Initialized;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
77 // the following Callbacks are never freed
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
78 static Callback Callback3, Callback4, Callback5, Callback6, Callback7;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
79
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
80 static final int MIN_SIZE = 16;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
81 static final int MAX_PROGRESS = 100;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
82 static final String WebElementLinkURLKey = "WebElementLinkURL"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
83 static final String AGENT_STRING = "Safari/unknown"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
84 static final String URI_FROMMEMORY = "file:///"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
85 static final String PROTOCOL_FILE = "file://"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
86 static final String PROTOCOL_HTTP = "http://"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
87 static final String ABOUT_BLANK = "about:blank"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
88 static final String ADD_WIDGET_KEY = "dwt.internal.addWidget"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
89 static final String SAFARI_EVENTS_FIX_KEY = "dwt.internal.safariEventsFix"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
90 static final String DWT_OBJECT = "DWT_OBJECT"; //$NON-NLS-1$
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
91
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
92 /* event strings */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
93 static final String DOMEVENT_KEYUP = "keyup"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
94 static final String DOMEVENT_KEYDOWN = "keydown"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
95 static final String DOMEVENT_MOUSEDOWN = "mousedown"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
96 static final String DOMEVENT_MOUSEUP = "mouseup"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
97 static final String DOMEVENT_MOUSEMOVE = "mousemove"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
98 static final String DOMEVENT_MOUSEWHEEL = "mousewheel"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
99
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
100 static {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
101 NativeClearSessions = new Runnable() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
102 public void run() {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
103 NSHTTPCookieStorage storage = NSHTTPCookieStorage.sharedHTTPCookieStorage();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
104 NSArray cookies = storage.cookies();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
105 int /*long*/ count = cookies.count();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
106 for (int i = 0; i < count; i++) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
107 NSHTTPCookie cookie = new NSHTTPCookie(cookies.objectAtIndex(i));
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
108 if (cookie.isSessionOnly()) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
109 storage.deleteCookie(cookie);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
110 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
111 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
112 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
113 };
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
114 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
115
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
116 public void create (Composite parent, int style) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
117 String className = "SWTWebViewDelegate"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
118 if (OS.objc_lookUpClass(className) is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
119 Class safariClass = this.getClass();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
120 Callback3 = new Callback(safariClass, "browserProc", 3); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
121 int /*long*/ proc3 = Callback3.getAddress();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
122 if (proc3 is 0) DWT.error (DWT.ERROR_NO_MORE_CALLBACKS);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
123 Callback4 = new Callback(safariClass, "browserProc", 4); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
124 int /*long*/ proc4 = Callback4.getAddress();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
125 if (proc4 is 0) DWT.error (DWT.ERROR_NO_MORE_CALLBACKS);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
126 Callback5 = new Callback(safariClass, "browserProc", 5); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
127 int /*long*/ proc5 = Callback5.getAddress();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
128 if (proc5 is 0) DWT.error (DWT.ERROR_NO_MORE_CALLBACKS);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
129 Callback6 = new Callback(safariClass, "browserProc", 6); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
130 int /*long*/ proc6 = Callback6.getAddress();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
131 if (proc6 is 0) DWT.error (DWT.ERROR_NO_MORE_CALLBACKS);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
132 Callback7 = new Callback(safariClass, "browserProc", 7); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
133 int /*long*/ proc7 = Callback7.getAddress();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
134 if (proc7 is 0) DWT.error (DWT.ERROR_NO_MORE_CALLBACKS);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
135 int /*long*/ setFrameProc = OS.webView_setFrame_CALLBACK(proc4);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
136 if (setFrameProc is 0) DWT.error (DWT.ERROR_NO_MORE_CALLBACKS);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
137
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
138 String types = "*"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
139 int size = C.PTR_SIZEOF, align = C.PTR_SIZEOF is 4 ? 2 : 3;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
140
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
141 int /*long*/ cls = OS.objc_allocateClassPair(OS.class_NSObject, className, 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
142 OS.class_addIvar(cls, DWT_OBJECT, size, (byte)align, types);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
143 OS.class_addMethod(cls, OS.sel_webView_didChangeLocationWithinPageForFrame_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
144 OS.class_addMethod(cls, OS.sel_webView_didFailProvisionalLoadWithError_forFrame_, proc5, "@:@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
145 OS.class_addMethod(cls, OS.sel_webView_didFinishLoadForFrame_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
146 OS.class_addMethod(cls, OS.sel_webView_didReceiveTitle_forFrame_, proc5, "@:@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
147 OS.class_addMethod(cls, OS.sel_webView_didStartProvisionalLoadForFrame_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
148 OS.class_addMethod(cls, OS.sel_webView_didCommitLoadForFrame_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
149 OS.class_addMethod(cls, OS.sel_webView_resource_didFinishLoadingFromDataSource_, proc5, "@:@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
150 OS.class_addMethod(cls, OS.sel_webView_resource_didFailLoadingWithError_fromDataSource_, proc6, "@:@@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
151 OS.class_addMethod(cls, OS.sel_webView_identifierForInitialRequest_fromDataSource_, proc5, "@:@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
152 OS.class_addMethod(cls, OS.sel_webView_resource_willSendRequest_redirectResponse_fromDataSource_, proc7, "@:@@@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
153 OS.class_addMethod(cls, OS.sel_handleNotification_, proc3, "@:@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
154 OS.class_addMethod(cls, OS.sel_webView_createWebViewWithRequest_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
155 OS.class_addMethod(cls, OS.sel_webViewShow_, proc3, "@:@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
156 OS.class_addMethod(cls, OS.sel_webViewClose_, proc3, "@:@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
157 OS.class_addMethod(cls, OS.sel_webView_contextMenuItemsForElement_defaultMenuItems_, proc5, "@:@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
158 OS.class_addMethod(cls, OS.sel_webView_setStatusBarVisible_, proc4, "@:@B"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
159 OS.class_addMethod(cls, OS.sel_webView_setResizable_, proc4, "@:@B"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
160 OS.class_addMethod(cls, OS.sel_webView_setToolbarsVisible_, proc4, "@:@B"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
161 OS.class_addMethod(cls, OS.sel_webView_setStatusText_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
162 OS.class_addMethod(cls, OS.sel_webViewFocus_, proc3, "@:@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
163 OS.class_addMethod(cls, OS.sel_webViewUnfocus_, proc3, "@:@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
164 OS.class_addMethod(cls, OS.sel_webView_runJavaScriptAlertPanelWithMessage_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
165 OS.class_addMethod(cls, OS.sel_webView_runJavaScriptConfirmPanelWithMessage_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
166 OS.class_addMethod(cls, OS.sel_webView_runOpenPanelForFileButtonWithResultListener_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
167 OS.class_addMethod(cls, OS.sel_webView_mouseDidMoveOverElement_modifierFlags_, proc5, "@:@@I"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
168 OS.class_addMethod(cls, OS.sel_webView_printFrameView_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
169 OS.class_addMethod(cls, OS.sel_webView_decidePolicyForMIMEType_request_frame_decisionListener_, proc7, "@:@@@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
170 OS.class_addMethod(cls, OS.sel_webView_decidePolicyForNavigationAction_request_frame_decisionListener_, proc7, "@:@@@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
171 OS.class_addMethod(cls, OS.sel_webView_decidePolicyForNewWindowAction_request_newFrameName_decisionListener_, proc7, "@:@@@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
172 OS.class_addMethod(cls, OS.sel_webView_unableToImplementPolicyWithError_frame_, proc5, "@:@@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
173 OS.class_addMethod(cls, OS.sel_download_decideDestinationWithSuggestedFilename_, proc4, "@:@@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
174 OS.class_addMethod(cls, OS.sel_handleEvent_, proc3, "@:@"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
175 OS.class_addMethod(cls, OS.sel_webView_setFrame_, setFrameProc, "@:@{NSRect}"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
176 OS.objc_registerClassPair(cls);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
177 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
178
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
179 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
180 * Override the default event mechanism to not send key events so
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
181 * that the browser can send them by listening to the DOM instead.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
182 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
183 browser.setData(SAFARI_EVENTS_FIX_KEY);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
184
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
185 WebView webView = (WebView)new WebView().alloc();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
186 if (webView is null) DWT.error(DWT.ERROR_NO_HANDLES);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
187 webView.initWithFrame(browser.view.frame(), null, null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
188 webView.setAutoresizingMask(OS.NSViewWidthSizable | OS.NSViewHeightSizable);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
189 final SWTWebViewDelegate delegate = (SWTWebViewDelegate)new SWTWebViewDelegate().alloc().init();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
190 Display display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
191 display.setData(ADD_WIDGET_KEY, new Object[] {delegate, browser});
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
192 this.delegate = delegate;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
193 this.webView = webView;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
194 browser.view.addSubview(webView);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
195
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
196 final NSNotificationCenter notificationCenter = NSNotificationCenter.defaultCenter();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
197
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
198 Listener listener = new Listener() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
199 public void handleEvent(Event e) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
200 switch (e.type) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
201 case DWT.FocusIn:
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
202 Safari.this.webView.window().makeFirstResponder(Safari.this.webView);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
203 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
204 case DWT.Dispose: {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
205 /* make this handler run after other dispose listeners */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
206 if (ignoreDispose) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
207 ignoreDispose = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
208 break;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
209 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
210 ignoreDispose = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
211 browser.notifyListeners (e.type, e);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
212 e.type = DWT.NONE;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
213
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
214 e.display.setData(ADD_WIDGET_KEY, new Object[] {delegate, null});
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
215
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
216 Safari.this.webView.setFrameLoadDelegate(null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
217 Safari.this.webView.setResourceLoadDelegate(null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
218 Safari.this.webView.setUIDelegate(null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
219 Safari.this.webView.setPolicyDelegate(null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
220 Safari.this.webView.setDownloadDelegate(null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
221 notificationCenter.removeObserver(delegate);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
222
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
223 Safari.this.webView.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
224 Safari.this.webView = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
225 Safari.this.delegate.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
226 Safari.this.delegate = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
227 html = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
228 lastHoveredLinkURL = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
229 break;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
230 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
231 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
232 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
233 };
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
234 browser.addListener(DWT.Dispose, listener);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
235 /* Needed to be able to tab into the browser */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
236 browser.addListener(DWT.KeyDown, listener);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
237 browser.addListener(DWT.FocusIn, listener);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
238
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
239 webView.setFrameLoadDelegate(delegate);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
240 webView.setResourceLoadDelegate(delegate);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
241 webView.setUIDelegate(delegate);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
242 notificationCenter.addObserver(delegate, OS.sel_handleNotification_, null, webView);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
243 webView.setPolicyDelegate(delegate);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
244 webView.setDownloadDelegate(delegate);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
245 webView.setApplicationNameForUserAgent(NSString.stringWith(AGENT_STRING));
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
246
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
247 if (!Initialized) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
248 Initialized = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
249 /* disable applets */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
250 WebPreferences.standardPreferences().setJavaEnabled(false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
251 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
252 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
253
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
254 public bool back() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
255 html = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
256 return webView.goBack();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
257 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
258
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
259 static int /*long*/ browserProc(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
260 Widget widget = Display.getCurrent().findWidget(id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
261 if (widget is null) return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
262 Safari safari = (Safari)((Browser)widget).webBrowser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
263 if (sel is OS.sel_handleNotification_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
264 safari.handleNotification(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
265 } else if (sel is OS.sel_webViewShow_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
266 safari.webViewShow(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
267 } else if (sel is OS.sel_webViewClose_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
268 safari.webViewClose(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
269 } else if (sel is OS.sel_webViewFocus_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
270 safari.webViewFocus(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
271 } else if (sel is OS.sel_webViewUnfocus_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
272 safari.webViewUnfocus(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
273 } else if (sel is OS.sel_handleEvent_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
274 safari.handleEvent(arg0);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
275 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
276 return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
277 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
278
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
279 static int /*long*/ browserProc(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
280 Widget widget = Display.getCurrent().findWidget(id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
281 if (widget is null) return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
282 Safari safari = (Safari)((Browser)widget).webBrowser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
283 if (sel is OS.sel_webView_didChangeLocationWithinPageForFrame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
284 safari.webView_didChangeLocationWithinPageForFrame(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
285 } else if (sel is OS.sel_webView_didFinishLoadForFrame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
286 safari.webView_didFinishLoadForFrame(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
287 } else if (sel is OS.sel_webView_didStartProvisionalLoadForFrame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
288 safari.webView_didStartProvisionalLoadForFrame(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
289 } else if (sel is OS.sel_webView_didCommitLoadForFrame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
290 safari.webView_didCommitLoadForFrame(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
291 } else if (sel is OS.sel_webView_setFrame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
292 safari.webView_setFrame(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
293 } else if (sel is OS.sel_webView_createWebViewWithRequest_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
294 return safari.webView_createWebViewWithRequest(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
295 } else if (sel is OS.sel_webView_setStatusBarVisible_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
296 safari.webView_setStatusBarVisible(arg0, arg1 !is 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
297 } else if (sel is OS.sel_webView_setResizable_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
298 safari.webView_setResizable(arg0, arg1 !is 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
299 } else if (sel is OS.sel_webView_setStatusText_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
300 safari.webView_setStatusText(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
301 } else if (sel is OS.sel_webView_setToolbarsVisible_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
302 safari.webView_setToolbarsVisible(arg0, arg1 !is 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
303 } else if (sel is OS.sel_webView_runJavaScriptAlertPanelWithMessage_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
304 safari.webView_runJavaScriptAlertPanelWithMessage(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
305 } else if (sel is OS.sel_webView_runJavaScriptConfirmPanelWithMessage_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
306 return safari.webView_runJavaScriptConfirmPanelWithMessage(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
307 } else if (sel is OS.sel_webView_runOpenPanelForFileButtonWithResultListener_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
308 safari.webView_runOpenPanelForFileButtonWithResultListener(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
309 } else if (sel is OS.sel_download_decideDestinationWithSuggestedFilename_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
310 safari.download_decideDestinationWithSuggestedFilename(arg0, arg1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
311 } else if (sel is OS.sel_webView_printFrameView_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
312 safari.webView_printFrameView(arg0, arg1);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
313 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
314 return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
315 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
316
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
317 static int /*long*/ browserProc(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
318 Widget widget = Display.getCurrent().findWidget(id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
319 if (widget is null) return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
320 Safari safari = (Safari)((Browser)widget).webBrowser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
321 if (sel is OS.sel_webView_didFailProvisionalLoadWithError_forFrame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
322 safari.webView_didFailProvisionalLoadWithError_forFrame(arg0, arg1, arg2);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
323 } else if (sel is OS.sel_webView_didReceiveTitle_forFrame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
324 safari.webView_didReceiveTitle_forFrame(arg0, arg1, arg2);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
325 } else if (sel is OS.sel_webView_resource_didFinishLoadingFromDataSource_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
326 safari.webView_resource_didFinishLoadingFromDataSource(arg0, arg1, arg2);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
327 } else if (sel is OS.sel_webView_identifierForInitialRequest_fromDataSource_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
328 return safari.webView_identifierForInitialRequest_fromDataSource(arg0, arg1, arg2);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
329 } else if (sel is OS.sel_webView_contextMenuItemsForElement_defaultMenuItems_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
330 return safari.webView_contextMenuItemsForElement_defaultMenuItems(arg0, arg1, arg2);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
331 } else if (sel is OS.sel_webView_mouseDidMoveOverElement_modifierFlags_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
332 safari.webView_mouseDidMoveOverElement_modifierFlags(arg0, arg1, arg2);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
333 } else if (sel is OS.sel_webView_unableToImplementPolicyWithError_frame_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
334 safari.webView_unableToImplementPolicyWithError_frame(arg0, arg1, arg2);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
335 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
336 return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
337 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
338
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
339 static int /*long*/ browserProc(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2, int /*long*/ arg3) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
340 Widget widget = Display.getCurrent().findWidget(id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
341 if (widget is null) return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
342 Safari safari = (Safari)((Browser)widget).webBrowser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
343 if (sel is OS.sel_webView_resource_didFailLoadingWithError_fromDataSource_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
344 safari.webView_resource_didFailLoadingWithError_fromDataSource(arg0, arg1, arg2, arg3);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
345 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
346 return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
347 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
348
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
349 static int /*long*/ browserProc(int /*long*/ id, int /*long*/ sel, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2, int /*long*/ arg3, int /*long*/ arg4) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
350 Widget widget = Display.getCurrent().findWidget(id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
351 if (widget is null) return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
352 Safari safari = (Safari)((Browser)widget).webBrowser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
353 if (sel is OS.sel_webView_resource_willSendRequest_redirectResponse_fromDataSource_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
354 return safari.webView_resource_willSendRequest_redirectResponse_fromDataSource(arg0, arg1, arg2, arg3, arg4);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
355 } else if (sel is OS.sel_webView_decidePolicyForMIMEType_request_frame_decisionListener_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
356 safari.webView_decidePolicyForMIMEType_request_frame_decisionListener(arg0, arg1, arg2, arg3, arg4);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
357 } else if (sel is OS.sel_webView_decidePolicyForNavigationAction_request_frame_decisionListener_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
358 safari.webView_decidePolicyForNavigationAction_request_frame_decisionListener(arg0, arg1, arg2, arg3, arg4);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
359 } else if (sel is OS.sel_webView_decidePolicyForNewWindowAction_request_newFrameName_decisionListener_) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
360 safari.webView_decidePolicyForNewWindowAction_request_newFrameName_decisionListener(arg0, arg1, arg2, arg3, arg4);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
361 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
362 return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
363 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
364
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
365 public bool execute(String script) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
366 return webView.stringByEvaluatingJavaScriptFromString(NSString.stringWith(script)) !is null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
367 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
368
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
369 public bool forward() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
370 html = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
371 return webView.goForward();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
372 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
373
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
374 public String getBrowserType () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
375 return "safari"; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
376 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
377
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
378 public String getText() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
379 WebFrame mainFrame = webView.mainFrame();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
380 WebDataSource dataSource = mainFrame.dataSource();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
381 if (dataSource is null) return ""; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
382 WebDocumentRepresentation representation = dataSource.representation();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
383 if (representation is null) return ""; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
384 NSString source = representation.documentSource();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
385 if (source is null) return ""; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
386 return source.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
387 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
388
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
389 public String getUrl() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
390 return url;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
391 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
392
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
393 public bool isBackEnabled() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
394 return webView.canGoBack();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
395 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
396
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
397 public bool isForwardEnabled() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
398 return webView.canGoForward();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
399 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
400
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
401 public void refresh() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
402 webView.reload(null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
403 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
404
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
405 public bool setText(String html) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
406 /*
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
407 * Bug in Safari. The web view segment faults in some circumstances
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
408 * when the text changes during the location changing callback. The
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
409 * fix is to defer the work until the callback is done.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
410 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
411 if (changingLocation) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
412 this.html = html;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
413 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
414 _setText(html);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
415 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
416 return true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
417 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
418
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
419 void _setText(String html) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
420 NSString string = NSString.stringWith(html);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
421 NSString URLString = NSString.stringWith(URI_FROMMEMORY);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
422 NSURL URL = NSURL.URLWithString(URLString);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
423 WebFrame mainFrame = webView.mainFrame();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
424 mainFrame.loadHTMLString(string, URL);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
425 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
426
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
427 public bool setUrl(String url) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
428 html = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
429
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
430 if (url.indexOf('/') is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
431 url = PROTOCOL_FILE + url;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
432 } else if (url.indexOf(':') is -1) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
433 url = PROTOCOL_HTTP + url;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
434 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
435
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
436 NSString str = NSString.stringWith(url);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
437 NSString unescapedStr = NSString.stringWith("%#"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
438 int /*long*/ ptr = OS.CFURLCreateStringByAddingPercentEscapes(0, str.id, unescapedStr.id, 0, OS.kCFStringEncodingUTF8);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
439 NSString escapedString = new NSString(ptr);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
440 NSURL inURL = NSURL.URLWithString(escapedString);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
441 OS.CFRelease(ptr);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
442 NSURLRequest request = NSURLRequest.requestWithURL(inURL);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
443 WebFrame mainFrame = webView.mainFrame();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
444 mainFrame.loadRequest(request);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
445 return true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
446 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
447
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
448 public void stop() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
449 html = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
450 webView.stopLoading(null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
451 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
452
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
453 /* WebFrameLoadDelegate */
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
454
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
455 void webView_didChangeLocationWithinPageForFrame(int /*long*/ sender, int /*long*/ frameID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
456 WebFrame frame = new WebFrame(frameID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
457 WebDataSource dataSource = frame.dataSource();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
458 NSURLRequest request = dataSource.request();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
459 NSURL url = request.URL();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
460 NSString s = url.absoluteString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
461 int length = (int)/*64*/s.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
462 if (length is 0) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
463 String url2 = s.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
464 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
465 * If the URI indicates that the page is being rendered from memory
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
466 * (via setText()) then set it to about:blank to be consistent with IE.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
467 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
468 if (url2.equals (URI_FROMMEMORY)) url2 = ABOUT_BLANK;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
469
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
470 final Display display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
471 bool top = frameID is webView.mainFrame().id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
472 if (top) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
473 StatusTextEvent statusText = new StatusTextEvent(browser);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
474 statusText.display = display;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
475 statusText.widget = browser;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
476 statusText.text = url2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
477 for (int i = 0; i < statusTextListeners.length; i++) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
478 statusTextListeners[i].changed(statusText);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
479 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
480 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
481
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
482 LocationEvent location = new LocationEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
483 location.display = display;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
484 location.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
485 location.location = url2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
486 location.top = top;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
487 for (int i = 0; i < locationListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
488 locationListeners[i].changed(location);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
489 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
490 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
491
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
492 void webView_didFailProvisionalLoadWithError_forFrame(int /*long*/ sender, int /*long*/ error, int /*long*/ frame) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
493 if (frame is webView.mainFrame().id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
494 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
495 * Feature on Safari. The identifier is used here as a marker for the events
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
496 * related to the top frame and the URL changes related to that top frame as
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
497 * they should appear on the location bar of a browser. It is expected to reset
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
498 * the identifier to 0 when the event didFinishLoadingFromDataSource related to
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
499 * the identifierForInitialRequest event is received. However, Safari fires
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
500 * the didFinishLoadingFromDataSource event before the entire content of the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
501 * top frame is loaded. It is possible to receive multiple willSendRequest
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
502 * events in this interval, causing the Browser widget to send unwanted
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
503 * Location.changing events. For this reason, the identifier is reset to 0
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
504 * when the top frame has either finished loading (didFinishLoadForFrame
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
505 * event) or failed (didFailProvisionalLoadWithError).
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
506 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
507 identifier = 0;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
508 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
509
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
510 NSError nserror = new NSError(error);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
511 int /*long*/ errorCode = nserror.code();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
512 if (errorCode <= OS.NSURLErrorBadURL) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
513 NSString description = nserror.localizedDescription();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
514 if (description !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
515 String descriptionString = description.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
516 String urlString = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
517 NSDictionary info = nserror.userInfo();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
518 if (info !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
519 NSString key = new NSString(OS.NSErrorFailingURLStringKey());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
520 id id = info.valueForKey(key);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
521 if (id !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
522 NSString url = new NSString(id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
523 urlString = url.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
524 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
525 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
526 String message = urlString !is null ? urlString + "\n\n" : ""; //$NON-NLS-1$ //$NON-NLS-2$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
527 message += Compatibility.getMessage ("DWT_Page_Load_Failed", new Object[] {descriptionString}); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
528 MessageBox messageBox = new MessageBox(browser.getShell(), DWT.OK | DWT.ICON_ERROR);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
529 messageBox.setMessage(message);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
530 messageBox.open();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
531 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
532 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
533 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
534
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
535 void webView_didFinishLoadForFrame(int /*long*/ sender, int /*long*/ frameID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
536 hookDOMMouseListeners(frameID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
537 if (frameID is webView.mainFrame().id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
538 hookDOMKeyListeners(frameID);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
539
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
540 final Display display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
541 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
542 * To be consistent with other platforms a title event should be fired when a
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
543 * page has completed loading. A page with a <title> tag will do this
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
544 * automatically when the didReceiveTitle callback is received. However a page
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
545 * without a <title> tag will not do this by default, so fire the event
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
546 * here with the page's url as the title.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
547 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
548 WebFrame frame = new WebFrame(frameID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
549 WebDataSource dataSource = frame.dataSource();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
550 if (dataSource !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
551 NSString title = dataSource.pageTitle();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
552 if (title is null) { /* page has no title */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
553 final TitleEvent newEvent = new TitleEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
554 newEvent.display = display;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
555 newEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
556 newEvent.title = url;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
557 for (int i = 0; i < titleListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
558 final TitleListener listener = titleListeners[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
559 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
560 * Note on WebKit. Running the event loop from a Browser
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
561 * delegate callback breaks the WebKit (stop loading or
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
562 * crash). The workaround is to invoke Display.asyncExec()
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
563 * so that the Browser does not crash if this is attempted.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
564 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
565 display.asyncExec(
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
566 new Runnable() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
567 public void run() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
568 if (!display.isDisposed() && !browser.isDisposed()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
569 listener.changed(newEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
570 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
571 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
572 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
573 );
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
574 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
575 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
576 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
577 final ProgressEvent progress = new ProgressEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
578 progress.display = display;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
579 progress.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
580 progress.current = MAX_PROGRESS;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
581 progress.total = MAX_PROGRESS;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
582 for (int i = 0; i < progressListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
583 final ProgressListener listener = progressListeners[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
584 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
585 * Note on WebKit. Running the event loop from a Browser
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
586 * delegate callback breaks the WebKit (stop loading or
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
587 * crash). The ProgressBar widget currently touches the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
588 * event loop every time the method setSelection is called.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
589 * The workaround is to invoke Display.asyncExec() so that
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
590 * the Browser does not crash when the user updates the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
591 * selection of the ProgressBar.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
592 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
593 display.asyncExec(
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
594 new Runnable() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
595 public void run() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
596 if (!display.isDisposed() && !browser.isDisposed()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
597 listener.completed(progress);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
598 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
599 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
600 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
601 );
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
602 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
603 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
604 * Feature on Safari. The identifier is used here as a marker for the events
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
605 * related to the top frame and the URL changes related to that top frame as
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
606 * they should appear on the location bar of a browser. It is expected to reset
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
607 * the identifier to 0 when the event didFinishLoadingFromDataSource related to
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
608 * the identifierForInitialRequest event is received. However, Safari fires
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
609 * the didFinishLoadingFromDataSource event before the entire content of the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
610 * top frame is loaded. It is possible to receive multiple willSendRequest
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
611 * events in this interval, causing the Browser widget to send unwanted
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
612 * Location.changing events. For this reason, the identifier is reset to 0
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
613 * when the top frame has either finished loading (didFinishLoadForFrame
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
614 * event) or failed (didFailProvisionalLoadWithError).
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
615 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
616 identifier = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
617 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
618 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
619
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
620 void hookDOMKeyListeners(int /*long*/ frameID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
621 WebFrame frame = new WebFrame(frameID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
622 DOMDocument document = frame.DOMDocument();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
623
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
624 NSString type = NSString.stringWith(DOMEVENT_KEYDOWN);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
625 document.addEventListener(type, delegate, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
626
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
627 type = NSString.stringWith(DOMEVENT_KEYUP);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
628 document.addEventListener(type, delegate, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
629 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
630
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
631 void hookDOMMouseListeners(int /*long*/ frameID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
632 WebFrame frame = new WebFrame(frameID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
633 DOMDocument document = frame.DOMDocument();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
634
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
635 NSString type = NSString.stringWith(DOMEVENT_MOUSEDOWN);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
636 document.addEventListener(type, delegate, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
637
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
638 type = NSString.stringWith(DOMEVENT_MOUSEUP);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
639 document.addEventListener(type, delegate, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
640
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
641 type = NSString.stringWith(DOMEVENT_MOUSEMOVE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
642 document.addEventListener(type, delegate, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
643
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
644 type = NSString.stringWith(DOMEVENT_MOUSEWHEEL);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
645 document.addEventListener(type, delegate, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
646 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
647
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
648 void webView_didReceiveTitle_forFrame(int /*long*/ sender, int /*long*/ titleID, int /*long*/ frameID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
649 if (frameID is webView.mainFrame().id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
650 NSString title = new NSString(titleID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
651 String newTitle = title.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
652 TitleEvent newEvent = new TitleEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
653 newEvent.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
654 newEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
655 newEvent.title = newTitle;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
656 for (int i = 0; i < titleListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
657 titleListeners[i].changed(newEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
658 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
659 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
660 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
661
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
662 void webView_didStartProvisionalLoadForFrame(int /*long*/ sender, int /*long*/ frameID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
663 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
664 * This code is intentionally commented. WebFrameLoadDelegate:didStartProvisionalLoadForFrame is
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
665 * called before WebResourceLoadDelegate:willSendRequest and
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
666 * WebFrameLoadDelegate:didCommitLoadForFrame. The resource count is reset when didCommitLoadForFrame
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
667 * is received for the top frame.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
668 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
669 // if (frameID is webView.mainFrame().id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
670 // /* reset resource status variables */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
671 // resourceCount= 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
672 // }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
673 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
674
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
675 void webView_didCommitLoadForFrame(int /*long*/ sender, int /*long*/ frameID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
676 WebFrame frame = new WebFrame(frameID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
677 WebDataSource dataSource = frame.dataSource();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
678 NSURLRequest request = dataSource.request();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
679 NSURL url = request.URL();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
680 NSString s = url.absoluteString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
681 int length = (int)/*64*/s.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
682 if (length is 0) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
683 String url2 = s.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
684 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
685 * If the URI indicates that the page is being rendered from memory
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
686 * (via setText()) then set it to about:blank to be consistent with IE.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
687 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
688 if (url2.equals (URI_FROMMEMORY)) url2 = ABOUT_BLANK;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
689
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
690 final Display display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
691 bool top = frameID is webView.mainFrame().id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
692 if (top) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
693 /* reset resource status variables */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
694 resourceCount = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
695 this.url = url2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
696
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
697 final ProgressEvent progress = new ProgressEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
698 progress.display = display;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
699 progress.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
700 progress.current = 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
701 progress.total = MAX_PROGRESS;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
702 for (int i = 0; i < progressListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
703 final ProgressListener listener = progressListeners[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
704 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
705 * Note on WebKit. Running the event loop from a Browser
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
706 * delegate callback breaks the WebKit (stop loading or
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
707 * crash). The widget ProgressBar currently touches the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
708 * event loop every time the method setSelection is called.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
709 * The workaround is to invoke Display.asyncexec so that
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
710 * the Browser does not crash when the user updates the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
711 * selection of the ProgressBar.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
712 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
713 display.asyncExec(
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
714 new Runnable() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
715 public void run() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
716 if (!display.isDisposed() && !browser.isDisposed())
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
717 listener.changed(progress);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
718 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
719 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
720 );
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
721 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
722
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
723 StatusTextEvent statusText = new StatusTextEvent(browser);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
724 statusText.display = display;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
725 statusText.widget = browser;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
726 statusText.text = url2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
727 for (int i = 0; i < statusTextListeners.length; i++) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
728 statusTextListeners[i].changed(statusText);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
729 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
730 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
731 LocationEvent location = new LocationEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
732 location.display = display;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
733 location.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
734 location.location = url2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
735 location.top = top;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
736 for (int i = 0; i < locationListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
737 locationListeners[i].changed(location);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
738 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
739 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
740
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
741 /* WebResourceLoadDelegate */
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
742
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
743 void webView_resource_didFinishLoadingFromDataSource(int /*long*/ sender, int /*long*/ identifier, int /*long*/ dataSource) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
744 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
745 * Feature on Safari. The identifier is used here as a marker for the events
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
746 * related to the top frame and the URL changes related to that top frame as
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
747 * they should appear on the location bar of a browser. It is expected to reset
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
748 * the identifier to 0 when the event didFinishLoadingFromDataSource related to
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
749 * the identifierForInitialRequest event is received. However, Safari fires
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
750 * the didFinishLoadingFromDataSource event before the entire content of the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
751 * top frame is loaded. It is possible to receive multiple willSendRequest
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
752 * events in this interval, causing the Browser widget to send unwanted
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
753 * Location.changing events. For this reason, the identifier is reset to 0
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
754 * when the top frame has either finished loading (didFinishLoadForFrame
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
755 * event) or failed (didFailProvisionalLoadWithError).
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
756 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
757 // this code is intentionally commented
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
758 //if (this.identifier is identifier) this.identifier = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
759 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
760
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
761 void webView_resource_didFailLoadingWithError_fromDataSource(int /*long*/ sender, int /*long*/ identifier, int /*long*/ error, int /*long*/ dataSource) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
762 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
763 * Feature on Safari. The identifier is used here as a marker for the events
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
764 * related to the top frame and the URL changes related to that top frame as
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
765 * they should appear on the location bar of a browser. It is expected to reset
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
766 * the identifier to 0 when the event didFinishLoadingFromDataSource related to
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
767 * the identifierForInitialRequest event is received. However, Safari fires
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
768 * the didFinishLoadingFromDataSource event before the entire content of the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
769 * top frame is loaded. It is possible to receive multiple willSendRequest
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
770 * events in this interval, causing the Browser widget to send unwanted
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
771 * Location.changing events. For this reason, the identifier is reset to 0
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
772 * when the top frame has either finished loading (didFinishLoadForFrame
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
773 * event) or failed (didFailProvisionalLoadWithError).
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
774 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
775 // this code is intentionally commented
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
776 //if (this.identifier is identifier) this.identifier = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
777 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
778
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
779 int /*long*/ webView_identifierForInitialRequest_fromDataSource(int /*long*/ sender, int /*long*/ request, int /*long*/ dataSourceID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
780 final Display display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
781 final ProgressEvent progress = new ProgressEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
782 progress.display = display;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
783 progress.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
784 progress.current = resourceCount;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
785 progress.total = Math.max(resourceCount, MAX_PROGRESS);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
786 for (int i = 0; i < progressListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
787 final ProgressListener listener = progressListeners[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
788 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
789 * Note on WebKit. Running the event loop from a Browser
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
790 * delegate callback breaks the WebKit (stop loading or
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
791 * crash). The widget ProgressBar currently touches the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
792 * event loop every time the method setSelection is called.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
793 * The workaround is to invoke Display.asyncexec so that
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
794 * the Browser does not crash when the user updates the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
795 * selection of the ProgressBar.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
796 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
797 display.asyncExec(
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
798 new Runnable() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
799 public void run() {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
800 if (!display.isDisposed() && !browser.isDisposed())
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
801 listener.changed(progress);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
802 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
803 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
804 );
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
805 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
806
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
807 NSNumber identifier = NSNumber.numberWithInt(resourceCount++);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
808 if (this.identifier is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
809 WebDataSource dataSource = new WebDataSource(dataSourceID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
810 WebFrame frame = dataSource.webFrame();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
811 if (frame.id is webView.mainFrame().id) this.identifier = identifier.id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
812 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
813 return identifier.id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
814
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
815 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
816
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
817 int /*long*/ webView_resource_willSendRequest_redirectResponse_fromDataSource(int /*long*/ sender, int /*long*/ identifier, int /*long*/ request, int /*long*/ redirectResponse, int /*long*/ dataSource) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
818 return request;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
819 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
820
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
821 /* handleNotification */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
822
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
823 void handleNotification(int /*long*/ notification) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
824 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
825
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
826 /* UIDelegate */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
827
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
828 int /*long*/ webView_createWebViewWithRequest(int /*long*/ sender, int /*long*/ request) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
829 WindowEvent newEvent = new WindowEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
830 newEvent.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
831 newEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
832 newEvent.required = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
833 if (openWindowListeners !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
834 for (int i = 0; i < openWindowListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
835 openWindowListeners[i].open(newEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
836 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
837 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
838 WebView result = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
839 Browser browser = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
840 if (newEvent.browser !is null && newEvent.browser.webBrowser instanceof Safari) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
841 browser = newEvent.browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
842 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
843 if (browser !is null && !browser.isDisposed()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
844 result = ((Safari)browser.webBrowser).webView;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
845 if (request !is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
846 WebFrame mainFrame = webView.mainFrame();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
847 mainFrame.loadRequest(new NSURLRequest(request));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
848 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
849 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
850 return result !is null ? result.id : 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
851 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
852
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
853 void webViewShow(int /*long*/ sender) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
854 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
855 * Feature on WebKit. The Safari WebKit expects the application
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
856 * to create a new Window using the Objective C Cocoa API in response
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
857 * to UIDelegate.createWebViewWithRequest. The application is then
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
858 * expected to use Objective C Cocoa API to make this window visible
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
859 * when receiving the UIDelegate.webViewShow message. For some reason,
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
860 * a window created with the Carbon API hosting the new browser instance
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
861 * does not redraw until it has been resized. The fix is to increase the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
862 * size of the Shell and restore it to its initial size.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
863 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
864 Shell parent = browser.getShell();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
865 Point pt = parent.getSize();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
866 parent.setSize(pt.x+1, pt.y);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
867 parent.setSize(pt.x, pt.y);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
868 WindowEvent newEvent = new WindowEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
869 newEvent.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
870 newEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
871 if (location !is null) newEvent.location = location;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
872 if (size !is null) newEvent.size = size;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
873 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
874 * Feature in Safari. Safari's tool bar contains
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
875 * the address bar. The address bar is displayed
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
876 * if the tool bar is displayed. There is no separate
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
877 * notification for the address bar.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
878 * Feature in Safari. The menu bar is always
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
879 * displayed. There is no notification to hide
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
880 * the menu bar.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
881 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
882 newEvent.addressBar = toolBar;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
883 newEvent.menuBar = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
884 newEvent.statusBar = statusBar;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
885 newEvent.toolBar = toolBar;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
886 for (int i = 0; i < visibilityWindowListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
887 visibilityWindowListeners[i].show(newEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
888 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
889 location = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
890 size = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
891 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
892
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
893 void webView_setFrame(int /*long*/ sender, int /*long*/ frame) {
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
894 NSRect rect = NSRect();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
895 OS.memmove(rect, frame, NSRect.sizeof);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
896 /* convert to DWT system coordinates */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
897 Rectangle bounds = browser.getDisplay().getBounds();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
898 location = new Point((int)rect.x, bounds.height - (int)rect.y - (int)rect.height);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
899 size = new Point((int)rect.width, (int)rect.height);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
900 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
901
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
902 void webViewFocus(int /*long*/ sender) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
903 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
904
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
905 void webViewUnfocus(int /*long*/ sender) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
906 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
907
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
908 void webView_runJavaScriptAlertPanelWithMessage(int /*long*/ sender, int /*long*/ messageID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
909 NSString message = new NSString(messageID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
910 String text = message.getString();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
911
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
912 MessageBox messageBox = new MessageBox(browser.getShell(), DWT.OK | DWT.ICON_WARNING);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
913 messageBox.setText("Javascript"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
914 messageBox.setMessage(text);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
915 messageBox.open();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
916 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
917
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
918 int webView_runJavaScriptConfirmPanelWithMessage(int /*long*/ sender, int /*long*/ messageID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
919 NSString message = new NSString(messageID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
920 String text = message.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
921
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
922 MessageBox messageBox = new MessageBox(browser.getShell(), DWT.OK | DWT.CANCEL | DWT.ICON_QUESTION);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
923 messageBox.setText("Javascript"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
924 messageBox.setMessage(text);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
925 return messageBox.open() is DWT.OK ? 1 : 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
926 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
927
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
928 void webView_runOpenPanelForFileButtonWithResultListener(int /*long*/ sender, int /*long*/ resultListenerID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
929 FileDialog dialog = new FileDialog(browser.getShell(), DWT.NONE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
930 String result = dialog.open();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
931 WebOpenPanelResultListener resultListener = new WebOpenPanelResultListener(resultListenerID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
932 if (result is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
933 resultListener.cancel();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
934 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
935 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
936 resultListener.chooseFilename(NSString.stringWith(result));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
937 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
938
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
939 void webViewClose(int /*long*/ sender) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
940 Shell parent = browser.getShell();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
941 WindowEvent newEvent = new WindowEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
942 newEvent.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
943 newEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
944 for (int i = 0; i < closeWindowListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
945 closeWindowListeners[i].close(newEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
946 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
947 browser.dispose();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
948 if (parent.isDisposed()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
949 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
950 * Feature on WebKit. The Safari WebKit expects the application
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
951 * to create a new Window using the Objective C Cocoa API in response
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
952 * to UIDelegate.createWebViewWithRequest. The application is then
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
953 * expected to use Objective C Cocoa API to make this window visible
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
954 * when receiving the UIDelegate.webViewShow message. For some reason,
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
955 * a window created with the Carbon API hosting the new browser instance
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
956 * does not redraw until it has been resized. The fix is to increase the
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
957 * size of the Shell and restore it to its initial size.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
958 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
959 Point pt = parent.getSize();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
960 parent.setSize(pt.x+1, pt.y);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
961 parent.setSize(pt.x, pt.y);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
962 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
963
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
964 int /*long*/ webView_contextMenuItemsForElement_defaultMenuItems(int /*long*/ sender, int /*long*/ element, int /*long*/ defaultMenuItems) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
965 Point pt = browser.getDisplay().getCursorLocation();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
966 Event event = new Event();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
967 event.x = pt.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
968 event.y = pt.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
969 browser.notifyListeners(DWT.MenuDetect, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
970 Menu menu = browser.getMenu();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
971 if (!event.doit) return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
972 if (menu !is null && !menu.isDisposed()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
973 if (event.x !is pt.x || event.y !is pt.y) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
974 menu.setLocation(event.x, event.y);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
975 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
976 menu.setVisible(true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
977 return 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
978 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
979 return defaultMenuItems;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
980 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
981
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
982 void webView_setStatusBarVisible(int /*long*/ sender, bool visible) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
983 /* Note. Webkit only emits the notification when the status bar should be hidden. */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
984 statusBar = visible;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
985 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
986
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
987 void webView_setStatusText(int /*long*/ sender, int /*long*/ textID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
988 NSString text = new NSString(textID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
989 int length = (int)/*64*/text.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
990 if (length is 0) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
991
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
992 StatusTextEvent statusText = new StatusTextEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
993 statusText.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
994 statusText.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
995 statusText.text = text.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
996 for (int i = 0; i < statusTextListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
997 statusTextListeners[i].changed(statusText);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
998 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
999 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1000
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1001 void webView_setResizable(int /*long*/ sender, bool visible) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1002 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1003
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1004 void webView_setToolbarsVisible(int /*long*/ sender, bool visible) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1005 /* Note. Webkit only emits the notification when the tool bar should be hidden. */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1006 toolBar = visible;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1007 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1008
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1009 void webView_mouseDidMoveOverElement_modifierFlags (int /*long*/ sender, int /*long*/ elementInformationID, int /*long*/ modifierFlags) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1010 if (elementInformationID is 0) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1011
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1012 NSString key = NSString.stringWith(WebElementLinkURLKey);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1013 NSDictionary elementInformation = new NSDictionary(elementInformationID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1014 id value = elementInformation.valueForKey(key);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1015 if (value is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1016 /* not currently over a link */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1017 if (lastHoveredLinkURL is null) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1018 lastHoveredLinkURL = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1019 StatusTextEvent statusText = new StatusTextEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1020 statusText.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1021 statusText.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1022 statusText.text = ""; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1023 for (int i = 0; i < statusTextListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1024 statusTextListeners[i].changed(statusText);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1025 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1026 return;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1027 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1028
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1029 NSString url = new NSURL(value.id).absoluteString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1030 int length = (int)/*64*/url.length();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1031 String urlString;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1032 if (length is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1033 urlString = ""; //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1034 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1035 urlString = url.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1036 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1037 if (urlString.equals(lastHoveredLinkURL)) return;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1038
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1039 lastHoveredLinkURL = urlString;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1040 StatusTextEvent statusText = new StatusTextEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1041 statusText.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1042 statusText.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1043 statusText.text = urlString;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1044 for (int i = 0; i < statusTextListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1045 statusTextListeners[i].changed(statusText);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1046 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1047 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1048
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1049 void webView_printFrameView (int /*long*/ sender, int /*long*/ frameViewID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1050 WebFrameView view = new WebFrameView(frameViewID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1051 bool viewPrint = view.documentViewShouldHandlePrint();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1052 if (viewPrint) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1053 view.printDocumentView();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1054 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1055 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1056 NSPrintInfo info = NSPrintInfo.sharedPrintInfo();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1057 NSPrintOperation operation = view.printOperationWithPrintInfo(info);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1058 if (operation !is null) operation.runOperation();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1059 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1060
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1061 /* PolicyDelegate */
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1062
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1063 void webView_decidePolicyForMIMEType_request_frame_decisionListener(int /*long*/ sender, int /*long*/ type, int /*long*/ request, int /*long*/ frame, int /*long*/ listenerID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1064 bool canShow = WebView.canShowMIMEType(new NSString(type));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1065 WebPolicyDecisionListener listener = new WebPolicyDecisionListener(listenerID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1066 if (canShow) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1067 listener.use();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1068 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1069 listener.download();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1070 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1071 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1072
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1073 void webView_decidePolicyForNavigationAction_request_frame_decisionListener(int /*long*/ sender, int /*long*/ actionInformation, int /*long*/ request, int /*long*/ frame, int /*long*/ listenerID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1074 NSURL url = new NSURLRequest(request).URL();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1075 WebPolicyDecisionListener listener = new WebPolicyDecisionListener(listenerID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1076 if (url is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1077 /* indicates that a URL with an invalid format was specified */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1078 listener.ignore();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1079 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1080 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1081 NSString s = url.absoluteString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1082 String url2 = s.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1083 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1084 * If the URI indicates that the page is being rendered from memory
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1085 * (via setText()) then set it to about:blank to be consistent with IE.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1086 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1087 if (url2.equals (URI_FROMMEMORY)) url2 = ABOUT_BLANK;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1088
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1089 LocationEvent newEvent = new LocationEvent(browser);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1090 newEvent.display = browser.getDisplay();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1091 newEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1092 newEvent.location = url2;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1093 newEvent.doit = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1094 if (locationListeners !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1095 changingLocation = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1096 for (int i = 0; i < locationListeners.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1097 locationListeners[i].changing(newEvent);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1098 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1099 changingLocation = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1100 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1101 if (newEvent.doit) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1102 listener.use();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1103 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1104 listener.ignore();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1105 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1106 if (html !is null && !browser.isDisposed()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1107 String html = this.html;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1108 this.html = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1109 _setText(html);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1110 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1111 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1112
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1113 void webView_decidePolicyForNewWindowAction_request_newFrameName_decisionListener(int /*long*/ sender, int /*long*/ actionInformation, int /*long*/ request, int /*long*/ frameName, int /*long*/ listenerID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1114 WebPolicyDecisionListener listener = new WebPolicyDecisionListener(listenerID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1115 listener.use();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1116 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1117
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1118 void webView_unableToImplementPolicyWithError_frame(int /*long*/ sender, int /*long*/ error, int /*long*/ frame) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1119 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1120
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1121 /* WebDownload */
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1122
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1123 void download_decideDestinationWithSuggestedFilename(int /*long*/ downloadId, int /*long*/ filename) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1124 NSString string = new NSString(filename);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1125 String name = string.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1126 FileDialog dialog = new FileDialog(browser.getShell(), DWT.SAVE);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1127 dialog.setText(DWT.getMessage ("DWT_FileDownload")); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1128 dialog.setFileName(name);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1129 String path = dialog.open();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1130 NSURLDownload download = new NSURLDownload(downloadId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1131 if (path is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1132 /* cancel pressed */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1133 download.cancel();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1134 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1135 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1136 download.setDestination(NSString.stringWith(path), true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1137 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1138
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1139 /* DOMEventListener */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1140
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1141 void handleEvent(int /*long*/ evtId) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1142 NSString string = new NSString(OS.objc_msgSend(evtId, OS.sel_type));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1143 String type = string.getString();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1144
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1145 if (DOMEVENT_KEYDOWN.equals(type) || DOMEVENT_KEYUP.equals(type)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1146 DOMKeyboardEvent event = new DOMKeyboardEvent(evtId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1147
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1148 bool ctrl = event.ctrlKey();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1149 bool shift = event.shiftKey();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1150 bool alt = event.altKey();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1151 bool meta = event.metaKey();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1152 int keyCode = event.keyCode();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1153 int charCode = event.charCode();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1154
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1155 Event keyEvent = new Event();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1156 keyEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1157 if (DOMEVENT_KEYDOWN.equals(type)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1158 keyEvent.type = DWT.KeyDown;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1159 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1160 keyEvent.type = DWT.KeyUp;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1161 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1162 keyEvent.keyCode = translateKey(keyCode);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1163 keyEvent.character = (char)charCode;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1164 keyEvent.stateMask = (alt ? DWT.ALT : 0) | (ctrl ? DWT.CTRL : 0) | (shift ? DWT.SHIFT : 0) | (meta ? DWT.COMMAND : 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1165 browser.notifyListeners(keyEvent.type, keyEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1166 if (!keyEvent.doit) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1167 event.preventDefault();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1168 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1169 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1170 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1171
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1172 if (DOMEVENT_MOUSEWHEEL.equals(type)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1173 DOMWheelEvent event = new DOMWheelEvent(evtId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1174 int clientX = event.clientX();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1175 int clientY = event.clientY();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1176 int delta = event.wheelDelta();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1177 bool ctrl = event.ctrlKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1178 bool shift = event.shiftKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1179 bool alt = event.altKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1180 bool meta = event.metaKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1181 Event mouseEvent = new Event();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1182 mouseEvent.type = DWT.MouseWheel;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1183 mouseEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1184 mouseEvent.x = clientX; mouseEvent.y = clientY;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1185 mouseEvent.count = delta / 120;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1186 mouseEvent.stateMask = (alt ? DWT.ALT : 0) | (ctrl ? DWT.CTRL : 0) | (shift ? DWT.SHIFT : 0) | (meta ? DWT.COMMAND : 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1187 browser.notifyListeners (mouseEvent.type, mouseEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1188 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1189 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1190
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1191 /* mouse event */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1192
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1193 DOMMouseEvent event = new DOMMouseEvent(evtId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1194
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1195 int clientX = event.clientX();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1196 int clientY = event.clientY();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1197 int detail = event.detail();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1198 int button = event.button();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1199 bool ctrl = event.ctrlKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1200 bool shift = event.shiftKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1201 bool alt = event.altKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1202 bool meta = event.metaKey();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1203
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1204 Event mouseEvent = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1205 mouseEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1206 mouseEvent.x = clientX; mouseEvent.y = clientY;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1207 mouseEvent.stateMask = (alt ? DWT.ALT : 0) | (ctrl ? DWT.CTRL : 0) | (shift ? DWT.SHIFT : 0) | (meta ? DWT.COMMAND : 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1208 if (DOMEVENT_MOUSEDOWN.equals (type)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1209 mouseEvent.type = DWT.MouseDown;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1210 mouseEvent.button = button + 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1211 mouseEvent.count = detail;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1212 } else if (DOMEVENT_MOUSEUP.equals (type)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1213 mouseEvent.type = DWT.MouseUp;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1214 mouseEvent.button = button + 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1215 mouseEvent.count = detail;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1216 switch (mouseEvent.button) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1217 case 1: mouseEvent.stateMask |= DWT.BUTTON1; break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1218 case 2: mouseEvent.stateMask |= DWT.BUTTON2; break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1219 case 3: mouseEvent.stateMask |= DWT.BUTTON3; break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1220 case 4: mouseEvent.stateMask |= DWT.BUTTON4; break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1221 case 5: mouseEvent.stateMask |= DWT.BUTTON5; break;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1222 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1223 } else if (DOMEVENT_MOUSEMOVE.equals (type)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1224 /*
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1225 * Bug in Safari. Spurious and redundant mousemove events are received in
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1226 * various contexts, including following every MouseUp. The workaround is
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1227 * to not fire MouseMove events whose x and y values match the last MouseMove
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1228 */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1229 if (mouseEvent.x is lastMouseMoveX && mouseEvent.y is lastMouseMoveY) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1230 mouseEvent.type = DWT.MouseMove;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1231 lastMouseMoveX = mouseEvent.x; lastMouseMoveY = mouseEvent.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1232 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1233
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1234 browser.notifyListeners (mouseEvent.type, mouseEvent);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1235 if (detail is 2 && DOMEVENT_MOUSEDOWN.equals (type)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1236 mouseEvent = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1237 mouseEvent.widget = browser;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1238 mouseEvent.x = clientX; mouseEvent.y = clientY;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1239 mouseEvent.stateMask = (alt ? DWT.ALT : 0) | (ctrl ? DWT.CTRL : 0) | (shift ? DWT.SHIFT : 0) | (meta ? DWT.COMMAND : 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1240 mouseEvent.type = DWT.MouseDoubleClick;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1241 mouseEvent.button = button + 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1242 mouseEvent.count = detail;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1243 browser.notifyListeners (mouseEvent.type, mouseEvent);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1244 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1245 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 35
diff changeset
1246 }