Refactor CommentBox for drafts and published comments
Add PublishedBox and DraftBox that extend CommentBox. Change-Id: Ibab8b198499d9f7920ef914b3c2ed88e5daa60d4
This commit is contained in:
@@ -268,8 +268,11 @@ public class CodeMirrorDemo extends Screen {
|
|||||||
Side mySide = info.side();
|
Side mySide = info.side();
|
||||||
CodeMirror cm = mySide == Side.PARENT ? cmA : cmB;
|
CodeMirror cm = mySide == Side.PARENT ? cmA : cmB;
|
||||||
CodeMirror other = otherCM(cm);
|
CodeMirror other = otherCM(cm);
|
||||||
final CommentBox box = new CommentBox(info.author(), info.updated(),
|
final CommentBox box = isDraft ?
|
||||||
info.message(), commentLinkProcessor, isDraft);
|
new DraftBox(info.author(), info.updated(), info.message(),
|
||||||
|
commentLinkProcessor) :
|
||||||
|
new PublishedBox(info.author(), info.updated(), info.message(),
|
||||||
|
commentLinkProcessor);
|
||||||
int line = info.line() - 1; // CommentInfo is 1-based, but CM is 0-based
|
int line = info.line() - 1; // CommentInfo is 1-based, but CM is 0-based
|
||||||
diffTable.add(box);
|
diffTable.add(box);
|
||||||
cm.addLineWidget(line, box.getElement(), config);
|
cm.addLineWidget(line, box.getElement(), config);
|
||||||
|
|||||||
@@ -14,12 +14,8 @@
|
|||||||
|
|
||||||
package com.google.gerrit.client.diff;
|
package com.google.gerrit.client.diff;
|
||||||
|
|
||||||
import com.google.gerrit.client.AvatarImage;
|
|
||||||
import com.google.gerrit.client.FormatUtil;
|
|
||||||
import com.google.gerrit.client.account.AccountInfo;
|
import com.google.gerrit.client.account.AccountInfo;
|
||||||
import com.google.gerrit.client.ui.CommentLinkProcessor;
|
import com.google.gerrit.client.ui.CommentLinkProcessor;
|
||||||
import com.google.gwt.core.client.GWT;
|
|
||||||
import com.google.gwt.dom.client.Element;
|
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
import com.google.gwt.event.dom.client.ClickEvent;
|
||||||
import com.google.gwt.event.dom.client.ClickHandler;
|
import com.google.gwt.event.dom.client.ClickHandler;
|
||||||
import com.google.gwt.event.shared.HandlerRegistration;
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
@@ -28,18 +24,14 @@ import com.google.gwt.uibinder.client.UiBinder;
|
|||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.HTML;
|
import com.google.gwt.user.client.ui.HTML;
|
||||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.google.gwtexpui.safehtml.client.SafeHtml;
|
import com.google.gwtexpui.safehtml.client.SafeHtml;
|
||||||
import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
|
import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
/** An HtmlPanel holding the DialogBox to display a comment */
|
/** An HtmlPanel for displaying a comment */
|
||||||
class CommentBox extends Composite {
|
abstract class CommentBox extends Composite {
|
||||||
interface Binder extends UiBinder<HTMLPanel, CommentBox> {}
|
|
||||||
private static Binder uiBinder = GWT.create(Binder.class);
|
|
||||||
|
|
||||||
interface CommentBoxStyle extends CssResource {
|
interface CommentBoxStyle extends CssResource {
|
||||||
String open();
|
String open();
|
||||||
String close();
|
String close();
|
||||||
@@ -49,38 +41,21 @@ class CommentBox extends Composite {
|
|||||||
private HandlerRegistration headerClick;
|
private HandlerRegistration headerClick;
|
||||||
private Runnable clickCallback;
|
private Runnable clickCallback;
|
||||||
|
|
||||||
@UiField
|
@UiField(provided=true)
|
||||||
Widget header;
|
CommentBoxHeader header;
|
||||||
|
|
||||||
@UiField
|
|
||||||
AvatarImage avatar;
|
|
||||||
|
|
||||||
@UiField
|
|
||||||
Element name;
|
|
||||||
|
|
||||||
@UiField
|
|
||||||
Element summary;
|
|
||||||
|
|
||||||
@UiField
|
|
||||||
Element date;
|
|
||||||
|
|
||||||
@UiField
|
|
||||||
Element contentPanel;
|
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
HTML contentPanelMessage;
|
HTML contentPanelMessage;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
CommentBoxStyle style;
|
CommentBoxResources res;
|
||||||
|
|
||||||
CommentBox(AccountInfo author, Timestamp when, String message,
|
protected CommentBox(UiBinder<? extends Widget, CommentBox> binder,
|
||||||
|
AccountInfo author, Timestamp when, String message,
|
||||||
CommentLinkProcessor linkProcessor, boolean isDraft) {
|
CommentLinkProcessor linkProcessor, boolean isDraft) {
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
|
||||||
// TODO: Format the comment box differently based on whether isDraft
|
|
||||||
// is true.
|
|
||||||
commentLinkProcessor = linkProcessor;
|
commentLinkProcessor = linkProcessor;
|
||||||
setAuthorNameText(author);
|
header = new CommentBoxHeader(author, when, isDraft);
|
||||||
date.setInnerText(FormatUtil.shortFormatDayTime(when));
|
initWidget(binder.createAndBindUi(this));
|
||||||
setMessageText(message);
|
setMessageText(message);
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}
|
}
|
||||||
@@ -98,12 +73,19 @@ class CommentBox extends Composite {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, ClickEvent.getType());
|
}, ClickEvent.getType());
|
||||||
|
res.style().ensureInjected();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setOpenCloseHandler(final Runnable callback) {
|
void setOpenCloseHandler(final Runnable callback) {
|
||||||
clickCallback = callback;
|
clickCallback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void runClickCallback() {
|
||||||
|
if (clickCallback != null) {
|
||||||
|
clickCallback.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onUnload() {
|
protected void onUnload() {
|
||||||
super.onUnload();
|
super.onUnload();
|
||||||
@@ -114,19 +96,13 @@ class CommentBox extends Composite {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setAuthorNameText(AccountInfo author) {
|
|
||||||
// TODO: Set avatar's display to none if we get a 404.
|
|
||||||
avatar = new AvatarImage(author, 26);
|
|
||||||
name.setInnerText(FormatUtil.name(author));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setMessageText(String message) {
|
private void setMessageText(String message) {
|
||||||
if (message == null) {
|
if (message == null) {
|
||||||
message = "";
|
message = "";
|
||||||
} else {
|
} else {
|
||||||
message = message.trim();
|
message = message.trim();
|
||||||
}
|
}
|
||||||
summary.setInnerText(message);
|
header.setSummaryText(message);
|
||||||
SafeHtml buf = new SafeHtmlBuilder().append(message).wikify();
|
SafeHtml buf = new SafeHtmlBuilder().append(message).wikify();
|
||||||
buf = commentLinkProcessor.apply(buf);
|
buf = commentLinkProcessor.apply(buf);
|
||||||
SafeHtml.set(contentPanelMessage, buf);
|
SafeHtml.set(contentPanelMessage, buf);
|
||||||
@@ -134,15 +110,15 @@ class CommentBox extends Composite {
|
|||||||
|
|
||||||
private void setOpen(boolean open) {
|
private void setOpen(boolean open) {
|
||||||
if (open) {
|
if (open) {
|
||||||
removeStyleName(style.close());
|
removeStyleName(res.style().close());
|
||||||
addStyleName(style.open());
|
addStyleName(res.style().open());
|
||||||
} else {
|
} else {
|
||||||
removeStyleName(style.open());
|
removeStyleName(res.style().open());
|
||||||
addStyleName(style.close());
|
addStyleName(res.style().close());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isOpen() {
|
private boolean isOpen() {
|
||||||
return getStyleName().contains(style.open());
|
return getStyleName().contains(res.style().open());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!--
|
|
||||||
Copyright (C) 2013 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'
|
|
||||||
xmlns:c='urn:import:com.google.gerrit.client'>
|
|
||||||
<ui:style type='com.google.gerrit.client.diff.CommentBox.CommentBoxStyle'>
|
|
||||||
.commentBox {
|
|
||||||
background-color: #e5ecf9;
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
.table {
|
|
||||||
width: 100%;
|
|
||||||
cursor: pointer;
|
|
||||||
table-layout: fixed;
|
|
||||||
}
|
|
||||||
.summary {
|
|
||||||
width: 60%;
|
|
||||||
}
|
|
||||||
.summaryText {
|
|
||||||
color: #777;
|
|
||||||
height: 1em;
|
|
||||||
max-width: 80%;
|
|
||||||
overflow: hidden;
|
|
||||||
padding-bottom: 1px;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.open .summaryText {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.date {
|
|
||||||
width: 25%;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.close .contentPanel {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.message {
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
</ui:style>
|
|
||||||
<g:HTMLPanel styleName='{style.commentBox}'>
|
|
||||||
<g:HTMLPanel ui:field='header'>
|
|
||||||
<table class='{style.table}'>
|
|
||||||
<tr>
|
|
||||||
<td><c:AvatarImage ui:field='avatar' /></td>
|
|
||||||
<td ui:field='name'></td>
|
|
||||||
<td class='{style.summary}'>
|
|
||||||
<div ui:field='summary' class='{style.summaryText}'></div>
|
|
||||||
</td>
|
|
||||||
<td ui:field='date' class='{style.date}'></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</g:HTMLPanel>
|
|
||||||
<div ui:field='contentPanel' class='{style.contentPanel}'>
|
|
||||||
<g:HTML ui:field='contentPanelMessage' styleName='{style.message}'></g:HTML>
|
|
||||||
<div>
|
|
||||||
<button ui:field='reply'><ui:msg>Reply ...</ui:msg></button>
|
|
||||||
<button ui:field='replyDone'><ui:msg>Reply 'Done'</ui:msg></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</g:HTMLPanel>
|
|
||||||
</ui:UiBinder>
|
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
//Copyright (C) 2013 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.
|
||||||
|
|
||||||
|
package com.google.gerrit.client.diff;
|
||||||
|
|
||||||
|
import com.google.gerrit.client.AvatarImage;
|
||||||
|
import com.google.gerrit.client.FormatUtil;
|
||||||
|
import com.google.gerrit.client.account.AccountInfo;
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.dom.client.Element;
|
||||||
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An HtmlPanel representing the header of a CommentBox, displaying
|
||||||
|
* the author's avatar (if applicable), the author's name, the summary,
|
||||||
|
* and the date.
|
||||||
|
*/
|
||||||
|
class CommentBoxHeader extends Composite {
|
||||||
|
interface Binder extends UiBinder<HTMLPanel, CommentBoxHeader> {}
|
||||||
|
private static Binder uiBinder = GWT.create(Binder.class);
|
||||||
|
|
||||||
|
@UiField(provided=true)
|
||||||
|
AvatarImage avatar;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Element name;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Element summary;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Element date;
|
||||||
|
|
||||||
|
CommentBoxHeader(AccountInfo author, Timestamp when, boolean isDraft) {
|
||||||
|
// TODO: Set avatar's display to none if we get a 404.
|
||||||
|
avatar = new AvatarImage(author, 26);
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
String dateText = FormatUtil.shortFormatDayTime(when);
|
||||||
|
if (isDraft) {
|
||||||
|
name.setInnerText("(Draft)");
|
||||||
|
date.setInnerText("Draft saved at " + dateText);
|
||||||
|
} else {
|
||||||
|
name.setInnerText(FormatUtil.name(author));
|
||||||
|
date.setInnerText(dateText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setSummaryText(String message) {
|
||||||
|
summary.setInnerText(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2013 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'
|
||||||
|
xmlns:c='urn:import:com.google.gerrit.client'>
|
||||||
|
<ui:with field='res' type='com.google.gerrit.client.diff.CommentBoxResources' />
|
||||||
|
<g:HTMLPanel>
|
||||||
|
<table class='{res.style.table}'>
|
||||||
|
<tr>
|
||||||
|
<td><c:AvatarImage ui:field='avatar' /></td>
|
||||||
|
<td ui:field='name'></td>
|
||||||
|
<td class='{res.style.summary}'>
|
||||||
|
<div ui:field='summary' class='{res.style.summaryText}'></div>
|
||||||
|
</td>
|
||||||
|
<td ui:field='date' class='{res.style.date}'></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
// Copyright (C) 2013 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.
|
||||||
|
|
||||||
|
package com.google.gerrit.client.diff;
|
||||||
|
|
||||||
|
import com.google.gwt.resources.client.ClientBundle;
|
||||||
|
import com.google.gwt.resources.client.CssResource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resources used by diff.
|
||||||
|
*/
|
||||||
|
interface CommentBoxResources extends ClientBundle {
|
||||||
|
@Source("CommentBoxUi.css")
|
||||||
|
Style style();
|
||||||
|
|
||||||
|
interface Style extends CssResource {
|
||||||
|
String open();
|
||||||
|
String close();
|
||||||
|
String commentBox();
|
||||||
|
String table();
|
||||||
|
String summary();
|
||||||
|
String summaryText();
|
||||||
|
String date();
|
||||||
|
String contentPanel();
|
||||||
|
String message();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
.commentBox {
|
||||||
|
background-color: #e5ecf9;
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
width: 100%;
|
||||||
|
cursor: pointer;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summaryText {
|
||||||
|
color: #777;
|
||||||
|
height: 1em;
|
||||||
|
max-width: 80%;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-bottom: 1px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.open .summaryText {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date {
|
||||||
|
width: 25%;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close .contentPanel {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message {
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
//Copyright (C) 2013 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.
|
||||||
|
|
||||||
|
package com.google.gerrit.client.diff;
|
||||||
|
|
||||||
|
import com.google.gerrit.client.account.AccountInfo;
|
||||||
|
import com.google.gerrit.client.ui.CommentLinkProcessor;
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.event.dom.client.DoubleClickEvent;
|
||||||
|
import com.google.gwt.event.dom.client.DoubleClickHandler;
|
||||||
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
|
import com.google.gwt.resources.client.CssResource;
|
||||||
|
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.globalkey.client.NpTextArea;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
|
/** An HtmlPanel for displaying and editing a draft */
|
||||||
|
//TODO: Make the buttons functional.
|
||||||
|
class DraftBox extends CommentBox {
|
||||||
|
interface Binder extends UiBinder<HTMLPanel, DraftBox> {}
|
||||||
|
private static UiBinder<HTMLPanel, CommentBox> uiBinder =
|
||||||
|
GWT.create(Binder.class);
|
||||||
|
|
||||||
|
interface DraftBoxStyle extends CssResource {
|
||||||
|
String edit();
|
||||||
|
String view();
|
||||||
|
}
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
NpTextArea editArea;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
DraftBoxStyle draftStyle;
|
||||||
|
|
||||||
|
private HandlerRegistration messageClick;
|
||||||
|
|
||||||
|
DraftBox(AccountInfo author, Timestamp when, String message,
|
||||||
|
CommentLinkProcessor linkProcessor) {
|
||||||
|
super(uiBinder, author, when, message, linkProcessor, true);
|
||||||
|
|
||||||
|
setEdit(false);
|
||||||
|
// TODO: Need a resize handler on editArea.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onLoad() {
|
||||||
|
super.onLoad();
|
||||||
|
|
||||||
|
messageClick = contentPanelMessage.addDomHandler(new DoubleClickHandler() {
|
||||||
|
@Override
|
||||||
|
public void onDoubleClick(DoubleClickEvent arg0) {
|
||||||
|
editArea.setText(contentPanelMessage.getText());
|
||||||
|
setEdit(!isEdit());
|
||||||
|
runClickCallback();
|
||||||
|
}
|
||||||
|
}, DoubleClickEvent.getType());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setEdit(boolean edit) {
|
||||||
|
if (edit) {
|
||||||
|
removeStyleName(draftStyle.view());
|
||||||
|
addStyleName(draftStyle.edit());
|
||||||
|
} else {
|
||||||
|
removeStyleName(draftStyle.edit());
|
||||||
|
addStyleName(draftStyle.view());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isEdit() {
|
||||||
|
return getStyleName().contains(draftStyle.edit());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onUnload() {
|
||||||
|
super.onUnload();
|
||||||
|
|
||||||
|
if (messageClick != null) {
|
||||||
|
messageClick.removeHandler();
|
||||||
|
messageClick = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2013 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'
|
||||||
|
xmlns:d='urn:import:com.google.gerrit.client.diff'
|
||||||
|
xmlns:c='urn:import:com.google.gwtexpui.globalkey.client'>
|
||||||
|
<ui:with field='res' type='com.google.gerrit.client.diff.CommentBoxResources' />
|
||||||
|
<ui:style field='draftStyle' type='com.google.gerrit.client.diff.DraftBox.DraftBoxStyle'>
|
||||||
|
.edit .messagePanel {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.view .editArea {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</ui:style>
|
||||||
|
<g:HTMLPanel styleName='{res.style.commentBox}'>
|
||||||
|
<d:CommentBoxHeader ui:field='header' />
|
||||||
|
<div class='{res.style.contentPanel}'>
|
||||||
|
<c:NpTextArea ui:field='editArea' styleName='{draftStyle.editArea}'/>
|
||||||
|
<div>
|
||||||
|
<button ui:field='save' class='{draftStyle.editArea}'>
|
||||||
|
<ui:msg>Save</ui:msg>
|
||||||
|
</button>
|
||||||
|
<button ui:field='cancel' class='{draftStyle.editArea}'>
|
||||||
|
<ui:msg>Cancel</ui:msg>
|
||||||
|
</button>
|
||||||
|
<button ui:field='discard' class='{draftStyle.editArea}'>
|
||||||
|
<ui:msg>Discard</ui:msg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class='{res.style.contentPanel}'>
|
||||||
|
<g:HTML ui:field='contentPanelMessage'
|
||||||
|
styleName='{res.style.message} {draftStyle.messagePanel}'></g:HTML>
|
||||||
|
<button ui:field='edit' class='{draftStyle.messagePanel}'>
|
||||||
|
<ui:msg>Edit</ui:msg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
//Copyright (C) 2013 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.
|
||||||
|
|
||||||
|
package com.google.gerrit.client.diff;
|
||||||
|
|
||||||
|
import com.google.gerrit.client.account.AccountInfo;
|
||||||
|
import com.google.gerrit.client.ui.CommentLinkProcessor;
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.uibinder.client.UiBinder;
|
||||||
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
|
/** An HtmlPanel for displaying a published comment */
|
||||||
|
// TODO: Make the buttons functional.
|
||||||
|
class PublishedBox extends CommentBox {
|
||||||
|
interface Binder extends UiBinder<HTMLPanel, PublishedBox> {}
|
||||||
|
private static UiBinder<HTMLPanel, CommentBox> uiBinder =
|
||||||
|
GWT.create(Binder.class);
|
||||||
|
|
||||||
|
PublishedBox(AccountInfo author, Timestamp when, String message,
|
||||||
|
CommentLinkProcessor linkProcessor) {
|
||||||
|
super(uiBinder, author, when, message, linkProcessor, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2013 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'
|
||||||
|
xmlns:d='urn:import:com.google.gerrit.client.diff'>
|
||||||
|
<ui:with field='res' type='com.google.gerrit.client.diff.CommentBoxResources' />
|
||||||
|
<g:HTMLPanel styleName='{res.style.commentBox}'>
|
||||||
|
<d:CommentBoxHeader ui:field='header' />
|
||||||
|
<g:HTMLPanel styleName='{res.style.contentPanel}'>
|
||||||
|
<g:HTML ui:field='contentPanelMessage' styleName='{res.style.message}'></g:HTML>
|
||||||
|
<div>
|
||||||
|
<button ui:field='reply'><ui:msg>Reply ...</ui:msg></button>
|
||||||
|
<button ui:field='replyDone'><ui:msg>Reply 'Done'</ui:msg></button>
|
||||||
|
</div>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
||||||
Reference in New Issue
Block a user