package org.swellrt.api.js;
import com.google.gwt.core.client.JavaScriptObject;
import org.swellrt.api.WaveClient;
public class WaveClientJS extends JavaScriptObject {
public static final String SUCCESS = "success";
public static final String FAILURE = "failure";
public static final String READY = "ready";
public static final String ITEM_CHANGED = "item-changed";
public static final String ITEM_ADDED = "item-added";
public static final String ITEM_REMOVED = "item-removed";
public static final String PARTICIPANT_ADDED = "participant-added";
public static final String PARTICIPANT_REMOVED = "participant-removed";
public static final String DATA_STATUS_CHANGED = "data-status-changed";
public static final String NETWORK_DISCONNECTED = "network-disconnected";
public static final String NETWORK_CONNECTED = "network-connected";
public static final String NETWORK_CLOSED = "network-closed";
/** This shouldn't be used. Just for debugging purpose */
public static final String FATAL_EXCEPTION = "exception";
public static final String METHOD_START_SESSION = "startSession";
public static final String METHOD_OPEN_MODEL = "openModel";
public static final String METHOD_CREATE_MODEL = "createModel";
/**
* The JS Wave Client main interface. Backed by WaveClient
*
* Design ideas are:
*
* <li>Multiple waves opened simultaneously</li> <li>Multiple collaborative
* contents in a wave</li> <li>Provide UI for complex contents (e.g. text
* editor), hook in a DOM element</i>
*
*/
public static final native WaveClientJS create(WaveClient delegate) /*-{
var swellrt = {
handlers: new Object(),
events: {
FATAL_EXCEPTION: "exception",
SUCCESS: "success",
FAILURE: "failure",
READY: "ready",
ITEM_CHANGED: "item-changed",
ITEM_ADDED: "item-added",
ITEM_REMOVED: "item-removed",
PARTICIPANT_ADDED: "participant-added",
PARTICIPANT_REMOVED: "participant-removed",
DATA_STATUS_CHANGED: "data-status-changed",
NETWORK_DISCONNECTED: "network-disconnected",
NETWORK_CONNECTED: "network-connected",
NETWORK_CLOSED: "network-closed"
},
type: {
MAP: "MapType",
STRING: "StringType",
TEXT: "TextType",
LIST: "ListType",
FILE: "FileType"
},
annotation : {
BG_COLOR : "style/backgroundColor",
COLOR : "style/color",
FONT_FAMILY : "style/fontFamily",
FONT_SIZE : "style/fontSize",
FONT_STYLE : "style/fontStyle",
FONT_WEIGHT : "style/fontWeight",
TEXT_DECORATION : "style/textDecoration",
VERTICAL_ALIGN : "style/verticalAlign",
LINK_AUTO : "link/auto",
LINK_MANUAL : "link/manual"
},
user: {
ANONYMOUS: "_anonymous_"
},
on: function(event, handler) {
if (!this.handlers[event]) {
this.handlers[event] = new Array();
}
this.handlers[event].push(handler);
return this;
},
ready: function(handler) {
if (!handler || typeof handler !== "function")
return;
handler();
},
//
// Users
//
registerUser: function(host, user, password, onSuccess, onFailure) {
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::registerUser(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(host, user, password, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
createUser: function(parameters, onComplete) {
try {
return delegate.@org.swellrt.api.WaveClient::createUser(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/swellrt/api/ServiceCallback;)(parameters, onComplete);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
updateUserProfile: function(parameters, onComplete) {
try {
return delegate.@org.swellrt.api.WaveClient::updateUserProfile(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/swellrt/api/ServiceCallback;)(parameters, onComplete);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
getUserProfile: function(arg0, arg1) {
try {
if (arg1 === undefined) {
return delegate.@org.swellrt.api.WaveClient::getUserProfile(Lorg/swellrt/api/ServiceCallback;)(arg0);
} else {
return delegate.@org.swellrt.api.WaveClient::getUserProfile(Lcom/google/gwt/core/client/JsArrayString;Lorg/swellrt/api/ServiceCallback;)(arg0, arg1);
}
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
setUserEmail: function(email, onSuccess, onFailure) {
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::setUserEmail(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(email, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
setPassword: function(id, token, newPassword, onSuccess, onFailure) {
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::setPassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(id, token, newPassword, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
recoverPassword: function(idOrEmail, recoverUrl, onSuccess, onFailure){
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::recoverPassword(Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(idOrEmail, recoverUrl, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
//
// Session
//
login: function(parameters, onComplete) {
try {
return delegate.@org.swellrt.api.WaveClient::login(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/swellrt/api/ServiceCallback;)(parameters, onComplete)
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
resume: function(parameters, onComplete) {
if (!onComplete) {
onComplete = parameters;
parameters = "{}";
}
try {
return delegate.@org.swellrt.api.WaveClient::resume(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/swellrt/api/ServiceCallback;)(parameters, onComplete);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
logout: function(parameters, onComplete) {
if (!onComplete) {
onComplete = parameters;
parameters = "{}";
}
try {
return delegate.@org.swellrt.api.WaveClient::logout(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/swellrt/api/ServiceCallback;)(parameters, onComplete);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
//
// Manage Collaborative Objects
//
open: function(parameters, onComplete) {
try {
return delegate.@org.swellrt.api.WaveClient::open(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/swellrt/api/ServiceCallback;)(parameters, onComplete)
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
close: function(parameters, onComplete) {
try {
return delegate.@org.swellrt.api.WaveClient::close(Lcom/google/gwt/core/client/JavaScriptObject;Lorg/swellrt/api/ServiceCallback;)(parameters, onComplete)
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
startSession: function(url, user, password, onSuccess, onFailure) {
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::startSession(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(url, user, password, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
stopSession: function() {
try {
return delegate.@org.swellrt.api.WaveClient::stopSession()();
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
resumeSession: function(onSuccess, onFailure) {
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::resumeSession(Lcom/google/gwt/core/client/JavaScriptObject;)(callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
//
// Data Model
//
closeModel: function(waveid) {
try {
return delegate.@org.swellrt.api.WaveClient::closeModel(Ljava/lang/String;)(waveid);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
createModel: function(onReady, onFailure) {
var callback = new Object();
callback.ready = onReady;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::createModel(Lcom/google/gwt/core/client/JavaScriptObject;)(callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
openModel: function(waveId, onReady, onFailure) {
var callback = new Object();
callback.ready = onReady;
callback.failure = onFailure;
try {
return delegate.@org.swellrt.api.WaveClient::openModel(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(waveId, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
query: function(expr, onSuccess, onFailure) {
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
var stringQueryExpr;
if (typeof expr == "string") {
expr = JSON.parse(expr);
}
if(expr._query){
stringQueryExpr = JSON.stringify(expr._query);
var stringProjExpr = JSON.stringify(expr._projection);
}
else if (expr._aggregate) {
var stringAggrExpr = JSON.stringify(expr._aggregate);
}
else {
stringQueryExpr = JSON.stringify(expr);
}
try {
return delegate.@org.swellrt.api.WaveClient::query(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(stringQueryExpr, stringProjExpr, stringAggrExpr, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
domain: function() {
return $wnd.__session.domain;
},
//
// Editor
//
editor: function(elementId, widgets, annotations) {
return delegate.@org.swellrt.api.WaveClient::getTextEditor(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/core/client/JavaScriptObject;)(elementId, widgets, annotations);
},
//
// Options
//
useWebSocket: function(enabled) {
delegate.@org.swellrt.api.WaveClient::useWebSocket(Z)(enabled);
},
//
// Notifications
//
notifications: {
register: function(deviceId, onSuccess, onFailure){
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
delegate.@org.swellrt.api.WaveClient::notificationRegister(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(deviceId, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
unregister: function(deviceId, onSuccess, onFailure){
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
delegate.@org.swellrt.api.WaveClient::notificationUnregister(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(deviceId, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
subscribe: function(waveId, onSuccess, onFailure){
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
delegate.@org.swellrt.api.WaveClient::notificationSubscribe(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(waveId, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
unsubscribe: function(waveId, onSuccess, onFailure){
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
delegate.@org.swellrt.api.WaveClient::notificationUnsubscribe(Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(waveId, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
},
//
// Invite
//
invite: function(emails, url, urlText, onSuccess, onFailure){
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
delegate.@org.swellrt.api.WaveClient::invite(Lcom/google/gwt/core/client/JsArrayString;Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(emails, url, urlText, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
},
//
// Join
//
join: function(email, url, urlText, message, admin, onSuccess, onFailure){
var callback = new Object();
callback.success = onSuccess;
callback.failure = onFailure;
try {
delegate.@org.swellrt.api.WaveClient::join(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(email, url, urlText, message, admin, callback);
} catch (e) {
throw @org.swellrt.api.WaveClient::wrapJavaException(Ljava/lang/Object;)(e);
}
}
}; // SwellRT
// Accessible from the Window object
$wnd.__SwellRT = swellrt;
return swellrt;
}-*/;
protected WaveClientJS() {
}
public final native void triggerEvent(String event, Object parameter) /*-{
if (Array.isArray(this.handlers[event])) {
for (var i = 0; i < this.handlers[event].length; i++) {
this.handlers[event][i](parameter);
}
}
}-*/;
}