adding TestON
diff --git a/TestON/TAI/src/tai_ofa/CodeEditor.java b/TestON/TAI/src/tai_ofa/CodeEditor.java
new file mode 100644
index 0000000..c645aac
--- /dev/null
+++ b/TestON/TAI/src/tai_ofa/CodeEditor.java
@@ -0,0 +1,220 @@
+package tai_ofa;
+
+import java.util.Locale;
+import javafx.scene.layout.StackPane;
+import javafx.scene.web.WebView;
+import javax.print.Doc;
+import javax.swing.tree.DefaultTreeCellEditor;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/*
+	
+ *   TestON is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 2 of the License, or
+ *   (at your option) any later version.
+
+ *   TestON is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+
+ *   You should have received a copy of the GNU General Public License
+ *   along with TestON.  If not, see <http://www.gnu.org/licenses/>.
+
+
+*/
+
+public class CodeEditor extends StackPane {
+
+    /**
+     * a webview used to encapsulate the JavaScript.
+     */
+    final WebView webview = new WebView();
+    /**
+     * a snapshot of the code to be edited kept for easy initialization and
+     * reversion of editable code.
+     */
+    private String editingCode;
+    /**
+     * a template for editing code - this can be changed to any template derived
+     * from the supported modes at java to allow syntax highlighted editing of a
+     * wide variety of languages.
+     */
+    TAILocale label = new TAILocale(new Locale("en", "EN"));
+    String editorScriptsPath = label.OFAHarnessPath;
+    private final String editingTemplate =
+            "<!doctype html>"
+            + "<html>"
+            + "<head>"
+            + " <link rel=\"stylesheet\" href=\"file://editorScriptPath/codemirror.css\">".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/codemirror.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/clike.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/javascript-hint.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/search.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/dialog.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/searchcursor.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/simple-hint.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + " <link rel=\"stylesheet\" href=\"file://editorScriptPath/simple-hint.css\">".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/javascript-hint.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/foldcode.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/perl.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "  <script src=\"file://editorScriptPath/xml.js\"></script>".replace("editorScriptPath", editorScriptsPath + "/EditorScripts")
+            + "</head>"
+            + "<body>"
+            + "<form><textarea id=\"code\" name=\"code\">\n"
+            + "${code}"
+            + "</textarea></form>"
+            + "<script>"
+            + "var editor;"
+            + "editor = CodeMirror.fromTextArea(document.getElementById(\"code\"), {"
+            + "mode: \"perl\","
+            + "lineNumbers: true,"
+            + "  });"
+            + "</script>"
+            + "</body>"
+            + "</html>";
+
+    /**
+     * applies the editing template to the editing code to create the
+     * html+javascript source for a code editor.
+     */
+    private String applyEditingTemplate() {
+
+        editingTemplate.replace("${code}", editingCode);
+        return editingTemplate.replace("${code}", editingCode);
+
+    }
+
+    /**
+     * sets the current code in the editor and creates an editing snapshot of
+     * the code which can be reverted to.
+     */
+    public void setCode(String newCode) {
+        this.editingCode = newCode;
+        webview.getEngine().loadContent(applyEditingTemplate());
+
+        // webview.getStylesheets().add("eclipse.css");
+    }
+
+    public String getCurrentLine() {
+        return (String) webview.getEngine().executeScript("editor.getLine(editor.getCursor().line);");
+    }
+
+    public String getCurrentLineNumber() {
+
+        return webview.getEngine().executeScript("editor.getLineNumber(editor.getCursor().line);").toString();
+
+    }
+
+    public String getCurrentLine(int lineNumber) {
+        Integer lines = lineNumber;
+        return (String) webview.getEngine().executeScript("editor.getLine(line);".replace("line", lines.toString()));
+
+    }
+
+    public void setLine(int lineNumber, String text) {
+        String lineToSet = "editor.setLine(" + lineNumber + ",'lineText');";
+        webview.getEngine().executeScript(lineToSet.replace("lineText", text));
+    }
+
+    /**
+     * returns the current code in the editor and updates an editing snapshot of
+     * the code which can be reverted to.
+     */
+    public String getCodeAndSnapshot() {
+        //Document doc = webview.getEngine().getDocument();
+//            Element el = doc.getElementById("code");
+        webview.getEngine().executeScript("editor.refresh();");
+        this.editingCode = (String) webview.getEngine().executeScript("editor.getValue();");
+
+        return editingCode;
+    }
+
+    public int cursorPosfromTop() {
+        return (Integer) webview.getEngine().executeScript("editor.cursorTopPos();");
+
+    }
+
+    public int cursorPosfromLeft() {
+        return (Integer) webview.getEngine().executeScript("editor.cursorLeftPos();");
+
+    }
+
+    public String test() {
+        return (String) webview.getEngine().executeScript("editor.find();");
+
+    }
+
+    public void clearMarker(String line) {
+        int lineNumber = Integer.parseInt(line) - 1;
+        String lineNumberString = "editor.clearMarker(clearGutter);".replace("clearGutter", String.valueOf(lineNumber));
+        webview.getEngine().executeScript(lineNumberString);
+    }
+
+    public void SetError(String line, final String errorType) {
+
+        final String tooltip = "editor.setMarker(line-1, \"<a id='error' title='errorType \"  +  \"'><img src='file://editorScriptPath/Delete.png'/></a>%N%\"); ".replace("editorScriptPath", editorScriptsPath + "/EditorScripts");
+        Integer lineCount = (Integer) webview.getEngine().executeScript("editor.lineCount();");
+        int i;
+        for (i = 1; i <= lineCount; i++) {
+            String tooltipToExcute = tooltip.replace("line", line).replace("errorType", errorType);
+            if (!"".equals(errorType)) {
+                webview.getEngine().executeScript(tooltipToExcute);
+            }
+        }
+
+    }
+
+    public void SetWarning(String line, final String errorType) {
+
+        final String tooltip = "editor.setMarker(line-1, \"<a id='error' title='errorType \"  +  \"'><img src='file://editorScriptPath/Warning.png'/></a>%N%\"); ".replace("editorScriptPath", editorScriptsPath + "/EditorScripts");
+        Integer lineCount = (Integer) webview.getEngine().executeScript("editor.lineCount();");
+        int i;
+        for (i = 1; i <= lineCount; i++) {
+            String tooltipToExcute = tooltip.replace("line", line).replace("errorType", errorType);
+            if (!"".equals(errorType)) {
+                webview.getEngine().executeScript(tooltipToExcute);
+            }
+        }
+
+    }
+
+    public void SetInfo(String line, final String errorType) {
+
+        final String tooltip = "editor.setMarker(line-1, \"<a id='error' title='errorType \"  +  \"'><img src='file://editorScriptPath/info.jpg'/></a>%N%\"); ".replace("editorScriptPath", editorScriptsPath + "/EditorScripts");
+        Integer lineCount = (Integer) webview.getEngine().executeScript("editor.lineCount();");
+        int i;
+        for (i = 1; i <= lineCount; i++) {
+            String tooltipToExcute = tooltip.replace("line", line).replace("errorType", errorType);
+            if (!"".equals(errorType)) {
+                webview.getEngine().executeScript(tooltipToExcute);
+            }
+        }
+
+    }
+
+    /**
+     * revert edits of the code to the last edit snapshot taken.
+     */
+    public void revertEdits() {
+        setCode(editingCode);
+    }
+
+    /**
+     * Create a new code editor.
+     *
+     * @param editingCode the initial code to be edited in the code editor.
+     */
+    CodeEditor(String editingCode) {
+        this.editingCode = editingCode;
+
+        // webview.setPrefSize(650, 325);
+        //  webview.setMinSize(150, 325);
+        webview.getEngine().loadContent(applyEditingTemplate());
+
+
+        this.getChildren().add(webview);
+    }
+}