# HG changeset patch
# User phrebejk
# Date 1358802608 -3600
# Node ID 927a5f9fa43054e4891622d0f98ae68e92704f1c
# Parent 3f71a33643670ce92a88c8d6e4bfb89072329554
Errors courtesy Jarda.
diff -r 3f71a3364367 -r 927a5f9fa430 launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java
--- a/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Wed Jan 16 12:44:54 2013 +0100
+++ b/launcher/src/main/java/org/apidesign/bck2brwsr/dew/Dew.java Mon Jan 21 22:10:08 2013 +0100
@@ -24,6 +24,8 @@
import java.io.OutputStream;
import java.io.Writer;
import java.util.List;
+import java.util.Locale;
+import java.util.Locale;
import java.util.logging.Logger;
import javax.tools.Diagnostic;
import javax.tools.JavaFileObject;
@@ -33,7 +35,9 @@
import org.glassfish.grizzly.http.server.Request;
import org.glassfish.grizzly.http.server.Response;
import org.glassfish.grizzly.http.util.HttpStatus;
+import org.json.JSONArray;
import org.json.JSONObject;
+import org.json.JSONStringer;
import org.json.JSONTokener;
/**
@@ -62,7 +66,19 @@
response.getOutputStream().write("[]".getBytes());
response.setStatus(HttpStatus.OK_200);
} else {
- response.getOutputStream().write(("[errors:'" + err + "']").getBytes());
+
+ JSONArray errors = new JSONArray();
+
+ for (Diagnostic extends JavaFileObject> d : err) {
+ JSONObject e = new JSONObject();
+ e.put("col", d.getColumnNumber());
+ e.put("line", d.getLineNumber());
+ e.put("kind", d.getKind().toString());
+ e.put("msg", d.getMessage(Locale.ENGLISH));
+ errors.put(e);
+ }
+
+ errors.write(response.getWriter());
response.setStatus(HttpStatus.PRECONDITION_FAILED_412);
}
diff -r 3f71a3364367 -r 927a5f9fa430 launcher/src/main/resources/org/apidesign/bck2brwsr/dew/css/app.css
--- a/launcher/src/main/resources/org/apidesign/bck2brwsr/dew/css/app.css Wed Jan 16 12:44:54 2013 +0100
+++ b/launcher/src/main/resources/org/apidesign/bck2brwsr/dew/css/app.css Mon Jan 21 22:10:08 2013 +0100
@@ -15,6 +15,11 @@
overflow-x: auto;
}
+.error-hover:hover {
+ text-decoration: underline;
+ cursor: pointer;
+}
+
.ic-html5 {
display: inline-block;
height: 20px;
diff -r 3f71a3364367 -r 927a5f9fa430 launcher/src/main/resources/org/apidesign/bck2brwsr/dew/index.html
--- a/launcher/src/main/resources/org/apidesign/bck2brwsr/dew/index.html Wed Jan 16 12:44:54 2013 +0100
+++ b/launcher/src/main/resources/org/apidesign/bck2brwsr/dew/index.html Mon Jan 21 22:10:08 2013 +0100
@@ -14,33 +14,69 @@
-
-
Java and HTML5 - Together at Last!
+
+
+
+
+
+
-
+
+
+
+
+
+
+ {{doc.modelError.toString()}}
+
+
+
+
+
+
+
+
+
+ {{doc.modelError.toString()}}
+
+
+
-
-
-
-
-
- {{doc.modelError.toString()}}
-
-
-
-
- {{doc.modelError.toString()}}
-
-
-
+
+
+
+ {{e.line}} |
+ : |
+ {{e.col}} |
+ {{e.msg}} |
+
+
+
-
diff -r 3f71a3364367 -r 927a5f9fa430 launcher/src/main/resources/org/apidesign/bck2brwsr/dew/js/app.js
--- a/launcher/src/main/resources/org/apidesign/bck2brwsr/dew/js/app.js Wed Jan 16 12:44:54 2013 +0100
+++ b/launcher/src/main/resources/org/apidesign/bck2brwsr/dew/js/app.js Mon Jan 21 22:10:08 2013 +0100
@@ -29,6 +29,7 @@
deferCodeMirror = function() {
codeMirror = CodeMirror.fromTextArea(elm[0], opts);
+ elm[0].codeMirror = codeMirror;
// codeMirror.on("change", onChange(opts.onChange));
codeMirror.on("change", onChange);
@@ -119,19 +120,39 @@
+ "}\n";
- $scope.reload= function() {
+ $scope.reload = function() {
+ $scope.errors = null;
var frame = document.getElementById("result");
frame.src = "result.html";
frame.contentDocument.location.reload(true);
frame.contentWindow.location.reload();
};
+ $scope.fail = function( data ) {
+ $scope.errors = eval( data );
+ };
+
$scope.post = function(html, java) {
return $http({url: ".",
method: "POST",
//headers: this.headers,
data: { html : $scope.html, java : $scope.java}
- }).success( $scope.reload );
+ }).success( $scope.reload ).error( $scope.fail );
+ };
+
+ $scope.errorClass = function( kind ) {
+ switch( kind ) {
+ case "ERROR" :
+ return "error";
+ default :
+ return "warning";
+ }
+ };
+
+ $scope.gotoError = function( line, col ) {
+ var editor = document.getElementById("editorJava").codeMirror;
+ editor.setCursor({ line: line - 1, ch : col });
+ editor.focus();
};
$scope.tab = "html";