Merge "Add ",codemirror" view of a file"
This commit is contained in:
		@@ -69,6 +69,7 @@ import com.google.gerrit.client.changes.PublishCommentScreen;
 | 
				
			|||||||
import com.google.gerrit.client.changes.QueryScreen;
 | 
					import com.google.gerrit.client.changes.QueryScreen;
 | 
				
			||||||
import com.google.gerrit.client.dashboards.DashboardInfo;
 | 
					import com.google.gerrit.client.dashboards.DashboardInfo;
 | 
				
			||||||
import com.google.gerrit.client.dashboards.DashboardList;
 | 
					import com.google.gerrit.client.dashboards.DashboardList;
 | 
				
			||||||
 | 
					import com.google.gerrit.client.diff.CodeMirrorDemo;
 | 
				
			||||||
import com.google.gerrit.client.groups.GroupApi;
 | 
					import com.google.gerrit.client.groups.GroupApi;
 | 
				
			||||||
import com.google.gerrit.client.groups.GroupInfo;
 | 
					import com.google.gerrit.client.groups.GroupInfo;
 | 
				
			||||||
import com.google.gerrit.client.patches.PatchScreen;
 | 
					import com.google.gerrit.client.patches.PatchScreen;
 | 
				
			||||||
@@ -567,6 +568,8 @@ public class Dispatcher {
 | 
				
			|||||||
                top, //
 | 
					                top, //
 | 
				
			||||||
                baseId //
 | 
					                baseId //
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					          } else if ("codemirror".equals(panel)) {
 | 
				
			||||||
 | 
					            return new CodeMirrorDemo(baseId, id.getParentKey(), id.get());
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,111 @@
 | 
				
			|||||||
 | 
					// 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.rpc.ScreenLoadCallback;
 | 
				
			||||||
 | 
					import com.google.gerrit.client.ui.Screen;
 | 
				
			||||||
 | 
					import com.google.gerrit.reviewdb.client.PatchSet;
 | 
				
			||||||
 | 
					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.Window;
 | 
				
			||||||
 | 
					import com.google.gwt.user.client.ui.FlowPanel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.codemirror.lib.CodeMirror;
 | 
				
			||||||
 | 
					import net.codemirror.lib.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CodeMirrorDemo extends Screen {
 | 
				
			||||||
 | 
					  private static final int HEADER_FOOTER = 60 + 15 * 2 + 38;
 | 
				
			||||||
 | 
					  private final PatchSet.Id base;
 | 
				
			||||||
 | 
					  private final PatchSet.Id revision;
 | 
				
			||||||
 | 
					  private final String path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private FlowPanel editorContainer;
 | 
				
			||||||
 | 
					  private CodeMirror cm;
 | 
				
			||||||
 | 
					  private HandlerRegistration resizeHandler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public CodeMirrorDemo(
 | 
				
			||||||
 | 
					      PatchSet.Id base,
 | 
				
			||||||
 | 
					      PatchSet.Id revision,
 | 
				
			||||||
 | 
					      String path) {
 | 
				
			||||||
 | 
					    this.base = base;
 | 
				
			||||||
 | 
					    this.revision = revision;
 | 
				
			||||||
 | 
					    this.path = path;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  protected void onInitUI() {
 | 
				
			||||||
 | 
					    super.onInitUI();
 | 
				
			||||||
 | 
					    add(editorContainer = new FlowPanel());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  protected void onLoad() {
 | 
				
			||||||
 | 
					    super.onLoad();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DiffApi.diff(revision, path)
 | 
				
			||||||
 | 
					      .base(base)
 | 
				
			||||||
 | 
					      .wholeFile()
 | 
				
			||||||
 | 
					      .ignoreWhitespace(DiffApi.IgnoreWhitespace.NONE)
 | 
				
			||||||
 | 
					      .get(new ScreenLoadCallback<DiffInfo>(this) {
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        protected void preDisplay(DiffInfo diff) {
 | 
				
			||||||
 | 
					          display(diff);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  public void onShowView() {
 | 
				
			||||||
 | 
					    super.onShowView();
 | 
				
			||||||
 | 
					    cm.refresh();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  protected void onUnload() {
 | 
				
			||||||
 | 
					    super.onUnload();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (resizeHandler != null) {
 | 
				
			||||||
 | 
					      resizeHandler.removeHandler();
 | 
				
			||||||
 | 
					      resizeHandler = null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (cm != null) {
 | 
				
			||||||
 | 
					      cm.getWrapperElement().removeFromParent();
 | 
				
			||||||
 | 
					      cm = null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private void display(DiffInfo diff) {
 | 
				
			||||||
 | 
					    Configuration cfg = Configuration.create()
 | 
				
			||||||
 | 
					      .set("readOnly", true)
 | 
				
			||||||
 | 
					      .set("lineNumbers", true)
 | 
				
			||||||
 | 
					      .set("tabSize", 2)
 | 
				
			||||||
 | 
					      .set("value", diff.text_b());
 | 
				
			||||||
 | 
					    if (diff.meta_b() != null && diff.meta_b().content_type() != null) {
 | 
				
			||||||
 | 
					      cfg.set("mode", diff.meta_b().content_type());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cm = CodeMirror.create(editorContainer.getElement(), 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();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -37,7 +37,9 @@ public class DiffApi {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public DiffApi base(PatchSet.Id id) {
 | 
					  public DiffApi base(PatchSet.Id id) {
 | 
				
			||||||
    call.addParameter("base", id.get());
 | 
					    if (id != null) {
 | 
				
			||||||
 | 
					      call.addParameter("base", id.get());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return this;
 | 
					    return this;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package net.codemirror.lib;
 | 
					package net.codemirror.lib;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gwt.core.client.JavaScriptObject;
 | 
				
			||||||
import com.google.gwt.dom.client.Document;
 | 
					import com.google.gwt.dom.client.Document;
 | 
				
			||||||
 | 
					import com.google.gwt.dom.client.Element;
 | 
				
			||||||
import com.google.gwt.dom.client.ScriptElement;
 | 
					import com.google.gwt.dom.client.ScriptElement;
 | 
				
			||||||
import com.google.gwt.dom.client.StyleInjector;
 | 
					import com.google.gwt.dom.client.StyleInjector;
 | 
				
			||||||
import com.google.gwt.resources.client.ExternalTextResource;
 | 
					import com.google.gwt.resources.client.ExternalTextResource;
 | 
				
			||||||
@@ -26,7 +28,26 @@ import com.google.gwt.safehtml.shared.SafeUri;
 | 
				
			|||||||
import java.util.logging.Level;
 | 
					import java.util.logging.Level;
 | 
				
			||||||
import java.util.logging.Logger;
 | 
					import java.util.logging.Logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class CodeMirror {
 | 
					/**
 | 
				
			||||||
 | 
					 * Glue to connect CodeMirror to be callable from GWT.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @link http://codemirror.net/doc/manual.html#api
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class CodeMirror extends JavaScriptObject {
 | 
				
			||||||
 | 
					  public static native CodeMirror create(Element parent, Configuration cfg) /*-{
 | 
				
			||||||
 | 
					    return $wnd.CodeMirror(parent, cfg);
 | 
				
			||||||
 | 
					  }-*/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public final native void setValue(String v) /*-{ this.setValue(v); }-*/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public final native void setWidth(int w) /*-{ this.setSize(w, null); }-*/;
 | 
				
			||||||
 | 
					  public final native void setWidth(String w) /*-{ this.setSize(w, null); }-*/;
 | 
				
			||||||
 | 
					  public final native void setHeight(int h) /*-{ this.setSize(null, h); }-*/;
 | 
				
			||||||
 | 
					  public final native void setHeight(String h) /*-{ this.setSize(null, h); }-*/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public final native void refresh() /*-{ this.refresh(); }-*/;
 | 
				
			||||||
 | 
					  public final native Element getWrapperElement() /*-{ return this.getWrapperElement(); }-*/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public static void install() {
 | 
					  public static void install() {
 | 
				
			||||||
    asyncInjectCss(Lib.I.css());
 | 
					    asyncInjectCss(Lib.I.css());
 | 
				
			||||||
    asyncInjectScript(Lib.I.js().getSafeUri());
 | 
					    asyncInjectScript(Lib.I.js().getSafeUri());
 | 
				
			||||||
@@ -63,6 +84,6 @@ public class CodeMirror {
 | 
				
			|||||||
    log.log(Level.SEVERE, "Cannot fetch CSS", e);
 | 
					    log.log(Level.SEVERE, "Cannot fetch CSS", e);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private CodeMirror() {
 | 
					  protected CodeMirror() {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										41
									
								
								gerrit-gwtui/src/main/java/net/codemirror/lib/Configuration.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								gerrit-gwtui/src/main/java/net/codemirror/lib/Configuration.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					// 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 net.codemirror.lib;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gwt.core.client.JavaScriptObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Simple map-like structure to pass configuration to CodeMirror.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @link http://codemirror.net/doc/manual.html#config
 | 
				
			||||||
 | 
					 * @see CodeMirror#create(com.google.gwt.dom.client.Element, Configuration)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Configuration extends JavaScriptObject {
 | 
				
			||||||
 | 
					  public static Configuration create() {
 | 
				
			||||||
 | 
					    return createObject().cast();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public final native Configuration set(String name, String val)
 | 
				
			||||||
 | 
					  /*-{ this[name] = val; return this; }-*/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public final native Configuration set(String name, int val)
 | 
				
			||||||
 | 
					  /*-{ this[name] = val; return this; }-*/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public final native Configuration set(String name, boolean val)
 | 
				
			||||||
 | 
					  /*-{ this[name] = val; return this; }-*/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  protected Configuration() {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user