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 ca8aedf1a1..77099ab669 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 @@ -128,6 +128,12 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel * followed by the action buttons. */ public void ensureLoaded(final PatchSetDetail detail) { + loadInfoTable(detail); + loadActionPanel(detail); + loadPatchTable(detail); + } + + public void loadInfoTable(final PatchSetDetail detail) { infoTable = new Grid(R_CNT, 2); infoTable.setStyleName(Gerrit.RESOURCES.css().infoBlock()); infoTable.addStyleName(Gerrit.RESOURCES.css().patchSetInfoBlock()); @@ -153,15 +159,13 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel displayDownload(); body.add(infoTable); + } + public void loadActionPanel(final PatchSetDetail detail) { if (!patchSet.getId().equals(diffBaseId)) { - patchTable = new PatchTable(); - patchTable.setSavePointerId("PatchTable " + patchSet.getId()); - patchTable.display(diffBaseId, detail); - actionsPanel = new FlowPanel(); actionsPanel.setStyleName(Gerrit.RESOURCES.css().patchSetActions()); - body.add(actionsPanel); + actionsPanel.setVisible(true); if (Gerrit.isSignedIn()) { if (changeDetail.canEdit()) { populateReviewAction(); @@ -173,18 +177,28 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel if (changeDetail.canPublish()) { populatePublishAction(); } - if (changeDetail.canDeleteDraft() && - changeDetail.getPatchSets().size() > 1) { + if (changeDetail.canDeleteDraft() + && changeDetail.getPatchSets().size() > 1) { populateDeleteDraftPatchSetAction(); } } } populateDiffAllActions(detail); - body.add(patchTable); + body.add(actionsPanel); + } + } - for(ClickHandler clickHandler : registeredClickHandler) { + public void loadPatchTable(final PatchSetDetail detail) { + if (!patchSet.getId().equals(diffBaseId)) { + patchTable = new PatchTable(); + patchTable.setSavePointerId("PatchTable " + patchSet.getId()); + patchTable.display(diffBaseId, detail); + for (ClickHandler clickHandler : registeredClickHandler) { patchTable.addClickHandler(clickHandler); } + patchTable.setRegisterKeys(true); + setActive(true); + body.add(patchTable); } } @@ -644,34 +658,45 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel } public void refresh() { - AccountDiffPreference diffPrefs; - if (patchTable == null) { - diffPrefs = new ListenableAccountDiffPreference().get(); + if (patchSet.getId().equals(diffBaseId)) { + if (patchTable != null) { + patchTable.setVisible(false); + } + if (actionsPanel != null) { + actionsPanel.setVisible(false); + } } else { - diffPrefs = patchTable.getPreferences().get(); - } + if (patchTable != null) { + if (patchTable.getBase() == null && diffBaseId == null + || patchTable.getBase() != null + && patchTable.getBase().equals(diffBaseId)) { + actionsPanel.setVisible(true); + patchTable.setVisible(true); + return; + } + } - Util.DETAIL_SVC.patchSetDetail2(diffBaseId, patchSet.getId(), diffPrefs, - new GerritCallback() { - @Override - public void onSuccess(PatchSetDetail result) { - if (patchSet.getId().equals(diffBaseId)) { - patchTable.setVisible(false); - actionsPanel.setVisible(false); - } else { - if (patchTable != null) { - patchTable.removeFromParent(); - } - patchTable = new PatchTable(); - patchTable.display(diffBaseId, result); - body.add(patchTable); + AccountDiffPreference diffPrefs; + if (patchTable == null) { + diffPrefs = new ListenableAccountDiffPreference().get(); + } else { + diffPrefs = patchTable.getPreferences().get(); + patchTable.setVisible(false); + } - for (ClickHandler clickHandler : registeredClickHandler) { - patchTable.addClickHandler(clickHandler); + Util.DETAIL_SVC.patchSetDetail2(diffBaseId, patchSet.getId(), diffPrefs, + new GerritCallback() { + @Override + public void onSuccess(PatchSetDetail result) { + if (actionsPanel != null) { + actionsPanel.setVisible(true); + } else { + loadActionPanel(result); } + loadPatchTable(result); } - } - }); + }); + } } @Override @@ -687,8 +712,8 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel Util.DETAIL_SVC.patchSetDetail2(diffBaseId, patchSet.getId(), diffPrefs, new GerritCallback() { public void onSuccess(final PatchSetDetail result) { - ensureLoaded(result); - patchTable.setRegisterKeys(true); + loadInfoTable(result); + loadActionPanel(result); } }); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetsBlock.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetsBlock.java index f206d6e73b..005423ffc6 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetsBlock.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetsBlock.java @@ -89,12 +89,6 @@ public class PatchSetsBlock extends Composite { for (final PatchSet ps : patchSets) { final PatchSetComplexDisclosurePanel p = new PatchSetComplexDisclosurePanel(ps, ps == currps); - if (diffBaseId != null) { - p.setDiffBaseId(diffBaseId); - if (ps == currps) { - p.refresh(); - } - } add(p); patchSetPanelsList.add(p); } @@ -175,7 +169,6 @@ public class PatchSetsBlock extends Composite { deactivate(); PatchSetComplexDisclosurePanel patchSetPanel = patchSetPanels.get(patchSetId); - patchSetPanel.setOpen(true); patchSetPanel.setActive(true); activePatchSetId = patchSetId; } @@ -226,6 +219,9 @@ public class PatchSetsBlock extends Composite { public void onOpen(OpenEvent event) { // when a patch set panel is opened by the user // it should automatically become active + PatchSetComplexDisclosurePanel patchSetPanel = + patchSetPanels.get(patchSetId); + patchSetPanel.refresh(); activate(patchSetId); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java index b228cf2595..b8acd56155 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java @@ -119,6 +119,10 @@ public class PatchTable extends Composite { } } + public PatchSet.Id getBase() { + return base; + } + public void setSavePointerId(final String id) { savePointerId = id; }