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;
+ }
+}