comparison dwt/browser/WindowCreator2.d @ 346:2e591eb01162

Browser Package now compiles (phase 2 complete)
author John Reimer <terminal.node@gmail.com>
date Wed, 29 Oct 2008 20:06:08 -0700
parents 3f4a5c7d138f
children 9a4d7706df52
comparison
equal deleted inserted replaced
345:5abc6f7f7a95 346:2e591eb01162
10 * Port to the D programming language: 10 * Port to the D programming language:
11 * John Reimer <terminal.node@gmail.com> 11 * John Reimer <terminal.node@gmail.com>
12 *******************************************************************************/ 12 *******************************************************************************/
13 module dwt.browser.WindowCreator2; 13 module dwt.browser.WindowCreator2;
14 14
15 //import dwt.dwthelper.utils; 15 import dwt.dwthelper.utils;
16 16
17 import dwt.DWT; 17 import dwt.DWT;
18 import dwt.graphics.Point; 18 import dwt.graphics.Point;
19 //import dwt.internal.C; 19
20 import dwt.internal.Platform; 20 import dwt.internal.Platform;
21 import dwt.internal.mozilla.Common; 21 import dwt.internal.mozilla.Common;
22 22
23 import XPCOM = dwt.internal.mozilla.XPCOM; 23 import XPCOM = dwt.internal.mozilla.XPCOM;
24 24
25 //import dwt.internal.mozilla.XPCOMObject;
26 import dwt.internal.mozilla.nsIBaseWindow; 25 import dwt.internal.mozilla.nsIBaseWindow;
27 import dwt.internal.mozilla.nsID; 26 import dwt.internal.mozilla.nsID;
28 import dwt.internal.mozilla.nsISupports; 27 import dwt.internal.mozilla.nsISupports;
29 import dwt.internal.mozilla.nsIURI; 28 import dwt.internal.mozilla.nsIURI;
30 import dwt.internal.mozilla.nsIWebBrowser; 29 import dwt.internal.mozilla.nsIWebBrowser;
31 import dwt.internal.mozilla.nsIWebBrowserChrome; 30 import dwt.internal.mozilla.nsIWebBrowserChrome;
32 import dwt.internal.mozilla.nsIWindowCreator; 31 import dwt.internal.mozilla.nsIWindowCreator;
33 import dwt.internal.mozilla.nsIWindowCreator2; 32 import dwt.internal.mozilla.nsIWindowCreator2;
33 import dwt.internal.mozilla.nsStringAPI;
34 import dwt.internal.mozilla.nsEmbedString;
35
34 import dwt.layout.FillLayout; 36 import dwt.layout.FillLayout;
35 import dwt.widgets.Shell; 37 import dwt.widgets.Shell;
36 38
37 import dwt.browser.Browser; 39 import dwt.browser.Browser;
38 import dwt.browser.Mozilla; 40 import dwt.browser.Mozilla;
41 import dwt.browser.VisibilityWindowListener;
42 import dwt.browser.CloseWindowListener;
43 import dwt.browser.WindowEvent;
39 44
40 class WindowCreator2 : nsIWindowCreator2 { 45 class WindowCreator2 : nsIWindowCreator2 {
41 // XPCOMObject supports; 46 // XPCOMObject supports;
42 // XPCOMObject windowCreator; 47 // XPCOMObject windowCreator;
43 // XPCOMObject windowCreator2; 48 // XPCOMObject windowCreator2;
103 if (rc !is XPCOM.NS_OK) Mozilla.error (rc); 108 if (rc !is XPCOM.NS_OK) Mozilla.error (rc);
104 if (webBrowser is null) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE); 109 if (webBrowser is null) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
105 110
106 //nsIWebBrowser webBrowser = new nsIWebBrowser (aWebBrowser[0]); 111 //nsIWebBrowser webBrowser = new nsIWebBrowser (aWebBrowser[0]);
107 nsIBaseWindow baseWindow; 112 nsIBaseWindow baseWindow;
108 rc = webBrowser.QueryInterface (nsIBaseWindow.IID, cast(void**)&baseWindow); 113 rc = webBrowser.QueryInterface (&nsIBaseWindow.IID, cast(void**)&baseWindow);
109 if (rc !is XPCOM.NS_OK) Mozilla.error (rc); 114 if (rc !is XPCOM.NS_OK) Mozilla.error (rc);
110 if (baseWindow is null) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE); 115 if (baseWindow is null) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
111 webBrowser.Release (); 116 webBrowser.Release ();
112 117
113 //nsIBaseWindow baseWindow = new nsIBaseWindow (result[0]); 118 //nsIBaseWindow baseWindow = new nsIBaseWindow (result[0]);
149 shell.open (); 154 shell.open ();
150 } 155 }
151 }); 156 });
152 browser.addCloseWindowListener (new class(shell) CloseWindowListener { 157 browser.addCloseWindowListener (new class(shell) CloseWindowListener {
153 Shell sh; 158 Shell sh;
154 this (Shell shell) { this.shell = shell; } 159 this (Shell shell) { this.sh = shell; }
155 public void close (WindowEvent event) { 160 public void close (WindowEvent event) {
156 sh.close (); 161 sh.close ();
157 } 162 }
158 }); 163 });
159 if (uri !is null) { 164 if (uri !is null) {
166 // byte[] dest = new byte[length]; 171 // byte[] dest = new byte[length];
167 //XPCOM.memmove (dest, buffer, length); 172 //XPCOM.memmove (dest, buffer, length);
168 browser.setUrl (aSpec.toString); 173 browser.setUrl (aSpec.toString);
169 } 174 }
170 } 175 }
171 XPCOM.nsEmbedCString_delete (aSpec); 176 //XPCOM.nsEmbedCString_delete (aSpec);
172 } 177 }
173 } else { 178 } else {
174 WindowEvent event = new WindowEvent (src); 179 WindowEvent event = new WindowEvent (src);
175 event.display = src.getDisplay (); 180 event.display = src.getDisplay ();
176 event.widget = src; 181 event.widget = src;
197 // in the Java SWT version. Watch this code section carefully for errors/bugs. -JJR 202 // in the Java SWT version. Watch this code section carefully for errors/bugs. -JJR
198 Mozilla mozilla = cast(Mozilla)browser.webBrowser; 203 Mozilla mozilla = cast(Mozilla)browser.webBrowser;
199 mozilla.isChild = true; 204 mozilla.isChild = true;
200 // And since Mozilla class implements the nsIWebBrowserChrome interface.... 205 // And since Mozilla class implements the nsIWebBrowserChrome interface....
201 nsIWebBrowserChrome chrome; 206 nsIWebBrowserChrome chrome;
202 nsresult rc = mozilla.QueryInterface( nsIWebBrowserChrome.IID, cast(void**)&chrome); 207 nsresult rc = mozilla.QueryInterface( &nsIWebBrowserChrome.IID, cast(void**)&chrome);
203 if (rc !is XPCOM.NS_OK) Mozilla.error (rc); 208 if (rc !is XPCOM.NS_OK) Mozilla.error (rc);
204 //nsIWebBrowserChrome webBrowserChrome = new nsIWebBrowserChrome (chromePtr); 209 //nsIWebBrowserChrome webBrowserChrome = new nsIWebBrowserChrome (chromePtr);
205 chrome.SetChromeFlags (chromeFlags); 210 chrome.SetChromeFlags (chromeFlags);
206 //chrome.AddRef (); 211 //chrome.AddRef ();
207 //XPCOM.memmove (_retval, new int /*long*/[] {chromePtr}, C.PTR_SIZEOF); 212 //XPCOM.memmove (_retval, new int /*long*/[] {chromePtr}, C.PTR_SIZEOF);