blob: 931a04de10bf82a0878817d34b776773f4afa950 [file] [log] [blame]
// Copyright (C) 2013 The Android Open Source Project
//
// 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.google.gerrit.client.api;
import com.google.gwt.core.client.JavaScriptObject;
final class Plugin extends JavaScriptObject {
private static final JavaScriptObject TYPE = createType();
static Plugin create(String url) {
int s = "plugins/".length();
int e = url.indexOf('/', s);
String name = url.substring(s, e);
return create(TYPE, url, name);
}
final native String url() /*-{ return this._scriptUrl }-*/;
final native String name() /*-{ return this.name }-*/;
final native boolean loaded() /*-{ return this._success || this._failure != null }-*/;
final native Exception failure() /*-{ return this._failure }-*/;
final native void failure(Exception e) /*-{ this._failure = e }-*/;
final native boolean success() /*-{ return this._success || false }-*/;
final native void _initialized() /*-{ this._success = true }-*/;
private static native Plugin create(JavaScriptObject T, String u, String n)
/*-{ return new T(u,n) }-*/;
private static native JavaScriptObject createType() /*-{
function Plugin(u, n) {
this._scriptUrl = u;
this.name = n;
}
return Plugin;
}-*/;
static native void init() /*-{
var G = $wnd.Gerrit;
@com.google.gerrit.client.api.Plugin::TYPE.prototype = {
getPluginName: function(){return this.name},
getCurrentUser: @com.google.gerrit.client.api.ApiGlue::getCurrentUser(),
go: @com.google.gerrit.client.api.ApiGlue::go(Ljava/lang/String;),
refresh: @com.google.gerrit.client.api.ApiGlue::refresh(),
refreshMenuBar: @com.google.gerrit.client.api.ApiGlue::refreshMenuBar(),
isSignedIn: @com.google.gerrit.client.api.ApiGlue::isSignedIn(),
showError: @com.google.gerrit.client.api.ApiGlue::showError(Ljava/lang/String;),
on: function(e,f){G.on(e,f)},
onAction: function(t,n,c){G._onAction(this.name,t,n,c)},
screen: function(p,c){G._screen(this.name,p,c)},
url: function (u){return G.url(this._url(u))},
get: function(u,b){@com.google.gerrit.client.api.ActionContext::get(Lcom/google/gerrit/client/rpc/RestApi;Lcom/google/gwt/core/client/JavaScriptObject;)(this._api(u),b)},
post: function(u,i,b){@com.google.gerrit.client.api.ActionContext::post(Lcom/google/gerrit/client/rpc/RestApi;Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/core/client/JavaScriptObject;)(this._api(u),i,b)},
put: function(u,i,b){@com.google.gerrit.client.api.ActionContext::put(Lcom/google/gerrit/client/rpc/RestApi;Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/core/client/JavaScriptObject;)(this._api(u),i,b)},
'delete': function(u,b){@com.google.gerrit.client.api.ActionContext::delete(Lcom/google/gerrit/client/rpc/RestApi;Lcom/google/gwt/core/client/JavaScriptObject;)(this._api(u),b)},
del: function(u,b){@com.google.gerrit.client.api.ActionContext::delete(Lcom/google/gerrit/client/rpc/RestApi;Lcom/google/gwt/core/client/JavaScriptObject;)(this._api(u),b)},
_loadedGwt: function(){@com.google.gerrit.client.api.PluginLoader::loaded()()},
_api: function(u){return @com.google.gerrit.client.rpc.RestApi::new(Ljava/lang/String;)(this._url(u))},
_url: function (d) {
var u = 'plugins/' + this.name + '/';
if (d && d.length > 0)
return u + (d.charAt(0)=='/' ? d.substring(1) : d);
return u;
},
};
}-*/;
protected Plugin() {
}
}