Merge "Make RAW formatter configurable"
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
index 91f34fd..92fa3ee 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
@@ -16,6 +16,11 @@
import com.google.gerrit.plugin.client.Plugin;
import com.google.gerrit.plugin.client.screen.Screen;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.ui.Frame;
import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -45,17 +50,43 @@
}
XDocScreen(String projectName, String revision, String fileName) {
+ setStyleName("xdocs-panel");
+
HorizontalPanel p = new HorizontalPanel();
p.add(new InlineHyperlink(projectName, "/admin/projects/" + projectName));
p.add(new Label(" / " + fileName + " (" + revision + ")"));
add(p);
- setStyleName("xdocs-panel");
- String frameId = "xdoc_iframe";
- Frame frame = new Frame(getUrl(projectName, revision, fileName));
- frame.getElement().setId(frameId);
- resize(frame, frameId);
- add(frame);
+ final String url = getUrl(projectName, revision, fileName);
+ RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
+ try {
+ builder.sendRequest(null, new RequestCallback() {
+ public void onResponseReceived(Request request, Response response) {
+ int status = response.getStatusCode();
+ if (200 <= status && status < 300) {
+ String frameId = "xdoc_iframe";
+ Frame frame = new Frame(url);
+ frame.getElement().setId(frameId);
+ resize(frame, frameId);
+ add(frame);
+ } else {
+ showError(status + " " + response.getStatusText());
+ }
+ }
+
+ public void onError(Request request, Throwable exception) {
+ showError(exception.getMessage());
+ }
+ });
+ } catch (RequestException e) {
+ showError(e.getMessage());
+ }
+ }
+
+ private void showError(String message) {
+ Label l = new Label("Unable to load document: " + message);
+ l.setStyleName("xdocs-error");
+ add(l);
}
private String getUrl(String projectName, String revision, String fileName) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/public/xdocs.css b/src/main/java/com/googlesource/gerrit/plugins/xdocs/public/xdocs.css
index e2623eb..cf984d4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/public/xdocs.css
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/public/xdocs.css
@@ -7,3 +7,8 @@
width: 100%;
}
+.xdocs-error {
+ margin-top: 10px;
+ color: red;
+ font-weight: bold;
+}