From 393eb0ed0aa1e9a53ba39c9b24a1497b01446cdd Mon Sep 17 00:00:00 2001 From: Tomas Daarstad Date: Tue, 20 Mar 2012 12:31:04 +0100 Subject: Fixed QTQAINFRA-366, buttons are enabled when all changes are max pos reviwed Task-number: QTQAINFRA-366 Change-Id: Ia1cb3ec0f04c6039c9b44764273e6fc5371c7f82 --- .../changes/ChangeSetComplexDisclosurePanel.java | 74 +++++++++++----------- .../gerrit/client/changes/ChangeSetsBlock.java | 20 ++++-- .../google/gerrit/client/changes/ChangeTable.java | 45 +++++++++++-- .../google/gerrit/client/changes/TopicScreen.java | 7 -- .../google/gerrit/server/project/TopicControl.java | 34 ---------- 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() { @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() { 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() { @@ -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() { + 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 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(); 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 { private AccountInfoCache accountCache = AccountInfoCache.empty(); private final List approvalTypes; private final int columns; + private List changeSetIsReviewed = new ArrayList(); private class KeyNavigation extends DefaultKeyNavigation { @@ -322,6 +323,7 @@ public class ChangeTable extends NavigationTable { summary.getApprovalMap(); int col = BASE_COLUMNS; boolean haveReview = false; + boolean isGreenChecked = false; boolean displayPersonNameInReviewCategory = false; @@ -342,6 +344,7 @@ public class ChangeTable extends NavigationTable { 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 { } 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 { 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 { 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 { fmt.getElement(row, col).setTitle( acv.getName() + " \nby " + FormatUtil.nameEmail(ai)); } - + changeSetIsReviewed.add(isGreenChecked); col++; } @@ -414,13 +419,39 @@ public class ChangeTable extends NavigationTable { 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 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 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; } } -- cgit v1.2.3 From 07d98aee2b9f61cdd34d9cc340e3fb4e2e90aed6 Mon Sep 17 00:00:00 2001 From: Tomas Daarstad Date: Wed, 28 Mar 2012 08:59:06 +0200 Subject: Disable stage and submit button for changes included in topics Task-number: QTQAINFRA-366 Change-Id: I23810b02e1ed97247b443f0843b1e5cb437dc374 --- .../client/changes/PatchSetComplexDisclosurePanel.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java index 6906cea16d..d1249e9c97 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java @@ -199,6 +199,12 @@ class PatchSetComplexDisclosurePanel extends CommonComplexDisclosurePanel { if (isNew && changeDetail.canStage()) { // Create button new button and add click handler. final Button stagingButton = new Button(Util.M.mergeToStagingPatchSet(detail.getPatchSet().getPatchSetId())); + + // If the change is included in a topic, the button should be disabled + if(changeDetail.getChange().getTopicId() != null){ + stagingButton.setEnabled(false); + } + stagingButton.addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { @@ -227,6 +233,12 @@ class PatchSetComplexDisclosurePanel extends CommonComplexDisclosurePanel { final Button b = new Button(Util.M .submitPatchSet(detail.getPatchSet().getPatchSetId())); + + // If the change is included in a topic, the button should be disabled + if(changeDetail.getChange().getTopicId() != null ){ + b.setEnabled(false); + } + b.addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { -- cgit v1.2.3