Refactor GroupListScreen's inner table for reuse
This allows us to reuse this listing in another context to list group objects by name, and include their description. Change-Id: Iedb8a573f6758d5876373049e94d97d7c998bc99 Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
@@ -19,17 +19,12 @@ import com.google.gerrit.client.reviewdb.AccountGroup;
|
|||||||
import com.google.gerrit.client.rpc.GerritCallback;
|
import com.google.gerrit.client.rpc.GerritCallback;
|
||||||
import com.google.gerrit.client.rpc.ScreenLoadCallback;
|
import com.google.gerrit.client.rpc.ScreenLoadCallback;
|
||||||
import com.google.gerrit.client.ui.AccountScreen;
|
import com.google.gerrit.client.ui.AccountScreen;
|
||||||
import com.google.gerrit.client.ui.NavigationTable;
|
|
||||||
import com.google.gerrit.client.ui.SmallHeading;
|
import com.google.gerrit.client.ui.SmallHeading;
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
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.History;
|
||||||
import com.google.gwt.user.client.ui.Button;
|
import com.google.gwt.user.client.ui.Button;
|
||||||
import com.google.gwt.user.client.ui.Hyperlink;
|
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
|
|
||||||
import com.google.gwt.user.client.ui.HTMLTable.Cell;
|
|
||||||
import com.google.gwtexpui.globalkey.client.NpTextBox;
|
import com.google.gwtexpui.globalkey.client.NpTextBox;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -58,7 +53,7 @@ public class GroupListScreen extends AccountScreen {
|
|||||||
super.onInitUI();
|
super.onInitUI();
|
||||||
setPageTitle(Util.C.groupListTitle());
|
setPageTitle(Util.C.groupListTitle());
|
||||||
|
|
||||||
groups = new GroupTable();
|
groups = new GroupTable(Link.ADMIN_GROUPS);
|
||||||
add(groups);
|
add(groups);
|
||||||
|
|
||||||
final VerticalPanel fp = new VerticalPanel();
|
final VerticalPanel fp = new VerticalPanel();
|
||||||
@@ -98,67 +93,4 @@ public class GroupListScreen extends AccountScreen {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private class GroupTable extends NavigationTable<AccountGroup> {
|
|
||||||
GroupTable() {
|
|
||||||
setSavePointerId(Link.ADMIN_GROUPS);
|
|
||||||
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.addClickHandler(new ClickHandler() {
|
|
||||||
@Override
|
|
||||||
public void onClick(ClickEvent event) {
|
|
||||||
final Cell cell = table.getCellForEvent(event);
|
|
||||||
if (cell != null && cell.getCellIndex() != 1
|
|
||||||
&& getRowItem(cell.getRowIndex()) != null) {
|
|
||||||
movePointerTo(cell.getRowIndex());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
|
||||||
fmt.addStyleName(0, 1, S_DATA_HEADER);
|
|
||||||
fmt.addStyleName(0, 2, S_DATA_HEADER);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Object getRowItemKey(final AccountGroup item) {
|
|
||||||
return item.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onOpenRow(final int row) {
|
|
||||||
History.newItem(Link.toAccountGroup(getRowItem(row).getId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void display(final List<AccountGroup> result) {
|
|
||||||
while (1 < table.getRowCount())
|
|
||||||
table.removeRow(table.getRowCount() - 1);
|
|
||||||
|
|
||||||
for (final AccountGroup k : result) {
|
|
||||||
final int row = table.getRowCount();
|
|
||||||
table.insertRow(row);
|
|
||||||
applyDataRowStyle(row);
|
|
||||||
populate(row, k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void populate(final int row, final AccountGroup k) {
|
|
||||||
table.setWidget(row, 1, new Hyperlink(k.getName(), Link.toAccountGroup(k
|
|
||||||
.getId())));
|
|
||||||
table.setText(row, 2, k.getDescription());
|
|
||||||
|
|
||||||
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
|
||||||
fmt.addStyleName(row, 1, S_DATA_CELL);
|
|
||||||
fmt.addStyleName(row, 1, "GroupName");
|
|
||||||
fmt.addStyleName(row, 2, S_DATA_CELL);
|
|
||||||
|
|
||||||
setRowItem(row, k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
96
src/main/java/com/google/gerrit/client/admin/GroupTable.java
Normal file
96
src/main/java/com/google/gerrit/client/admin/GroupTable.java
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
// Copyright (C) 2008 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.admin;
|
||||||
|
|
||||||
|
import com.google.gerrit.client.Link;
|
||||||
|
import com.google.gerrit.client.reviewdb.AccountGroup;
|
||||||
|
import com.google.gerrit.client.ui.NavigationTable;
|
||||||
|
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.Hyperlink;
|
||||||
|
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
|
||||||
|
import com.google.gwt.user.client.ui.HTMLTable.Cell;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public class GroupTable extends NavigationTable<AccountGroup> {
|
||||||
|
public GroupTable() {
|
||||||
|
this(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupTable(final String pointerId) {
|
||||||
|
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.addClickHandler(new ClickHandler() {
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
final Cell cell = table.getCellForEvent(event);
|
||||||
|
if (cell != null && cell.getCellIndex() != 1
|
||||||
|
&& getRowItem(cell.getRowIndex()) != null) {
|
||||||
|
movePointerTo(cell.getRowIndex());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
||||||
|
fmt.addStyleName(0, 1, S_DATA_HEADER);
|
||||||
|
fmt.addStyleName(0, 2, S_DATA_HEADER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object getRowItemKey(final AccountGroup item) {
|
||||||
|
return item.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onOpenRow(final int row) {
|
||||||
|
History.newItem(Link.toAccountGroup(getRowItem(row).getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void display(final List<AccountGroup> result) {
|
||||||
|
while (1 < table.getRowCount())
|
||||||
|
table.removeRow(table.getRowCount() - 1);
|
||||||
|
|
||||||
|
for (final AccountGroup k : result) {
|
||||||
|
final int row = table.getRowCount();
|
||||||
|
table.insertRow(row);
|
||||||
|
applyDataRowStyle(row);
|
||||||
|
populate(row, k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void populate(final int row, final AccountGroup k) {
|
||||||
|
table.setWidget(row, 1, new Hyperlink(k.getName(), Link.toAccountGroup(k
|
||||||
|
.getId())));
|
||||||
|
table.setText(row, 2, k.getDescription());
|
||||||
|
|
||||||
|
final FlexCellFormatter fmt = table.getFlexCellFormatter();
|
||||||
|
fmt.addStyleName(row, 1, S_DATA_CELL);
|
||||||
|
fmt.addStyleName(row, 1, "GroupName");
|
||||||
|
fmt.addStyleName(row, 2, S_DATA_CELL);
|
||||||
|
|
||||||
|
setRowItem(row, k);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user