adding TestON
diff --git a/TestON/TAI/src/tai_ofa/AddParams.java b/TestON/TAI/src/tai_ofa/AddParams.java
new file mode 100644
index 0000000..8d35046
--- /dev/null
+++ b/TestON/TAI/src/tai_ofa/AddParams.java
@@ -0,0 +1,435 @@
+/*
+
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package tai_ofa;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Observable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.event.Event;
+import javafx.event.EventHandler;
+import javafx.geometry.Insets;
+import javafx.geometry.Orientation;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.SplitPane;
+import javafx.scene.control.Tab;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableColumn.CellEditEvent;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.TextFieldBuilder;
+import javafx.scene.control.TreeItem;
+import javafx.scene.control.TreeView;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.control.cell.TextFieldTableCell;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.VBox;
+import javafx.scene.paint.Color;
+import javafx.scene.text.Font;
+import javafx.scene.text.Text;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @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 AddParams {
+
+    TAI_OFA referenceOFA;
+    boolean splitFlag = false;
+    Map<String, Object> paramsHash;
+    TreeView<String> paramsTreeView;
+    TextField Value, tableAttrib, tableValue;
+    TableView<ParamsAttribute> attributeTable;
+    ObservableList<ParamsAttribute> data;
+    Button save, Cancel, edit, add, saveParams;
+    HBox buttonBox, tableViewBox, baseLeftPane;
+    VBox box, buttonTableVBox;
+    GridPane buttonBoxPane, baseRightPane;
+    TreeItem<String> params;
+    Pane tableViewPane;
+    Text Heading;
+    String tabValue, tabs;
+    OFAWizard wizard;
+    OFAFileOperations fileOperations;
+    Tab baseTab;
+    Button delete;
+
+    public void setOFA(TAI_OFA ofa) {
+        this.referenceOFA = ofa;
+    }
+
+    public void getNewParams() {
+        baseTab = new Tab();
+        paramsHash = new HashMap<String, Object>();
+        fileOperations = new OFAFileOperations();
+        final SplitPane basePane = new SplitPane();
+        basePane.setOrientation(Orientation.HORIZONTAL);
+        baseLeftPane = new HBox(30);
+        params = new TreeItem<String>();
+        params.setValue("params");
+        TreeItem<String> log_dir = new TreeItem<String>();
+        log_dir.setValue("log_dir");
+        ImageView logIView = new ImageView(new Image("images/parameter.jpg", 20, 20, true, true));
+        logIView.setId("/home/paxterra/");
+        log_dir.setGraphic(logIView);
+        TreeItem<String> mail = new TreeItem<String>();
+        mail.setValue("mail");
+        ImageView mailIView = new ImageView(new Image("images/parameter.jpg", 20, 20, true, true));
+        mailIView.setId("raghavkashyap@paxterrasolution.com");
+        mail.setGraphic(mailIView);
+        TreeItem<String> testcases = new TreeItem<String>();
+        testcases.setValue("testcases");
+        ImageView testIView = new ImageView(new Image("images/parameter.jpg", 20, 20, true, true));
+        testIView.setId("1");
+        testcases.setGraphic(testIView);
+        data = FXCollections.observableArrayList();
+        params.getChildren().addAll(testcases, mail, log_dir);
+        paramsTreeView = new TreeView<String>(params);
+        saveParams = new Button("Save");
+        delete = new Button("Delete");
+        baseLeftPane.getChildren().addAll(paramsTreeView, saveParams, delete);
+        baseRightPane = new GridPane();
+        Value = TextFieldBuilder.create().build();
+        delete.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                removeParamsValue(paramsTreeView.getSelectionModel().getSelectedItem());
+            }
+        });
+
+        saveParams.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                tabs = getParams(params);
+                referenceOFA.paramsFileContent = tabs;
+                wizard = new OFAWizard(referenceOFA.projectExplorerTree, 2, referenceOFA.projectExplorerTree.getChildren(), referenceOFA.projectExplorerTreeView);
+                wizard.setOFA(referenceOFA);
+                try {
+                    wizard.start(new Stage());
+                } catch (Exception ex) {
+                    Logger.getLogger(AddParams.class.getName()).log(Level.SEVERE, null, ex);
+                }
+
+            }
+        });
+        save = new Button("Save");
+        Cancel = new Button("Cancel");
+        edit = new Button("Edit");
+        attributeTable = new TableView<ParamsAttribute>();
+        attributeTable.setEditable(true);
+        TableColumn attribColumn = new TableColumn("Attribute");
+        attribColumn.setCellValueFactory(new PropertyValueFactory<ParamsAttribute, String>("Attribute"));
+        TableColumn valueColumn = new TableColumn("Value");
+        valueColumn.setCellValueFactory(new PropertyValueFactory<ParamsAttribute, String>("Values"));
+        attributeTable.setItems(data);
+        attributeTable.getColumns().addAll(attribColumn, valueColumn);
+        baseRightPane.setPadding(new Insets(30, 0, 10, 30));
+        baseRightPane.prefHeight(referenceOFA.scene.heightProperty().get());
+        baseRightPane.setVgap(9);
+        baseRightPane.add(new Label("Value :"), 4, 4);
+        baseRightPane.add(Value, 5, 4);
+        box = new VBox();
+        buttonBox = new HBox();
+        buttonBoxPane = new GridPane();
+        buttonBoxPane.setPadding(new Insets(30, 0, 10, 30));
+        buttonBoxPane.setHgap(3);
+        buttonBoxPane.add(save, 2, 7);
+        buttonBoxPane.add(Cancel, 4, 7);
+        buttonBoxPane.add(edit, 6, 7);
+        buttonBox.getChildren().addAll(buttonBoxPane);
+        tableAttrib = TextFieldBuilder.create().build();
+        tableValue = TextFieldBuilder.create().build();
+        add = new Button("Add");
+        tableViewPane = new Pane();
+        buttonTableVBox = new VBox();
+        tableViewBox = new HBox();
+        tableViewBox.getChildren().addAll(tableAttrib, tableValue, add);
+        buttonTableVBox.getChildren().addAll(attributeTable);
+        box.getChildren().addAll(baseRightPane, buttonTableVBox, buttonBoxPane);
+
+        attributeTable.setEditable(true);
+        attribColumn.setCellFactory(TextFieldTableCell.forTableColumn());
+        attribColumn.setOnEditCommit(new EventHandler<CellEditEvent<ParamsAttribute, String>>() {
+            @Override
+            public void handle(CellEditEvent<ParamsAttribute, String> t) {
+
+                for (int i = 0; i < paramsTreeView.getSelectionModel().getSelectedItem().getChildren().size(); i++) {
+
+                    if (paramsTreeView.getSelectionModel().getSelectedItem().getChildren().get(i).getValue().equals(t.getOldValue())) {
+                        paramsTreeView.getSelectionModel().getSelectedItem().getChildren().get(i).setValue(t.getNewValue());
+                    }
+                }
+                ((ParamsAttribute) t.getTableView().getItems().get(
+                        t.getTablePosition().getRow())).setAttribute(t.getNewValue());
+
+            }
+        });
+
+        valueColumn.setCellFactory(TextFieldTableCell.forTableColumn());
+        valueColumn.setOnEditCommit(new EventHandler<CellEditEvent<ParamsAttribute, String>>() {
+            @Override
+            public void handle(CellEditEvent<ParamsAttribute, String> t) {
+                for (int i = 0; i < paramsTreeView.getSelectionModel().getSelectedItem().getChildren().size(); i++) {
+                    if (paramsTreeView.getSelectionModel().getSelectedItem().getChildren().get(i).getValue().equals(t.getOldValue())) {
+                        paramsTreeView.getSelectionModel().getSelectedItem().getChildren().get(i).getGraphic().setId(t.getNewValue());
+                    }
+                }
+                ((ParamsAttribute) t.getTableView().getItems().get(
+                        t.getTablePosition().getRow())).setValues(t.getNewValue());
+            }
+        });
+
+        Value.setOnKeyReleased(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent t) {
+                if (Value.getText().isEmpty()) {
+                    edit.setDisable(false);
+                } else {
+                    edit.setDisable(true);
+                }
+            }
+        });
+
+        Cancel.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                basePane.getItems().removeAll(box);
+                splitFlag = false;
+                baseRightPane.getChildren().remove(Heading);
+                edit.setDisable(false);
+            }
+        });
+
+        save.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+                String selected = paramsTreeView.getSelectionModel().getSelectedItem().getValue();
+                TreeItem<String> selectedTreeItem = paramsTreeView.getSelectionModel().getSelectedItem();
+                String attribVal = Value.getText();
+                basePane.getItems().removeAll(box);
+                splitFlag = false;
+                Map<String, Object> prevParent = new HashMap<String, Object>();
+                ArrayList<String> names = new ArrayList<String>();
+                if (!edit.isDisabled()) {
+                    for (int i = 0; i < attributeTable.getItems().size(); i++) {
+                        ParamsAttribute table = attributeTable.getItems().get(i);
+                        if (selectedTreeItem.getChildren().size() == 0) {
+                            TreeItem<String> childNode = new TreeItem<String>();
+                            childNode.setValue(table.getAttribute());
+                            selectedTreeItem.getChildren().add(childNode);
+                            selectedTreeItem.setExpanded(true);
+                            Image chidlImage = new Image("images/parameter.jpg", 20, 20, true, true);
+                            ImageView childImageView = new ImageView();
+                            childImageView.setImage(chidlImage);
+                            childImageView.setId(table.getValues());
+                            childNode.setGraphic(childImageView);
+                        } else if (selectedTreeItem.getChildren().size() > 0) {
+                            names.clear();
+                            for (int index = 0; index < selectedTreeItem.getChildren().size(); index++) {
+                                names.add(selectedTreeItem.getChildren().get(index).getValue());
+                            }
+                            if (!names.contains(table.getAttribute())) {
+                                TreeItem<String> childNode = new TreeItem<String>();
+                                childNode.setValue(table.getAttribute());
+                                selectedTreeItem.getChildren().addAll(childNode);
+                                selectedTreeItem.setExpanded(true);
+                                Image chidlImage = new Image("images/parameter.jpg", 20, 20, true, true);
+                                ImageView childImageView = new ImageView();
+                                childImageView.setImage(chidlImage);
+                                childImageView.setId(table.getValues());
+                                childNode.setGraphic(childImageView);
+                            }
+                        }
+                    }
+                } else {
+                    TreeItem<String> selectTreeItem = paramsTreeView.getSelectionModel().getSelectedItem();
+                    if (!Value.getText().isEmpty()) {
+                        paramsTreeView.getSelectionModel().getSelectedItem().getGraphic().setId(Value.getText());
+                    }
+                }
+                baseRightPane.getChildren().remove(Heading);
+                buttonTableVBox.getChildren().removeAll(tableViewBox);
+                Value.clear();
+            }
+        });
+
+        add.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+
+                if (tableAttrib.getText().isEmpty() && tableValue.getText().isEmpty()) {
+                } else {
+                    data.add(new ParamsAttribute(tableAttrib.getText(), tableValue.getText()));
+                    tableAttrib.clear();
+                    tableValue.clear();
+                }
+            }
+        });
+
+
+        edit.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent t) {
+
+                buttonTableVBox.getChildren().addAll(tableViewBox);
+
+                Value.setEditable(false);
+
+            }
+        });
+
+        basePane.getItems().addAll(baseLeftPane);
+        paramsTreeView.setOnMouseClicked(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent args0) {
+                String selected = paramsTreeView.getSelectionModel().getSelectedItem().getValue();
+                TreeItem<String> selectItem = paramsTreeView.getSelectionModel().getSelectedItem();
+                if (args0.getClickCount() == 2 & !splitFlag) {
+                    Value.setEditable(true);
+                    Heading = new Text(selected);
+                    Heading.setFont(Font.font("Arial", 20));
+                    Heading.setFill(Color.BLUE);
+                    baseRightPane.add(Heading, 6, 1);
+
+                    if (selectItem.isLeaf()) {
+                        Value.setDisable(false);
+                        if (!selectItem.getGraphic().getId().equals("")) {
+                            basePane.getItems().addAll(box);
+                            splitFlag = true;
+                            Value.setText(selectItem.getGraphic().getId());
+                            edit.setDisable(true);
+                            data.clear();
+                        } else {
+                            basePane.getItems().addAll(box);
+                            splitFlag = true;
+                            Value.clear();
+                            edit.setDisable(false);
+                            data.clear();
+                        }
+                    } else if (!selectItem.isLeaf()) {
+                        Value.clear();
+                        Value.setDisable(true);
+                        basePane.getItems().addAll(box);
+                        splitFlag = true;
+                        data.clear();
+                        for (int i = 0; i < selectItem.getChildren().size(); i++) {
+
+                            data.add(new ParamsAttribute(selectItem.getChildren().get(i).getValue(), selectItem.getChildren().get(i).getGraphic().getId()));
+                        }
+                    }
+
+                }
+            }
+        });
+        basePane.prefWidthProperty().bind(referenceOFA.scene.widthProperty().subtract(300));
+        basePane.prefHeightProperty().bind(referenceOFA.scene.heightProperty().subtract(120));
+        baseTab.setContent(basePane);
+        baseTab.setText("Unnamed.params");
+        referenceOFA.editorTabPane.getTabs().addAll(baseTab);
+    }
+
+    public String getParams(TreeItem<String> treeNode) {
+        tabValue = "";
+        tabValue = tabValue + "<" + treeNode.getValue() + ">\n";
+        if (!treeNode.isLeaf()) {
+            for (int i = 0; i < treeNode.getChildren().size(); i++) {
+                if (treeNode.getChildren().get(i).isLeaf()) {
+                    tabValue = tabValue + "\n<" + treeNode.getChildren().get(i).getValue() + ">" + treeNode.getChildren().get(i).getGraphic().getId()
+                            + "</" + treeNode.getChildren().get(i).getValue() + ">\n";
+                } else if (!treeNode.getChildren().get(i).isLeaf()) {
+                    int index = 0;
+                    tabValue = tabValue + "\n<" + treeNode.getChildren().get(i).getValue() + ">\n";
+                    while (index < treeNode.getChildren().get(i).getChildren().size()) {
+                        tabValue = tabValue + getParams(treeNode.getChildren().get(i).getChildren().get(index));
+                        index++;
+                    }
+                    tabValue = tabValue + "\n</" + treeNode.getChildren().get(i).getValue() + ">\n";
+                }
+            }
+        } else if (treeNode.isLeaf()) {
+            tabValue = tabValue + treeNode.getGraphic().getId();
+        }
+        tabValue = tabValue + "\n</" + treeNode.getValue() + ">";
+        return tabValue;
+    }
+
+    public void removeParamsValue(TreeItem treeItem) {
+        for (int i = 0; i < paramsTreeView.getRoot().getChildren().size(); i++) {
+            if (paramsTreeView.getRoot().getChildren().get(i).isLeaf()) {
+                if (paramsTreeView.getRoot().getChildren().get(i).getValue().equals(treeItem.getValue())) {
+                    paramsTreeView.getRoot().getChildren().remove(paramsTreeView.getRoot().getChildren().get(i));
+                }
+            } else if (!paramsTreeView.getRoot().getChildren().get(i).isLeaf()) {
+                if (paramsTreeView.getRoot().getChildren().get(i).getValue().equals(treeItem.getValue())) {
+                    paramsTreeView.getRoot().getChildren().remove(paramsTreeView.getRoot().getChildren().get(i));
+                } else {
+                    for (int index = 0; index < paramsTreeView.getRoot().getChildren().get(i).getChildren().size(); index++) {
+                        if (paramsTreeView.getRoot().getChildren().get(i).getChildren().get(index).getValue().equals(treeItem.getValue())) {
+                            paramsTreeView.getRoot().getChildren().get(i).getChildren().remove(paramsTreeView.getRoot().getChildren().get(i).getChildren().get(index));
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+    public static class ParamsAttribute {
+        private final SimpleStringProperty Attributes;
+        private final SimpleStringProperty Values;
+
+        private ParamsAttribute(String attrib, String val) {
+            this.Attributes = new SimpleStringProperty(attrib);
+            this.Values = new SimpleStringProperty(val);
+        }
+
+        public String getAttribute() {
+            return Attributes.get();
+        }
+
+        public void setAttribute(String attrib) {
+            Attributes.set(attrib);
+        }
+
+        public String getValues() {
+            return Values.get();
+        }
+
+        public void setValues(String val) {
+            Values.set(val);
+        }
+    }
+}