adding TestON
diff --git a/TestON/TAI/src/tai_ofa/OFAAnchorInsideImageNode.java b/TestON/TAI/src/tai_ofa/OFAAnchorInsideImageNode.java
new file mode 100644
index 0000000..1cb382b
--- /dev/null
+++ b/TestON/TAI/src/tai_ofa/OFAAnchorInsideImageNode.java
@@ -0,0 +1,347 @@
+/*
+ * 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.Set;
+import javafx.beans.property.DoubleProperty;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.scene.Cursor;
+import javafx.scene.Node;
+import javafx.scene.control.Button;
+import javafx.scene.input.MouseButton;
+import javafx.scene.input.MouseDragEvent;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.VBox;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Circle;
+import javafx.scene.shape.Line;
+import javafx.scene.shape.StrokeLineCap;
+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/>.
+
+ */
+class OFAAnchorInsideImageNode {
+
+    Double increaseBindX;
+    Double increaseBindY;
+    /*Double addX and addY is passed as an argument as binding coordinates are different for Wizard
+     and toplogyNode(In the editor)*/
+
+    public OFAAnchorInsideImageNode(Double addX, Double addY) {
+        increaseBindX = addX;
+        increaseBindY = addY;
+    }
+    boolean anchorFlag = false;
+    OFATopologyLink topologyLink = new OFATopologyLink();
+    ArrayList<HashMap<String, String>> arrayOfLinkTopologyHash = new ArrayList<HashMap<String, String>>();
+
+    public void anchorsInsideImage(final TopologyWizard.Anchor anchor, final double bindLineStartx, final double bindLineStarty, final double bindLineEndx, final double bindLineEndy, final Pane hb, final DraggableNode content,
+            final VBox hbox, final Line con, final ArrayList<String> draggedImagesName, final ArrayList<HashMap<String, String>> arrayOfInterFaceHash, final HashMap<String, String> linkTopologyHash, final HashMap<Node, String> anchorNodeHash) {
+        final Line con11 = new Line();
+
+        anchor.setOnDragDetected(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent arg0) {
+                anchor.startFullDrag();
+                enableDrag(anchor);
+            }
+        });
+
+        anchor.setOnMouseDragReleased(new EventHandler<MouseDragEvent>() {
+            @Override
+            public void handle(MouseDragEvent arg0) {
+                ObservableList<Node> allNodesCanvas = hb.getChildren();
+                boolean flag = false;
+                String startNode = null;
+                String endNode = null;
+                try {
+                    for (Node node : allNodesCanvas) {
+                        Double x = node.getLayoutX() + increaseBindX;
+                        Double y = node.getLayoutY() + increaseBindY;
+                        if (node.toString().startsWith("DraggableNode")) {
+                            for (int i = 0; i <= 80; i++) {
+                                for (int j = 0; j <= 100; j++) {
+                                    Double x1 = node.getLayoutX() + increaseBindX;
+                                    Double y1 = node.getLayoutY() + increaseBindY;
+                                    Double x11 = x1 + i;
+                                    Double y11 = y1 + j;
+                                    if (x11 == arg0.getSceneX()) {
+                                        if (y11 == arg0.getSceneY()) {
+                                            con11.setStrokeLineCap(StrokeLineCap.ROUND);
+                                            con11.setStroke(Color.MIDNIGHTBLUE);
+                                            con11.setStrokeWidth(2.0);
+                                            con11.startXProperty().bind(content.layoutXProperty().add(bindLineStartx));
+                                            con11.startYProperty().bind(content.layoutYProperty().add(bindLineStarty));
+                                            startNode = ((Integer) content.hashCode()).toString();
+                                            con11.endXProperty().bind(node.layoutXProperty().add(bindLineEndx));
+                                            con11.endYProperty().bind(node.layoutYProperty().add(bindLineEndy));
+                                            endNode = ((Integer) node.hashCode()).toString();
+                                            con11.setId(startNode + "," + endNode);
+                                            hbox.setStyle("-fx-border-color: Transparent");
+                                            con.setVisible(false);
+                                            anchor.setVisible(false);
+                                            hb.getChildren().add(con11);
+                                            flag = true;
+
+                                            Map<Node, String> map = anchorNodeHash;
+                                            Iterator<Map.Entry<Node, String>> entries = map.entrySet().iterator();
+                                            while (entries.hasNext()) {
+                                                Map.Entry<Node, String> entry = entries.next();
+                                                entry.getKey();
+                                                hb.getChildren().remove(entry.getKey());
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+
+                        }
+
+
+                    }
+                    if (flag == false) {
+                        Map<Node, String> map = anchorNodeHash;
+                        Iterator<Map.Entry<Node, String>> entries = map.entrySet().iterator();
+                        while (entries.hasNext()) {
+                            Map.Entry<Node, String> entry = entries.next();
+                            entry.getKey();
+                            hb.getChildren().remove(entry.getKey());
+                            anchorFlag = false;
+                        }
+                    }
+                } catch (Exception e) {
+                }
+            }
+        });
+        con11.setOnMouseEntered(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent arg0) {
+                con11.setStroke(Color.GOLD);
+            }
+        });
+        con11.setOnMouseExited(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent arg0) {
+                con11.setStroke(Color.MIDNIGHTBLUE);
+            }
+        });
+        final DraggableNode contentLine = new DraggableNode();
+        con11.setOnMouseClicked(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent arg0) {
+                if (arg0.getClickCount() == 2) {
+                    topologyLink.start(new Stage());
+                    if (arrayOfLinkTopologyHash.isEmpty()) {
+                        for (HashMap<String, String> linkHash : arrayOfLinkTopologyHash) {
+                            Set linkSet = linkHash.entrySet();
+                            Iterator linkHashDetailIterator = linkSet.iterator();
+                            while (linkHashDetailIterator.hasNext()) {
+
+                                Map.Entry linkMap = (Map.Entry) linkHashDetailIterator.next();
+                                if (linkMap.getKey().toString().equals(con11.getId())) {
+                                    String[] linkValues = linkMap.getValue().toString().split("_");
+                                    topologyLink.nameText.setText(linkValues[0]);
+                                    topologyLink.typeText.setText(linkValues[1]);
+                                    topologyLink.devicesInTopoEditor.setEditable(true);
+                                    topologyLink.devicesInTopoEditor.getSelectionModel().select(linkValues[2]);
+                                    topologyLink.interfaceList2.setEditable(true);
+                                    topologyLink.interfaceList2.getSelectionModel().select(linkValues[3]);
+                                    topologyLink.destDevicesInTopoEditor.setEditable(true);
+                                    topologyLink.destDevicesInTopoEditor.getSelectionModel().select(linkValues[4]);
+                                    topologyLink.interfaceList4.setEditable(true);
+                                    topologyLink.interfaceList4.getSelectionModel().select(linkValues[5]);
+                                }
+                            }
+
+                        }
+                    }
+
+                    for (String string : draggedImagesName) {
+                        topologyLink.devicesInTopoEditor.getItems().add(string);
+                        topologyLink.destDevicesInTopoEditor.getItems().add(string);
+                    }
+                    topologyLink.devicesInTopoEditor.setOnAction(new EventHandler<ActionEvent>() {
+                        @Override
+                        public void handle(ActionEvent arg0) {
+                            topologyLink.interfaceList2.getItems().clear();
+                            try {
+                                for (HashMap<String, String> interFaceDetail : arrayOfInterFaceHash) {
+                                    Set set = interFaceDetail.entrySet();
+                                    Iterator interFaceHashDetailIterator = set.iterator();
+                                    while (interFaceHashDetailIterator.hasNext()) {
+                                        Map.Entry me = (Map.Entry) interFaceHashDetailIterator.next();
+                                        String[] deviceNameAndiniterFaceValue = me.getValue().toString().split("\\_");
+                                        if (deviceNameAndiniterFaceValue[1].equals(topologyLink.devicesInTopoEditor.getSelectionModel().getSelectedItem())) {
+                                            if (!me.getKey().toString().equals("")) {
+                                                topologyLink.interfaceList2.getItems().add(me.getKey().toString());
+                                            }
+                                        }
+                                    }
+                                }
+                            } catch (Exception e) {
+                            }
+                        }
+                    });
+
+                    topologyLink.destDevicesInTopoEditor.setOnAction(new EventHandler<ActionEvent>() {
+                        @Override
+                        public void handle(ActionEvent arg0) {
+
+                            topologyLink.interfaceList4.getItems().clear();
+                            try {
+                                for (HashMap<String, String> interFaceDetail : arrayOfInterFaceHash) {
+                                    Set set = interFaceDetail.entrySet();
+                                    Iterator interFaceHashDetailIterator = set.iterator();
+                                    while (interFaceHashDetailIterator.hasNext()) {
+                                        Map.Entry me = (Map.Entry) interFaceHashDetailIterator.next();
+                                        String[] deviceNameAndiniterFaceValue = me.getValue().toString().split("\\_");
+                                        if (deviceNameAndiniterFaceValue[1].equals(topologyLink.destDevicesInTopoEditor.getSelectionModel().getSelectedItem())) {
+                                            if (!me.getKey().toString().equals("")) {
+                                                topologyLink.interfaceList4.getItems().add(me.getKey().toString());
+                                            }
+                                        }
+                                    }
+                                }
+                            } catch (Exception e) {
+                            }
+                        }
+                    });
+                    topologyLink.finishSelectedLink.setOnAction(new EventHandler<ActionEvent>() {
+                        @Override
+                        public void handle(ActionEvent arg0) {
+                            con11.setId(topologyLink.nameText.getText() + "_" + con11.getStartX() + "_" + con11.getStartY() + "_" + con11.getEndX() + "_" + con11.getEndY());
+                            String detailedString = topologyLink.nameText.getText() + "_" + topologyLink.typeText.getText() + "_" + topologyLink.devicesInTopoEditor.getSelectionModel().getSelectedItem() + "_" + topologyLink.interfaceList2.getSelectionModel().getSelectedItem() + "_" + topologyLink.destDevicesInTopoEditor.getSelectionModel().getSelectedItem() + "_" + topologyLink.interfaceList4.getSelectionModel().getSelectedItem() + "_";
+                            linkTopologyHash.put(con11.getId(), detailedString);
+                            arrayOfLinkTopologyHash = new ArrayList<HashMap<String, String>>();
+                            arrayOfLinkTopologyHash.add(linkTopologyHash);
+                            topologyLink.copyStage.close();
+                        }
+                    });
+                } else if (arg0.getButton() == MouseButton.SECONDARY) {
+                }
+            }
+        });
+    }
+
+    public void closeNodeOnCanvas(final Button closeButton, final VBox hbox, final Pane hb, final DraggableNode content) {
+        final ArrayList<Node> removeNodes = new ArrayList<Node>();
+
+        closeButton.setOnAction(new EventHandler<ActionEvent>() {
+            @Override
+            public void handle(ActionEvent arg0) {
+                Node parent = hbox.getParent();
+                ObservableList<Node> allCurrentNode = hb.getChildren();
+                for (Node node : allCurrentNode) {
+                    if (node.toString().contains("Line")) {
+                        if (!node.toString().matches("Line[id=Line[id=null,null]]")) {
+                            if (node.getId() != null) {
+                                String[] startLineNode = node.getId().split(",");
+                                Integer nodeHash = content.hashCode();
+                                if (nodeHash.toString().equals(startLineNode[0])) {
+                                    removeNodes.add(node);
+                                }
+                                if (startLineNode.length == 2) {
+                                    if (nodeHash.toString().equals(startLineNode[1])) {
+                                        removeNodes.add(node);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+                for (Node removenode : removeNodes) {
+                    hb.getChildren().remove(removenode);
+                }
+
+                hb.getChildren().remove(content);
+            }
+        });
+    }
+
+    private void enableDrag(final Circle circle) {
+        final OFAAnchorInsideImageNode.Delta dragDelta = new OFAAnchorInsideImageNode.Delta();
+
+        circle.setOnMousePressed(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent mouseEvent) {
+                dragDelta.x = circle.getCenterX() - mouseEvent.getX();
+                dragDelta.y = circle.getCenterY() - mouseEvent.getY();
+                circle.getScene().setCursor(Cursor.MOVE);
+            }
+        });
+
+        circle.setOnMouseReleased(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent mouseEvent) {
+            }
+        });
+
+        circle.setOnMouseDragged(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent mouseEvent) {
+                circle.setCenterX(mouseEvent.getX() + dragDelta.x);
+                circle.setCenterY(mouseEvent.getY() + dragDelta.y);
+            }
+        });
+
+        circle.setOnMouseEntered(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent mouseEvent) {
+                if (!mouseEvent.isPrimaryButtonDown()) {
+                    circle.getScene().setCursor(Cursor.HAND);
+                }
+            }
+        });
+
+        circle.setOnMouseExited(new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent mouseEvent) {
+                if (!mouseEvent.isPrimaryButtonDown()) {
+                }
+            }
+        });
+    }
+
+    class Anchor extends Circle {
+
+        Anchor(String id, DoubleProperty x, DoubleProperty y) {
+            super(x.get(), y.get(), 7);
+            setId(id);
+            setFill(Color.ANTIQUEWHITE.deriveColor(1, 1, 1, 0.75));
+            setStroke(Color.GREY);
+            x.bind(centerXProperty());
+            y.bind(centerYProperty());
+        }
+    }
+
+    class Delta {
+
+        double x, y;
+    }
+}