javauis/eswt_qt/org.eclipse.swt/Eclipse SWT Browser/qt/org/eclipse/swt/browser/QtWebKit.java
changeset 35 85266cc22c7f
parent 21 2a9601315dfc
child 47 f40128debb5d
equal deleted inserted replaced
26:dc7c549001d5 35:85266cc22c7f
     1 /*******************************************************************************
     1 /*******************************************************************************
     2  * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
     2  * Copyright (c) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies).
     3  * All rights reserved. This program and the accompanying materials 
     3  * All rights reserved. This program and the accompanying materials 
     4  * are made available under the terms of the Eclipse Public License v1.0
     4  * are made available under the terms of the Eclipse Public License v1.0
     5  * which accompanies this distribution, and is available at
     5  * which accompanies this distribution, and is available at
     6  * http://www.eclipse.org/legal/epl-v10.html
     6  * http://www.eclipse.org/legal/epl-v10.html
     7  * 
     7  * 
    10  *******************************************************************************/
    10  *******************************************************************************/
    11 package org.eclipse.swt.browser;
    11 package org.eclipse.swt.browser;
    12 
    12 
    13 import org.eclipse.swt.SWT;
    13 import org.eclipse.swt.SWT;
    14 import org.eclipse.swt.internal.qt.OS;
    14 import org.eclipse.swt.internal.qt.OS;
       
    15 import org.eclipse.swt.internal.qt.webkit.OS_webkit;
    15 import org.eclipse.swt.widgets.Composite;
    16 import org.eclipse.swt.widgets.Composite;
    16 import org.eclipse.swt.widgets.Display;
    17 import org.eclipse.swt.widgets.Display;
    17 import org.eclipse.swt.widgets.Event;
    18 import org.eclipse.swt.widgets.Event;
    18 import org.eclipse.swt.widgets.Internal_PackageSupport;
    19 import org.eclipse.swt.widgets.Internal_PackageSupport;
    19 import org.eclipse.swt.widgets.Listener;
    20 import org.eclipse.swt.widgets.Listener;
    36 public void create(Composite parent, int style) {
    37 public void create(Composite parent, int style) {
    37     
    38     
    38     // At this point, browser.handle is the view port of QScrollArea, set by Composite
    39     // At this point, browser.handle is the view port of QScrollArea, set by Composite
    39     int scrollAreaHandle = Internal_PackageSupport.topHandle(browser);
    40     int scrollAreaHandle = Internal_PackageSupport.topHandle(browser);
    40     int viewPortHandle = Internal_PackageSupport.handle(browser);
    41     int viewPortHandle = Internal_PackageSupport.handle(browser);
    41     webViewHandle = OS.QWebView_new();
    42     webViewHandle = OS_webkit.QWebView_new();
    42     OS.QWidget_setParent(webViewHandle, scrollAreaHandle);
    43     OS.QWidget_setParent(webViewHandle, scrollAreaHandle);
    43     
    44     
    44     int layout = OS.QVBoxLayout_new(0);
    45     int layout = OS.QVBoxLayout_new(0);
    45     OS.QLayout_setContentsMargins(layout, 0, 0, 0, 0);
    46     OS.QLayout_setContentsMargins(layout, 0, 0, 0, 0);
    46     OS.QLayout_setSpacing(layout, 0);
    47     OS.QLayout_setSpacing(layout, 0);
    81     browser.setData(SET_NO_TRAVERSE_STATE_KEY, new Boolean(true));
    82     browser.setData(SET_NO_TRAVERSE_STATE_KEY, new Boolean(true));
    82     browser.setData(SET_NO_KEY_PROPAGATE_STATE_KEY, new Boolean(true));
    83     browser.setData(SET_NO_KEY_PROPAGATE_STATE_KEY, new Boolean(true));
    83     browser.setData(SET_NO_MOUSE_PROPAGATE_STATE_KEY, new Boolean(true));
    84     browser.setData(SET_NO_MOUSE_PROPAGATE_STATE_KEY, new Boolean(true));
    84     browser.setData(SET_EMBEDDED_SCROLLBARS_STATE_KEY, new Boolean(true));
    85     browser.setData(SET_EMBEDDED_SCROLLBARS_STATE_KEY, new Boolean(true));
    85     
    86     
    86     int handler1 = OS.SignalHandler_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LOADFINISHED);
    87     int handler1 = OS.SignalForwarder_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LOADFINISHED);
    87     OS.QObject_connectOrThrow(webViewHandle, "loadFinished(bool)", 
    88     OS.QObject_connectOrThrow(webViewHandle, "loadFinished(bool)", 
    88         handler1, "widgetSignal(bool)", OS.QT_AUTOCONNECTION);
    89         handler1, "widgetSignal(bool)", OS.QT_AUTOCONNECTION);
    89     int handler2 = OS.SignalHandler_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LOADPROGRESS);
    90     int handler2 = OS.SignalForwarder_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LOADPROGRESS);
    90     OS.QObject_connectOrThrow(webViewHandle, "loadProgress(int)", 
    91     OS.QObject_connectOrThrow(webViewHandle, "loadProgress(int)", 
    91         handler2, "widgetSignal(int)", OS.QT_AUTOCONNECTION);
    92         handler2, "widgetSignal(int)", OS.QT_AUTOCONNECTION);
    92     int handler3 = OS.SignalHandler_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LOADSTARTED);
    93     int handler3 = OS.SignalForwarder_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LOADSTARTED);
    93     OS.QObject_connectOrThrow(webViewHandle, "loadStarted()", 
    94     OS.QObject_connectOrThrow(webViewHandle, "loadStarted()", 
    94         handler3, "widgetSignal()", OS.QT_AUTOCONNECTION);
    95         handler3, "widgetSignal()", OS.QT_AUTOCONNECTION);
    95     int handler4 = OS.SignalHandler_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_STATUSBARMESSAGE);
    96     int handler4 = OS.SignalForwarder_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_STATUSBARMESSAGE);
    96     OS.QObject_connectOrThrow(webViewHandle, "statusBarMessage(const QString&)", 
    97     OS.QObject_connectOrThrow(webViewHandle, "statusBarMessage(const QString&)", 
    97         handler4, "widgetSignal(const QString&)", OS.QT_AUTOCONNECTION);
    98         handler4, "widgetSignal(const QString&)", OS.QT_AUTOCONNECTION);
    98     int handler5 = OS.SignalHandler_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_TITLECHANGED);
    99     int handler5 = OS.SignalForwarder_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_TITLECHANGED);
    99     OS.QObject_connectOrThrow(webViewHandle, "titleChanged(const QString&)", 
   100     OS.QObject_connectOrThrow(webViewHandle, "titleChanged(const QString&)", 
   100         handler5, "widgetSignal(const QString&)", OS.QT_AUTOCONNECTION);
   101         handler5, "widgetSignal(const QString&)", OS.QT_AUTOCONNECTION);
   101     int handler6 = OS.SignalHandler_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_URLCHANGED);
   102     int handler6 = OS.SignalForwarder_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_URLCHANGED);
   102     OS.QObject_connectOrThrow(webViewHandle, "urlChanged(const QUrl&)", 
   103     OS.QObject_connectOrThrow(webViewHandle, "urlChanged(const QUrl&)", 
   103         handler6, "widgetSignal(const QUrl&)", OS.QT_AUTOCONNECTION);
   104         handler6, "widgetSignal(const QUrl&)", OS.QT_AUTOCONNECTION);
   104     int handler7 = OS.SignalHandler_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LINKCLICKED);
   105     int handler7 = OS.SignalForwarder_new(webViewHandle, this, OS.QSIGNAL_WEBVIEW_LINKCLICKED);
   105     OS.QObject_connectOrThrow(webViewHandle, "linkClicked(const QUrl&)", 
   106     OS.QObject_connectOrThrow(webViewHandle, "linkClicked(const QUrl&)", 
   106         handler7, "widgetSignal(const QUrl&)", OS.QT_AUTOCONNECTION);
   107         handler7, "widgetSignal(const QUrl&)", OS.QT_AUTOCONNECTION);
   107 }
   108 }
   108 
   109 
   109 /**
   110 /**
   110  * @see WebBrowser
   111  * @see WebBrowser
   111  */
   112  */
   112 public boolean back() {
   113 public boolean back() {
   113     if (OS.QWebView_swt_canGoBack(webViewHandle)) {
   114     if (OS_webkit.QWebView_swt_canGoBack(webViewHandle)) {
   114         if (sendLocationEventChanging((int)System.currentTimeMillis(), 
   115         if (sendLocationEventChanging((int)System.currentTimeMillis(), 
   115             OS.QWebView_swt_backUrl(webViewHandle))) {
   116             OS_webkit.QWebView_swt_backUrl(webViewHandle))) {
   116             OS.QWebView_back(webViewHandle);
   117             OS_webkit.QWebView_back(webViewHandle);
   117             return true;
   118             return true;
   118         }
   119         }
   119     }
   120     }
   120     return false;
   121     return false;
   121 }
   122 }
   122 
   123 
   123 /**
   124 /**
   124  * @see WebBrowser
   125  * @see WebBrowser
   125  */
   126  */
   126 public boolean execute(String script) {
   127 public boolean execute(String script) {
   127     return OS.QWebView_swt_evaluateJavaScript(webViewHandle, script);
   128     return OS_webkit.QWebView_swt_evaluateJavaScript(webViewHandle, script);
   128 }
   129 }
   129 
   130 
   130 /**
   131 /**
   131  * @see WebBrowser
   132  * @see WebBrowser
   132  */
   133  */
   133 public boolean forward() {
   134 public boolean forward() {
   134     if (OS.QWebView_swt_canGoForward(webViewHandle)) {
   135     if (OS_webkit.QWebView_swt_canGoForward(webViewHandle)) {
   135         if (sendLocationEventChanging((int)System.currentTimeMillis(), 
   136         if (sendLocationEventChanging((int)System.currentTimeMillis(), 
   136             OS.QWebView_swt_forwardUrl(webViewHandle))) {
   137             OS_webkit.QWebView_swt_forwardUrl(webViewHandle))) {
   137             OS.QWebView_forward(webViewHandle);
   138             OS_webkit.QWebView_forward(webViewHandle);
   138             return true;
   139             return true;
   139         }
   140         }
   140     }
   141     }
   141     return false;
   142     return false;
   142 }
   143 }
   157 
   158 
   158 /**
   159 /**
   159  * @see WebBrowser
   160  * @see WebBrowser
   160  */
   161  */
   161 public String getUrl() {
   162 public String getUrl() {
   162     return OS.QWebView_url(webViewHandle);
   163     return OS_webkit.QWebView_url(webViewHandle);
   163 }
   164 }
   164 
   165 
   165 /**
   166 /**
   166  * @see WebBrowser
   167  * @see WebBrowser
   167  */
   168  */
   168 public boolean isBackEnabled() {
   169 public boolean isBackEnabled() {
   169     return OS.QWebView_swt_canGoBack(webViewHandle);
   170     return OS_webkit.QWebView_swt_canGoBack(webViewHandle);
   170 }
   171 }
   171 
   172 
   172 /**
   173 /**
   173  * @see WebBrowser
   174  * @see WebBrowser
   174  */
   175  */
   175 public boolean isForwardEnabled() {
   176 public boolean isForwardEnabled() {
   176     return OS.QWebView_swt_canGoForward(webViewHandle);
   177     return OS_webkit.QWebView_swt_canGoForward(webViewHandle);
   177 }
   178 }
   178 
   179 
   179 /**
   180 /**
   180  * @see WebBrowser
   181  * @see WebBrowser
   181  */
   182  */
   182 public void refresh() {
   183 public void refresh() {
   183     if (sendLocationEventChanging((int)System.currentTimeMillis(), 
   184     if (sendLocationEventChanging((int)System.currentTimeMillis(), 
   184         OS.QWebView_url(webViewHandle))) {
   185         OS_webkit.QWebView_url(webViewHandle))) {
   185         OS.QWebView_reload(webViewHandle);
   186         OS_webkit.QWebView_reload(webViewHandle);
   186     }
   187     }
   187 }
   188 }
   188 
   189 
   189 /**
   190 /**
   190  * @see WebBrowser
   191  * @see WebBrowser
   191  */
   192  */
   192 public boolean setText(String html) {
   193 public boolean setText(String html) {
   193     if (sendLocationEventChanging((int)System.currentTimeMillis(), "about:blank")) {
   194     if (sendLocationEventChanging((int)System.currentTimeMillis(), "about:blank")) {
   194         OS.QWebView_setHtml(webViewHandle, html);
   195         OS_webkit.QWebView_setHtml(webViewHandle, html);
   195         return true;
   196         return true;
   196     }
   197     }
   197     else {
   198     else {
   198         return false;
   199         return false;
   199     }
   200     }
   202 /**
   203 /**
   203  * @see WebBrowser
   204  * @see WebBrowser
   204  */
   205  */
   205 public boolean setUrl(String url) {
   206 public boolean setUrl(String url) {
   206     if (sendLocationEventChanging((int)System.currentTimeMillis(), url)) {
   207     if (sendLocationEventChanging((int)System.currentTimeMillis(), url)) {
   207         OS.QWebView_setUrl(webViewHandle, url);
   208         OS_webkit.QWebView_setUrl(webViewHandle, url);
   208         return true;
   209         return true;
   209     }
   210     }
   210     else {
   211     else {
   211         return false;
   212         return false;
   212     }
   213     }
   214 
   215 
   215 /**
   216 /**
   216  * @see WebBrowser
   217  * @see WebBrowser
   217  */
   218  */
   218 public void stop() {
   219 public void stop() {
   219     OS.QWebView_stop(webViewHandle);
   220     OS_webkit.QWebView_stop(webViewHandle);
   220 }
   221 }
   221 
   222 
   222 final boolean eventProcess( int widgetHandle, int eventType, int time, 
   223 final boolean eventProcess( int widgetHandle, int eventType, int time, 
   223     int arg1, int arg2, int arg3, int arg4, int arg5, String arg6 ){
   224     int arg1, int arg2, int arg3, int arg4, int arg5, String arg6 ){
   224     if (browser.isDisposed()) {
   225     if (browser.isDisposed()) {