Merge "Add uploader to change screen if different from change owner"

This commit is contained in:
Edwin Kempin
2015-10-13 09:57:14 +00:00
committed by Gerrit Code Review
3 changed files with 45 additions and 8 deletions

View File

@@ -296,6 +296,7 @@ public class ChangeInfo extends JavaScriptObject {
public final native int _number() /*-{ return this._number; }-*/;
public final native String name() /*-{ return this.name; }-*/;
public final native boolean draft() /*-{ return this.draft || false; }-*/;
public final native AccountInfo uploader() /*-{ return this.uploader; }-*/;
public final native boolean isEdit() /*-{ return this._number == 0; }-*/;
public final native CommitInfo commit() /*-{ return this.commit; }-*/;
public final native void setCommit(CommitInfo c) /*-{ this.commit = c; }-*/;

View File

@@ -28,6 +28,7 @@ import com.google.gerrit.client.changes.RevisionInfoCache;
import com.google.gerrit.client.changes.StarredChanges;
import com.google.gerrit.client.changes.Util;
import com.google.gerrit.client.diff.DiffApi;
import com.google.gerrit.client.info.AccountInfo;
import com.google.gerrit.client.info.AccountInfo.AvatarInfo;
import com.google.gerrit.client.info.ActionInfo;
import com.google.gerrit.client.info.ChangeInfo;
@@ -66,6 +67,7 @@ import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.dom.client.SelectElement;
import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@@ -86,6 +88,7 @@ import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.SimplePanel;
@@ -163,6 +166,9 @@ public class ChangeScreen extends Screen {
@UiField Element hashtagTableRow;
@UiField FlowPanel ownerPanel;
@UiField InlineHyperlink ownerLink;
@UiField Element uploaderRow;
@UiField FlowPanel uploaderPanel;
@UiField InlineLabel uploaderName;
@UiField Element statusText;
@UiField Image projectSettings;
@UiField AnchorElement projectSettingsLink;
@@ -1146,6 +1152,7 @@ public class ChangeScreen extends Screen {
labels.set(info);
renderOwner(info);
renderUploader(info, revision);
renderActionTextDate(info);
renderDiffBaseListBox(info);
initReplyButton(info, revision);
@@ -1231,17 +1238,12 @@ public class ChangeScreen extends Screen {
private void renderOwner(ChangeInfo info) {
// TODO info card hover
String name = info.owner().name() != null
? info.owner().name()
: Gerrit.info().user().anonymousCowardName();
String name = name(info.owner());
if (info.owner().avatar(AvatarInfo.DEFAULT_SIZE) != null) {
ownerPanel.insert(new AvatarImage(info.owner()), 0);
}
ownerLink.setText(name);
ownerLink.setTitle(info.owner().email() != null
? info.owner().email()
: name);
ownerLink.setTitle(email(info.owner(), name));
ownerLink.setTargetHistoryToken(PageLinks.toAccountQuery(
info.owner().name() != null
? info.owner().name()
@@ -1250,6 +1252,32 @@ public class ChangeScreen extends Screen {
: String.valueOf(info.owner()._accountId()), Change.Status.NEW));
}
private void renderUploader(ChangeInfo info, String revision) {
AccountInfo uploader = info.revision(revision).uploader();
if (uploader._accountId() == info.owner()._accountId()) {
uploaderRow.getStyle().setDisplay(Display.NONE);
return;
}
uploaderRow.getStyle().setDisplay(Display.TABLE_ROW);
if (uploader.avatar(AvatarInfo.DEFAULT_SIZE) != null) {
uploaderPanel.insert(new AvatarImage(uploader), 0);
}
String name = name(uploader);
uploaderName.setText(name);
uploaderName.setTitle(email(uploader, name));
}
private static String name(AccountInfo info) {
return info.name() != null
? info.name()
: Gerrit.info().user().anonymousCowardName();
}
private static String email(AccountInfo info, String name) {
return info.email() != null ? info.email() : name;
}
private void renderSubmitType(String action) {
try {
SubmitType type = SubmitType.valueOf(action);

View File

@@ -315,7 +315,7 @@ limitations under the License.
background-color: trimColor;
}
.ownerPanel img {
.ownerPanel img, .uploaderPanel img {
margin: 0 2px 0 0;
width: 16px;
height: 16px !important;
@@ -421,6 +421,14 @@ limitations under the License.
</g:FlowPanel>
</td>
</tr>
<tr ui:field='uploaderRow'>
<th><ui:msg>Uploader</ui:msg></th>
<td>
<g:FlowPanel ui:field='uploaderPanel' styleName='{style.uploaderPanel}'>
<g:InlineLabel ui:field='uploaderName'/>
</g:FlowPanel>
</td>
</tr>
<tr>
<th><ui:msg>Reviewers</ui:msg></th>
<td>