Allow Gerrit client to pass JavaScriptObjects to extension panels
Extension panels are embedded in Gerrit screens. To be able to display useful extra information they need access to the object that is being displayed by the Gerrit screen. E.g. for a SettingsScreen the extension panel should have access to the AccountInfo entity of the user. As a first step AccountInfo is provided for the extension points in the SettingsScreen's. To make this work the AccountInfo class must be in a package that is both visible to the Gerrit client and the plugins. Making other *Info classes visible to plugins is more difficult since they partly depend on classes in gerrit-reviewdb which are not visible to plugins. The change in the cookbook plugin shows how the AccountInfo can be accessed in a plugin. Change-Id: Ie285d701ab5860c2a01211ca67d1f77324537303 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
// 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.info;
|
||||
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
|
||||
public class AccountInfo extends JavaScriptObject {
|
||||
public final native int _accountId() /*-{ return this._account_id || 0; }-*/;
|
||||
public final native String name() /*-{ return this.name; }-*/;
|
||||
public final native String email() /*-{ return this.email; }-*/;
|
||||
public final native String username() /*-{ return this.username; }-*/;
|
||||
|
||||
/**
|
||||
* @return true if the server supplied avatar information about this account.
|
||||
* The information may be an empty list, indicating no avatars are
|
||||
* available, such as when no plugin is installed. This method returns
|
||||
* false if the server did not check on avatars for the account.
|
||||
*/
|
||||
public final native boolean hasAvatarInfo()
|
||||
/*-{ return this.hasOwnProperty('avatars') }-*/;
|
||||
|
||||
public final AvatarInfo avatar(int sz) {
|
||||
JsArray<AvatarInfo> a = avatars();
|
||||
for (int i = 0; a != null && i < a.length(); i++) {
|
||||
AvatarInfo r = a.get(i);
|
||||
if (r.height() == sz) {
|
||||
return r;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private final native JsArray<AvatarInfo> avatars()
|
||||
/*-{ return this.avatars }-*/;
|
||||
|
||||
public static native AccountInfo create(int id, String name,
|
||||
String email, String username) /*-{
|
||||
return {'_account_id': id, 'name': name, 'email': email,
|
||||
'username': username};
|
||||
}-*/;
|
||||
|
||||
protected AccountInfo() {
|
||||
}
|
||||
|
||||
public static class AvatarInfo extends JavaScriptObject {
|
||||
public static final int DEFAULT_SIZE = 26;
|
||||
public final native String url() /*-{ return this.url }-*/;
|
||||
public final native int height() /*-{ return this.height || 0 }-*/;
|
||||
public final native int width() /*-{ return this.width || 0 }-*/;
|
||||
|
||||
protected AvatarInfo() {
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user