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:
@@ -1013,12 +1013,24 @@ The name of the project.
|
||||
+
|
||||
Panel will be shown at the bottom of the screen.
|
||||
|
||||
** The following parameters are provided:
|
||||
*** `GerritUiExtensionPoint.Key.ACCOUNT_INFO`:
|
||||
+
|
||||
The link:rest-api-accounts.html#account-info[AccountInfo] entity for
|
||||
the current user.
|
||||
|
||||
* User Profile Screen:
|
||||
** `GerritUiExtensionPoint.PROFILE_SCREEN_BOTTOM`:
|
||||
+
|
||||
Panel will be shown at the bottom of the screen below the grid with the
|
||||
profile data.
|
||||
|
||||
** The following parameters are provided:
|
||||
*** `GerritUiExtensionPoint.Key.ACCOUNT_INFO`:
|
||||
+
|
||||
The link:rest-api-accounts.html#account-info[AccountInfo] entity for
|
||||
the current user.
|
||||
|
||||
Example panel:
|
||||
[source,java]
|
||||
----
|
||||
|
||||
@@ -31,6 +31,6 @@ public enum GerritUiExtensionPoint {
|
||||
PROJECT_INFO_SCREEN_TOP, PROJECT_INFO_SCREEN_BOTTOM;
|
||||
|
||||
public enum Key {
|
||||
CHANGE_ID, PROJECT_NAME
|
||||
ACCOUNT_INFO, CHANGE_ID, PROJECT_NAME
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.client.account;
|
||||
package com.google.gerrit.client.info;
|
||||
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
@@ -14,9 +14,9 @@
|
||||
|
||||
package com.google.gerrit.client;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.account.AccountInfo.AvatarInfo;
|
||||
import com.google.gerrit.client.changes.Util;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo.AvatarInfo;
|
||||
import com.google.gerrit.client.rpc.RestApi;
|
||||
import com.google.gwt.event.dom.client.LoadEvent;
|
||||
import com.google.gwt.event.dom.client.LoadHandler;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
package com.google.gerrit.client;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences;
|
||||
import com.google.gwt.i18n.client.DateTimeFormat;
|
||||
|
||||
@@ -20,7 +20,6 @@ import static com.google.gerrit.common.data.GlobalCapability.VIEW_PLUGINS;
|
||||
|
||||
import com.google.gerrit.client.account.AccountApi;
|
||||
import com.google.gerrit.client.account.AccountCapabilities;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.account.Preferences;
|
||||
import com.google.gerrit.client.admin.ProjectScreen;
|
||||
import com.google.gerrit.client.api.ApiGlue;
|
||||
@@ -34,6 +33,7 @@ import com.google.gerrit.client.documentation.DocInfo;
|
||||
import com.google.gerrit.client.extensions.TopMenu;
|
||||
import com.google.gerrit.client.extensions.TopMenuItem;
|
||||
import com.google.gerrit.client.extensions.TopMenuList;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.patches.UnifiedPatchScreen;
|
||||
import com.google.gerrit.client.rpc.CallbackGroup;
|
||||
import com.google.gerrit.client.rpc.GerritCallback;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
package com.google.gerrit.client;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.ui.InlineHyperlink;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.AnchorElement;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package com.google.gerrit.client.account;
|
||||
|
||||
import com.google.gerrit.client.VoidResult;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.CallbackGroup;
|
||||
import com.google.gerrit.client.rpc.NativeString;
|
||||
import com.google.gerrit.client.rpc.RestApi;
|
||||
|
||||
@@ -94,7 +94,7 @@ public class MyPasswordScreen extends SettingsScreen {
|
||||
protected void onLoad() {
|
||||
super.onLoad();
|
||||
ExtensionPanel extensionPanel =
|
||||
new ExtensionPanel(GerritUiExtensionPoint.PASSWORD_SCREEN_BOTTOM);
|
||||
createExtensionPoint(GerritUiExtensionPoint.PASSWORD_SCREEN_BOTTOM);
|
||||
extensionPanel.addStyleName(Gerrit.RESOURCES.css().extensionPanel());
|
||||
add(extensionPanel);
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.google.gerrit.client.AvatarImage;
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.GerritUiExtensionPoint;
|
||||
import com.google.gerrit.client.api.ExtensionPanel;
|
||||
import com.google.gerrit.client.rpc.NativeString;
|
||||
import com.google.gerrit.client.rpc.RestApi;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
@@ -88,7 +87,7 @@ public class MyProfileScreen extends SettingsScreen {
|
||||
@Override
|
||||
protected void onLoad() {
|
||||
super.onLoad();
|
||||
add(new ExtensionPanel(GerritUiExtensionPoint.PROFILE_SCREEN_BOTTOM));
|
||||
add(createExtensionPoint(GerritUiExtensionPoint.PROFILE_SCREEN_BOTTOM));
|
||||
display(Gerrit.getUserAccount());
|
||||
display();
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
package com.google.gerrit.client.account;
|
||||
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.GerritUiExtensionPoint;
|
||||
import com.google.gerrit.client.api.ExtensionPanel;
|
||||
import com.google.gerrit.client.api.ExtensionSettingsScreen;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.client.ui.MenuScreen;
|
||||
@@ -84,4 +86,12 @@ public abstract class SettingsScreen extends MenuScreen {
|
||||
super.onInitUI();
|
||||
setPageTitle(Util.C.settingsHeading());
|
||||
}
|
||||
|
||||
protected ExtensionPanel createExtensionPoint(
|
||||
GerritUiExtensionPoint extensionPoint) {
|
||||
ExtensionPanel extensionPanel = new ExtensionPanel(extensionPoint);
|
||||
extensionPanel.putObject(GerritUiExtensionPoint.Key.ACCOUNT_INFO,
|
||||
Gerrit.getUserAccountInfo());
|
||||
return extensionPanel;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import static com.google.gerrit.client.FormatUtil.name;
|
||||
|
||||
import com.google.gerrit.client.Dispatcher;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.groups.GroupApi;
|
||||
import com.google.gerrit.client.groups.GroupAuditEventInfo;
|
||||
import com.google.gerrit.client.groups.GroupInfo;
|
||||
|
||||
@@ -17,9 +17,9 @@ package com.google.gerrit.client.admin;
|
||||
import com.google.gerrit.client.Dispatcher;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.VoidResult;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.groups.GroupApi;
|
||||
import com.google.gerrit.client.groups.GroupInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.GerritCallback;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.client.ui.AccountGroupSuggestOracle;
|
||||
|
||||
@@ -16,7 +16,7 @@ package com.google.gerrit.client.api;
|
||||
|
||||
import com.google.gerrit.client.ErrorDialog;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
import com.google.gwt.user.client.History;
|
||||
|
||||
@@ -66,6 +66,12 @@ public class ExtensionPanel extends FlowPanel {
|
||||
}
|
||||
}
|
||||
|
||||
public void putObject(GerritUiExtensionPoint.Key key, JavaScriptObject value) {
|
||||
for (Context ctx : contexts) {
|
||||
ctx.putObject(key.name(), value);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLoad() {
|
||||
super.onLoad();
|
||||
@@ -122,6 +128,7 @@ public class ExtensionPanel extends FlowPanel {
|
||||
final native void put(String k, String v) /*-{ this.p[k] = v; }-*/;
|
||||
final native void putInt(String k, int v) /*-{ this.p[k] = v; }-*/;
|
||||
final native void putBoolean(String k, boolean v) /*-{ this.p[k] = v; }-*/;
|
||||
final native void putObject(String k, JavaScriptObject v) /*-{ this.p[k] = v; }-*/;
|
||||
|
||||
private static final native Context create(
|
||||
JavaScriptObject T,
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.google.gerrit.client.ErrorDialog;
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.GerritUiExtensionPoint;
|
||||
import com.google.gerrit.client.account.AccountInfo.AvatarInfo;
|
||||
import com.google.gerrit.client.actions.ActionInfo;
|
||||
import com.google.gerrit.client.api.ChangeGlue;
|
||||
import com.google.gerrit.client.api.ExtensionPanel;
|
||||
@@ -37,6 +36,7 @@ import com.google.gerrit.client.changes.StarredChanges;
|
||||
import com.google.gerrit.client.changes.Util;
|
||||
import com.google.gerrit.client.diff.DiffApi;
|
||||
import com.google.gerrit.client.diff.FileInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo.AvatarInfo;
|
||||
import com.google.gerrit.client.projects.ConfigInfoCache;
|
||||
import com.google.gerrit.client.projects.ConfigInfoCache.Entry;
|
||||
import com.google.gerrit.client.rpc.CallbackGroup;
|
||||
|
||||
@@ -18,12 +18,12 @@ import com.google.gerrit.client.AvatarImage;
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.WebLinkInfo;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.CommitInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.GitPerson;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.RevisionInfo;
|
||||
import com.google.gerrit.client.config.GitwebInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.client.ui.CommentLinkProcessor;
|
||||
import com.google.gerrit.client.ui.InlineHyperlink;
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
package com.google.gerrit.client.change;
|
||||
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.account.AccountInfo.AvatarInfo;
|
||||
import com.google.gerrit.client.changes.ChangeApi;
|
||||
import com.google.gerrit.client.changes.ChangeInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.ApprovalInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.LabelInfo;
|
||||
import com.google.gerrit.client.changes.Util;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo.AvatarInfo;
|
||||
import com.google.gerrit.client.rpc.GerritCallback;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.common.PageLinks;
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
package com.google.gerrit.client.change;
|
||||
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.admin.Util;
|
||||
import com.google.gerrit.client.changes.ChangeApi;
|
||||
import com.google.gerrit.client.groups.GroupBaseInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.GerritCallback;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.client.ui.SuggestAfterTypingNCharsOracle;
|
||||
|
||||
@@ -17,12 +17,12 @@ package com.google.gerrit.client.change;
|
||||
import com.google.gerrit.client.ConfirmationCallback;
|
||||
import com.google.gerrit.client.ConfirmationDialog;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.changes.ChangeApi;
|
||||
import com.google.gerrit.client.changes.ChangeInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.ApprovalInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.LabelInfo;
|
||||
import com.google.gerrit.client.changes.Util;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.GerritCallback;
|
||||
import com.google.gerrit.client.rpc.NativeMap;
|
||||
import com.google.gerrit.client.rpc.NativeString;
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
package com.google.gerrit.client.changes;
|
||||
|
||||
import com.google.gerrit.client.WebLinkInfo;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.actions.ActionInfo;
|
||||
import com.google.gerrit.client.diff.FileInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.NativeMap;
|
||||
import com.google.gerrit.client.rpc.NativeString;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
|
||||
@@ -18,8 +18,8 @@ import static com.google.gerrit.client.FormatUtil.relativeFormat;
|
||||
import static com.google.gerrit.client.FormatUtil.shortFormat;
|
||||
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.changes.ChangeInfo.LabelInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.ui.AccountLinkPanel;
|
||||
import com.google.gerrit.client.ui.BranchLink;
|
||||
import com.google.gerrit.client.ui.ChangeLink;
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
|
||||
package com.google.gerrit.client.changes;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.diff.CommentRange;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.extensions.client.Side;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwtjsonrpc.client.impl.ser.JavaSqlTimestamp_JsonSerializer;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
package com.google.gerrit.client.groups;
|
||||
|
||||
import com.google.gerrit.client.VoidResult;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.NativeString;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.client.rpc.RestApi;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
package com.google.gerrit.client.groups;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwtjsonrpc.client.impl.ser.JavaSqlTimestamp_JsonSerializer;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
package com.google.gerrit.client.groups;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
package com.google.gerrit.client.groups;
|
||||
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.RestApi;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
|
||||
@@ -16,9 +16,9 @@ package com.google.gerrit.client.patches;
|
||||
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.changes.CommentApi;
|
||||
import com.google.gerrit.client.changes.CommentInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.GerritCallback;
|
||||
import com.google.gerrit.client.ui.CommentLinkProcessor;
|
||||
import com.google.gerrit.client.ui.CommentPanel;
|
||||
|
||||
@@ -17,7 +17,7 @@ package com.google.gerrit.client.ui;
|
||||
import com.google.gerrit.client.AvatarImage;
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.common.PageLinks;
|
||||
import com.google.gerrit.common.data.AccountInfoCache;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
|
||||
@@ -16,7 +16,7 @@ package com.google.gerrit.client.ui;
|
||||
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.account.AccountApi;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gerrit.client.rpc.GerritCallback;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gwt.core.client.JsArray;
|
||||
|
||||
@@ -17,7 +17,7 @@ package com.google.gerrit.client.ui;
|
||||
import com.google.gerrit.client.AvatarImage;
|
||||
import com.google.gerrit.client.FormatUtil;
|
||||
import com.google.gerrit.client.Gerrit;
|
||||
import com.google.gerrit.client.account.AccountInfo;
|
||||
import com.google.gerrit.client.info.AccountInfo;
|
||||
import com.google.gwt.event.dom.client.BlurEvent;
|
||||
import com.google.gwt.event.dom.client.BlurHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
|
||||
@@ -69,6 +69,8 @@ public class Panel extends SimplePanel {
|
||||
final native int getBoolean(String k, boolean d) /*-{
|
||||
return this.p.hasOwnProperty(k) ? this.p[k] : d
|
||||
}-*/;
|
||||
final native JavaScriptObject getObject(String k)
|
||||
/*-{ return this.p[k]; }-*/;
|
||||
|
||||
|
||||
final native void detach(Panel p) /*-{
|
||||
@@ -101,4 +103,8 @@ public class Panel extends SimplePanel {
|
||||
public int getBoolean(GerritUiExtensionPoint.Key key, boolean defaultValue) {
|
||||
return ctx.getBoolean(key.name(), defaultValue);
|
||||
}
|
||||
|
||||
public JavaScriptObject getObject(GerritUiExtensionPoint.Key key) {
|
||||
return ctx.getObject(key.name());
|
||||
}
|
||||
}
|
||||
|
||||
Submodule plugins/cookbook-plugin updated: 132a446344...2ff713f3d3
Reference in New Issue
Block a user