diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT WebKit/win32/org/eclipse/swt/browser/WebUIDelegate.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT WebKit/win32/org/eclipse/swt/browser/WebUIDelegate.java | 735 |
1 files changed, 0 insertions, 735 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT WebKit/win32/org/eclipse/swt/browser/WebUIDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT WebKit/win32/org/eclipse/swt/browser/WebUIDelegate.java deleted file mode 100644 index eb9892cf19..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT WebKit/win32/org/eclipse/swt/browser/WebUIDelegate.java +++ /dev/null @@ -1,735 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010, 2017 IBM Corporation and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.browser; - - -import org.eclipse.swt.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.*; -import org.eclipse.swt.internal.ole.win32.*; -import org.eclipse.swt.internal.webkit.*; -import org.eclipse.swt.internal.win32.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; - -class WebUIDelegate { - COMObject iWebUIDelegate; - int refCount = 0; - - String lastHoveredLinkURL; - Browser browser; - Point size; - Point location; - boolean menuBar = true, toolBar = true, statusBar = true; - boolean prompt = true; - -WebUIDelegate (Browser browser) { - createCOMInterfaces (); - this.browser = browser; -} - -int AddRef () { - refCount++; - return refCount; -} - -int canTakeFocus (long /*int*/ sender, int forward, long /*int*/ result) { - OS.MoveMemory (result, new int[] {1}, 4); /* BOOL */ - return COM.S_OK; -} - -int contextMenuItemsForElement (long /*int*/ sender, long /*int*/ element, long /*int*/ defaultItemsHMenu, long /*int*/ resultHMenu) { - Point pt = browser.getDisplay ().getCursorLocation (); - Event event = new Event (); - event.x = pt.x; - event.y = pt.y; - browser.notifyListeners (SWT.MenuDetect, event); - if (event.doit) { - Menu menu = browser.getMenu (); - if (menu != null && !menu.isDisposed ()) { - if (event.x != pt.x || event.y != pt.y) { - menu.setLocation (event.x, event.y); - } - menu.setVisible (true); - } else { - OS.MoveMemory (resultHMenu, new long /*int*/[] {defaultItemsHMenu}, C.PTR_SIZEOF); - return COM.S_OK; - } - } - OS.MoveMemory (resultHMenu, new long /*int*/[] {0}, C.PTR_SIZEOF); - return COM.S_OK; -} - -void createCOMInterfaces () { - iWebUIDelegate = new COMObject (new int[] {2, 0, 0, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 3, 4, 4, 3, 3, 3, 3, 5, 3, 1, 3, 2, 2, 2, 2, 3, 2, 3, 1, 1, 0, 0, 1, 1, 2, 2, 2, 2, 3, 5, 2, 2, 3, 1, 2, 2, 4, 10, 3}) { - @Override - public long /*int*/ method0 (long /*int*/[] args) {return QueryInterface (args[0], args[1]);} - @Override - public long /*int*/ method1 (long /*int*/[] args) {return AddRef ();} - @Override - public long /*int*/ method2 (long /*int*/[] args) {return Release ();} - @Override - public long /*int*/ method3 (long /*int*/[] args) {return createWebViewWithRequest (args[0], args[1], args[2]);} - @Override - public long /*int*/ method4 (long /*int*/[] args) {return webViewShow (args[0]);} - @Override - public long /*int*/ method5 (long /*int*/[] args) {return webViewClose (args[0]);} - @Override - public long /*int*/ method6 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method7 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method8 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method9 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method10 (long /*int*/[] args) {return setStatusText (args[0], args[1]);} - @Override - public long /*int*/ method11 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method12 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method13 (long /*int*/[] args) {return setToolbarsVisible (args[0], (int)/*64*/args[1]);} - @Override - public long /*int*/ method14 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method15 (long /*int*/[] args) {return setStatusBarVisible (args[0], (int)/*64*/args[1]);} - @Override - public long /*int*/ method16 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method17 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method18 (long /*int*/[] args) {return setFrame (args[0], args[1]);} - @Override - public long /*int*/ method19 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method20 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method21 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method22 (long /*int*/[] args) {return runJavaScriptAlertPanelWithMessage (args[0], args[1]);} - @Override - public long /*int*/ method23 (long /*int*/[] args) {return runJavaScriptConfirmPanelWithMessage (args[0], args[1], args[2]);} - @Override - public long /*int*/ method24 (long /*int*/[] args) {return runJavaScriptTextInputPanelWithPrompt (args[0], args[1], args[2], args[3]);} - @Override - public long /*int*/ method25 (long /*int*/[] args) {return runBeforeUnloadConfirmPanelWithMessage (args[0], args[1], args[2], args[3]);} - @Override - public long /*int*/ method26 (long /*int*/[] args) {return runOpenPanelForFileButtonWithResultListener (args[0], args[1]);} - @Override - public long /*int*/ method27 (long /*int*/[] args) {return mouseDidMoveOverElement (args[0], args[1], (int)/*64*/args[2]);} - @Override - public long /*int*/ method28 (long /*int*/[] args) {return contextMenuItemsForElement (args[0], args[1], args[2], args[3]);} - @Override - public long /*int*/ method29 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method30 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method31 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method32 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method33 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method34 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method35 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method36 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method37 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method38 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method39 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method40 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method41 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method42 (long /*int*/[] args) {return canTakeFocus (args[0], (int)/*64*/args[1], args[2]);} - @Override - public long /*int*/ method43 (long /*int*/[] args) {return takeFocus (args[0], (int)/*64*/args[1]);} - @Override - public long /*int*/ method44 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method45 (long /*int*/[] args) {return COM.S_OK;} - @Override - public long /*int*/ method46 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method47 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method48 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method49 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method50 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method51 (long /*int*/[] args) {return printFrame (args[0], args[1]);} - @Override - public long /*int*/ method52 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method53 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method54 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method55 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method56 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method57 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method58 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method59 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method60 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method61 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method62 (long /*int*/[] args) {return setMenuBarVisible (args[0], (int)/*64*/args[1]);} - @Override - public long /*int*/ method63 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method64 (long /*int*/[] args) {return COM.E_NOTIMPL;} - @Override - public long /*int*/ method65 (long /*int*/[] args) {return COM.E_NOTIMPL;} - }; -} - -int createWebViewWithRequest (long /*int*/ sender, long /*int*/ request, long /*int*/ webView) { - WindowEvent newEvent = new WindowEvent (browser); - newEvent.display = browser.getDisplay (); - newEvent.widget = browser; - newEvent.required = true; - OpenWindowListener[] openWindowListeners = browser.webBrowser.openWindowListeners; - for (int i = 0; i < openWindowListeners.length; i++) { - openWindowListeners[i].open (newEvent); - } - IWebView iwebview = null; - Browser browser = null; - if (newEvent.browser != null && newEvent.browser.webBrowser instanceof WebKit) { - browser = newEvent.browser; - } - if (browser != null && !browser.isDisposed ()) { - iwebview = ((WebKit)browser.webBrowser).webView; - OS.MoveMemory (webView, new long /*int*/[] {iwebview.getAddress ()}, C.PTR_SIZEOF); - if (request != 0) { - IWebURLRequest req = new IWebURLRequest (request); - long /*int*/[] result = new long /*int*/[1]; - int hr = req.URL (result); - if (hr != COM.S_OK || result[0] == 0) { - return COM.S_OK; - } - String sUrl = WebKit.extractBSTR (result[0]); - COM.SysFreeString (result[0]); - if (sUrl.length () != 0) { - result[0] = 0; - hr = iwebview.mainFrame (result); - if (hr != COM.S_OK || result[0] == 0) { - return COM.S_OK; - } - IWebFrame mainFrame = new IWebFrame (result[0]); - mainFrame.loadRequest (req.getAddress ()); - mainFrame.Release (); - } - } - return COM.S_OK; - } - return COM.E_NOTIMPL; -} - -protected void disposeCOMInterfaces () { - if (iWebUIDelegate != null) { - iWebUIDelegate.dispose (); - iWebUIDelegate = null; - } -} - -long /*int*/ getAddress () { - return iWebUIDelegate.getAddress (); -} - -int mouseDidMoveOverElement (long /*int*/ sender, long /*int*/ elementInformation, int modifierFlags) { - if (elementInformation == 0) return COM.S_OK; - - IPropertyBag info = new IPropertyBag (elementInformation); - long /*int*/ key = WebKit.createBSTR ("WebElementLinkURLKey"); //$NON-NLS-N$ - long /*int*/ hHeap = OS.GetProcessHeap (); - long /*int*/ resultPtr = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, VARIANT.sizeof); - int hr = info.Read (key, resultPtr, null); - if (hr != COM.S_OK || resultPtr == 0) { - return COM.S_OK; - } - String value = null; - VARIANT v = new VARIANT (); - COM.MoveMemory (v, resultPtr, VARIANT.sizeof); - if (v.vt == COM.VT_BSTR) value = WebKit.extractBSTR (v.lVal); - OS.HeapFree (hHeap, 0, resultPtr); - StatusTextListener[] statusTextListeners = browser.webBrowser.statusTextListeners; - if (value == null || value.length () == 0) { - /* not currently over a link */ - if (lastHoveredLinkURL == null) return COM.S_OK; - lastHoveredLinkURL = null; - StatusTextEvent statusText = new StatusTextEvent (browser); - statusText.display = browser.getDisplay (); - statusText.widget = browser; - statusText.text = ""; //$NON-NLS-1$ - for (int i = 0; i < statusTextListeners.length; i++) { - statusTextListeners[i].changed (statusText); - } - return COM.S_OK; - } - if (value.equals (lastHoveredLinkURL)) return COM.S_OK; - lastHoveredLinkURL = value; - StatusTextEvent statusText = new StatusTextEvent (browser); - statusText.display = browser.getDisplay (); - statusText.widget = browser; - statusText.text = value; - for (int i = 0; i < statusTextListeners.length; i++) { - statusTextListeners[i].changed (statusText); - } - return COM.S_OK; -} - -int printFrame (long /*int*/ webView, long /*int*/ frame) { - IWebFrame iwebFrame = new IWebFrame (frame); - PRINTDLG pd = new PRINTDLG (); - pd.lStructSize = PRINTDLG.sizeof; - pd.Flags = OS.PD_RETURNDC; - Display display = browser.getDisplay (); - display.sendPreExternalEventDispatchEvent (); - boolean success = OS.PrintDlg (pd); - display.sendPostExternalEventDispatchEvent (); - if (!success) return COM.S_OK; - long /*int*/ printDC = pd.hDC; - - long /*int*/[] result = new long /*int*/[1]; - int hr = iwebFrame.QueryInterface (WebKit_win32.IID_IWebFramePrivate, result); - if (hr != COM.S_OK || result[0] == 0) { - return COM.S_OK; - } - IWebFramePrivate privateFrame = new IWebFramePrivate (result[0]); - privateFrame.setInPrintingMode (1, printDC); - int[] count = new int[1]; - hr = privateFrame.getPrintedPageCount (printDC, count); - if (hr != COM.S_OK || count[0] == 0) { - privateFrame.Release (); - return COM.S_OK; - } - int pageCount = count[0]; - String jobName = null; - result[0] = 0; - hr = iwebFrame.dataSource (result); - if (hr == COM.S_OK && result[0] != 0) { - IWebDataSource dataSource = new IWebDataSource (result[0]); - result[0] = 0; - hr = dataSource.pageTitle (result); - dataSource.Release (); - if (hr == COM.S_OK && result[0] != 0) { - jobName = WebKit.extractBSTR (result[0]); - COM.SysFreeString (result[0]); - } - } - DOCINFO di = new DOCINFO (); - di.cbSize = DOCINFO.sizeof; - long /*int*/ hHeap = OS.GetProcessHeap (); - long /*int*/ lpszDocName = 0; - if (jobName != null && jobName.length () != 0) { - /* Use the character encoding for the default locale */ - TCHAR buffer = new TCHAR (0, jobName, true); - int byteCount = buffer.length () * TCHAR.sizeof; - lpszDocName = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount); - OS.MoveMemory (lpszDocName, buffer, byteCount); - di.lpszDocName = lpszDocName; - } - int rc = OS.StartDoc (printDC, di); - if (lpszDocName != 0) OS.HeapFree (hHeap, 0, lpszDocName); - if (rc >= 0) { - for (int i = 0; i < pageCount; i++) { - OS.StartPage (printDC); - privateFrame.spoolPages (printDC, i, i, null); - OS.EndPage (printDC); - } - privateFrame.setInPrintingMode (0, printDC); - OS.EndDoc (printDC); - } - privateFrame.Release (); - return COM.S_OK; -} - -int QueryInterface (long /*int*/ riid, long /*int*/ ppvObject) { - if (riid == 0 || ppvObject == 0) return COM.E_INVALIDARG; - GUID guid = new GUID (); - COM.MoveMemory (guid, riid, GUID.sizeof); - - if (COM.IsEqualGUID (guid, COM.IIDIUnknown)) { - OS.MoveMemory (ppvObject, new long /*int*/[] {iWebUIDelegate.getAddress ()}, C.PTR_SIZEOF); - new IUnknown (iWebUIDelegate.getAddress ()).AddRef (); - return COM.S_OK; - } - if (COM.IsEqualGUID (guid, WebKit_win32.IID_IWebUIDelegate)) { - OS.MoveMemory (ppvObject, new long /*int*/[] {iWebUIDelegate.getAddress ()}, C.PTR_SIZEOF); - new IUnknown (iWebUIDelegate.getAddress ()).AddRef (); - return COM.S_OK; - } - - OS.MoveMemory (ppvObject, new long /*int*/[] {0}, C.PTR_SIZEOF); - return COM.E_NOINTERFACE; -} - -int Release () { - refCount--; - if (refCount == 0) { - disposeCOMInterfaces (); - } - return refCount; -} - -int runBeforeUnloadConfirmPanelWithMessage (long /*int*/ sender, long /*int*/ message, long /*int*/ initiatedByFrame, long /*int*/ result) { - if (!prompt) return COM.S_OK; - - Shell parent = browser.getShell (); - String string = WebKit.extractBSTR (message); - StringBuffer text = new StringBuffer (Compatibility.getMessage ("SWT_OnBeforeUnload_Message1")); //$NON-NLS-1$ - text.append ("\n\n"); //$NON-NLS-1$ - text.append (string); - text.append ("\n\n"); //$NON-NLS-1$ - text.append (Compatibility.getMessage ("SWT_OnBeforeUnload_Message2")); //$NON-NLS-1$ - MessageBox box = new MessageBox (parent, SWT.OK | SWT.CANCEL | SWT.ICON_QUESTION); - box.setMessage (text.toString ()); - int[] response = new int[1]; - response[0] = box.open () == SWT.OK ? 1 : 0; - OS.MoveMemory (result, response, 4); /* BOOL */ - return COM.S_OK; -} - -int runJavaScriptAlertPanelWithMessage (long /*int*/ sender, long /*int*/ message) { - String messageString = WebKit.extractBSTR (message); - showAlertMessage ("Javascript", messageString); //$NON-NLS-1$ - return COM.S_OK; -} - -int runJavaScriptConfirmPanelWithMessage (long /*int*/ sender, long /*int*/ message, long /*int*/ result) { - String messageString = WebKit.extractBSTR (message); - int[] response = new int[1]; - response[0] = showConfirmPanel ("Javascript", messageString) == SWT.OK ? 1 : 0; //$NON-NLS-1$ - OS.MoveMemory (result, response, 4); /* BOOL */ - return COM.S_OK; -} - -int runJavaScriptTextInputPanelWithPrompt (long /*int*/ sender, long /*int*/ message, long /*int*/ defaultText, long /*int*/ result) { - String messageString = WebKit.extractBSTR (message); - String defaultTextString = WebKit.extractBSTR (defaultText); - String resultString = showTextPrompter ("Javascript", messageString, defaultTextString); //$NON-NLS-1$ - long /*int*/[] response = new long /*int*/[1]; - if (resultString != null) { - response[0] = WebKit.createBSTR (resultString); - } - OS.MoveMemory (result, response, C.PTR_SIZEOF); - return COM.S_OK; -} - -int runOpenPanelForFileButtonWithResultListener (long /*int*/ sender, long /*int*/ resultListener) { - Shell parent = browser.getShell (); - FileDialog dialog = new FileDialog (parent, SWT.NONE); - String result = dialog.open (); - IWebOpenPanelResultListener listener = new IWebOpenPanelResultListener (resultListener); - if (result == null) { - listener.cancel (); - } else { - listener.chooseFilename (WebKit.createBSTR (result)); - } - return COM.S_OK; -} - -int setFrame (long /*int*/ sender, long /*int*/ frame) { - RECT rect = new RECT (); - COM.MoveMemory (rect, frame, RECT.sizeof); - /* convert to SWT system coordinates */ - location = DPIUtil.autoScaleUp(browser.getDisplay ().map (browser, null, DPIUtil.autoScaleDown(new Point(rect.left, rect.top)))); // To Pixels - int x = rect.right - rect.left; - int y = rect.bottom - rect.top; - if (y < 0 || x < 0 || (x == 0 && y == 0)) return COM.S_OK; - size = new Point (x, y); - return COM.S_OK; -} - -int setMenuBarVisible (long /*int*/ sender, int visible) { - /* Note. Webkit only emits the notification when the status bar should be hidden. */ - menuBar = visible == 1; - return COM.S_OK; -} - -int setStatusBarVisible (long /*int*/ sender, int visible) { - /* Note. Webkit only emits the notification when the status bar should be hidden. */ - statusBar = visible == 1; - return COM.S_OK; -} - -int setStatusText (long /*int*/ sender, long /*int*/ text) { - String statusText = WebKit.extractBSTR (text); - if (statusText.length () == 0) return COM.S_OK; - StatusTextEvent statusTextEvent = new StatusTextEvent (browser); - statusTextEvent.display = browser.getDisplay (); - statusTextEvent.widget = browser; - statusTextEvent.text = statusText; - StatusTextListener[] statusTextListeners = browser.webBrowser.statusTextListeners; - for (int i = 0; i < statusTextListeners.length; i++) { - statusTextListeners[i].changed (statusTextEvent); - } - return COM.S_OK; -} - -int setToolbarsVisible (long /*int*/ sender, int visible) { - /* Note. Webkit only emits the notification when the status bar should be hidden. */ - toolBar = visible == 1; - return COM.S_OK; -} - -void showAlertMessage (String title, String message) { - Shell parent = browser.getShell (); - final Shell dialog = new Shell (parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM); - GridLayout layout = new GridLayout (2, false); - layout.horizontalSpacing = 10; - layout.verticalSpacing = 20; - layout.marginWidth = layout.marginHeight = 10; - dialog.setLayout (layout); - dialog.setText (title); - - Label label = new Label (dialog, SWT.NONE); - Image image = dialog.getDisplay ().getSystemImage (SWT.ICON_WARNING); - label.setImage (image); - - label = new Label (dialog, SWT.WRAP); - label.setText (message); - Monitor monitor = parent.getMonitor (); - int maxWidth = monitor.getBounds().width * 2 / 3; - int width = label.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - GridData data = new GridData (SWT.FILL, SWT.CENTER, true, false); - data.widthHint = Math.min (width, maxWidth); - label.setLayoutData (data); - - Button ok = new Button (dialog, SWT.PUSH); - ok.setText (SWT.getMessage ("SWT_OK")); //$NON-NLS-1$ - width = ok.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - GridData layoutData = new GridData (); - layoutData.horizontalAlignment = SWT.CENTER; - layoutData.verticalAlignment = SWT.CENTER; - layoutData.horizontalSpan = 2; - layoutData.widthHint = Math.max (width, 75); - ok.setLayoutData (layoutData); - - ok.addSelectionListener (new SelectionAdapter () { - @Override - public void widgetSelected (SelectionEvent e) { - dialog.dispose (); - } - }); - - dialog.setDefaultButton (ok); - dialog.pack (); - Rectangle parentSize = parent.getBounds (); - Rectangle dialogSize = dialog.getBounds (); - int x = parent.getLocation ().x + (parentSize.width - dialogSize.width) / 2; - int y = parent.getLocation ().y + (parentSize.height - dialogSize.height) / 2; - dialog.setLocation (x, y); - dialog.open (); - Display display = browser.getDisplay (); - while (!dialog.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } -} - -int showConfirmPanel (String title, String message) { - Shell parent = browser.getShell (); - final Shell dialog = new Shell (parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM); - GridLayout layout = new GridLayout (2, false); - layout.horizontalSpacing = 10; - layout.verticalSpacing = 20; - layout.marginWidth = layout.marginHeight = 10; - dialog.setLayout (layout); - dialog.setText (title); - - Label label = new Label (dialog, SWT.NONE); - Image image = dialog.getDisplay ().getSystemImage (SWT.ICON_QUESTION); - label.setImage (image); - label.setLayoutData (new GridData ()); - - label = new Label (dialog, SWT.WRAP); - label.setText (message); - Monitor monitor = parent.getMonitor (); - int maxWidth = monitor.getBounds ().width * 2 / 3; - int width = label.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - GridData data = new GridData (SWT.FILL, SWT.CENTER, true, false); - data.widthHint = Math.min (width, maxWidth); - label.setLayoutData (data); - - Composite buttons = new Composite (dialog, SWT.NONE); - data = new GridData (SWT.CENTER, SWT.CENTER, true, true, 2, 1); - buttons.setLayoutData (data); - buttons.setLayout (new GridLayout (2, true)); - - Button ok = new Button (buttons, SWT.PUSH); - ok.setText (SWT.getMessage ("SWT_OK")); //$NON-NLS-1$ - GridData layoutData = new GridData (); - layoutData.horizontalAlignment = SWT.CENTER; - layoutData.verticalAlignment = SWT.CENTER; - ok.setLayoutData (layoutData); - - Button cancel = new Button (buttons, SWT.PUSH); - cancel.setText (SWT.getMessage ("SWT_Cancel")); //$NON-NLS-1$ - cancel.setLayoutData (layoutData); - width = cancel.computeSize (SWT.DEFAULT, SWT.DEFAULT).x; - layoutData.widthHint = Math.max (width, 75); - - final int[] result = new int[1]; - ok.addSelectionListener (new SelectionAdapter () { - @Override - public void widgetSelected (SelectionEvent e) { - result[0] = SWT.OK; - dialog.dispose (); - } - }); - cancel.addSelectionListener (new SelectionAdapter () { - @Override - public void widgetSelected (SelectionEvent e) { - result[0] = SWT.CANCEL; - dialog.dispose (); - } - }); - - dialog.setDefaultButton (ok); - dialog.pack (); - Rectangle parentSize = parent.getBounds (); - Rectangle dialogSize = dialog.getBounds (); - int x = parent.getLocation ().x + (parentSize.width - dialogSize.width) / 2; - int y = parent.getLocation ().y + (parentSize.height - dialogSize.height) / 2; - dialog.setLocation (x, y); - dialog.open (); - Display display = browser.getDisplay (); - while (!dialog.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - return result[0]; -} - -String showTextPrompter (String title, String message, String defaultText) { - Shell parent = browser.getShell (); - final Shell dialog = new Shell (parent, SWT.APPLICATION_MODAL | SWT.DIALOG_TRIM); - dialog.setLayout (new GridLayout ()); - dialog.setText (title); - - Label label = new Label (dialog, SWT.NONE); - label.setLayoutData (new GridData (GridData.FILL_HORIZONTAL)); - label.setText (message); - - final Text textBox = new Text (dialog, SWT.SINGLE | SWT.BORDER); - GridData data = new GridData (GridData.FILL_HORIZONTAL); - data.widthHint = 300; - textBox.setLayoutData (data); - textBox.setText (defaultText); - - Composite buttons = new Composite (dialog, SWT.NONE); - buttons.setLayout (new GridLayout (2, true)); - buttons.setLayoutData (new GridData (GridData.HORIZONTAL_ALIGN_CENTER)); - Button ok = new Button (buttons, SWT.PUSH); - ok.setText (SWT.getMessage ("SWT_OK")); //$NON-NLS-1$ - ok.setLayoutData (new GridData (GridData.FILL_HORIZONTAL)); - - final String[] result = new String[1]; - ok.addSelectionListener (new SelectionAdapter () { - @Override - public void widgetSelected (SelectionEvent e) { - result[0] = textBox.getText (); - dialog.dispose (); - } - }); - Button cancel = new Button (buttons, SWT.PUSH); - cancel.setText (SWT.getMessage ("SWT_Cancel")); //$NON-NLS-1$ - cancel.setLayoutData (new GridData (GridData.FILL_HORIZONTAL)); - cancel.addSelectionListener (new SelectionAdapter () { - @Override - public void widgetSelected (SelectionEvent e) { - dialog.dispose (); - } - }); - - dialog.setDefaultButton (ok); - dialog.pack (); - Rectangle parentSize = parent.getBounds (); - Rectangle dialogSize = dialog.getBounds (); - int x = parent.getLocation ().x + (parentSize.width - dialogSize.width) / 2; - int y = parent.getLocation ().y + (parentSize.height - dialogSize.height) / 2; - dialog.setLocation (x, y); - dialog.open (); - Display display = browser.getDisplay (); - while (!dialog.isDisposed ()) { - if (!display.readAndDispatch ()) display.sleep (); - } - return result[0]; -} - -int takeFocus (long /*int*/ sender, int forward) { - int traveralCode = forward == 0 ? SWT.TRAVERSE_TAB_PREVIOUS : SWT.TRAVERSE_TAB_NEXT; - ((WebKit)browser.webBrowser).traverseOut = true; - browser.traverse (traveralCode); - return COM.S_OK; -} - -int webViewClose (long /*int*/ sender) { - WindowEvent newEvent = new WindowEvent (browser); - newEvent.display = browser.getDisplay (); - newEvent.widget = browser; - CloseWindowListener[] closeWindowListeners = browser.webBrowser.closeWindowListeners; - for (int i = 0; i < closeWindowListeners.length; i++) { - closeWindowListeners[i].close (newEvent); - } - browser.dispose (); - return COM.S_OK; -} - -int webViewFrame (long /*int*/ sender, long /*int*/ frame) { - RECT rect = new RECT (); - OS.MoveMemory (frame, rect, RECT.sizeof); - return COM.S_OK; -} - -int webViewShow (long /*int*/ sender) { - WindowEvent newEvent = new WindowEvent (browser); - newEvent.display = browser.getDisplay (); - newEvent.widget = browser; - if (location != null) newEvent.location = location; - if (size != null) newEvent.size = size; - /* - * Feature in WebKit. WebKit's tool bar contains - * the address bar. The address bar is displayed - * if the tool bar is displayed. There is no separate - * notification for the address bar. - */ - newEvent.addressBar = toolBar; - newEvent.menuBar = menuBar; - newEvent.statusBar = statusBar; - newEvent.toolBar = toolBar; - VisibilityWindowListener[] visibilityWindowListeners = browser.webBrowser.visibilityWindowListeners; - for (int i = 0; i < visibilityWindowListeners.length; i++) { - visibilityWindowListeners[i].show (newEvent); - } - location = null; - size = null; - return COM.S_OK; -} - -} |