Refactor highlighting patch sets that have drafts

As suggested in the comments under change
I537db90a940c9df7c4b7c28974adac5b29c8abf4:
- Remove an unrelated field from a PatchSet entity class
- Remove highlighting of the patch set label
- Add a "comment" icon to a patch set header to indicate that it has draft
  comment(s)

Bug: Issue 667
Change-Id: Ie37be962ecb7beb82e85174492e154db9df6175c
(cherry picked from commit 61e18b0595)
This commit is contained in:
Jan Opacki 2013-05-05 15:35:25 +02:00 committed by David Pursehouse
parent 2c7acce786
commit 9b42620385
11 changed files with 39 additions and 29 deletions

View File

@ -20,6 +20,7 @@ import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import java.util.List;
import java.util.Set;
/** Detail necessary to display a change. */
public class ChangeDetail {
@ -37,6 +38,7 @@ public class ChangeDetail {
protected List<ChangeInfo> dependsOn;
protected List<ChangeInfo> neededBy;
protected List<PatchSet> patchSets;
protected Set<PatchSet.Id> patchSetsWithDraftComments;
protected List<SubmitRecord> submitRecords;
protected Project.SubmitType submitType;
protected SubmitTypeRecord submitTypeRecord;
@ -187,6 +189,14 @@ public class ChangeDetail {
patchSets = s;
}
public void setPatchSetsWithDraftComments(Set<PatchSet.Id> pwdc) {
this.patchSetsWithDraftComments = pwdc;
}
public boolean hasDraftComments(PatchSet.Id id) {
return patchSetsWithDraftComments.contains(id);
}
public void setSubmitRecords(List<SubmitRecord> all) {
submitRecords = all;
}

View File

@ -178,7 +178,6 @@ public interface GerritCss extends CssResource {
String patchSetLink();
String patchSetRevision();
String patchSetUserIdentity();
String patchSetWithDraft();
String patchSizeCell();
String pluginsTable();
String posscore();

View File

@ -54,4 +54,7 @@ public interface GerritResources extends ClientBundle {
@Source("diffy.png")
public ImageResource gerritAvatar();
@Source("draftComments.png")
public ImageResource draftComments();
}

View File

@ -123,6 +123,7 @@ public interface ChangeConstants extends Constants {
String patchSetInfoCommitter();
String patchSetInfoDownload();
String patchSetInfoParents();
String patchSetWithDraftCommentsToolTip();
String initialCommit();
String buttonRebaseChange();

View File

@ -100,6 +100,7 @@ patchSetInfoAuthor = Author
patchSetInfoCommitter = Committer
patchSetInfoDownload = Download
patchSetInfoParents = Parent(s)
patchSetWithDraftCommentsToolTip = Draft comment(s) inside
initialCommit = Initial Commit
buttonAbandonChangeBegin = Abandon Change

View File

@ -45,6 +45,7 @@ import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FocusWidget;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.Panel;
@ -78,7 +79,8 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel
* Creates a closed complex disclosure panel for a patch set.
* The patch set details are loaded when the complex disclosure panel is opened.
*/
public PatchSetComplexDisclosurePanel(final PatchSet ps, boolean isOpen) {
public PatchSetComplexDisclosurePanel(final PatchSet ps, boolean isOpen,
boolean hasDraftComments) {
super(Util.M.patchSetHeader(ps.getPatchSetId()), isOpen);
detailCache = ChangeCache.get(ps.getId().getParentKey()).getChangeDetailCache();
changeDetail = detailCache.get();
@ -87,6 +89,12 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel
body = new FlowPanel();
setContent(body);
if (hasDraftComments) {
final Image draftComments = new Image(Gerrit.RESOURCES.draftComments());
draftComments.setTitle(Util.C.patchSetWithDraftCommentsToolTip());
getHeader().add(draftComments);
}
final GitwebLink gw = Gerrit.getGitwebLink();
final InlineLabel revtxt = new InlineLabel(ps.getRevision().get() + " ");
revtxt.addStyleName(Gerrit.RESOURCES.css().patchSetRevision());
@ -111,10 +119,6 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel
addOpenHandler(this);
}
if(ps.getHasDraftComments()) {
addStyleName(Gerrit.RESOURCES.css().patchSetWithDraft());
}
}
public void setDiffBaseId(PatchSet.Id diffBaseId) {

View File

@ -88,7 +88,8 @@ public class PatchSetsBlock extends Composite {
for (final PatchSet ps : patchSets) {
final PatchSetComplexDisclosurePanel p =
new PatchSetComplexDisclosurePanel(ps, ps == currps);
new PatchSetComplexDisclosurePanel(ps, ps == currps,
detail.hasDraftComments(ps.getId()));
if (diffBaseId != null) {
p.setDiffBaseId(diffBaseId);
if (ps == currps) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

View File

@ -887,10 +887,6 @@ a:hover {
font-size: 8pt;
}
.patchSetWithDraft .header td {
color: #ff5555;
}
.changeScreen .gwt-DisclosurePanel .content {
margin-bottom: 10px;
}

View File

@ -177,19 +177,25 @@ public class ChangeDetailFactory extends Handler<ChangeDetail> {
private void loadPatchSets() throws OrmException {
ResultSet<PatchSet> source = db.patchSets().byChange(changeId);
List<PatchSet> patches = new ArrayList<PatchSet>();
Set<PatchSet.Id> patchesWithDraftComments = new HashSet<PatchSet.Id>();
final CurrentUser user = control.getCurrentUser();
final Account.Id me =
user instanceof IdentifiedUser ? ((IdentifiedUser) user).getAccountId()
: null;
for (PatchSet ps : source) {
final CurrentUser user = control.getCurrentUser();
if (user instanceof IdentifiedUser) {
final Account.Id me = ((IdentifiedUser) user).getAccountId();
ps.setHasDraftComments(db.patchComments()
.draftByPatchSetAuthor(ps.getId(), me).iterator().hasNext());
}
final PatchSet.Id psId = ps.getId();
if (control.isPatchVisible(ps, db)) {
patches.add(ps);
if (me != null
&& db.patchComments().draftByPatchSetAuthor(psId, me)
.iterator().hasNext()) {
patchesWithDraftComments.add(psId);
}
}
patchsetsById.put(ps.getId(), ps);
patchsetsById.put(psId, ps);
}
detail.setPatchSets(patches);
detail.setPatchSetsWithDraftComments(patchesWithDraftComments);
}
private void loadMessages() throws OrmException {

View File

@ -136,9 +136,6 @@ public final class PatchSet {
@Column(id = 5)
protected boolean draft;
/** Not persisted in the database */
protected boolean hasDraftComments;
protected PatchSet() {
}
@ -190,14 +187,6 @@ public final class PatchSet {
return id.toRefName();
}
public boolean getHasDraftComments() {
return hasDraftComments;
}
public void setHasDraftComments(boolean hasDraftComments) {
this.hasDraftComments = hasDraftComments;
}
@Override
public String toString() {
return "[PatchSet " + getId().toString() + "]";