Merge "Show side A in CodeMirrorDemo."

This commit is contained in:
Shawn Pearce 2013-05-22 04:03:49 +00:00 committed by Gerrit Code Review
commit c6c91ed0f8

View File

@ -19,9 +19,11 @@ import com.google.gerrit.client.rpc.GerritCallback;
import com.google.gerrit.client.rpc.ScreenLoadCallback;
import com.google.gerrit.client.ui.Screen;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.FlowPanel;
@ -36,7 +38,8 @@ public class CodeMirrorDemo extends Screen {
private final String path;
private FlowPanel editorContainer;
private CodeMirror cm;
private CodeMirror cmA;
private CodeMirror cmB;
private HandlerRegistration resizeHandler;
public CodeMirrorDemo(
@ -87,41 +90,61 @@ public class CodeMirrorDemo extends Screen {
@Override
public void onShowView() {
super.onShowView();
cm.refresh();
cmA.refresh();
cmB.refresh();
}
@Override
protected void onUnload() {
super.onUnload();
if (resizeHandler != null) {
resizeHandler.removeHandler();
resizeHandler = null;
}
if (cm != null) {
cm.getWrapperElement().removeFromParent();
cm = null;
if (cmA != null) {
cmA.getWrapperElement().removeFromParent();
cmA = null;
}
if (cmB != null) {
cmB.getWrapperElement().removeFromParent();
cmB = null;
}
}
private void display(DiffInfo diff) {
cmA = displaySide(diff.meta_a(), diff.text_a());
cmB = displaySide(diff.meta_b(), diff.text_b());
resizeHandler = Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
if (cmA != null) {
cmA.setHeight(event.getHeight() - HEADER_FOOTER);
cmA.refresh();
}
if (cmB != null) {
cmB.setHeight(event.getHeight() - HEADER_FOOTER);
cmB.refresh();
}
}
});
}
private CodeMirror displaySide(DiffInfo.FileMeta meta, String contents) {
if (meta == null) {
return null; // TODO: Handle empty contents
}
Configuration cfg = Configuration.create()
.set("readOnly", true)
.set("lineNumbers", true)
.set("tabSize", 2)
.set("mode", getContentType(diff.meta_b()))
.set("value", diff.text_b());
cm = CodeMirror.create(editorContainer.getElement(), cfg);
.set("mode", getContentType(meta))
.set("value", contents);
Element child = DOM.createDiv();
editorContainer.getElement().appendChild(child);
final CodeMirror cm = CodeMirror.create(child, cfg);
cm.setWidth("100%");
cm.setHeight(Window.getClientHeight() - HEADER_FOOTER);
resizeHandler = Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
cm.setHeight(event.getHeight() - HEADER_FOOTER);
cm.refresh();
}
});
return cm;
}
private static String getContentType(DiffInfo.FileMeta meta) {