Merge "Show side A in CodeMirrorDemo."
This commit is contained in:
commit
c6c91ed0f8
@ -19,9 +19,11 @@ import com.google.gerrit.client.rpc.GerritCallback;
|
|||||||
import com.google.gerrit.client.rpc.ScreenLoadCallback;
|
import com.google.gerrit.client.rpc.ScreenLoadCallback;
|
||||||
import com.google.gerrit.client.ui.Screen;
|
import com.google.gerrit.client.ui.Screen;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
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.ResizeEvent;
|
||||||
import com.google.gwt.event.logical.shared.ResizeHandler;
|
import com.google.gwt.event.logical.shared.ResizeHandler;
|
||||||
import com.google.gwt.event.shared.HandlerRegistration;
|
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.Window;
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
|
|
||||||
@ -36,7 +38,8 @@ public class CodeMirrorDemo extends Screen {
|
|||||||
private final String path;
|
private final String path;
|
||||||
|
|
||||||
private FlowPanel editorContainer;
|
private FlowPanel editorContainer;
|
||||||
private CodeMirror cm;
|
private CodeMirror cmA;
|
||||||
|
private CodeMirror cmB;
|
||||||
private HandlerRegistration resizeHandler;
|
private HandlerRegistration resizeHandler;
|
||||||
|
|
||||||
public CodeMirrorDemo(
|
public CodeMirrorDemo(
|
||||||
@ -87,41 +90,61 @@ public class CodeMirrorDemo extends Screen {
|
|||||||
@Override
|
@Override
|
||||||
public void onShowView() {
|
public void onShowView() {
|
||||||
super.onShowView();
|
super.onShowView();
|
||||||
cm.refresh();
|
cmA.refresh();
|
||||||
|
cmB.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onUnload() {
|
protected void onUnload() {
|
||||||
super.onUnload();
|
super.onUnload();
|
||||||
|
|
||||||
if (resizeHandler != null) {
|
if (resizeHandler != null) {
|
||||||
resizeHandler.removeHandler();
|
resizeHandler.removeHandler();
|
||||||
resizeHandler = null;
|
resizeHandler = null;
|
||||||
}
|
}
|
||||||
if (cm != null) {
|
if (cmA != null) {
|
||||||
cm.getWrapperElement().removeFromParent();
|
cmA.getWrapperElement().removeFromParent();
|
||||||
cm = null;
|
cmA = null;
|
||||||
|
}
|
||||||
|
if (cmB != null) {
|
||||||
|
cmB.getWrapperElement().removeFromParent();
|
||||||
|
cmB = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void display(DiffInfo diff) {
|
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()
|
Configuration cfg = Configuration.create()
|
||||||
.set("readOnly", true)
|
.set("readOnly", true)
|
||||||
.set("lineNumbers", true)
|
.set("lineNumbers", true)
|
||||||
.set("tabSize", 2)
|
.set("tabSize", 2)
|
||||||
.set("mode", getContentType(diff.meta_b()))
|
.set("mode", getContentType(meta))
|
||||||
.set("value", diff.text_b());
|
.set("value", contents);
|
||||||
|
Element child = DOM.createDiv();
|
||||||
cm = CodeMirror.create(editorContainer.getElement(), cfg);
|
editorContainer.getElement().appendChild(child);
|
||||||
|
final CodeMirror cm = CodeMirror.create(child, cfg);
|
||||||
cm.setWidth("100%");
|
cm.setWidth("100%");
|
||||||
cm.setHeight(Window.getClientHeight() - HEADER_FOOTER);
|
cm.setHeight(Window.getClientHeight() - HEADER_FOOTER);
|
||||||
resizeHandler = Window.addResizeHandler(new ResizeHandler() {
|
return cm;
|
||||||
@Override
|
|
||||||
public void onResize(ResizeEvent event) {
|
|
||||||
cm.setHeight(event.getHeight() - HEADER_FOOTER);
|
|
||||||
cm.refresh();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getContentType(DiffInfo.FileMeta meta) {
|
private static String getContentType(DiffInfo.FileMeta meta) {
|
||||||
|
Loading…
Reference in New Issue
Block a user