/*
* Copyright 2013 Daniel Kurka
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.googlecode.gwtphonegap.client.inappbrowser.js;
import com.google.gwt.core.client.JavaScriptObject;
import com.googlecode.gwtphonegap.client.inappbrowser.InAppBrowserCallback;
import com.googlecode.gwtphonegap.client.inappbrowser.InAppBrowserReferenceBaseImpl;
public class InAppBrowserReferenceJsImpl extends InAppBrowserReferenceBaseImpl {
private final JavaScriptObject jsWindowRef;
public InAppBrowserReferenceJsImpl(JavaScriptObject jsWindowRef) {
this.jsWindowRef = jsWindowRef;
}
@Override
public native void close() /*-{
var ref = this.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::jsWindowRef;
ref.close();
}-*/;
@Override
protected native void addJavaScriptHandlers() /*-{
var that = this;
var ref = this.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::jsWindowRef;
var loadStart = function(event) {
that.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::fireLoadStartEvent(Ljava/lang/String;)(event.url);
};
var loadStop = function(event) {
that.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::fireLoadStopEvent(Ljava/lang/String;)(event.url);
};
var loadError = function(event){
that.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::fireLoadErrorEvent(Ljava/lang/String;)(event.url);
}
var exit = function(event) {
ref.removeEventListener("loadstart", loadStart);
ref.removeEventListener("loadstop", loadStop);
ref.removeEventListener("loaderror",loadError);
ref.removeEventListener("exit", exit);
that.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::fireExitEvent()();
};
ref.addEventListener("loadstart", loadStart);
ref.addEventListener("loadstop", loadStop);
ref.addEventListener("loaderror",loadError);
ref.addEventListener("exit", exit);
}-*/;
@Override
public native void show() /*-{
var ref = this.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::jsWindowRef;
ref.show();
}-*/;
@Override
public native void executeScript(String code, InAppBrowserCallback callback) /*-{
var ref = this.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::jsWindowRef;
var script = {code: code};
var c = function(result){
callback.@com.googlecode.gwtphonegap.client.inappbrowser.InAppBrowserCallback::done(*)(result);
};
ref.executeScript(script, $entry(c));
}-*/;
@Override
public native void executeScriptFromUrl(String url, InAppBrowserCallback callback) /*-{
var ref = this.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::jsWindowRef;
var script = {file: url};
var c = function(result){
callback.@com.googlecode.gwtphonegap.client.inappbrowser.InAppBrowserCallback::done(*)(result);
};
ref.executeScript(script, $entry(c));
}-*/;
@Override
public native void injectCss(String css, InAppBrowserCallback callback) /*-{
var ref = this.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::jsWindowRef;
var script = {code: css};
var c = function(){
callback.@com.googlecode.gwtphonegap.client.inappbrowser.InAppBrowserCallback::done(*)(null);
};
ref.insertCSS(script, $entry(c));
}-*/;
@Override
public native void injectCssFromUrl(String url, InAppBrowserCallback callback) /*-{
var ref = this.@com.googlecode.gwtphonegap.client.inappbrowser.js.InAppBrowserReferenceJsImpl::jsWindowRef;
var script = {file: url};
var c = function(){
callback.@com.googlecode.gwtphonegap.client.inappbrowser.InAppBrowserCallback::done(*)(null);
};
ref.insertCSS(script, $entry(c));
}-*/;
}