diff options
Diffstat (limited to 'gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java')
-rw-r--r-- | gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java | 88 |
1 files changed, 55 insertions, 33 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java index 68188413ab..76a0cfb23a 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java @@ -14,44 +14,45 @@ package com.google.gerrit.client.admin; +import static com.google.gerrit.client.admin.Util.C; + import com.google.gerrit.client.Dispatcher; import com.google.gerrit.client.Gerrit; -import com.google.gerrit.client.ui.Hyperlink; +import com.google.gerrit.client.groups.GroupInfo; +import com.google.gerrit.client.groups.GroupList; +import com.google.gerrit.client.groups.GroupMap; +import com.google.gerrit.client.rpc.Natives; +import com.google.gerrit.client.ui.HighlightingInlineHyperlink; import com.google.gerrit.client.ui.NavigationTable; -import com.google.gerrit.reviewdb.client.AccountGroup; +import com.google.gerrit.client.ui.Util; +import com.google.gerrit.common.PageLinks; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.user.client.History; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter; import com.google.gwt.user.client.ui.HTMLTable.Cell; import com.google.gwt.user.client.ui.Image; +import java.util.Collections; +import java.util.Comparator; import java.util.List; -public class GroupTable extends NavigationTable<AccountGroup> { +public class GroupTable extends NavigationTable<GroupInfo> { private static final int NUM_COLS = 3; - private final boolean enableLink; - - public GroupTable(final boolean enableLink) { - this(enableLink, null); + public GroupTable() { + this(null); } - public GroupTable(final boolean enableLink, final String pointerId) { - this.enableLink = enableLink; - + public GroupTable(final String pointerId) { + super(C.groupItemHelp()); setSavePointerId(pointerId); - keysNavigation.add(new PrevKeyCommand(0, 'k', Util.C.groupListPrev())); - keysNavigation.add(new NextKeyCommand(0, 'j', Util.C.groupListNext())); - keysNavigation.add(new OpenKeyCommand(0, 'o', Util.C.groupListOpen())); - keysNavigation.add(new OpenKeyCommand(0, KeyCodes.KEY_ENTER, Util.C - .groupListOpen())); - - table.setText(0, 1, Util.C.columnGroupName()); - table.setText(0, 2, Util.C.columnGroupDescription()); - table.setText(0, 3, Util.C.columnGroupVisibleToAll()); + + table.setText(0, 1, C.columnGroupName()); + table.setText(0, 2, C.columnGroupDescription()); + table.setText(0, 3, C.columnGroupVisibleToAll()); table.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { @@ -70,36 +71,57 @@ public class GroupTable extends NavigationTable<AccountGroup> { } @Override - protected Object getRowItemKey(final AccountGroup item) { - return item.getId(); + protected Object getRowItemKey(final GroupInfo item) { + return item.getGroupId(); } @Override protected void onOpenRow(final int row) { - History.newItem(Dispatcher.toGroup(getRowItem(row).getId())); + History.newItem(Dispatcher.toGroup(getRowItem(row).getGroupId())); + } + + public void display(GroupMap groups, String toHighlight) { + display(Natives.asList(groups.values()), toHighlight); } - public void display(final List<AccountGroup> result) { + public void display(GroupList groups) { + display(Natives.asList(groups), null); + } + + public void display(List<GroupInfo> list, String toHighlight) { while (1 < table.getRowCount()) table.removeRow(table.getRowCount() - 1); - for(AccountGroup group : result) { + Collections.sort(list, new Comparator<GroupInfo>() { + @Override + public int compare(GroupInfo a, GroupInfo b) { + return a.name().compareTo(b.name()); + } + }); + for(GroupInfo group : list) { final int row = table.getRowCount(); table.insertRow(row); applyDataRowStyle(row); - populate(row, group); + populate(row, group, toHighlight); } } - void populate(final int row, final AccountGroup k) { - if (enableLink) { - table.setWidget(row, 1, new Hyperlink(k.getName(), - Dispatcher.toGroup(k.getId()))); + void populate(final int row, final GroupInfo k, final String toHighlight) { + if (k.url() != null) { + if (k.url().startsWith("#" + PageLinks.ADMIN_GROUPS)) { + table.setWidget(row, 1, new HighlightingInlineHyperlink(k.name(), + Dispatcher.toGroup(k.getGroupId()), toHighlight)); + } else { + Anchor link = new Anchor(); + link.setHTML(Util.highlight(k.name(), toHighlight)); + link.setHref(k.url()); + table.setWidget(row, 1, link); + } } else { - table.setText(row, 1, k.getName()); + table.setHTML(row, 1, Util.highlight(k.name(), toHighlight)); } - table.setText(row, 2, k.getDescription()); - if (k.isVisibleToAll()) { + table.setText(row, 2, k.description()); + if (k.options().isVisibleToAll()) { table.setWidget(row, 3, new Image(Gerrit.RESOURCES.greenCheck())); } |