From fd0b4cf7236de6f05f3df2ed5bdd9508fd5fbb01 Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Thu, 16 Mar 2017 18:35:44 +0000 Subject: [PATCH] Versuche mit dem Java-Compiler (in Arbeit) --- web/ui/ui.js | 88 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 86 insertions(+), 2 deletions(-) diff --git a/web/ui/ui.js b/web/ui/ui.js index 6e52b6a..0fd2167 100644 --- a/web/ui/ui.js +++ b/web/ui/ui.js @@ -31,6 +31,7 @@ var loc; var PERS_DIR = "Persoenlich"; var PUB_DIR = "Oeffentlich"; +var compilerIssues; function fm_init() { $("#mce-editor").hide(); @@ -57,6 +58,7 @@ $('#m-paste').on('click', fm_menu_paste); $('#m-shrink').on('click', fm_menu_shrink); $('#m-test').on('click', fm_menu_test); + $('#m-test-2').on('click', fm_menu_test_2); $('#saveModal').on('hidden.bs.modal', function (e) { $('#modal_ok').attr('onclick','').unbind('click'); }); @@ -139,6 +141,7 @@ */ tinymce.init({ content_css : "/file-cms/ui/mce.css", + //content_css: "/jslib/bootstrap/css/bootstrap.min.css", selector: "textarea.text-editor", statusbar: false, menubar: false, @@ -273,6 +276,46 @@ $('.ost').empty(); $('.ost').width(0); } +} + +function fm_menu_test_2() { + fm_compile('0', fm_mark_compile_results_in_editor); +} + +function fm_mark_compile_results_in_editor(resp) { + cm.clearGutter("breakpoints"); + + if(resp.List[0].CompilerIssue !== undefined) { + var lno; + var eMsg; + if(resp.List[0].CompilerIssue instanceof Array) { + var issueNo = 0; + while(issueNo < resp.List[0].CompilerIssue.length) { + // console.log(resp.List[0].CompilerIssue[issueNo].kind); + // console.log(resp.List[0].CompilerIssue[issueNo].lineNumber); + // console.log(resp.List[0].CompilerIssue[issueNo].sourceName); + // console.log(resp.List[0].CompilerIssue[issueNo].message); + lno = resp.List[0].CompilerIssue[issueNo].lineNumber; + eMsg = resp.List[0].CompilerIssue[issueNo].kind + ' ' + resp.List[0].CompilerIssue[issueNo].message; + cm.setGutterMarker(lno-1, "breakpoints", makeMarker(eMsg)); + issueNo++; + } + } else { + lno = resp.List[0].CompilerIssue.lineNumber; + eMsg = resp.List[0].CompilerIssue.kind + ' ' + resp.List[0].CompilerIssue.message; + cm.setGutterMarker(lno-1, "breakpoints", makeMarker(eMsg)); + } + } +} + +function fm_compile(modeStr, callback) { + var liste = fm_gewaehlte_dateien(); + var m = '?c=de.uhilger.filecms.api.CompileService&m=compile&p=' + pfad + '&p=' + encodeURIComponent(liste) + + '&p=' + modeStr; + var u = '../svc' + m; + fm_get(u, "json", function(resp) { + callback(resp); + }); } function fm_ansicht_umschalten() { @@ -539,7 +582,7 @@ $('#modal_ok').click(function() { // hier umbenennen - fm_rename_file(fname, pfad, $('#dateiname').val()) + fm_rename_file(fname, pfad, $('#dateiname').val()); }); $('#saveModalTitle').text('Datei umbenennen'); $('#dialogfrage').text("Neuer Dateiname?"); @@ -824,21 +867,39 @@ /* ---- codemirror editor handling -------- */ +/* function htmlDecode(value){ return $('<div/>').html(value).text(); } +*/ function fm_code_edit(content, m) { cm = CodeMirror.fromTextArea(document.getElementById("editspace"), { lineNumbers: true, + gutters: ["CodeMirror-linenumbers", "breakpoints"], mode: m, viewportMargin : Infinity, + tabSize: 2, extraKeys: { "F9": function(cm) { cm.setOption("fullScreen", !cm.getOption("fullScreen")); }, "Esc": function(cm) { if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false); + }, + ".": function(cm) { + console.log('dot pressed: perhaps look up class or method name'); + /* + * Hier kann man eine Funktion ausloesen, die fuer das + * Wort vor dem Punkt (Name der Klasse) eine Liste mit + * Vorschlaegen fuer Methodennamen einblendet. + */ + + /* + * CodeMirror.Pass laesst das Zeichen zum Editorinhalt durch, + * verhindert aber das Ausloesen von 'keyHandled' + */ + return CodeMirror.Pass; } } }); @@ -846,9 +907,32 @@ //cm.setValue(content); cm.setValue(unescapeHtml(content)); cm.getDoc().markClean(); + cm.on("gutterClick", function(theEditor, lineNumber) { + var info = theEditor.lineInfo(lineNumber); + //--lineNumber; + //console.log(info.gutterMarkers.breakpoints.message); + //var marker = info.gutterMarkers.breakpoints; + //$(marker).tooltip('toggle'); + }); + /* + cm.on("keyHandled", function(theEditor, keyName, event){ + console.log('cm.keyHandled keyName: ' + keyName + ', event.type: ' + event.type); + }); + */ } - +function makeMarker(msg) { + var marker = document.createElement("div"); + marker.style.color = "#822"; + marker.innerHTML = "●"; + //marker.message = msg; + $(marker).tooltip({ + placement: 'right', + title: msg, + offset: '0 -30' + }); + return marker; +} /* -------- helper functions ----------- */ -- Gitblit v1.9.3