ChangeScreen2: Display cherry-picked changes
Under related changes cherry-picked changes are now shown in an own tab. The tab is only visible if the change has cherry-picked changes. Change-Id: I54057dda8f40bcbfd04d19df06e6fb41c0273859 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
@@ -32,5 +32,7 @@ interface Constants extends com.google.gwt.i18n.client.Constants {
|
||||
String relatedChangesTooltip();
|
||||
String conflictingChanges();
|
||||
String conflictingChangesTooltip();
|
||||
String cherryPicks();
|
||||
String cherryPicksTooltip();
|
||||
String noChanges();
|
||||
}
|
||||
|
||||
@@ -15,4 +15,6 @@ relatedChanges = Related Changes
|
||||
relatedChangesTooltip = Same branch changes connected by Git history
|
||||
conflictingChanges = Conflicts With
|
||||
conflictingChangesTooltip = Open changes that conflict with this change
|
||||
cherryPicks = Cherry-Picks
|
||||
cherryPicksTooltip = Changes with the same Change-Id
|
||||
noChanges = No Changes
|
||||
|
||||
@@ -19,4 +19,6 @@ public interface Messages extends com.google.gwt.i18n.client.Messages {
|
||||
String relatedChanges(String count);
|
||||
String conflictingChanges(int count);
|
||||
String conflictingChanges(String count);
|
||||
String cherryPicks(int count);
|
||||
String cherryPicks(String count);
|
||||
}
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
relatedChanges = Related Changes ({0})
|
||||
conflictingChanges = Conflicts With ({0})
|
||||
cherryPicks = Cherry-Picks ({0})
|
||||
|
||||
@@ -40,19 +40,22 @@ import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
class RelatedChanges extends TabPanel {
|
||||
private static final int RELATED_CHANGES = 0;
|
||||
|
||||
private List<RelatedChangesTab> tabs;
|
||||
private RelatedChangesTab relatedChangesTab;
|
||||
private RelatedChangesTab conflictingChangesTab;
|
||||
private RelatedChangesTab cherryPicksTab;
|
||||
private int maxHeight;
|
||||
private int selectedTab;
|
||||
|
||||
RelatedChanges() {
|
||||
setVisible(false);
|
||||
|
||||
tabs = new ArrayList<RelatedChangesTab>();
|
||||
addStyleName(Gerrit.RESOURCES.css().relatedChangesTabPanel());
|
||||
}
|
||||
|
||||
private RelatedChangesTab createTab(String title, String tooltip) {
|
||||
setVisible(true);
|
||||
FlowPanel panel = new FlowPanel();
|
||||
add(panel, title);
|
||||
selectedTab = -1;
|
||||
@@ -77,6 +80,9 @@ class RelatedChanges extends TabPanel {
|
||||
new RelatedChangesTab(this, index, panel);
|
||||
tabs.add(relatedChangesTab);
|
||||
relatedChangesTab.setMaxHeight(maxHeight);
|
||||
if (index == 0) {
|
||||
selectTab(0);
|
||||
}
|
||||
return relatedChangesTab;
|
||||
}
|
||||
|
||||
@@ -85,29 +91,62 @@ class RelatedChanges extends TabPanel {
|
||||
}
|
||||
|
||||
void set(final ChangeInfo info, final String revision) {
|
||||
if (info.status().isClosed()) {
|
||||
setVisible(false);
|
||||
return;
|
||||
if (info.status().isOpen()) {
|
||||
setForOpenChange(info, revision);
|
||||
}
|
||||
|
||||
createTab(Resources.C.relatedChanges(),
|
||||
StringBuilder cherryPicksQuery = new StringBuilder();
|
||||
cherryPicksQuery.append(" project:").append(info.project());
|
||||
cherryPicksQuery.append(" change:").append(info.change_id());
|
||||
cherryPicksQuery.append(" -change:").append(info.legacy_id().get());
|
||||
ChangeList.query(cherryPicksQuery.toString(),
|
||||
EnumSet.of(ListChangesOption.CURRENT_REVISION, ListChangesOption.CURRENT_COMMIT),
|
||||
new AsyncCallback<ChangeList>() {
|
||||
@Override
|
||||
public void onSuccess(ChangeList result) {
|
||||
if (result.length() > 0) {
|
||||
getTab().setTitle(Resources.M.cherryPicks(result.length()));
|
||||
getTab().setChanges(info.project(), revision,
|
||||
convertChangeList(result));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable err) {
|
||||
getTab().setTitle(
|
||||
Resources.M.cherryPicks(Resources.C.notAvailable()));
|
||||
getTab().setError(err.getMessage());
|
||||
}
|
||||
|
||||
private RelatedChangesTab getTab() {
|
||||
if (cherryPicksTab == null) {
|
||||
cherryPicksTab =
|
||||
createTab(Resources.C.cherryPicks(),
|
||||
Resources.C.cherryPicksTooltip());
|
||||
cherryPicksTab.setShowBranches(true);
|
||||
}
|
||||
return cherryPicksTab;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setForOpenChange(final ChangeInfo info, final String revision) {
|
||||
relatedChangesTab = createTab(Resources.C.relatedChanges(),
|
||||
Resources.C.relatedChangesTooltip());
|
||||
selectTab(RELATED_CHANGES);
|
||||
|
||||
ChangeApi.revision(info.legacy_id().get(), revision).view("related")
|
||||
.get(new AsyncCallback<RelatedInfo>() {
|
||||
@Override
|
||||
public void onSuccess(RelatedInfo result) {
|
||||
RelatedChangesTab tab = tabs.get(RELATED_CHANGES);
|
||||
tab.setTitle(Resources.M.relatedChanges(result.changes().length()));
|
||||
tab.setChanges(info.project(), revision, result.changes());
|
||||
relatedChangesTab.setTitle(Resources.M.relatedChanges(result.changes().length()));
|
||||
relatedChangesTab.setChanges(info.project(), revision, result.changes());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable err) {
|
||||
RelatedChangesTab tab = tabs.get(RELATED_CHANGES);
|
||||
tab.setTitle(Resources.M.relatedChanges(Resources.C.notAvailable()));
|
||||
tab.setError(err.getMessage());
|
||||
relatedChangesTab.setTitle(
|
||||
Resources.M.relatedChanges(Resources.C.notAvailable()));
|
||||
relatedChangesTab.setError(err.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -160,6 +199,7 @@ class RelatedChanges extends TabPanel {
|
||||
c.set_commit(currentRevision.commit());
|
||||
c.set_change_number(i.legacy_id().get());
|
||||
c.set_revision_number(currentRevision._number());
|
||||
c.set_branch(i.branch());
|
||||
arr.push(c);
|
||||
}
|
||||
return arr;
|
||||
@@ -178,6 +218,7 @@ class RelatedChanges extends TabPanel {
|
||||
|
||||
final native String id() /*-{ return this.change_id }-*/;
|
||||
final native CommitInfo commit() /*-{ return this.commit }-*/;
|
||||
final native String branch() /*-{ return this.branch }-*/;
|
||||
|
||||
final native void set_id(String i)
|
||||
/*-{ if(i)this.change_id=i; }-*/;
|
||||
@@ -185,6 +226,9 @@ class RelatedChanges extends TabPanel {
|
||||
final native void set_commit(CommitInfo c)
|
||||
/*-{ if(c)this.commit=c; }-*/;
|
||||
|
||||
final native void set_branch(String b)
|
||||
/*-{ if(b)this.branch=b; }-*/;
|
||||
|
||||
final Change.Id legacy_id() {
|
||||
return has_change_number() ? new Change.Id(_change_number()) : null;
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@ class RelatedChangesTab {
|
||||
private final ProgressBar progress;
|
||||
|
||||
private String project;
|
||||
private boolean showBranches;
|
||||
private MyTable table;
|
||||
private boolean register;
|
||||
|
||||
@@ -101,6 +102,10 @@ class RelatedChangesTab {
|
||||
parent.setTabTitle(index, title);
|
||||
}
|
||||
|
||||
void setShowBranches(boolean showBranches) {
|
||||
this.showBranches = showBranches;
|
||||
}
|
||||
|
||||
void setChanges(String project, String revision, JsArray<ChangeAndCommit> changes) {
|
||||
this.project = project;
|
||||
render(revision, changes);
|
||||
@@ -264,7 +269,8 @@ class RelatedChangesTab {
|
||||
if (url.startsWith("#")) {
|
||||
sb.setAttribute("onclick", OPEN + "(event," + row + ")");
|
||||
}
|
||||
sb.append(info.commit().subject());
|
||||
sb.append(info.commit().subject()
|
||||
+ (showBranches ? " (" + info.branch() + ")" : ""));
|
||||
sb.closeAnchor();
|
||||
} else {
|
||||
sb.append(info.commit().subject());
|
||||
|
||||
Reference in New Issue
Block a user