Klávesové zkratky pro vykonání příkazu (ctrl+enter) a zobrazení historie (ctrl+h). A možnost zadávat tabulátor jako součást SQL.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Fri, 29 May 2009 01:31:01 +0200
changeset 14d08769933940
parent 13 96e711f3ef48
child 15 8632e6037843
Klávesové zkratky pro vykonání příkazu (ctrl+enter) a zobrazení historie (ctrl+h). A možnost zadávat tabulátor jako součást SQL.
java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java
java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx
java/sql-vyuka/web/index.jsp
java/sql-vyuka/web/klavesoveZkratky.js
java/sql-vyuka/web/vstupniPole.js
     1.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java	Fri May 29 00:36:44 2009 +0200
     1.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/ajax/Servlet.java	Fri May 29 01:31:01 2009 +0200
     1.3 @@ -22,6 +22,8 @@
     1.4          vykonat,
     1.5          /** Vypíše historii SQL příkazů daného uživatele. */
     1.6          historie,
     1.7 +        /** Nápověda – průvodce */
     1.8 +        napoveda,
     1.9          /** Vypíše nějaké nepotřebné informace. */
    1.10          test,
    1.11          /** Pokud je požadovaná akce nesmysl. */
    1.12 @@ -64,6 +66,9 @@
    1.13                  case historie:
    1.14                      out.println(a.getHistorie(uzivatel));
    1.15                      break;
    1.16 +                case napoveda:
    1.17 +                    out.println("<p>Nápověda bude…</p>");
    1.18 +                    break;
    1.19                  case test:
    1.20                      out.println("<p>AJAX jede!</p>");
    1.21                      out.println("<ol>");
     2.1 --- a/java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx	Fri May 29 00:36:44 2009 +0200
     2.2 +++ b/java/sql-vyuka/web/WEB-INF/casti/aplikace.jspx	Fri May 29 01:31:01 2009 +0200
     2.3 @@ -23,7 +23,7 @@
     2.4                  <div class="vnitrekBloku">
     2.5                      <form action="#" name="aplikace">
     2.6                          <fieldset>
     2.7 -                            <textarea id="vstupniPole" name="vstupniPole" rows="100" cols="1000"><fmt:message key="vychozi.sql"/></textarea>
     2.8 +                            <textarea id="vstupniPole" name="vstupniPole" rows="100" cols="1000" onkeypress="javascript:checkTab(event);"><fmt:message key="vychozi.sql"/></textarea>
     2.9                              <button class="zobrazitHistorii"
    2.10                                      name="zobrazitHistorii"
    2.11                                      title="Vypíše historii SQL příkazů."
     3.1 --- a/java/sql-vyuka/web/index.jsp	Fri May 29 00:36:44 2009 +0200
     3.2 +++ b/java/sql-vyuka/web/index.jsp	Fri May 29 01:31:01 2009 +0200
     3.3 @@ -11,6 +11,8 @@
     3.4          <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
     3.5          <link href="styl.css" type="text/css" rel="StyleSheet"/>
     3.6          <script type="text/javaScript" src="hlavni.js"></script>
     3.7 +        <script type="text/javaScript" src="vstupniPole.js"></script>
     3.8 +        <script type="text/javaScript" src="klavesoveZkratky.js"></script>
     3.9          <title><fmt:message key="nazev"/></title>
    3.10      </head>
    3.11      <body>
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/java/sql-vyuka/web/klavesoveZkratky.js	Fri May 29 01:31:01 2009 +0200
     4.3 @@ -0,0 +1,30 @@
     4.4 +/** Klávesové zkratky pro celou stránku */
     4.5 +
     4.6 +var isCtrl = false;
     4.7 +
     4.8 +document.onkeyup = function(e) {
     4.9 +    if(e.which == 17) {
    4.10 +        isCtrl = false;
    4.11 +    }
    4.12 +}
    4.13 +
    4.14 +document.onkeydown = function(e) {
    4.15 +    if(e.which == 17) {
    4.16 +        isCtrl = true;
    4.17 +    }
    4.18 +
    4.19 +    if (isCtrl) {
    4.20 +        if (e.which == 13) {
    4.21 +            /** ctrl+enter → vykonáme SQL */
    4.22 +            ajaxVykonatSQL();
    4.23 +            return false;
    4.24 +        } else if (e.which == 72) {
    4.25 +            /** ctrl+h → uobrazíme historii */
    4.26 +            ajaxZobrazitHistorii();
    4.27 +            return false;
    4.28 +        }
    4.29 +        return true;
    4.30 +    } else {
    4.31 +        return true;
    4.32 +    }
    4.33 +}
    4.34 \ No newline at end of file
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/java/sql-vyuka/web/vstupniPole.js	Fri May 29 01:31:01 2009 +0200
     5.3 @@ -0,0 +1,67 @@
     5.4 +/** Umožní zadávat tabulátor */
     5.5 +
     5.6 +var tab = "\t";
     5.7 +
     5.8 +function checkTab(evt) {
     5.9 +
    5.10 +    var t = evt.target;
    5.11 +    var ss = t.selectionStart;
    5.12 +    var se = t.selectionEnd;
    5.13 +
    5.14 +
    5.15 +    // Tabulátor
    5.16 +    if (evt.keyCode == 9) {
    5.17 +        evt.preventDefault();
    5.18 +
    5.19 +        // Víceřádkový výběr
    5.20 +        if (ss != se && t.value.slice(ss,se).indexOf("\n") != -1) {
    5.21 +            var pre = t.value.slice(0,ss);
    5.22 +            var sel = t.value.slice(ss,se).replace(/\n/g,"\n"+tab);
    5.23 +            var post = t.value.slice(se,t.value.length);
    5.24 +            t.value = pre.concat(tab).concat(sel).concat(post);
    5.25 +            t.selectionStart = ss + tab.length;
    5.26 +            t.selectionEnd = se + tab.length;
    5.27 +        }
    5.28 +
    5.29 +        // Jednořádkový nebo žádný výběr
    5.30 +        else {
    5.31 +            t.value = t.value.slice(0,ss).concat(tab).concat(t.value.slice(ss,t.value.length));
    5.32 +            if (ss == se) {
    5.33 +                t.selectionStart = t.selectionEnd = ss + tab.length;
    5.34 +            }
    5.35 +            else {
    5.36 +                t.selectionStart = ss + tab.length;
    5.37 +                t.selectionEnd = se + tab.length;
    5.38 +            }
    5.39 +        }
    5.40 +    }
    5.41 +
    5.42 +    // Backspace
    5.43 +    else if (evt.keyCode==8 && t.value.slice(ss - 4,ss) == tab) {
    5.44 +        evt.preventDefault();
    5.45 +        t.value = t.value.slice(0,ss - 4).concat(t.value.slice(ss,t.value.length));
    5.46 +        t.selectionStart = t.selectionEnd = ss - tab.length;
    5.47 +    }
    5.48 +
    5.49 +    // Delete
    5.50 +    else if (evt.keyCode==46 && t.value.slice(se,se + 4) == tab) {
    5.51 +        evt.preventDefault();
    5.52 +        t.value = t.value.slice(0,ss).concat(t.value.slice(ss + 4,t.value.length));
    5.53 +        t.selectionStart = t.selectionEnd = ss;
    5.54 +    }
    5.55 +
    5.56 +    // Doleva
    5.57 +    else if (evt.keyCode == 37 && t.value.slice(ss - 4,ss) == tab) {
    5.58 +        alert("levá");
    5.59 +        evt.preventDefault();
    5.60 +        t.selectionStart = t.selectionEnd = ss - 4;
    5.61 +    }
    5.62 +
    5.63 +
    5.64 +    // Doprava
    5.65 +    else if (evt.keyCode == 39 && t.value.slice(ss,ss + 4) == tab) {
    5.66 +        alert("pravá");
    5.67 +        evt.preventDefault();
    5.68 +        t.selectionStart = t.selectionEnd = ss + 4;
    5.69 +    }
    5.70 +}
    5.71 \ No newline at end of file