From 0c0c026877b879947f0f759574c5efc89c84991a Mon Sep 17 00:00:00 2001 From: Michael Zhou Date: Tue, 21 May 2013 15:28:51 -0700 Subject: [PATCH] Show side A in CodeMirrorDemo. Previously only showed side B. Updated demo to show both side A and B, on top of each other. Change-Id: I3d9c4adbecbf8b84292d838a28dec57baa7ed97c --- .../gerrit/client/diff/CodeMirrorDemo.java | 57 +++++++++++++------ 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CodeMirrorDemo.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CodeMirrorDemo.java index af149abe1a..f6f0b123bf 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CodeMirrorDemo.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/CodeMirrorDemo.java @@ -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) {