// 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}, 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(), 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() { } }