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.ScreenLoadCallback;
|
||||
import com.google.gerrit.client.ui.AccountScreen;
|
||||
import com.google.gerrit.client.ui.NavigationTable;
|
||||
import com.google.gerrit.client.ui.SmallHeading;
|
||||
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.Button;
|
||||
import com.google.gwt.user.client.ui.Hyperlink;
|
||||
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 java.util.List;
|
||||
@@ -58,7 +53,7 @@ public class GroupListScreen extends AccountScreen {
|
||||
super.onInitUI();
|
||||
setPageTitle(Util.C.groupListTitle());
|
||||
|
||||
groups = new GroupTable();
|
||||
groups = new GroupTable(Link.ADMIN_GROUPS);
|
||||
add(groups);
|
||||
|
||||
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