From e40b11ad5c7b2e2ed618e448bbd4efe4f0a6d4ab Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 15 Jan 2009 16:05:37 -0800 Subject: [PATCH] Split the description area of a change into a reusable block This makes it easier to reuse this body within other screens, such as when publishing comments or viewing a patch. Signed-off-by: Shawn O. Pearce --- .../changes/ChangeDescriptionBlock.java | 54 +++++++++++++++++++ .../gerrit/client/changes/ChangeScreen.java | 41 ++------------ 2 files changed, 59 insertions(+), 36 deletions(-) create mode 100644 appjar/src/main/java/com/google/gerrit/client/changes/ChangeDescriptionBlock.java diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDescriptionBlock.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDescriptionBlock.java new file mode 100644 index 0000000000..ce9ffef46d --- /dev/null +++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeDescriptionBlock.java @@ -0,0 +1,54 @@ +// Copyright 2008 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.client.changes; + +import com.google.gerrit.client.data.ChangeDetail; +import com.google.gerrit.client.ui.DomUtil; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.DisclosurePanel; +import com.google.gwt.user.client.ui.HTML; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Label; + +public class ChangeDescriptionBlock extends Composite { + private final DisclosurePanel descriptionPanel; + private final ChangeInfoBlock infoBlock; + private final HTML description; + + public ChangeDescriptionBlock() { + infoBlock = new ChangeInfoBlock(); + description = new HTML(); + description.setStyleName("gerrit-ChangeScreen-Description"); + descriptionPanel = new DisclosurePanel(Util.C.changeScreenDescription()); + { + final Label glue = new Label(); + final HorizontalPanel hp = new HorizontalPanel(); + hp.add(description); + hp.add(glue); + hp.add(infoBlock); + hp.setCellWidth(glue, "15px;"); + descriptionPanel.setContent(hp); + descriptionPanel.setWidth("100%"); + } + initWidget(descriptionPanel); + } + + public void display(final ChangeDetail detail) { + infoBlock.display(detail); + description.setHTML(DomUtil + .linkify(DomUtil.escape(detail.getDescription()))); + descriptionPanel.setOpen(true); + } +} diff --git a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java index 04f971b5d3..10e1154882 100644 --- a/appjar/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java +++ b/appjar/src/main/java/com/google/gerrit/client/changes/ChangeScreen.java @@ -25,7 +25,6 @@ import com.google.gerrit.client.reviewdb.PatchSet; import com.google.gerrit.client.rpc.Common; import com.google.gerrit.client.rpc.ScreenLoadCallback; import com.google.gerrit.client.ui.ComplexDisclosurePanel; -import com.google.gerrit.client.ui.DomUtil; import com.google.gerrit.client.ui.ExpandAllCommand; import com.google.gerrit.client.ui.LinkMenuBar; import com.google.gerrit.client.ui.RefreshListener; @@ -34,10 +33,7 @@ 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.HTML; -import com.google.gwt.user.client.ui.HorizontalPanel; 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.gwt.user.client.ui.Widget; @@ -50,10 +46,7 @@ public class ChangeScreen extends Screen { private ChangeInfo changeInfo; private boolean refreshOnSignIn; - private ChangeInfoBlock infoBlock; - private DisclosurePanel descriptionPanel; - private HTML description; - + private ChangeDescriptionBlock descriptionBlock; private DisclosurePanel dependenciesPanel; private ChangeTable dependencies; private ChangeTable.Section dependsOn; @@ -102,7 +95,7 @@ public class ChangeScreen extends Screen { @Override public void onLoad() { - if (descriptionPanel == null) { + if (descriptionBlock == null) { initUI(); } @@ -127,23 +120,8 @@ public class ChangeScreen extends Screen { private void initUI() { addStyleName("gerrit-ChangeScreen"); - infoBlock = new ChangeInfoBlock(); - - description = newDescriptionLabel(); - - descriptionPanel = new DisclosurePanel(Util.C.changeScreenDescription()); - { - final Label glue = new Label(); - final HorizontalPanel hp = new HorizontalPanel(); - hp.add(description); - hp.add(glue); - hp.add(infoBlock); - hp.setCellWidth(glue, "100%"); - add(hp); - descriptionPanel.setContent(hp); - descriptionPanel.setWidth("100%"); - add(descriptionPanel); - } + descriptionBlock = new ChangeDescriptionBlock(); + add(descriptionBlock); dependencies = new ChangeTable(); dependsOn = new ChangeTable.Section(Util.C.changeScreenDependsOn()); @@ -198,9 +176,7 @@ public class ChangeScreen extends Screen { dependencies.setAccountInfoCache(detail.getAccounts()); approvals.setAccountInfoCache(detail.getAccounts()); - infoBlock.display(detail); - description.setHTML(DomUtil - .linkify(DomUtil.escape(detail.getDescription()))); + descriptionBlock.display(detail); dependsOn.display(detail.getDependsOn()); neededBy.display(detail.getNeededBy()); approvals.display(detail.getMissingApprovals(), detail.getApprovals()); @@ -221,7 +197,6 @@ public class ChangeScreen extends Screen { } } - descriptionPanel.setOpen(true); dependenciesPanel.setOpen(depsOpen); approvalsPanel.setOpen(true); } @@ -329,10 +304,4 @@ public class ChangeScreen extends Screen { p.add(w); return p; } - - private static HTML newDescriptionLabel() { - final HTML d = new HTML(); - d.setStyleName("gerrit-ChangeScreen-Description"); - return d; - } }