# 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 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 @@ -
- + + + +
+ +
 
- +
+
+ + +
HTML5
+
+ +
+ {{doc.modelError.toString()}} +
+
+
+ +
+ + +
Java
+
+ +
+ {{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";