adding TestON
diff --git a/TestON/TAI/src/tai_ofa/OFATopology.java b/TestON/TAI/src/tai_ofa/OFATopology.java
new file mode 100644
index 0000000..b2e6830
--- /dev/null
+++ b/TestON/TAI/src/tai_ofa/OFATopology.java
@@ -0,0 +1,278 @@
+/*
+ * 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.Locale;
+import javafx.application.Application;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.Event;
+import javafx.event.EventHandler;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.RadioButton;
+import javafx.scene.control.Tab;
+import javafx.scene.control.TabPane;
+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.cell.PropertyValueFactory;
+import javafx.scene.control.cell.TextFieldTableCell;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+import sun.misc.Cleaner;
+
+/**
+ *
+ * @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 OFATopology extends Application {
+
+    public OFATopology() {
+    }
+    ObservableList<OFATopologyInterface> data;
+    TableView<OFATopologyInterface> deviceTable;
+    TableColumn device;
+    TableColumn number;
+    TableColumn type;
+    int count = 1;
+    String getHostName, getUserName, getPassword, getTranportProtocol, getPort;
+    ArrayList<String> getAttribute = new ArrayList<String>();
+    ArrayList<String> getValue = new ArrayList<String>();
+    ArrayList<TextField> attributeList = new ArrayList<TextField>();
+    ArrayList<TextField> valueList = new ArrayList<TextField>();
+    TextField attributeText;
+    Button interFacesave;
+    TextField valueText;
+    Button save;
+    TextField hostNameText;
+    TextField userNameText;
+    PasswordField passwordText;
+    TextField portText;
+    TextField deviceText;
+    ComboBox<String> transportList;
+    Stage copyStage;
+    ArrayList<String> propertyDetail = new ArrayList<String>();
+    HashMap<TextField, TextField> hashProperty = new HashMap<TextField, TextField>();
+    Button defaultButton;
+    Button cancelButton;
+    RadioButton testTargetRadioButton;
+    TAILocale label = new TAILocale(new Locale("en", "EN"));
+
+    /**
+     * @param args the command line arguments
+     */
+    OFATopology(TextField text) {
+        deviceText = text;
+    }
+
+    @Override
+    public void start(final Stage primaryStage) {
+        copyStage = primaryStage;
+        primaryStage.setTitle(label.topoTitle);
+        primaryStage.setResizable(false);
+        TabPane toplogyTabPane = new TabPane();
+        toplogyTabPane.setMaxHeight(280);
+        Tab propertyTab = new Tab(label.topoProperties);
+        Tab interfaceTab = new Tab("Component");
+        propertyTab.setClosable(false);
+        interfaceTab.setClosable(false);
+        toplogyTabPane.getTabs().addAll(propertyTab, interfaceTab);
+
+        GridPane propertyGrid = new GridPane();
+        propertyGrid.setVgap(8);
+        propertyGrid.setHgap(10);
+        propertyGrid.setPadding(new Insets(10, 0, 0, 50));
+
+        Label attribute = new Label(label.topoAttribute);
+        attribute.setStyle("-fx-padding: 0; -fx-background-color: lightgray; -fx-border-width: 2;-fx-border-color: gray;");
+        propertyGrid.add(attribute, 0, 1);
+
+        Label value = new Label(label.topoValue);
+        value.setStyle("-fx-padding: 0; -fx-background-color: lightgray; -fx-border-width: 2;-fx-border-color: gray;");
+        propertyGrid.add(value, 1, 1);
+
+        Label hostName = new Label(label.topoHost);
+        propertyGrid.add(hostName, 0, 2);
+        hostNameText = new TextField();
+        propertyGrid.add(hostNameText, 1, 2);
+        Label userName = new Label(label.topoUserName);
+        propertyGrid.add(userName, 0, 3);
+        userNameText = new TextField();
+        propertyGrid.add(userNameText, 1, 3);
+        Label password = new Label(label.topoPassword);
+        propertyGrid.add(password, 0, 4);
+        passwordText = new PasswordField();
+        propertyGrid.add(passwordText, 1, 4);
+        Label transport = new Label(label.topoTransport);
+        transportList = new ComboBox<String>();
+        transportList.setMinWidth(200);
+        transportList.getItems().addAll(label.topoSSH, label.topoTELNET, label.topoFTP, label.topoRLOGIN);
+        Label testTargetLabel = new Label("Test Target");
+        propertyGrid.add(testTargetLabel, 0, 5);
+        testTargetRadioButton = new RadioButton("True");
+        propertyGrid.add(testTargetRadioButton, 1, 5);
+        HBox propertyButton = new HBox(5);
+
+        propertyButton.setPadding(new Insets(280, 0, 0, 140));
+        save = new Button(label.topoSave);
+        defaultButton = new Button(label.topoDefault);
+        cancelButton = new Button(label.topoCancel);
+        propertyButton.getChildren().addAll(save, defaultButton, cancelButton);
+        propertyTab.setContent(propertyGrid);
+
+        //  interface tab code 
+        GridPane interfaceGridPane = new GridPane();
+        interfaceGridPane.setVgap(20);
+        interfaceGridPane.setHgap(20);
+        interfaceGridPane.setPadding(new Insets(10, 0, 0, 10));
+        Label interFaceNumber = new Label("" + count);
+        attributeText = new TextField();
+        valueText = new TextField();
+
+        valueText.setOnKeyPressed(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent keyEvent) {
+                if (keyEvent.getCode() == KeyCode.ENTER) {
+                    deviceTable.getSelectionModel().select(deviceTable.getItems().size() - 1);
+                    if (deviceTable.getSelectionModel().isSelected(deviceTable.getItems().size() - 1)) {
+                        if (!deviceTable.getSelectionModel().getSelectedItem().getDeviceName().getText().equals("") && !deviceTable.getSelectionModel().getSelectedItem().getDeviceType().getText().equals("")) {
+                            addInterFace();
+                        }
+                    }
+                }
+            }
+        });
+
+        deviceTable = new TableView<OFATopologyInterface>();
+        data = FXCollections.observableArrayList(new OFATopologyInterface(interFaceNumber, attributeText, valueText));
+        deviceTable.setMinWidth(330);
+        deviceTable.setMaxHeight(200);
+        number = new TableColumn(label.topoInterfaces);
+        number.setCellValueFactory(new PropertyValueFactory<OFATopologyInterface, Label>("interFaceNumber"));
+        number.setMinWidth(90);
+        number.setResizable(false);
+        device = new TableColumn(label.topoAttribute);
+        device.setCellValueFactory(new PropertyValueFactory<OFATopologyInterface, TextField>("deviceName"));
+        device.setMaxWidth(119);
+        device.setResizable(false);
+        type = new TableColumn(label.topoValues);
+        type.setCellValueFactory(new PropertyValueFactory<OFATopologyInterface, TextField>("deviceType"));
+        type.setMaxWidth(119);
+        type.setResizable(false);
+        deviceTable.setItems(data);
+        deviceTable.getColumns().addAll(number, device, type);
+        interfaceGridPane.add(deviceTable, 0, 1);
+        interfaceTab.setContent(interfaceGridPane);
+        HBox interFaceButton = new HBox(5);
+        interFaceButton.setPadding(new Insets(0, 0, 0, 2));
+        attributeList.add(attributeText);
+        valueList.add(valueText);
+        hashProperty.put(attributeText, valueText);
+
+        interfaceGridPane.add(interFaceButton, 0, 2);
+        Pane root = new Pane();
+        root.getChildren().addAll(propertyButton, toplogyTabPane);
+        primaryStage.setScene(new Scene(root, 350, 300));
+        primaryStage.show();
+    }
+
+    public void addInterFace() {
+        int intNumber = ++count;
+        Label interFaceNumber = new Label("" + intNumber);
+        attributeText = new TextField();
+        attributeList.add(attributeText);
+        valueText = new TextField();
+        attributeText.setMaxWidth(120);
+        valueText.setMinWidth(120);
+        hashProperty.put(attributeText, valueText);
+        for (int i = 0; i < deviceTable.getItems().size(); i++) {
+            deviceTable.getSelectionModel().select(deviceTable.getItems().size() - 1);
+        }
+
+        deviceTable.getSelectionModel().select(deviceTable.getItems().size());
+        valueText.setOnKeyPressed(new EventHandler<KeyEvent>() {
+            @Override
+            public void handle(KeyEvent keyEvent) {
+                if (keyEvent.getCode() == KeyCode.ENTER) {
+                    deviceTable.getSelectionModel().select(deviceTable.getItems().size() - 1);
+                    if (deviceTable.getSelectionModel().isSelected(deviceTable.getItems().size() - 1)) {
+                        if (!deviceTable.getSelectionModel().getSelectedItem().getDeviceName().getText().equals("") && !deviceTable.getSelectionModel().getSelectedItem().getDeviceType().getText().equals("")) {
+                            addInterFace();
+                        }
+                    }
+
+                }
+            }
+        });
+        valueList.add(valueText);
+        data.add(new OFATopologyInterface(interFaceNumber, attributeText, valueText));
+        number.setCellValueFactory(new PropertyValueFactory<OFATopologyInterface, Label>("interFaceNumber"));
+        number.setMinWidth(90);
+        number.setResizable(false);
+        device.setCellValueFactory(new PropertyValueFactory<OFATopologyInterface, TextField>("deviceName"));
+        device.setMaxWidth(120);
+        device.setResizable(false);
+        type.setCellValueFactory(new PropertyValueFactory<OFATopologyInterface, TextField>("deviceType"));
+        type.setMaxWidth(120);
+        type.setResizable(false);
+        deviceTable.setItems(data);
+        deviceTable.setEditable(true);
+    }
+
+    public String getHostName() {
+        return getHostName;
+    }
+
+    public String getUserName() {
+        return getUserName;
+    }
+
+    public String getPassword() {
+        return getPassword;
+    }
+
+    public String getTransportProtocool() {
+        return getTranportProtocol;
+    }
+
+    public String getPort() {
+        return getPort;
+    }
+
+    public ArrayList getAtttribute() {
+        return getAttribute;
+    }
+
+    public ArrayList getValue() {
+        return getValue;
+    }
+}