summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetComplexDisclosurePanel.java74
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetsBlock.java20
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java45
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/TopicScreen.java7
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java34
5 files changed, 90 insertions, 90 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetComplexDisclosurePanel.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetComplexDisclosurePanel.java
index 2ba5201d55..d904f82770 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetComplexDisclosurePanel.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetComplexDisclosurePanel.java
@@ -14,7 +14,6 @@
package com.google.gerrit.client.changes;
-import com.google.gerrit.client.Dispatcher;
import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.changes.ChangeTable.ApprovalViewType;
import com.google.gerrit.client.rpc.GerritCallback;
@@ -35,8 +34,8 @@ import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Grid;
-import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
+import com.google.gwt.user.client.ui.Panel;
import java.util.ArrayList;
import java.util.List;
@@ -57,6 +56,8 @@ class ChangeSetComplexDisclosurePanel extends CommonComplexDisclosurePanel {
protected Hyperlink next;
private ChangeSet.Id diffBaseId;
+ Button stageChangeSetButton;
+ Button submitChangeSetButton;
/**
* Creates a closed complex disclosure panel for a change set.
@@ -129,7 +130,6 @@ class ChangeSetComplexDisclosurePanel extends CommonComplexDisclosurePanel {
actionsPanel.setStyleName(Gerrit.RESOURCES.css().patchSetActions());
body.add(actionsPanel);
if (Gerrit.isSignedIn()) {
- populateReviewAction();
if (topicDetail.isCurrentChangeSet(detail)) {
populateActions(detail);
}
@@ -168,14 +168,16 @@ class ChangeSetComplexDisclosurePanel extends CommonComplexDisclosurePanel {
private void populateActions(final ChangeSetDetail detail) {
final boolean isOpen = topicDetail.getTopic().getStatus().isOpen();
final boolean isNew = topicDetail.getTopic().getStatus() == Status.NEW;
+
if (isOpen && isNew && topicDetail.canStage()) {
- final Button b =
+
+ stageChangeSetButton =
new Button(Util.TM
.stageChangeSet(detail.getChangeSet().getChangeSetId()));
- b.addClickHandler(new ClickHandler() {
+ stageChangeSetButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
- b.setEnabled(false);
+ stageChangeSetButton.setEnabled(false);
Util.T_MANAGE_SVC.stage(changeSet.getId(),
new GerritCallback<TopicDetail>() {
@Override
@@ -185,23 +187,22 @@ class ChangeSetComplexDisclosurePanel extends CommonComplexDisclosurePanel {
@Override
public void onFailure(Throwable caught) {
- b.setEnabled(true);
super.onFailure(caught);
}
});
}
});
- actionsPanel.add(b);
+ actionsPanel.add(stageChangeSetButton);
}
if (isOpen && topicDetail.canSubmit()) {
- final Button b =
+ submitChangeSetButton =
new Button(Util.TM
.submitChangeSet(detail.getChangeSet().getChangeSetId()));
- b.addClickHandler(new ClickHandler() {
+ submitChangeSetButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
- b.setEnabled(false);
+ submitChangeSetButton.setEnabled(false);
Util.T_MANAGE_SVC.submit(changeSet.getId(),
new GerritCallback<TopicDetail>() {
public void onSuccess(TopicDetail result) {
@@ -210,13 +211,12 @@ class ChangeSetComplexDisclosurePanel extends CommonComplexDisclosurePanel {
@Override
public void onFailure(Throwable caught) {
- b.setEnabled(true);
super.onFailure(caught);
}
});
}
});
- actionsPanel.add(b);
+ actionsPanel.add(submitChangeSetButton);
}
if (topicDetail.canRevert()) {
@@ -297,30 +297,6 @@ class ChangeSetComplexDisclosurePanel extends CommonComplexDisclosurePanel {
}
}
- private void populateReviewAction() {
- final Button b = new Button(Util.TC.buttonReview());
- b.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- boolean integrating = false;
- for (Change change : topicDetail.getCurrentChangeSetDetail().getChanges()) {
- if (change.getStatus() == Status.INTEGRATING) {
- integrating = true;
- break;
- }
- }
- if (integrating) {
- alertMessageBox(Util.C.headingReviewDisabled(),
- Util.C.messageReviewDisabled())
- .center();
- } else {
- Gerrit.display(Dispatcher.toPublish(changeSet.getId()));
- }
- }
- });
- actionsPanel.add(b);
- }
-
public void refresh() {
Util.T_DETAIL_SVC.changeSetDetail(changeSet.getId(),
new GerritCallback<ChangeSetDetail>() {
@@ -398,4 +374,28 @@ class ChangeSetComplexDisclosurePanel extends CommonComplexDisclosurePanel {
}
};
}
+
+ /**
+ * topicDetail callback that updates status for the
+ * submitChangeSetButton and stageChangeSetButton
+ */
+ public void topicDetailCallback() {
+ Util.T_DETAIL_SVC.topicDetail(topicDetail.getTopic().getId(), new GerritCallback<TopicDetail>() {
+ public void onSuccess(TopicDetail result) {
+
+ if(changeTable.getChangeSetIsReviewed()){
+ submitChangeSetButton.setEnabled(true);
+ stageChangeSetButton.setEnabled(true);
+ }else{
+ submitChangeSetButton.setEnabled(false);
+ stageChangeSetButton.setEnabled(false);
+ }
+ }
+
+ public void onFailure(Throwable caught) {
+ submitChangeSetButton.setEnabled(false);
+ stageChangeSetButton.setEnabled(false);
+ }
+ });
+ }
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetsBlock.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetsBlock.java
index aa3c945dd8..3d75b2c363 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetsBlock.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeSetsBlock.java
@@ -65,6 +65,8 @@ public class ChangeSetsBlock extends Composite {
/** Change sets on this topic, in order. */
private List<ChangeSet> changeSets;
+ private ChangeSetComplexDisclosurePanel changeSetCmlxDiscPanel;
+
ChangeSetsBlock(final TopicScreen parent) {
this.parent = parent;
body = new FlowPanel();
@@ -97,15 +99,14 @@ public class ChangeSetsBlock extends Composite {
changeSetPanelsList = new ArrayList<ChangeSetComplexDisclosurePanel>();
for (final ChangeSet cs : changeSets) {
- final ChangeSetComplexDisclosurePanel p;
if (cs == currcs) {
- p = new ChangeSetComplexDisclosurePanel(parent, detail, detail.getCurrentChangeSetDetail());
+ changeSetCmlxDiscPanel = new ChangeSetComplexDisclosurePanel(parent, detail, detail.getCurrentChangeSetDetail());
} else {
- p = new ChangeSetComplexDisclosurePanel(parent, detail, cs);
+ changeSetCmlxDiscPanel = new ChangeSetComplexDisclosurePanel(parent, detail, cs);
}
- add(p);
- changeSetPanelsList.add(p);
+ add(changeSetCmlxDiscPanel);
+ changeSetPanelsList.add(changeSetCmlxDiscPanel);
}
}
@@ -271,4 +272,13 @@ public class ChangeSetsBlock extends Composite {
}
}
}
+
+ /**
+ * Update the enable/disable status for the
+ * submitChangeSetButton and stageChangeSetButton
+ */
+ public void updateButtons() {
+ changeSetCmlxDiscPanel.topicDetailCallback();
+
+ }
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
index 85ef39e76e..ca3bb40d2a 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeTable.java
@@ -22,8 +22,8 @@ import com.google.gerrit.client.patches.PatchUtil;
import com.google.gerrit.client.rpc.GerritCallback;
import com.google.gerrit.client.ui.AbstractKeyNavigation.Action;
import com.google.gerrit.client.ui.AccountDashboardLink;
-import com.google.gerrit.client.ui.ChangeLink;
import com.google.gerrit.client.ui.BranchTopicLink;
+import com.google.gerrit.client.ui.ChangeLink;
import com.google.gerrit.client.ui.NavigationTable;
import com.google.gerrit.client.ui.NeedsSignInKeyCommand;
import com.google.gerrit.client.ui.ProjectLink;
@@ -47,14 +47,14 @@ import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HTMLTable.Cell;
+import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
-import com.google.gwt.user.client.ui.HTMLTable.Cell;
-import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
import com.google.gwtjsonrpc.client.VoidResult;
import java.util.ArrayList;
@@ -77,6 +77,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
private AccountInfoCache accountCache = AccountInfoCache.empty();
private final List<ApprovalType> approvalTypes;
private final int columns;
+ private List<Boolean> changeSetIsReviewed = new ArrayList<Boolean>();
private class KeyNavigation extends DefaultKeyNavigation {
@@ -322,6 +323,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
summary.getApprovalMap();
int col = BASE_COLUMNS;
boolean haveReview = false;
+ boolean isGreenChecked = false;
boolean displayPersonNameInReviewCategory = false;
@@ -342,6 +344,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
if (ca == null || ca.getValue() == 0) {
table.clearCell(row, col);
+ isGreenChecked = false;
} else {
if (!ca.getCategoryId().equals(ApprovalCategory.SANITY_REVIEW)) {
@@ -361,7 +364,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
} else {
table.setWidget(row, col, new Image(Gerrit.RESOURCES.redNot()));
}
-
+ isGreenChecked = false;
} else if (type.isMaxPositive(ca)) {
if (displayPersonNameInReviewCategory) {
@@ -373,6 +376,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
table.setWidget(row, col, new Image(Gerrit.RESOURCES.greenCheck()));
}
+ isGreenChecked = true;
} else {
String vstr = String.valueOf(ca.getValue());
@@ -387,6 +391,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
fmt.addStyleName(row, col, Gerrit.RESOURCES.css().negscore());
}
table.setText(row, col, vstr);
+ isGreenChecked = false;
}
// Some web browsers ignore the embedded newline; some like it;
@@ -395,7 +400,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
fmt.getElement(row, col).setTitle(
acv.getName() + " \nby " + FormatUtil.nameEmail(ai));
}
-
+ changeSetIsReviewed.add(isGreenChecked);
col++;
}
@@ -414,13 +419,39 @@ public class ChangeTable extends NavigationTable<ChangeInfo> {
for (int row = dataBegin; row < dataBegin + rows; row++) {
final ChangeInfo c = getRowItem(row);
if (ids.containsKey(c.getId())) {
- displayApprovals(row, ids.get(c.getId()), aic, highlightUnreviewed);
+ displayApprovals(row, ids.get(c.getId()), aic, highlightUnreviewed);
}
}
+
+ // ChangeSetsBlock widget
+ Widget csb =
+ getParent().getParent().getParent().getParent().getParent()
+ .getParent().getParent().getParent();
+
+ // TopicScreen widget
+ Widget w =
+ getParent().getParent().getParent().getParent().getParent()
+ .getParent().getParent().getParent().getParent().getParent()
+ .getParent();
+
+ if (w instanceof TopicScreen) {
+ ChangeSetsBlock cb = new ChangeSetsBlock((TopicScreen) w);
+ cb = (ChangeSetsBlock) csb;
+ cb.updateButtons();
+ }
}
};
}
+
+ /**
+ * Get the changeSet reviews
+ * @return true if no false exist in list
+ */
+ public boolean getChangeSetIsReviewed() {
+ return !changeSetIsReviewed.contains(false);
+ }
+
public class StarKeyCommand extends NeedsSignInKeyCommand {
public StarKeyCommand(int mask, char key, String help) {
super(mask, key, help);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/TopicScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/TopicScreen.java
index 2916a6f9b6..42a3d39a6c 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/TopicScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/TopicScreen.java
@@ -56,7 +56,6 @@ public class TopicScreen extends Screen {
private final ChangeSet.Id openChangeSetId;
private TopicDescriptionBlock descriptionBlock;
- private ApprovalTable approvals;
private IncludedInTable includedInTable;
private DisclosurePanel includedInPanel;
@@ -175,9 +174,6 @@ public class TopicScreen extends Screen {
descriptionBlock = new TopicDescriptionBlock();
add(descriptionBlock);
- approvals = new ApprovalTable();
- add(approvals);
-
includedInPanel = new DisclosurePanel(Util.C.changeScreenIncludedIn());
includedInTable = new IncludedInTable(topicId);
@@ -258,7 +254,6 @@ public class TopicScreen extends Screen {
}
dependencies.setAccountInfoCache(detail.getAccounts());
- approvals.setAccountInfoCache(detail.getAccounts());
descriptionBlock.display(detail.getTopic(),
detail.getCurrentChangeSetDetail().getInfo(),detail.getAccounts());
@@ -266,8 +261,6 @@ public class TopicScreen extends Screen {
dependsOn.display(detail.getDependsOn());
neededBy.display(detail.getNeededBy());
- approvals.display(detail);
-
for (ChangeSet cId : detail.getChangeSets()) {
if (changesList != null) {
changesList.addItem(Util.TM.changeSetHeader(cId.getChangeSetId()), cId
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
index b93632d659..af6f1319bc 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
@@ -14,7 +14,6 @@
package com.google.gerrit.server.project;
-import com.google.gerrit.common.data.ApprovalType;
import com.google.gerrit.common.data.ApprovalTypes;
import com.google.gerrit.common.data.PermissionRange;
import com.google.gerrit.reviewdb.ChangeSet;
@@ -24,7 +23,6 @@ import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.reviewdb.Topic;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.IdentifiedUser;
-import com.google.gerrit.server.workflow.TopicCategoryFunction;
import com.google.gerrit.server.workflow.TopicFunctionState;
import com.google.gwtorm.client.OrmException;
import com.google.inject.Inject;
@@ -221,22 +219,6 @@ public class TopicControl {
return result;
}
- final List<ChangeSetApproval> all =
- db.changeSetApprovals().byChangeSet(changeSetId).toList();
-
- final TopicFunctionState fs =
- functionStateFactory.create(topic, changeSetId, all);
-
- for (ApprovalType c : approvalTypes.getApprovalTypes()) {
- TopicCategoryFunction.forCategory(c.getCategory()).run(c, fs);
- }
-
- for (ApprovalType type : approvalTypes.getApprovalTypes()) {
- if (!fs.isValid(type)) {
- return new CanSubmitResult("Requires " + type.getCategory().getName());
- }
- }
-
return CanSubmitResult.OK;
}
@@ -282,22 +264,6 @@ public class TopicControl {
return result;
}
- final List<ChangeSetApproval> all =
- db.changeSetApprovals().byChangeSet(changeSetId).toList();
-
- final TopicFunctionState fs =
- functionStateFactory.create(topic, changeSetId, all);
-
- for (ApprovalType c : approvalTypes.getApprovalTypes()) {
- TopicCategoryFunction.forCategory(c.getCategory()).run(c, fs);
- }
-
- for (ApprovalType type : approvalTypes.getApprovalTypes()) {
- if (!fs.isValid(type)) {
- return new CanSubmitResult("Requires " + type.getCategory().getName());
- }
- }
-
return CanSubmitResult.OK;
}
}