/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.requirejs;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayString;
import org.eclipse.che.requirejs.conf.RequirejsConfig;
/**
* JSO over requirejs function.
*
* @author "Mickaƫl Leduque"
*/
public class Requirejs extends JavaScriptObject {
protected Requirejs() {
}
public static final native Requirejs get() /*-{
return $wnd.require;
}-*/;
public static final native Requirejs config(RequirejsConfig config) /*-{
var localRequire = $wnd.require.config(config);
localRequire.require = function(deps, callback, errback) {
return localRequire(deps, callback, errback);
}
return localRequire;
}-*/;
public final void require(JsArrayString deps, RequirejsCallback callback) {
require(deps, callback, null);
}
public final native void require(JsArrayString deps, RequirejsCallback callback, RequirejsErrorHandler errorHandler) /*-{
var realCallback = function() {
var param = [];
var args = Array.prototype.slice.call(arguments);
args.forEach(function(module) {
param.push(module);
});
callback.@org.eclipse.che.requirejs.RequirejsCallback::onReady(Lcom/google/gwt/core/client/JsArray;)(param);
};
var realErrHandler = function(err) {
if (errorHandler) {
errorHandler.@org.eclipse.che.requirejs.RequirejsErrorHandler::onError(Lorg/eclipse/che/requirejs/RequirejsErrorHandler$RequireError;)(err);
} else {
$wnd.require.onError(err);
}
};
this.require(deps, realCallback, realErrHandler);
}-*/;
public final native String toUrl(String moduleNamePlusExt) /*-{
return this.tourl(moduleNamePlusExt);
}-*/;
public final native String undef(String module) /*-{
return this.undef(module);
}-*/;
public final native boolean defined(String module) /*-{
return this.defined(module);
}-*/;
public final native boolean specified(String module) /*-{
return this.specified(module);
}-*/;
public final native String version() /*-{
return this.version;
}-*/;
public final native void setOnError(JavaScriptObject onError) /*-{
this.onError = onError;
}-*/;
public final native void setOnError(RequirejsErrorHandler handler) /*-{
this.onError = function(err) {
handler.@org.eclipse.che.requirejs.RequirejsErrorHandler::onError(Lorg/eclipse/che/requirejs/RequirejsErrorHandler$RequireError;)(err);
};
}-*/;
}