annotate dwt/browser/Safari.d @ 126:38807a925e24

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