adding TestON
diff --git a/TestON/TAI/src/tai_ofa/OFAContentHelp.java b/TestON/TAI/src/tai_ofa/OFAContentHelp.java
new file mode 100644
index 0000000..083daf5
--- /dev/null
+++ b/TestON/TAI/src/tai_ofa/OFAContentHelp.java
@@ -0,0 +1,705 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package tai_ofa;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.geometry.Side;
+import javafx.scene.Group;
+import javafx.scene.control.ContextMenu;
+import javafx.scene.control.Label;
+import javafx.scene.control.ListView;
+import javafx.scene.control.MenuItem;
+import javafx.scene.control.TextField;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.StackPane;
+
+/**
+ *
+ * @author Raghav kashyap (raghavkashyap@paxterrasolutions.com)
+	
+ *   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 OFAContentHelp {
+
+    ContextMenu assertContext;
+    ArrayList<MenuItem> assertNameList;
+    CodeEditor Content;
+    TAI_OFA OFAReference;
+    String ospkCommand;
+    boolean keyPressed = false;
+    ArrayList<String> checkBuffer;
+    ContextMenu contextMenu, driverFunctionContextMenu;
+    ArrayList<String> myDevices;
+    ArrayList<MenuItem> myMenuItems;
+    ArrayList<String> driverFunctionName;
+    ArrayList<MenuItem> functionMenuItem;
+    OFAParamDeviceName paramFile;
+    String deviceTypePath;
+    ContextMenu commandNameContextMenu, withContextMenu, runDriverContextMenu;
+    ArrayList<MenuItem> bdtFunction;
+    String selectedDeviceName;
+    String selectedFunctionName;
+    TextField paraMeterListText;
+    ArrayList<String> parameterArrayList = new ArrayList<String>();
+    ArrayList<TextField> parameterTextFieldList = new ArrayList<TextField>();
+    String matchedCase;
+    ArrayList<Label> parameterLabel = new ArrayList<Label>();
+    OFAFileOperations fileOperation = new OFAFileOperations();
+    ObservableList<String> data;
+    Group popupRoot;
+    ListView<String> seleniumFunctionListView, cliFunctionListView;
+    String baseDeviceDriver, cliFunctionStr;
+    ArrayList<String> cliFunctionList = new ArrayList<String>();
+    HashMap<String, String> cliFunctionWithArgumentMap = new HashMap<String, String>();
+    String selectedCLiFunction;
+    String selectedSeleniumFunction;
+    TAILocale label = new TAILocale(new Locale("en", "EN"));
+    String OFAHarnessPath = label.hierarchyTestON;
+    String bdrPath;
+    String selectedDeviceType;
+
+    public OFAContentHelp() {
+    }
+
+    public OFAContentHelp(CodeEditor editor, TAI_OFA reference) {
+        this.Content = editor;
+        OFAReference = reference;
+    }
+
+    public void assertContextMenu() {
+        assertContext = new ContextMenu();
+        MenuItem equal = new MenuItem("EQUALS");
+        MenuItem match = new MenuItem("MATCHES");
+        MenuItem greater = new MenuItem("GREATER");
+        MenuItem lesser = new MenuItem("LESSER");
+        assertNameList = new ArrayList<MenuItem>();
+        assertNameList.add(equal);
+        assertNameList.add(match);
+        assertNameList.add(greater);
+        assertNameList.add(lesser);
+        assertContext.getItems().addAll(equal, match, greater, lesser);
+    }
+
+    public void ospkHelp() {
+
+        Content.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent keyEvent) {
+                if (keyEvent.getCode() == KeyCode.SPACE) {
+                    ArrayList<Integer> existingCaseNumber = new ArrayList<Integer>();
+                    existingCaseNumber.add(0);
+                    String[] content = Content.getCodeAndSnapshot().split("\n");
+                    for (int i = 0; i < content.length; i++) {
+                        Pattern pattern = Pattern.compile("CASE\\s+(\\d+)\\s*");
+                        Matcher matchCase = pattern.matcher(content[i]);
+
+                        while (matchCase.find()) {
+                            try {
+                                int number = Integer.parseInt(matchCase.group(1));
+                                existingCaseNumber.add(number);
+                            } catch (Exception e) {
+                            }
+                        }
+                    }
+
+                    int max = Collections.max(existingCaseNumber);
+                    max = max + 1;
+                    String caseNumbers = String.valueOf(max);
+                    Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("CASE", "CASE" + " " + caseNumbers));
+                }
+
+                Pattern namePattern = Pattern.compile("\\s*NAME\\s+(.*)");
+                Pattern descPattern = Pattern.compile("DESC\\s+(.*)");
+                Pattern stepPattern = Pattern.compile("STEP\\s+(.*)");
+                Pattern onPattern = Pattern.compile("ON\\s+(.*)");
+                Pattern cmdPattern = Pattern.compile("ON\\s+(\\w+\\s+(.*))");
+                Pattern runPattern = Pattern.compile("" + ospkCommand + "\\s+(.*)");
+                Pattern assertPattern = Pattern.compile("ASSERT\\s+(.*)");
+                Pattern usingPattern = Pattern.compile("(.*)\\s+USING\\s+");
+                String[] OFAEditorLine = Content.getCodeAndSnapshot().split("\n");
+
+                final Matcher onMatch = onPattern.matcher(Content.getCurrentLine());
+                final Matcher cmdMatch = cmdPattern.matcher(Content.getCurrentLine());
+                final Matcher runMatch = runPattern.matcher(Content.getCurrentLine());
+                final Matcher asertMatch = assertPattern.matcher(Content.getCurrentLine());
+                final Matcher usingMatch = usingPattern.matcher(Content.getCurrentLine());
+                Matcher nameMatch = namePattern.matcher(Content.getCurrentLine());
+                Matcher descMatch = descPattern.matcher(Content.getCurrentLine());
+                Matcher stepMatch = stepPattern.matcher(Content.getCurrentLine());
+                while (nameMatch.find()) {
+                    if (nameMatch.group(1).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.SPACE) {
+                            Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("NAME", "NAME" + " " + "\"\""));
+                        }
+
+                    }
+                }
+
+                while (descMatch.find()) {
+                    if (descMatch.group(1).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.SPACE) {
+                            Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("DESC", "DESC" + " " + "\"\""));
+                        }
+
+                    }
+                }
+
+                while (stepMatch.find()) {
+                    if (stepMatch.group(1).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.SPACE) {
+                            Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("STEP", "STEP" + " " + "\"\""));
+                        }
+
+                    }
+                }
+
+
+                while (onMatch.find()) {
+                    if (onMatch.group(1).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+                            keyPressed = true;
+                        }
+
+                        if (keyPressed == true) {
+                            if (keyEvent.getCode() == KeyCode.SPACE) {
+                                keyPressed = false;
+                                onMatch.group();
+                                onDeviceContextMenu();
+                                contextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+                                for (final MenuItem myMenuItem : myMenuItems) {
+                                    myMenuItem.setOnAction(new EventHandler<ActionEvent>() {
+                                        @Override
+                                        public void handle(ActionEvent arg0) {
+                                            HashMap<String, String> deviceNameAndType = paramFile.getdeviceNameAndType();
+                                            Iterator paramIterator = deviceNameAndType.entrySet().iterator();
+                                            while (paramIterator.hasNext()) {
+                                                Map.Entry mEntry = (Map.Entry) paramIterator.next();
+                                                if (myMenuItem.getText().equals(mEntry.getKey())) {
+                                                    selectedDeviceType = mEntry.getValue().toString();
+                                                    selectedDeviceType = selectedDeviceType.replaceAll("\\s+", "");
+                                                    String driverTypePath = OFAHarnessPath + "/drivers/common/";
+                                                    File aFile = new File(driverTypePath);
+                                                    fileOperation.Process(aFile);
+                                                    for (String path : fileOperation.filePath) {
+                                                        String[] splitPath = path.split("\\/");
+                                                        String[] fileName = splitPath[splitPath.length - 1].split("\\.");
+                                                        for (int p = 0; p < fileName.length; p++) {
+                                                            if ((selectedDeviceType).equals(fileName[p])) {
+                                                                deviceTypePath = path;
+                                                                bdrPath = deviceTypePath.replaceAll("py", "ospk");
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                            selectedDeviceName = myMenuItem.getText();
+                                            Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("ON", "ON" + " " + myMenuItem.getText()));
+                                        }
+                                    });
+                                }
+                            }
+                        }
+
+                    }
+                }
+                while (cmdMatch.find()) {
+                    if (cmdMatch.group(2).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+                            keyPressed = true;
+                        }
+
+                        if (keyPressed == true) {
+                            if (keyEvent.getCode() == KeyCode.SPACE) {
+                                runContextMenu();
+                                commandNameContextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 115);
+                                for (final MenuItem bdtCmd : bdtFunction) {
+                                    bdtCmd.setOnAction(new EventHandler<ActionEvent>() {
+                                        @Override
+                                        public void handle(ActionEvent t) {
+                                            ospkCommand = bdtCmd.getText();
+                                            Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace(selectedDeviceName, selectedDeviceName + " " + bdtCmd.getText()));
+                                        }
+                                    });
+                                }
+                            }
+                        }
+                    }
+                }
+
+                while (runMatch.find()) {
+
+                    if (runMatch.group(1).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+                            keyPressed = true;
+                        }
+                        if (keyPressed == true) {
+                            if (keyEvent.getCode() == KeyCode.SPACE) {
+                                keyPressed = false;
+
+                                onDriverContextMenu();
+                                driverFunctionContextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+
+                                Group popupRoot = (Group) driverFunctionContextMenu.getScene().getRoot();
+                                final ListView<String> driverFunctionListView = new ListView<String>();
+                                data = FXCollections.observableArrayList();
+                                for (String function : driverFunctionName) {
+                                    data.add(function);
+                                }
+                                driverFunctionListView.setItems(data);
+                                driverFunctionListView.setMaxHeight(100);
+                                driverFunctionListView.setMaxWidth(150);
+                                driverFunctionListView.getSelectionModel().selectFirst();
+
+                                driverFunctionListView.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
+                                    @Override
+                                    public void handle(KeyEvent arg0) {
+                                        if (arg0.getCode() == KeyCode.ENTER || arg0.getCode() == KeyCode.SPACE) {
+                                            selectedFunctionName = driverFunctionListView.getSelectionModel().getSelectedItem().toString();
+                                            Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("RUN", "RUN" + " " + selectedFunctionName));
+                                            driverFunctionContextMenu.hide();
+                                        }
+                                    }
+                                });
+                                popupRoot.getChildren().add(driverFunctionListView);
+                                driverFunctionListView.requestFocus();
+                            }
+                        }
+                    }
+                }
+
+                while (asertMatch.find()) {
+                    if (asertMatch.group(1).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.getKeyCode("Ctrl")) {
+                            keyPressed = true;
+                        }
+
+                        if (keyPressed == true) {
+                            if (keyEvent.getCode() == KeyCode.SPACE) {
+                                OFAContentHelp contentHelp = new OFAContentHelp();
+                                contentHelp.assertContextMenu();
+                                contentHelp.assertContext.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+                                for (final MenuItem assertCommand : contentHelp.assertNameList) {
+                                    assertCommand.setOnAction(new EventHandler<ActionEvent>() {
+                                        @Override
+                                        public void handle(ActionEvent t) {
+                                            Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("ASSERT", "ASSERT " + assertCommand.getText()));
+                                        }
+                                    });
+                                }
+                            }
+                        }
+                    }
+
+                }
+
+                while (usingMatch.find()) {
+                    if (!usingMatch.group(1).isEmpty()) {
+                        if (keyEvent.getCode() == KeyCode.CONTROL) {
+                            keyPressed = true;
+                        }
+
+                        if (keyPressed == true) {
+                            if (keyEvent.getCode() == KeyCode.SPACE) {
+                                OFAParamDeviceName paramDeice = new OFAParamDeviceName();
+                                if (selectedDeviceType.equals("poxclidriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/poxclidriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                } else if (selectedDeviceType.equals("mininetclidriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/mininetclidriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                } else if (selectedDeviceType.equals("hpswitchclidriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/hpswitchclidriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                }
+                                if (selectedDeviceType.equals("flowvisorclidriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/flowvisorclidriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                }
+                                if (selectedDeviceType.equals("floodlightclidriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/floodlightclidriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                }
+                                if (selectedDeviceType.equals("remotepoxdriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/remotepoxdriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                }
+                                if (selectedDeviceType.equals("remotevmdriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/remotevmdriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                }
+                                if (selectedDeviceType.equals("dpctlclidriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/tool/dpctlclidriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                }
+                                if (selectedDeviceType.equals("fvtapidriver")) {
+                                    String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/api/fvtapidriver.py");
+                                    paramDeice.driverFunctionName(baseCliDevice);
+                                    for (String functionName : paramDeice.driverFunctionName) {
+                                        driverFunctionName.add(functionName);
+                                    }
+                                }
+                                HashMap<String, String> functionAndParameter = paramDeice.functionWithParameter;
+                                Set set = functionAndParameter.entrySet();
+                                // Get an iterator
+                                Iterator functionAndParameterIterator = set.iterator();
+                                // Display elements
+                                final GridPane paramPanel = new GridPane();
+                                paramPanel.setStyle("-fx-background-color: DAE6F3;");
+                                String caseParameter = "";
+                                parameterLabel.clear();
+                                parameterTextFieldList.clear();
+                                while (functionAndParameterIterator.hasNext()) {
+                                    Map.Entry functionInfo = (Map.Entry) functionAndParameterIterator.next();
+                                    if (selectedFunctionName.equals(functionInfo.getKey().toString())) {
+                                        String[] splitParameter = functionInfo.getValue().toString().split("\\,");
+                                        if (splitParameter.length > 0) {
+                                            for (int j = 0; j < splitParameter.length; j++) {
+                                                Label parameterList = new Label();
+                                                parameterLabel.add(parameterList);
+                                                paraMeterListText = new TextField();
+                                                parameterList.setText(splitParameter[j]);
+                                                paramPanel.add(parameterList, 0, j);
+                                                paramPanel.add(paraMeterListText, 1, j);
+                                                parameterTextFieldList.add(paraMeterListText);
+                                                caseParameter += splitParameter[j].toLowerCase() + "AS " + "CASE" + "[" + splitParameter[j].toLowerCase() + "]" + ",";
+                                            }
+                                        }
+                                    }
+                                }
+                                withContextMenu();
+                                withContextMenu.show(OFAReference.editorTabPane, Side.TOP, Content.cursorPosfromLeft(), Content.cursorPosfromTop() + 65);
+                                Group popupRoot = (Group) withContextMenu.getScene().getRoot();
+                                Group popupCSSBridge = (Group) popupRoot.getChildren().get(0);
+                                StackPane popupContent = (StackPane) popupCSSBridge.getChildren().get(0);
+                                popupRoot.getChildren().add(paramPanel);
+                                if (!caseParameter.equals("")) {
+                                    try {
+                                        caseParameter = caseParameter.substring(0, caseParameter.length() - 1);
+                                    } catch (ArrayIndexOutOfBoundsException e) {
+                                    }
+                                }
+                                popupContent.setMaxHeight(OFAReference.editorTabPane.getHeight() - 400);
+                                Content.setLine(Integer.parseInt(Content.getCurrentLineNumber()), Content.getCurrentLine().replace("USING", "USING" + " " + caseParameter));
+                                for (int k = Integer.parseInt(Content.getCurrentLineNumber()); k > 0; k--) {
+                                    Pattern firstUpperCasePattern = Pattern.compile("CASE\\s+(\\d)");
+                                    Matcher firstUpperCaseMatch = firstUpperCasePattern.matcher(Content.getCurrentLine(k));
+                                    if (firstUpperCaseMatch.find()) {
+                                        matchedCase = firstUpperCaseMatch.group();
+                                        break;
+                                    }
+                                }
+                                try {
+                                    paraMeterListText.setOnKeyPressed(new EventHandler<KeyEvent>() {
+                                        @Override
+                                        public void handle(KeyEvent keyEvent) {
+                                            if (keyEvent.getCode() == KeyCode.ENTER) {
+                                                String paramCaseContent = "";
+                                                String matchCaseWithoutSpace = matchedCase.replaceAll("\\s+", "");
+                                                String currentTabPath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId();
+                                                String paramFile = currentTabPath.replace(fileOperation.getExtension(currentTabPath), ".params");
+                                                Pattern matchCasePattern = Pattern.compile("^\\s*\\<" + matchCaseWithoutSpace + "\\>");
+                                                String fileContent[] = fileOperation.getContents(new File(paramFile)).split("\n");
+                                                String myCase = "";
+                                                Boolean caseFlag = false;
+                                                int k;
+                                                for (k = 0; k < fileContent.length; k++) {
+                                                    Matcher caseMatch = matchCasePattern.matcher(fileContent[k]);
+                                                    if (caseMatch.find()) {
+                                                        myCase = caseMatch.group();
+                                                        caseFlag = true;
+                                                        break;
+                                                    }
+                                                }
+                                                if (caseFlag == true) {
+                                                    String remainingConetent = "";
+                                                    int caseVarible = k;
+                                                    k++;
+                                                    for (; k < fileContent.length; k++) {
+                                                        remainingConetent += "\n" + fileContent[k];
+                                                    }
+                                                    String allContent = "";
+                                                    allContent += fileContent[0];
+                                                    for (int p = 1; p < caseVarible; p++) {
+                                                        allContent += "\n" + fileContent[p];
+                                                    }
+                                                    allContent += "\n\t<" + matchCaseWithoutSpace + ">";
+
+                                                    for (int i = 0; i < parameterTextFieldList.size(); i++) {
+                                                        String parameterLabels = parameterLabel.get(i).getText().replaceAll("\"", "");
+                                                        paramCaseContent += "\n\t\t<" + parameterLabels.toLowerCase() + ">" + parameterTextFieldList.get(i).getText() + "</" + parameterLabels.toLowerCase() + ">";
+                                                    }
+
+                                                    allContent += paramCaseContent;
+                                                    allContent += remainingConetent;
+                                                    String paramFilePath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId().replace(fileOperation.getExtension(OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId()), ".params");
+                                                    String paramFileContent = fileOperation.getContents(new File(paramFilePath));
+                                                    try {
+                                                        fileOperation.setContents(new File(paramFilePath), allContent);
+                                                    } catch (FileNotFoundException ex) {
+                                                        Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+                                                    } catch (IOException ex) {
+                                                        Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+                                                    }
+                                                    withContextMenu.hide();
+                                                    paramPanel.setVisible(false);
+                                                } else {
+                                                    paramCaseContent += "<" + matchCaseWithoutSpace + ">";
+                                                    for (int i = 0; i < parameterTextFieldList.size(); i++) {
+                                                        paramCaseContent += "\n\t\t<" + parameterLabel.get(i).getText().toLowerCase() + ">" + parameterTextFieldList.get(i).getText() + "</" + parameterLabel.get(i).getText().toLowerCase() + ">";
+                                                    }
+
+                                                    paramCaseContent += "\n\t" + "</" + matchCaseWithoutSpace + ">";
+                                                    String paramFilePath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId().replace(fileOperation.getExtension(OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId()), ".params");
+                                                    String paramFileContent = fileOperation.getContents(new File(paramFilePath));
+                                                    String removeTestParam = paramFileContent.replace("</TEST_PARAMS>", " ");
+                                                    removeTestParam += "\t" + paramCaseContent + "\n\n" + "</TEST_PARAMS>";
+                                                    try {
+                                                        fileOperation.setContents(new File(paramFilePath), removeTestParam);
+                                                    } catch (FileNotFoundException ex) {
+                                                        Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+                                                    } catch (IOException ex) {
+                                                        Logger.getLogger(OFAContentHelp.class.getName()).log(Level.SEVERE, null, ex);
+                                                    }
+                                                    withContextMenu.hide();
+                                                    paramPanel.setVisible(false);
+                                                }
+                                            }
+                                        }
+                                    });
+                                } catch (Exception e) {
+                                }
+
+                            }
+                        }
+                    }
+
+                }
+
+                checkBuffer = new ArrayList<String>();
+
+                if (keyEvent.getCode() == KeyCode.ENTER) {
+                    String bufferedString = "";
+                    for (String s : checkBuffer) {
+                        bufferedString += s;
+                    }
+                    Pattern pattern = Pattern.compile("CASE\\s+(\\d+)");
+                    Matcher match = pattern.matcher(bufferedString);
+                    while (match.find()) {
+                        Content.setCode(Content.getCodeAndSnapshot().replaceAll(bufferedString, bufferedString + "\n\n" + "END CASE"));
+                    }
+                    checkBuffer.clear();
+                }
+
+            }
+        });
+
+        Content.setOnKeyPressed(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent arg0) {
+                String text = arg0.getText();
+                if (arg0.getCode() == KeyCode.ENTER) {
+                } else if (arg0.getCode() == KeyCode.BACK_SPACE) {
+                } else {
+                    checkBuffer.add(text);
+                }
+            }
+        });
+    }
+
+    public void onDeviceContextMenu() {
+        contextMenu = new ContextMenu();
+        myDevices = new ArrayList<String>();
+        ArrayList<String> paramDeviceType = new ArrayList<String>();
+        myMenuItems = new ArrayList<MenuItem>();
+
+        String selectedTabPath = OFAReference.editorTabPane.getSelectionModel().getSelectedItem().getId();
+        String[] splitSelectedPath = selectedTabPath.split("\\/");
+        String[] ospkFileName = splitSelectedPath[splitSelectedPath.length - 1].toString().split("\\.");
+        String paramFileName = ospkFileName[0] + ".topo";
+        String paramFilePath = selectedTabPath.replace(splitSelectedPath[splitSelectedPath.length - 1].toString(), paramFileName);
+        paramFile = new OFAParamDeviceName(paramFilePath, "");
+        paramFile.parseParamFile();
+
+        for (String deviceName : paramFile.getParamDeviceName()) {
+            myDevices.add(deviceName);
+        }
+
+        for (String myDevice : myDevices) {
+            final MenuItem myMenuItem = new MenuItem(myDevice);
+            myMenuItem.setOnAction(new EventHandler<ActionEvent>() {
+                @Override
+                public void handle(ActionEvent arg0) {
+                }
+            });
+            myMenuItems.add(myMenuItem);
+        }
+
+        for (MenuItem myMenuItem : myMenuItems) {
+            contextMenu.getItems().addAll(myMenuItem);
+
+        }
+
+        OFAReference.editorTabPane.setContextMenu(contextMenu);
+    }
+
+    public void onDriverContextMenu() {
+        driverFunctionContextMenu = new ContextMenu();
+        driverFunctionName = new ArrayList<String>();
+        driverFunctionName.clear();
+        OFAParamDeviceName driverFile = new OFAParamDeviceName();
+
+        if (selectedDeviceType.equals("poxclidriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/poxclidriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        } else if (selectedDeviceType.equals("mininetclidriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/emulator/mininetclidriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        if (selectedDeviceType.equals("hpswitchdriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotesys/hpswitchdriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        if (selectedDeviceType.equals("dpctlclidriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/tool/dpctlclidriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        if (selectedDeviceType.equals("fvtapidriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/api/fvtapidriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        } else if (selectedDeviceType.equals("hpswitchclidriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/hpswitchclidriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        if (selectedDeviceType.equals("flowvisorclidriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/flowvisorclidriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        if (selectedDeviceType.equals("floodlightclidriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/floodlightclidriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        if (selectedDeviceType.equals("remotepoxdriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/remotepoxdriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        if (selectedDeviceType.equals("remotevmdriver")) {
+            String baseCliDevice = bdrPath.replace(bdrPath, label.hierarchyTestON + "/drivers/common/cli/remotetestbed/remotevmdriver.py");
+            driverFile.driverFunctionName(baseCliDevice);
+            for (String functionName : driverFile.driverFunctionName) {
+                driverFunctionName.add(functionName);
+            }
+        }
+        driverFunctionContextMenu.getItems().add(new MenuItem());
+    }
+
+    public void runContextMenu() {
+        commandNameContextMenu = new ContextMenu();
+        MenuItem run = new MenuItem("RUN");
+        MenuItem exec = new MenuItem("EXEC");
+        MenuItem config = new MenuItem("CONFIG");
+        bdtFunction = new ArrayList<MenuItem>();
+        bdtFunction.add(run);
+        bdtFunction.add(exec);
+        bdtFunction.add(config);
+        commandNameContextMenu.getItems().addAll(run, exec, config);
+    }
+
+    public void withContextMenu() {
+        withContextMenu = new ContextMenu();
+        MenuItem item = new MenuItem();
+        withContextMenu.getItems().add(item);
+        item.setDisable(true);
+    }
+
+    // drivers context menu
+    public void runDriverContextMenu() {
+        runDriverContextMenu = new ContextMenu();
+        MenuItem runDriverMenuItem = new MenuItem("");
+        runDriverContextMenu.getItems().add(runDriverMenuItem);
+    }
+}