Merge "Allow users of ChangeTable to control styling of change rows" into stable-2.5

This commit is contained in:
Shawn Pearce
2012-09-16 12:02:33 -07:00
committed by gerrit code review
2 changed files with 54 additions and 9 deletions

View File

@@ -183,6 +183,23 @@ public class ChangeScreen extends Screen
} }
}; };
dependsOn = new ChangeTable.Section(Util.C.changeScreenDependsOn()); dependsOn = new ChangeTable.Section(Util.C.changeScreenDependsOn());
dependsOn.setChangeRowFormatter(new ChangeTable.ChangeRowFormatter() {
@Override
public String getRowStyle(ChangeInfo c) {
if (! c.isLatest() || Change.Status.ABANDONED.equals(c.getStatus())) {
return Gerrit.RESOURCES.css().outdated();
}
return null;
}
@Override
public String getDisplayText(final ChangeInfo c, final String displayText) {
if (! c.isLatest()) {
return displayText + " [OUTDATED]";
}
return displayText;
}
});
neededBy = new ChangeTable.Section(Util.C.changeScreenNeededBy()); neededBy = new ChangeTable.Section(Util.C.changeScreenNeededBy());
dependencies.addSection(dependsOn); dependencies.addSection(dependsOn);
dependencies.addSection(neededBy); dependencies.addSection(neededBy);

View File

@@ -191,7 +191,8 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
} }
} }
private void populateChangeRow(final int row, final ChangeInfo c) { private void populateChangeRow(final int row, final ChangeInfo c,
final ChangeRowFormatter changeRowFormatter) {
ChangeCache cache = ChangeCache.get(c.getId()); ChangeCache cache = ChangeCache.get(c.getId());
cache.getChangeInfoCache().set(c); cache.getChangeInfoCache().set(c);
@@ -206,13 +207,12 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
if (c.getStatus() != null && c.getStatus() != Change.Status.NEW) { if (c.getStatus() != null && c.getStatus() != Change.Status.NEW) {
s += " (" + c.getStatus().name() + ")"; s += " (" + c.getStatus().name() + ")";
} }
if (! c.isLatest()) { if (changeRowFormatter != null) {
s += " [OUTDATED]"; final String rowStyle = changeRowFormatter.getRowStyle(c);
table.getRowFormatter().addStyleName(row, Gerrit.RESOURCES.css().outdated()); if (rowStyle != null) {
} else if (Change.Status.ABANDONED.equals(c.getStatus())) { table.getRowFormatter().addStyleName(row, rowStyle);
table.getRowFormatter().addStyleName(row, Gerrit.RESOURCES.css().outdated()); }
} else { s = changeRowFormatter.getDisplayText(c, s);
table.getRowFormatter().removeStyleName(row, Gerrit.RESOURCES.css().outdated());
} }
table.setWidget(row, C_SUBJECT, new TableChangeLink(s, c)); table.setWidget(row, C_SUBJECT, new TableChangeLink(s, c));
@@ -222,6 +222,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
table.setWidget(row, C_BRANCH, new BranchLink(c.getProject().getKey(), c table.setWidget(row, C_BRANCH, new BranchLink(c.getProject().getKey(), c
.getStatus(), c.getBranch(), c.getTopic())); .getStatus(), c.getBranch(), c.getTopic()));
table.setText(row, C_LAST_UPDATE, shortFormat(c.getLastUpdatedOn())); table.setText(row, C_LAST_UPDATE, shortFormat(c.getLastUpdatedOn()));
setRowItem(row, c); setRowItem(row, c);
} }
@@ -418,6 +419,8 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
int dataBegin; int dataBegin;
int rows; int rows;
private ChangeRowFormatter changeRowFormatter;
public Section() { public Section() {
this(null, ApprovalViewType.NONE, null); this(null, ApprovalViewType.NONE, null);
} }
@@ -440,6 +443,10 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
} }
} }
public void setChangeRowFormatter(final ChangeRowFormatter changeRowFormatter) {
this.changeRowFormatter = changeRowFormatter;
}
public void display(final List<ChangeInfo> changeList) { public void display(final List<ChangeInfo> changeList) {
final int sz = changeList != null ? changeList.size() : 0; final int sz = changeList != null ? changeList.size() : 0;
final boolean hadData = rows > 0; final boolean hadData = rows > 0;
@@ -469,7 +476,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
for (int i = 0; i < sz; i++) { for (int i = 0; i < sz; i++) {
ChangeInfo c = changeList.get(i); ChangeInfo c = changeList.get(i);
parent.populateChangeRow(dataBegin + i, c); parent.populateChangeRow(dataBegin + i, c, changeRowFormatter);
cids.add(c.getId()); cids.add(c.getId());
} }
@@ -488,4 +495,25 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
} }
} }
} }
public static interface ChangeRowFormatter {
/**
* Returns the name of the CSS style that should be applied to the change
* row.
*
* @param c the change for which the styling should be returned
* @return the name of the CSS style that should be applied to the change
* row
*/
String getRowStyle(ChangeInfo c);
/**
* Returns the text that should be displayed for the change.
*
* @param c the change for which the display text should be returned
* @param displayText the current display text
* @return the new display text
*/
String getDisplayText(ChangeInfo c, String displayText);
}
} }