summaryrefslogtreecommitdiffstats
path: root/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java')
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java65
1 files changed, 20 insertions, 45 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
index a700dd8ea2..ae2dd11914 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java
@@ -18,7 +18,6 @@ import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.rpc.GerritCallback;
import com.google.gerrit.client.rpc.ScreenLoadCallback;
import com.google.gerrit.client.ui.CommentPanel;
-import com.google.gerrit.client.ui.ComplexDisclosurePanel;
import com.google.gerrit.client.ui.ExpandAllCommand;
import com.google.gerrit.client.ui.LinkMenuBar;
import com.google.gerrit.client.ui.NeedsSignInKeyCommand;
@@ -28,7 +27,6 @@ import com.google.gerrit.common.data.AccountInfo;
import com.google.gerrit.common.data.AccountInfoCache;
import com.google.gerrit.common.data.ChangeDetail;
import com.google.gerrit.common.data.ChangeInfo;
-import com.google.gerrit.common.data.GitwebLink;
import com.google.gerrit.common.data.ToggleStarRequest;
import com.google.gerrit.reviewdb.Account;
import com.google.gerrit.reviewdb.Change;
@@ -40,11 +38,9 @@ import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.i18n.client.LocaleInfo;
-import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwtexpui.globalkey.client.GlobalKey;
@@ -61,7 +57,6 @@ public class ChangeScreen extends Screen {
private Image starChange;
private boolean starred;
- private PatchSet.Id currentPatchSet;
private ChangeDescriptionBlock descriptionBlock;
private ApprovalTable approvals;
@@ -72,7 +67,7 @@ public class ChangeScreen extends Screen {
private ChangeTable.Section dependsOn;
private ChangeTable.Section neededBy;
- private FlowPanel patchSetPanels;
+ private PatchSetsBlock patchSetsBlock;
private Panel comments;
@@ -121,6 +116,7 @@ public class ChangeScreen extends Screen {
super.registerKeys();
regNavigation = GlobalKey.add(this, keysNavigation);
regAction = GlobalKey.add(this, keysAction);
+ patchSetsBlock.setRegisterKeys(true);
}
public void refresh() {
@@ -150,6 +146,7 @@ public class ChangeScreen extends Screen {
keysNavigation = new KeyCommandSet(Gerrit.C.sectionNavigation());
keysAction = new KeyCommandSet(Gerrit.C.sectionActions());
keysNavigation.add(new DashboardKeyCommand(0, 'u', Util.C.upToDashboard()));
+ keysNavigation.add(new ExpandCollapseDependencySectionKeyCommand(0, 'd', Util.C.expandCollapseDependencies()));
if (Gerrit.isSignedIn()) {
keysAction.add(new StarKeyCommand(0, 's', Util.C.changeTableStar()));
@@ -195,8 +192,8 @@ public class ChangeScreen extends Screen {
dependenciesPanel.setWidth("95%");
add(dependenciesPanel);
- patchSetPanels = new FlowPanel();
- add(patchSetPanels);
+ patchSetsBlock = new PatchSetsBlock(this);
+ add(patchSetsBlock);
comments = new FlowPanel();
comments.setStyleName(Gerrit.RESOURCES.css().changeComments());
@@ -245,7 +242,7 @@ public class ChangeScreen extends Screen {
approvals.display(detail.getChange(), detail.getMissingApprovals(), detail
.getApprovals());
- addPatchSets(detail);
+ patchSetsBlock.display(detail);
addComments(detail);
// If any dependency change is still open, show our dependency list.
@@ -264,40 +261,6 @@ public class ChangeScreen extends Screen {
dependenciesPanel.setOpen(depsOpen);
}
- private void addPatchSets(final ChangeDetail detail) {
- patchSetPanels.clear();
-
- final PatchSet currps = detail.getCurrentPatchSet();
- final GitwebLink gw = Gerrit.getConfig().getGitwebLink();
- for (final PatchSet ps : detail.getPatchSets()) {
- final ComplexDisclosurePanel panel =
- new ComplexDisclosurePanel(Util.M.patchSetHeader(ps.getPatchSetId()),
- ps == currps);
- final PatchSetPanel psp = new PatchSetPanel(this, detail, ps);
- panel.setContent(psp);
-
- final InlineLabel revtxt = new InlineLabel(ps.getRevision().get() + " ");
- revtxt.addStyleName(Gerrit.RESOURCES.css().patchSetRevision());
- panel.getHeader().add(revtxt);
- if (gw != null) {
- final Anchor revlink =
- new Anchor("(gitweb)", false, gw.toRevision(detail.getChange()
- .getProject(), ps));
- revlink.addStyleName(Gerrit.RESOURCES.css().patchSetLink());
- panel.getHeader().add(revlink);
- }
-
- if (ps == currps) {
- psp.ensureLoaded(detail.getCurrentPatchSetDetail());
- } else {
- panel.addOpenHandler(psp);
- }
- add(panel);
- patchSetPanels.add(panel);
- }
- currentPatchSet = currps.getId();
- }
-
private void addComments(final ChangeDetail detail) {
comments.clear();
@@ -398,6 +361,17 @@ public class ChangeScreen extends Screen {
}
}
+ public class ExpandCollapseDependencySectionKeyCommand extends KeyCommand {
+ public ExpandCollapseDependencySectionKeyCommand(int mask, char key, String help) {
+ super(mask, key, help);
+ }
+
+ @Override
+ public void onKeyPress(KeyPressEvent event) {
+ dependenciesPanel.setOpen(!dependenciesPanel.isOpen());
+ }
+ }
+
public class StarKeyCommand extends NeedsSignInKeyCommand {
public StarKeyCommand(int mask, char key, String help) {
super(mask, key, help);
@@ -416,8 +390,9 @@ public class ChangeScreen extends Screen {
@Override
public void onKeyPress(final KeyPressEvent event) {
- Gerrit.display("change,publish," + currentPatchSet.toString(),
- new PublishCommentScreen(currentPatchSet));
+ PatchSet.Id currentPatchSetId = patchSetsBlock.getCurrentPatchSet().getId();
+ Gerrit.display("change,publish," + currentPatchSetId.toString(),
+ new PublishCommentScreen(currentPatchSetId));
}
}
}