Change style of commit message box display and use UiBinder.

Put a box around the commit message with a title and emphasis on the
commit summary. The <pre> element for the body is hidden if only the
summary is submitted.

Changed CommitMessageBlock widget to use UiBinder.

Change-Id: I36fbe60cb2f4e90b7b9e9145f7af4e2b0776fa85
This commit is contained in:
Keunhong Park
2012-05-22 09:47:50 -06:00
parent e1e5ddd646
commit 28c680bc28
2 changed files with 116 additions and 13 deletions

View File

@@ -14,29 +14,56 @@
package com.google.gerrit.client.changes;
import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.ui.CommentLinkProcessor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.PreElement;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwtexpui.safehtml.client.SafeHtml;
import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
public class CommitMessageBlock extends Composite {
private final HTML description;
interface Binder extends UiBinder<HTMLPanel, CommitMessageBlock> {
}
private static Binder uiBinder = GWT.create(Binder.class);
@UiField
PreElement commitSummaryPre;
@UiField
PreElement commitBodyPre;
public CommitMessageBlock() {
description = new HTML();
description.setStyleName(Gerrit.RESOURCES.css().changeScreenDescription());
initWidget(description);
initWidget(uiBinder.createAndBindUi(this));
}
public void display(final String commitMessage) {
SafeHtml msg = new SafeHtmlBuilder().append(commitMessage);
msg = msg.linkify();
msg = CommentLinkProcessor.apply(msg);
msg = new SafeHtmlBuilder().openElement("p").append(msg).closeElement("p");
msg = msg.replaceAll("\n\n", "</p><p>");
msg = msg.replaceAll("\n", "<br />");
SafeHtml.set(description, msg);
String commitSummary = "";
String commitBody = "";
String[] splitCommitMessage = commitMessage.split("\n", 2);
commitSummary = splitCommitMessage[0];
commitBody = splitCommitMessage[1];
// Hide commit body if there is no body
if (commitBody.trim().isEmpty()) {
commitBodyPre.setAttribute("style", "display: none;");
}
// Linkify commit summary
SafeHtml commitSummaryLinkified = new SafeHtmlBuilder().append(commitSummary);
commitSummaryLinkified = commitSummaryLinkified.linkify();
commitSummaryLinkified = CommentLinkProcessor.apply(commitSummaryLinkified);
// Linkify commit body
SafeHtml commitBodyLinkified = new SafeHtmlBuilder().append(commitBody);
commitBodyLinkified = commitBodyLinkified.linkify();
commitBodyLinkified = CommentLinkProcessor.apply(commitBodyLinkified);
commitSummaryPre.setInnerHTML(commitSummaryLinkified.asString());
commitBodyPre.setInnerHTML(commitBodyLinkified.asString());
}
}

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2012 The Android Open Source Project
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.
-->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:style>
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
.commitMessageTable {
border-collapse: separate;
border-spacing: 0;
margin-bottom: 10px;
}
.header {
border: 1px solid trimColor;
padding: 2px 6px 1px;
background-color: trimColor;
white-space: nowrap;
color: textColor;
font-size: 10pt;
}
.contents {
border-bottom: 1px solid trimColor;
border-left: 1px solid trimColor;
border-right: 1px solid trimColor;
padding: 5px;
}
.contents span {
font-weight: bold;
}
.contents pre {
margin: 0;
}
.commitSummary {
font-weight: bold;
}
.commitBody {
margin-top: 10px;
}
</ui:style>
<g:HTMLPanel>
<table class='{style.commitMessageTable}'>
<tr><th class='{style.header}'>Commit Message</th></tr>
<tr><td class='{style.contents}'>
<pre class='{style.commitSummary}' ui:field='commitSummaryPre'/>
<pre class='{style.commitBody}' ui:field='commitBodyPre'/>
</td></tr>
</table>
</g:HTMLPanel>
</ui:UiBinder>