blob: d046989975fe7d7bcbb5a0ebc3f555c835c14672 [file] [log] [blame]
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tai_ofa;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.security.acl.Owner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Observable;
import java.util.Set;
import java.util.Stack;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.beans.property.DoubleProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.Side;
import javafx.scene.Cursor;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ComboBoxBuilder;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.Separator;
import javafx.scene.control.SingleSelectionModel;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFieldBuilder;
import javafx.scene.control.ToolBar;
import javafx.scene.control.Tooltip;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DragEvent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseDragEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.BorderPaneBuilder;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.GridPaneBuilder;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
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.scene.text.Font;
import javafx.scene.text.FontWeight;
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 OFAWizard extends Application {
NewWizard wizard;
TAI_OFA referenceOFA;
public OFAWizard() {
}
TreeItem<String> rootItem;
TreeItem<String> testTree;
ObservableList<TreeItem<String>> listProject;
TreeView<String> projectTree;
int caseNumber;
String paramsFileName;
public OFAWizard(TreeItem<String> root, int i, ObservableList<TreeItem<String>> listProject1, TreeView<String> projectTree1) {
rootItem = root;
caseNumber = i;
listProject = listProject1;
projectTree = projectTree1;
}
public void setOFA(TAI_OFA ofa) {
this.referenceOFA = ofa;
}
@Override
public void start(Stage stage) throws Exception {
wizard = new NewWizard(stage, rootItem, referenceOFA, caseNumber, listProject, projectTree);
stage.setTitle("TestON - Automation is O{pe}N ");
Scene scene = new Scene(wizard, 700, 400);
stage.setScene(scene);
stage.setResizable(false);
scene.getStylesheets().addAll(this.getClass().getResource("wizard.css").toExternalForm());
paramsFileName = wizard.paramsFileName;
stage.show();
}
public void setProjectList(ObservableList<TreeItem<String>> list) {
listProject = list;
}
public void setProjectView(TreeView<String> tree) {
projectTree = tree;
}
}
/**
* basic wizard infrastructure class
*/
class Wizard extends StackPane {
private static final int UNDEFINED = -1;
private ObservableList<WizardPage> pages = FXCollections.observableArrayList();
private Stack<Integer> history = new Stack();
private int curPageIdx = UNDEFINED;
NewWizard newWizardObjct;
public Wizard() {
}
void setAllData(WizardPage... nodes) {
for (WizardPage wizardPage : nodes) {
wizardPage.setNewWizard(newWizardObjct);
pages.add(wizardPage);
}
navTo(0);
setStyle("-fx-padding: 0; -fx-background-color: cornsilk;");
}
Wizard(WizardPage... nodes) {
for (WizardPage wizardPage : nodes) {
wizardPage.setNewWizard(newWizardObjct);
pages.add(wizardPage);
}
navTo(0);
setStyle("-fx-padding: 0; -fx-background-color: cornsilk;");
}
ObservableList<WizardPage> getAllChildrens() {
return pages;
}
void nextPage() {
if (hasNextPage()) {
navTo(curPageIdx + 1);
}
}
void priorPage() {
if (hasPriorPage()) {
navTo(history.pop(), false);
}
}
boolean hasNextPage() {
return (curPageIdx < pages.size() - 1);
}
boolean hasPriorPage() {
return !history.isEmpty();
}
void navTo(int nextPageIdx, boolean pushHistory) {
if (nextPageIdx < 0 || nextPageIdx >= pages.size()) {
return;
}
if (curPageIdx != UNDEFINED) {
if (pushHistory) {
history.push(curPageIdx);
}
}
WizardPage nextPage = pages.get(nextPageIdx);
curPageIdx = nextPageIdx;
getChildren().clear();
getChildren().add(nextPage);
nextPage.manageButtons();
}
void navTo(int nextPageIdx) {
navTo(nextPageIdx, true);
}
void navTo(String id) {
Node page = lookup("#" + id);
if (page != null) {
int nextPageIdx = pages.indexOf(page);
if (nextPageIdx != UNDEFINED) {
navTo(nextPageIdx);
}
}
}
public void finish() {
}
public void cancel() {
}
public void setNewWizard(NewWizard newWizardObj) {
newWizardObjct = newWizardObj;
}
}
/**
* basic wizard page class
*/
abstract class WizardPage extends VBox {
TAILocale label = new TAILocale(new Locale("en", "EN"));
Button priorButton = new Button("<< Previous");
Button nextButton = new Button("Next >>");
Button cancelButton = new Button("Cancel");
Button finishButton = new Button("Finish");
NewWizard newWizardReference;
WizardPage(String title) {
//getChildren().add(der.create().text(title).build());
setId(title);
setSpacing(0);
setStyle("-fx-padding:0; -fx-background-color: white; ");
Region spring = new Region();
VBox.setVgrow(spring, Priority.ALWAYS);
getChildren().addAll(getContent(), spring, getButtons());
priorButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
priorPage();
}
});
nextButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
nextPage();
}
});
cancelButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
getWizard().cancel();
}
});
finishButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
getWizard().finish();
}
});
}
HBox getButtons() {
Region spring = new Region();
HBox.setHgrow(spring, Priority.ALWAYS);
HBox buttonBar = new HBox(5);
cancelButton.setCancelButton(true);
// finishButton.setDefaultButton(true);
buttonBar.getChildren().addAll(spring, priorButton, nextButton, cancelButton, finishButton);
return buttonBar;
}
abstract Parent getContent();
boolean hasNextPage() {
return getWizard().hasNextPage();
}
boolean hasPriorPage() {
return getWizard().hasPriorPage();
}
void nextPage() {
getWizard().nextPage();
}
void priorPage() {
getWizard().priorPage();
}
void navTo(String id) {
getWizard().navTo(id);
}
Wizard getWizard() {
return (Wizard) getParent();
}
public void manageButtons() {
if (!hasPriorPage()) {
priorButton.setDisable(true);
}
if (!hasNextPage()) {
nextButton.setDisable(true);
}
}
public void setNewWizard(NewWizard refWizard) {
newWizardReference = refWizard;
}
}
/*
* this Class shows the OFA wizard
*/
class NewWizard extends Wizard {
String[] splitDeviceDetails;
TestWizard testWizard;
Stage owner;
String topologyDemo, paramFileDemo, ospkFileDemo;
TreeItem<String> projectExplorerTreeItem;
OFALoadTree projectNameTree;
TAI_OFA referenceOFA;
TAILocale label = new TAILocale(new Locale("en", "EN"));
String OFAUiPath = label.hierarchyTestON + "/tests/";
TreeItem<String> treeItem1;
String paramsFileName, topoFileName;
boolean flag = false;
String topologyFileDemo;
String[] splitDeviceDetail;
public NewWizard(Stage owner, TreeItem<String> treeItem, TAI_OFA reference, int caseNumber, final ObservableList<TreeItem<String>> listProject1, TreeView<String> projectTree1) {
super();
super.setNewWizard(this);
this.owner = owner;
testWizard = new TestWizard();
switch (caseNumber) {
/*
* cases ---
* 1. New Project
* 2. New Params file
* 3. New Topology file
* 4. New Driver
*
*/
case 1:
final ProjectWizard projectWizard = new ProjectWizard();
ParamsWizard paramsWizard = new ParamsWizard();
super.setAllData(projectWizard, paramsWizard, new TopologyWizard());
projectWizard.projectName.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
String message = "\nYour projectName must be\n" + "started with alphabate and \nshould not have special symbol";
textValidation("([a-zA-Z]\\d*[a-zA_Z])+|([a-zA-Z]\\d*)+|", arg2, projectWizard.error, projectWizard.nextButton, message, projectWizard.projectName);
}
});
projectExplorerTreeItem = treeItem;
referenceOFA = reference;
paramsWizard.gridPane.add(testWizard.testParams, 0, 0);
paramsWizard.gridPane.add(new Label(label.wizEmailId), 0, 2);
paramsWizard.gridPane.add(testWizard.emailId, 1, 2);
paramsWizard.gridPane.add(new Label("Log Directory "), 0, 3);
paramsWizard.gridPane.add(testWizard.log_dir, 1, 3);
paramsWizard.gridPane.add(new Label(label.wizNumberofTestCases), 0, 4);
paramsWizard.gridPane.add(testWizard.testCases, 1, 4);
paramsWizard.gridPane.add(testWizard.imageHouse, 60, 0);
paramsWizard.nextButton.setDisable(false);
break;
case 2:
super.setAllData(testWizard);
projectExplorerTreeItem = treeItem;
referenceOFA = reference;
testWizard.gridPane.add(new Label(label.wizProject), 0, 1);
testWizard.gridPane.add(testWizard.projectNameList, 1, 1);
testWizard.gridPane.add(new Label(label.wizParamName), 0, 3);
testWizard.gridPane.add(testWizard.paramName, 1, 3);
testWizard.nextButton.setDisable(true);
testWizard.paramName.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> arg0, String arg1, String arg2) {
if (!arg2.isEmpty()) {
testWizard.projectNameList.valueProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
if (!arg2.toString().isEmpty()) {
testWizard.testNameList.valueProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
testWizard.finishButton.setDisable(arg2.toString().isEmpty());
}
});
}
}
});
}
}
});
Iterator<TreeItem<String>> projectList1 = listProject1.iterator();
testWizard.projectNameList.getItems().clear();
while (projectList1.hasNext()) {
TreeItem<String> projectComb = projectList1.next();
projectComb.getValue();
testWizard.projectNameList.getItems().add(projectComb.getValue());
}
testWizard.projectNameList.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
final Iterator<TreeItem<String>> projectIterator = listProject1.iterator();
while (projectIterator.hasNext()) {
final TreeItem<String> treeItem = projectIterator.next();
ObservableList<TreeItem<String>> list = treeItem.getChildren();
if (treeItem.getValue().equalsIgnoreCase(testWizard.projectNameList.getSelectionModel().getSelectedItem().toString())) {
ObservableList<TreeItem<String>> children = treeItem.getChildren();
final Iterator<TreeItem<String>> testListIterator = children.iterator();
while (testListIterator.hasNext()) {
TreeItem<String> testComb = testListIterator.next();
testComb.getValue();
}
}
}
}
});
break;
case 3:
final ParamsWizard paramWizard = new ParamsWizard();
super.setAllData(paramWizard, new TopologyWizard());
projectExplorerTreeItem = treeItem;
referenceOFA = reference;
paramWizard.gridPane.add(testWizard.testParams, 0, 0);
paramWizard.gridPane.add(new Label("Test Name :"), 0, 2);
paramWizard.gridPane.add(testWizard.projectNameList, 1, 2);
paramWizard.gridPane.add(new Label("Topology Name"), 0, 3);
paramWizard.gridPane.add(testWizard.topologyName, 1, 3);
paramWizard.gridPane.add(testWizard.imageHouse, 60, 0);
paramWizard.nextButton.setDisable(true);
Iterator<TreeItem<String>> projectList2 = listProject1.iterator();
testWizard.projectNameList.getItems().clear();
while (projectList2.hasNext()) {
TreeItem<String> projectComb = projectList2.next();
projectComb.getValue();
testWizard.projectNameList.getItems().add(projectComb.getValue());
}
testWizard.projectNameList.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
final Iterator<TreeItem<String>> projectIterator = listProject1.iterator();
while (projectIterator.hasNext()) {
final TreeItem<String> treeItem = projectIterator.next();
ObservableList<TreeItem<String>> list = treeItem.getChildren();
if (treeItem.getValue().equalsIgnoreCase(testWizard.projectNameList.getSelectionModel().getSelectedItem().toString())) {
ObservableList<TreeItem<String>> children = treeItem.getChildren();
final Iterator<TreeItem<String>> testListIterator = children.iterator();
while (testListIterator.hasNext()) {
TreeItem<String> testComb = testListIterator.next();
testComb.getValue();
}
}
}
}
});
testWizard.topologyName.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
if (!testWizard.topologyName.getText().isEmpty()) {
paramWizard.nextButton.setDisable(false);
} else {
paramWizard.nextButton.setDisable(true);
}
}
});
break;
}
}
@Override
public void finish() {
String projectName = null;
String testName = null;
String testParamsName = null;
String testTopologyName = null;
ObservableList<WizardPage> nodeList = super.getAllChildrens();
int i = 0;
while (i < nodeList.size()) {
WizardPage node = nodeList.get(i);
if (node.getId().equals(label.wizProjectWizardId)) {
ProjectWizard projectWizard = (ProjectWizard) node;
projectName = projectWizard.getName();
new File(OFAUiPath + projectName).mkdir();
String projectWorkSpacePath = OFAUiPath + projectName;
File[] file = File.listRoots();
Path name = new File(projectWorkSpacePath).toPath();
projectNameTree = new OFALoadTree(name);
projectExplorerTreeItem.getChildren().add(projectNameTree);
String pathToFiles = projectNameTree.getFullPath() + "/";
Path ospkName = new File(projectNameTree.getFullPath() + "/" + projectName + ".ospk").toPath();
Path paramsName = new File(projectNameTree.getFullPath() + "/" + projectName + ".params").toPath();
Path topologyName = new File(projectNameTree.getFullPath() + "/" + projectName + ".topo").toPath();
OFALoadTree topologyTestTree = new OFALoadTree(topologyName);
topologyTestTree.setValue(topologyName.toString().replace(topologyName.toString(), projectName));
OFALoadTree ospkTestTree = new OFALoadTree(ospkName);
ospkTestTree.setValue(ospkName.toString().replace(ospkName.toString(), projectName));
OFALoadTree paramTestTree = new OFALoadTree(paramsName);
paramTestTree.setValue(paramsName.toString().replace(paramsName.toString(), projectName));
projectNameTree.getChildren().addAll(topologyTestTree, paramTestTree, ospkTestTree);
paramFileDemo = "<PARAMS>" + "\n\t" + "<testcases> \"1\" </testcases>" + "\n\t"
+ "<mail> " + testWizard.emailId.getText() + "</mail>\n\t" + "<log_dir>" + testWizard.log_dir.getText() + "</log_dir>" + "\n\n\t"
+ "<CASE1>" + "\n\t\t" + "#Enter your CASE parameter here in the form" + "\n\t\t" + "#param = value"
+ "\n\t\t" + "<STEP1>" + "\n\t\t\t" + "#Enter your STEP parameter here in the form" + "\n\t\t\t" + "#param = value" + "\n\t\t" + "</STEP1>" + "\n\t" + "</CASE1>"
+ "\n" + "\n</PARAMS>";
ospkFileDemo = "CASE 1" + "\n" + "\t" + "NAME" + " " + "\"Give test case name \"" + "\n" + "\t"
+ "DESC \"Give test case description\"" + "\n" + "END CASE";
testTopologyName = projectName + ".topo";
String topoFileDemo = "<TOPOLOGY>" + "\n\t<COMPONENT>" + "\n\t\t# put components here as given below" + "\n\t\t<component1>" + "\n\t\t\t# put component parameters here"
+ "\n\t\t <host> 192.168.56.101 </host>" + "\n\t\t</component1>" + "\n\t</COMPONENT>" + "</TOPOLOGY>";
try {
new File(pathToFiles + "/" + projectName + ".ospk").createNewFile();
new File(pathToFiles + "/" + projectName + ".params").createNewFile();
new File(pathToFiles + "/" + projectName + ".topo").createNewFile();
new File(pathToFiles + "/" + "__init__.py").createNewFile();
} catch (IOException ex) {
}
writeInFile(pathToFiles + "/" + projectName + ".params", paramFileDemo);
writeInFile(pathToFiles + "/" + projectName + ".ospk", ospkFileDemo);
referenceOFA.checkEditor();
} else if (node.getId().equals(label.wizTestWizardId)) {
testWizard = (TestWizard) node;
String selectedProject = testWizard.projectNameList.getSelectionModel().getSelectedItem().toString();
String paramName = testWizard.paramName.getText();
String pathParams = "";
for (int index = 0; index < referenceOFA.projectExplorerTree.getChildren().size(); index++) {
if (referenceOFA.projectExplorerTree.getChildren().get(index).getValue().equals(selectedProject)) {
pathParams = OFAUiPath + selectedProject;
Path name = new File(OFAUiPath + selectedProject + "/" + paramName).toPath();
OFALoadTree testSelection = new OFALoadTree(name);
Path paramsName = new File(name + ".params").toPath();
paramsFileName = paramsName.toString();
OFALoadTree paramsTestTree = new OFALoadTree(paramsName);
paramsTestTree.setValue(paramName);
referenceOFA.projectExplorerTree.getChildren().get(index).getChildren().addAll(paramsTestTree);
try {
new File(paramsFileName).createNewFile();
} catch (IOException ex) {
Logger.getLogger(NewWizard.class.getName()).log(Level.SEVERE, null, ex);
}
writeInFile(paramsFileName, referenceOFA.paramsFileContent);
}
}
} else if (node.getId().equals(label.wizTopologyWizardId)) {
TopologyWizard topoWizard = (TopologyWizard) node;
ArrayList<String> deviceName = new ArrayList<String>();
Iterator<TextField> attributeIterator = topoWizard.getDeviceNameList().iterator();
while (attributeIterator.hasNext()) {
TextField iteratorAttributeText = attributeIterator.next();
deviceName.add(iteratorAttributeText.getText());
}
topologyFileDemo = "<TOPOLOGY>" + "\n\t" + "<COMPONENT>" + "\n\t";
for (String device : topoWizard.getPropertyDetail()) {
splitDeviceDetail = device.split("\n");
topologyFileDemo += "\n\t\t" + "<" + splitDeviceDetail[0] + ">";
splitDeviceDetail = device.split("\n");
try {
topologyFileDemo += "\n\t\t\t" + "<hostname> " + splitDeviceDetail[1] + "</hostname>\n\t\t\t" + "<user>" + splitDeviceDetail[2]
+ "</user>\n\t\t\t" + "<password>" + splitDeviceDetail[3] + "</password>\n\t\t\t" + "<type>" + splitDeviceDetail[5] + "</type>\n\t\t\t" + "<coordinate(x,y)>"
+ splitDeviceDetail[7] + "</coordinate(x,y)>\n\t\t\t";
if (topoWizard.topoplogy.testTargetRadioButton.isSelected()) {
topologyFileDemo += "<test_target> 1 </test_target>\n\t\t\t" + "<COMPONENTS>";
} else {
topologyFileDemo += "<COMPONENTS>";
}
String[] deviceDetailsArray = topoWizard.interFaceValue.toArray(new String[topoWizard.interFaceValue.size()]);
int noOfDevices = 0;
for (String name : topoWizard.interFaceName) {
String propertyDetail = deviceDetailsArray[noOfDevices++];
String[] details = propertyDetail.split("\\_");
String[] splitInterFace = name.split("\\_");
if (splitInterFace[1].equals(splitDeviceDetail[0]) && details[1].equals(splitDeviceDetail[0])) {
// topologyFileDemo += "\n\t\t\t"+splitInterFace[0]+"="+details[0];
}
}
for (HashMap<String, String> interFaceDetail : topoWizard.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(splitDeviceDetail[0])) {
if (!me.getKey().toString().isEmpty()) {
if (!me.getKey().toString().equals("//s+")) {
topologyFileDemo += "\n\t\t\t\t" + "<" + me.getKey().toString() + ">" + deviceNameAndiniterFaceValue[0].toString() + "</" + me.getKey().toString() + ">";
}
}
}
}
topologyFileDemo += "\n\t\t\t</COMPONENTS>";
}
topologyFileDemo += "\n\t\t" + "</" + splitDeviceDetail[0] + ">";
} catch (Exception e) {
}
}
Set set = topoWizard.linkTopologyHash.entrySet();
Iterator linkHashDetailIterator = set.iterator();
while (linkHashDetailIterator.hasNext()) {
Map.Entry me = (Map.Entry) linkHashDetailIterator.next();
String[] linkValue = me.getValue().toString().split("_");
String[] linkCoordinates = me.getKey().toString().split("_");
topologyFileDemo += "\n\t\t" + "<" + linkValue[0] + ">";
topologyFileDemo += "\n\t\t\t" + "<" + linkValue[2].toString() + ">" + linkValue[3].toString() + "</" + linkValue[2].toString() + ">";
topologyFileDemo += "\n\t\t\t" + "<" + linkValue[4].toString() + ">" + linkValue[5].toString() + "</" + linkValue[4].toString() + ">";
topologyFileDemo += "\n\t\t\t" + "<linkCoordinates(startx,starty,endx,endy)" + ">" + linkCoordinates[1].toString() + "," + linkCoordinates[2] + "," + linkCoordinates[3] + "," + linkCoordinates[4] + "</linkCoordinates(startx,starty,endx,endy)" + ">";
topologyFileDemo += "\n\t\t" + "</" + linkValue[0] + ">";
}
topologyFileDemo += "\n\t" + "</COMPONENT>" + "\n" + "</TOPOLOGY>";
String pathTopo = "";
if (testTopologyName != null) {
writeInFile(label.hierarchyTestON + "/tests/" + projectName + "/" + testTopologyName, topologyFileDemo);
} else {
String projectNames = testWizard.projectNameList.getSelectionModel().getSelectedItem().toString();
for (int index = 0; index < referenceOFA.projectExplorerTree.getChildren().size(); index++) {
if (referenceOFA.projectExplorerTree.getChildren().get(index).getValue().equals(projectNames)) {
pathTopo = OFAUiPath + projectNames;
Path name = new File(OFAUiPath + projectNames + "/" + testWizard.topologyName.getText()).toPath();
OFALoadTree testSelection = new OFALoadTree(name);
Path topoName = new File(name + ".topo").toPath();
topoFileName = topoName.toString();
OFALoadTree topoTestTree = new OFALoadTree(topoName);
topoTestTree.setValue(topoFileName);
topoTestTree.setValue(topoFileName.toString().replace(topoFileName.toString(), testWizard.topologyName.getText()));
referenceOFA.projectExplorerTree.getChildren().get(index).getChildren().addAll(topoTestTree);
try {
new File(topoFileName).createNewFile();
} catch (IOException ex) {
Logger.getLogger(NewWizard.class.getName()).log(Level.SEVERE, null, ex);
}
writeInFile(topoFileName, topologyFileDemo);
}
}
}
}
i++;
}
owner.close();
}
public String getParamsFileName() {
return paramsFileName;
}
public void writeInFile(String path, String demoFile) {
try {
// Create file
FileWriter fstream = new FileWriter(path);
BufferedWriter out = new BufferedWriter(fstream);
out.write(demoFile);
out.close();
} catch (Exception e) {
}
}
public void cancel() {
owner.close();
}
public void textValidation(String regExp, String arg2, Label error, Button nextButton, String text, TextField name) {
Tooltip tooltip = new Tooltip();
if (arg2.matches(regExp)) {
error.setVisible(false);
nextButton.setDisable(false);
} else {
error.setVisible(true);
nextButton.setDisable(true);
flag = true;
String errorImage = "/images/error.png";
Image saveImage = new Image(getClass().getResourceAsStream(errorImage), 18.0, 18.0, true, true);
ImageView imageSave = new ImageView(saveImage);
error.setGraphic(imageSave);
tooltip.autoFixProperty();
tooltip.setText(text);
tooltip.setStyle("-fx-background-color:white");
error.setTooltip(tooltip);
Image image = new Image(getClass().getResourceAsStream("/images/error.png"), 24.0, 24.0, true, true);
tooltip.setGraphic(new ImageView(image));
}
if (arg2.isEmpty() || flag == true) {
nextButton.setDisable(true);
flag = false;
}
}
}
/**
* This page gathers more information about the new Test
*/
class ProjectWizard extends WizardPage {
TextField projectName;
String newProjectName;
String name;
boolean flag = false;
Label error;
ImageView imageHouse;
public ProjectWizard() {
super("Project");
nextButton.setDisable(true);
finishButton.setDisable(true);
this.setId("projectWizard");
}
@Override
Parent getContent() {
projectName = TextFieldBuilder.create().build();
projectName.setMinWidth(170);
nextButton.setDisable(true);
error = new Label();
error.setVisible(false);
error.setTextFill(Color.RED);
imageHouse = new ImageView(new Image("images/paxterra_logo.jpg", 100, 100, true, true));
HBox image = new HBox();
image.setPadding(new Insets(0, 0, 0, 470));
Button Open = new Button();
String openImgPath = "/images/TestON.png";
Open.setStyle("-fx-background-color:white");
Open.setLayoutX(0);
Open.setLayoutY(0);
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(70, 0, 0, 200));
gridPane.setHgap(10);
gridPane.setVgap(8);
Label project = new Label("Project Name");
gridPane.setId("pane");
gridPane.add(project, 0, 11);
gridPane.add(projectName, 1, 11);
gridPane.add(error, 2, 10);
gridPane.add(imageHouse, 10, 0);
return GridPaneBuilder.create().children(gridPane).build();
}
void nextPage() {
// If they have complaints, go to the normal next page
if (!projectName.getText().equals("")) {
super.nextPage();
newProjectName = projectName.getText();
} else {
// No complaints? Short-circuit the rest of the pages
navTo("ParamsWizard");
}
}
public String getName() {
return newProjectName;
}
}
/**
* This page gathers more information about the Test Script
*/
class TestWizard extends WizardPage {
TextField emailIds;
TextField numberOfTestCase;
TextField paramName;
TextField topologyName;
String getTestName, getEmailId;
String getNumberOfTestCases;
ObservableList<TreeItem<String>> listProject;
TreeView<String> projectTree;
ComboBox projectNameList;
ComboBox testNameList;
GridPane gridPane;
Label projectError, testError, emailIdError;
ImageView imageHouse;
Text testParams;
TextField testCases;
TextField emailId;
TextField log_dir;
Text caseParameter;
Button addParams;
public TestWizard() {
super("More Info");
this.setId("testWizard");
nextButton.setDisable(true);
finishButton.setDisable(false);
}
@Override
Parent getContent() {
HBox image = new HBox();
image.setPadding(new Insets(0, 0, 0, 470));
topologyName = TextFieldBuilder.create().build();
testParams = new Text("Test Params :");
testParams.setFont(Font.font("Arial", FontWeight.BOLD, 15));
testParams.setFill(Color.BLUE);
testCases = TextFieldBuilder.create().build();
emailId = TextFieldBuilder.create().build();
log_dir = TextFieldBuilder.create().build();
caseParameter = new Text("Case Params");
caseParameter.setFont(Font.font("Arial", FontWeight.BOLD, 10));
addParams = new Button("Add Case Params");
projectNameList = ComboBoxBuilder.create().build();
projectError = new Label();
projectError.setDisable(true);
paramName = TextFieldBuilder.create().build();
imageHouse = new ImageView(new Image("images/TestON.png", 200, 200, true, true));
testCases.lengthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
if (newValue.intValue() > oldValue.intValue()) {
char ch = testCases.getText().charAt(oldValue.intValue());
//Check if the new character is the number or other's
if (!(ch >= '0' && ch <= '9')) {
testCases.setText(testCases.getText().substring(0, testCases.getText().length() - 1));
}
}
}
});
nextButton.setDisable(false);
finishButton.setDisable(false);
gridPane = new GridPane();
gridPane.setPadding(new Insets(30, 0, 0, 40));
gridPane.setHgap(0);
gridPane.setVgap(5);
return GridPaneBuilder.create().children(gridPane).build();
}
void nextPage() {
if (!emailId.getText().equals("") || numberOfTestCase.getText().equals("") || log_dir.getText().equals("")) {
super.nextPage();
getEmailId = emailId.getText();
getNumberOfTestCases = numberOfTestCase.getText();
} else {
navTo("topologyWizards");
}
}
public String getTestName() {
return getTestName;
}
public String getEmailId() {
return getEmailId;
}
public String getNumberOfTestCase() {
return getNumberOfTestCases;
}
}
/**
* This page gathers more information about the new Params File
*/
class ParamsWizard extends WizardPage {
TextField emailIds;
TextField numberOfTestCase;
TextField paramName;
TextField topologyName;
String getTestName, getEmailId;
String getNumberOfTestCases;
ObservableList<TreeItem<String>> listProject;
TreeView<String> projectTree;
ComboBox projectNameList;
ComboBox testNameList;
GridPane gridPane;
Label projectError, testError, emailIdError;
ImageView imageHouse;
// here is new list
Text testParams;
TextField testCases;
TextField emailId;
TextField log_dir;
Text caseParameter;
Button addParams;
TextField testTopology;
public ParamsWizard() {
super("More Info");
this.setId("paramsWizard");
nextButton.setDisable(true);
finishButton.setDisable(false);
}
@Override
Parent getContent() {
HBox image = new HBox();
image.setPadding(new Insets(0, 0, 0, 470));
testTopology = emailId = TextFieldBuilder.create().build();
testParams = new Text("Test Params :");
testParams.setId("testParamsTitle");
testParams.setFont(Font.font("Arial", FontWeight.BOLD, 15));
testParams.setFill(Color.BLUE);
DropShadow dropShadow = new DropShadow();
dropShadow.setColor(Color.BLACK);
dropShadow.setRadius(25);
dropShadow.setSpread(0.25);
testParams.setEffect(dropShadow);
testCases = TextFieldBuilder.create().build();
emailId = TextFieldBuilder.create().build();
log_dir = TextFieldBuilder.create().build();
caseParameter = new Text("Case Params");
caseParameter.setFont(Font.font("Arial", FontWeight.BOLD, 10));
addParams = new Button("Add Case Params");
projectNameList = ComboBoxBuilder.create().build();
projectError = new Label();
projectError.setDisable(true);
paramName = TextFieldBuilder.create().build();
imageHouse = new ImageView(new Image("images/paxterra_logo.jpg", 100, 100, true, true));
testCases.lengthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
if (newValue.intValue() > oldValue.intValue()) {
char ch = testCases.getText().charAt(oldValue.intValue());
//Check if the new character is the number or other's
if (!(ch >= '0' && ch <= '9')) {
testCases.setText(testCases.getText().substring(0, testCases.getText().length() - 1));
}
}
}
});
nextButton.setDisable(false);
finishButton.setDisable(false);
gridPane = new GridPane();
gridPane.setPadding(new Insets(30, 0, 0, 40));
gridPane.setHgap(0);
gridPane.setVgap(5);
return GridPaneBuilder.create().children(gridPane).build();
}
void nextPage() {
if (!emailId.getText().equals("") || testCases.getText().equals("") || log_dir.getText().equals("")) {
super.nextPage();
getEmailId = emailId.getText();
getNumberOfTestCases = testCases.getText();
} else {
navTo("topologyWizards");
}
}
public String getTestName() {
return getTestName;
}
public String getEmailId() {
return getEmailId;
}
public String getNumberOfTestCase() {
return getNumberOfTestCases;
}
}
/**
* This page gathers more information about the Test Topology
*/
class TopologyWizard extends WizardPage {
ArrayList<TextField> deviceNameList = new ArrayList<TextField>();
ArrayList<String> draggedImagesName = new ArrayList<String>();
OFATopology topoplogy;
ArrayList<String> propertyValue = new ArrayList<String>();
ArrayList<String> interFaceName = new ArrayList<String>();
ArrayList<String> interFaceValue = new ArrayList<String>();
TreeView<String> driverExplorerTreeView;
ArrayList<String> webInfoList = new ArrayList<String>();
ArrayList<String> webCisco = new ArrayList<String>();
HashMap<String, String> interFaceHashDetail = new HashMap<String, String>();
ArrayList<HashMap<String, String>> arrayOfInterFaceHash;
HashMap<String, String> webToplogyHash = new HashMap<String, String>();
ArrayList<HashMap<String, String>> arrayOfwebTopologyHash;
OFATopologyLink topologyLink = new OFATopologyLink();
HashMap<String, String> linkTopologyHash = new HashMap<String, String>();
ArrayList<HashMap<String, String>> arrayOfLinkTopologyHash = new ArrayList<HashMap<String, String>>();
ArrayList<String> topoEditorDeviceInfo = new ArrayList<String>();
Button lineButtonHorizontal;
TAILocale label = new TAILocale(new Locale("en", "EN"));
boolean anchorFlag = false;
boolean selectFlag = false;
public TopologyWizard() {
super("");
this.setId(label.wizTopologyWizardId);
}
Parent getContent() {
TAILocale label = new TAILocale(Locale.ENGLISH);
VBox parentTopologyBox = new VBox();
ToolBar canvasToolBar = new ToolBar();
lineButtonHorizontal = new Button();
Tooltip horizontal = new Tooltip("Click to add horizontal line in canvas");
lineButtonHorizontal.setTooltip(horizontal);
Image image = new Image(getClass().getResourceAsStream("/images/Link1.png"), 28.0, 28.0, true, true);
ImageView imageNew = new ImageView(image);
lineButtonHorizontal.setGraphic(imageNew);
Button lineButtonVertical = new Button();
Tooltip vertical = new Tooltip("Click to add vertical line in canvas");
lineButtonVertical.setTooltip(vertical);
final Button deleteAllButton = new Button();
Tooltip delete = new Tooltip("Click to reset or clear canvas");
deleteAllButton.setTooltip(delete);
Image image2 = new Image(getClass().getResourceAsStream("/images/Refresh.png"), 24.0, 24.0, true, true);
ImageView imageNew2 = new ImageView(image2);
deleteAllButton.setGraphic(imageNew2);
Image image1 = new Image(getClass().getResourceAsStream("/images/verticalLine.jpg"), 24.0, 24.0, true, true);
ImageView imageNew1 = new ImageView(image1);
lineButtonVertical.setGraphic(imageNew1);
canvasToolBar.getItems().addAll(lineButtonHorizontal, deleteAllButton);
HBox topologyBox = new HBox();
TabPane topologyPane = new TabPane();
topologyPane.setSide(Side.LEFT);
final Tab topologyModifiedDriverExplorerTab = new Tab("DEVICES");
topologyPane.setMaxWidth(250);
String hostName = label.hierarchyTestON + "/drivers/common";
final Node rootIcon = new ImageView(new Image(getClass().getResourceAsStream("/images/project.jpeg"), 16, 16, true, true));
TreeItem<String> driverExplorerTree = new TreeItem<String>("Drivers");
File[] file = File.listRoots();
Path name = new File(hostName).toPath();
LoadDirectory treeNode = new LoadDirectory(name);
driverExplorerTree = treeNode;
driverExplorerTree.setExpanded(true);
driverExplorerTreeView = new TreeView<String>(driverExplorerTree);
topologyModifiedDriverExplorerTab.setContent(driverExplorerTreeView);
driverExplorerTreeView.setShowRoot(false);
topologyPane.getTabs().add(topologyModifiedDriverExplorerTab);
topologyModifiedDriverExplorerTab.setClosable(false);
final TabPane topologyNewCanvas = new TabPane();
topologyNewCanvas.setSide(Side.BOTTOM);
final Tab canvasTab = new Tab("Canvas");
canvasTab.setClosable(false);
Button mew = new Button("CLICK");
mew.setGraphic(rootIcon);
HBox hBox1 = new HBox();
hBox1.setPrefWidth(345);
hBox1.setPrefHeight(200);
hBox1.setStyle("-fx-border-color: blue;"
+ "-fx-border-width: 1;"
+ "-fx-border-style: solid;");
Pane box1 = new Pane();
box1.setPrefWidth(500);
box1.setPrefHeight(200);
canvasTab.setContent(box1);
topologyNewCanvas.getTabs().add(canvasTab);
deleteAllButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
Pane pane = (Pane) canvasTab.getContent();
ObservableList<Node> list = pane.getChildren();
pane.getChildren().removeAll(list);
}
});
lineButtonVertical.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
final Line connecting = new Line();
connecting.setStrokeWidth(3);
connecting.setEndY(90);
connecting.setLayoutX(33);
connecting.setLayoutY(33);
final DraggableNode contentLine = new DraggableNode();
contentLine.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
if (arg0.getClickCount() == 2) {
OFATopologyLink topologyLink = new OFATopologyLink();
topologyLink.start(new Stage());
} else if (arg0.getButton() == MouseButton.SECONDARY) {
deleteLineContextMenu(contentLine, connecting, arg0);
}
}
});
contentLine.getChildren().add(connecting);
Pane created = (Pane) canvasTab.getContent();
created.getChildren().addAll(contentLine);
}
});
driverExplorerTreeView.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
final MultipleSelectionModel<TreeItem<String>> selectedItem = driverExplorerTreeView.getSelectionModel();
try {
Image i = new Image(selectedItem.getSelectedItem().getGraphic().getId(), 60, 60, true, true);
Dragboard db = driverExplorerTreeView.startDragAndDrop(TransferMode.COPY);
ClipboardContent content = new ClipboardContent();
content.putImage(i);
db.setContent(content);
arg0.consume();
} catch (Exception e) {
}
}
});
final Pane pane = (Pane) canvasTab.getContent();
pane.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent t) {
Dragboard db = t.getDragboard();
if (db.hasImage()) {
t.acceptTransferModes(TransferMode.COPY);
}
t.consume();
}
});
pane.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasImage()) {
insertImage(db.getImage(), pane, event.getX(), event.getY());
event.setDropCompleted(true);
} else {
event.setDropCompleted(false);
}
event.consume();
}
});
SingleSelectionModel<Tab> tab = topologyNewCanvas.getSelectionModel();
tab.getSelectedItem().getContent().setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
SingleSelectionModel<Tab> tab1 = topologyNewCanvas.getSelectionModel();
}
});
topologyBox.getChildren().addAll(topologyPane, topologyNewCanvas);
parentTopologyBox.getChildren().addAll(canvasToolBar, topologyBox);
return parentTopologyBox;
}
void insertImage(Image i, final Pane hb, double x, double y) {
final TextField text = new TextField();
final String[] deviceInfo;;
text.setId(driverExplorerTreeView.getSelectionModel().getSelectedItem().getValue().toString() + "_" + driverExplorerTreeView.getSelectionModel().getSelectedItem().getParent().getValue());
deviceInfo = text.getId().split("\\_");
deviceNameList.add(text);
text.setPrefWidth(100);
ImageView iv = new ImageView();
iv.setImage(i);
final DraggableNode content = new DraggableNode();
final VBox hbox = new VBox();
hbox.setPrefWidth(80);
hbox.setPrefHeight(100);
lineButtonHorizontal.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
final Line connecting = new Line(33, 43, 33, 43);
connecting.setId("Line");
connecting.setStrokeLineCap(StrokeLineCap.ROUND);
connecting.setStroke(Color.MIDNIGHTBLUE);
connecting.setStrokeWidth(2.5);
final TopologyWizard.Anchor anchor1 = new TopologyWizard.Anchor("Anchor 1", connecting.startXProperty(), connecting.startYProperty());
final TopologyWizard.Anchor anchor2 = new TopologyWizard.Anchor("Anchor 2", connecting.endXProperty(), connecting.endYProperty());
anchor1.setFill(Color.TRANSPARENT.deriveColor(1, 1, 1, 0.5));
anchor2.setFill(Color.TRANSPARENT.deriveColor(1, 1, 1, 0.5));
Circle[] circles = {anchor1, anchor2};
for (Circle circle : circles) {
enableDrag(circle);
}
enableDragLineWithAnchors(connecting, anchor1, anchor2);
anchor1.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
anchor1.setFill(Color.GOLD.deriveColor(1, 1, 1, 0.5));
anchor1.setVisible(true);
anchor2.setVisible(true);
}
});
anchor1.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
anchor1.setFill(Color.TRANSPARENT.deriveColor(1, 1, 1, 0.5));
anchor1.setVisible(false);
anchor2.setVisible(false);
}
});
anchor2.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
anchor2.setFill(Color.GOLD.deriveColor(1, 1, 1, 0.5));
anchor1.setVisible(true);
anchor2.setVisible(true);
}
});
anchor2.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
anchor2.setFill(Color.TRANSPARENT.deriveColor(1, 1, 1, 0.5));
anchor1.setVisible(false);
anchor2.setVisible(false);
}
});
connecting.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
connecting.setStroke(Color.GOLD);
anchor1.setVisible(true);
anchor2.setVisible(true);
}
});
connecting.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
connecting.setStroke(Color.MIDNIGHTBLUE);
anchor1.setVisible(false);
anchor2.setVisible(false);
}
});
final DraggableNode contentLine = new DraggableNode();
connecting.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(connecting.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) {
connecting.setId(topologyLink.nameText.getText() + "_" + connecting.getStartX() + "_" + connecting.getStartY() + "_" + connecting.getEndX() + "_" + connecting.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(connecting.getId(), detailedString);
arrayOfLinkTopologyHash = new ArrayList<HashMap<String, String>>();
arrayOfLinkTopologyHash.add(linkTopologyHash);
topologyLink.copyStage.close();
}
});
} else if (arg0.getButton() == MouseButton.SECONDARY) {
deleteLineContextMenu(contentLine, connecting, arg0);
}
}
});
hb.getChildren().addAll(connecting, anchor1, anchor2);
}
});
content.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
if (anchorFlag == false) {
if (arg0.getClickCount() == 1) {
final Line con = new Line();
con.setStrokeLineCap(StrokeLineCap.ROUND);
con.setStroke(Color.MIDNIGHTBLUE);
con.setStrokeWidth(2.0);
final Line con1 = new Line();
con1.setStrokeLineCap(StrokeLineCap.ROUND);
con1.setStroke(Color.MIDNIGHTBLUE);
con1.setStrokeWidth(2.0);
final Line con2 = new Line();
con2.setStrokeLineCap(StrokeLineCap.ROUND);
con2.setStroke(Color.MIDNIGHTBLUE);
con2.setStrokeWidth(2.0);
final Line con3 = new Line();
con3.setStrokeLineCap(StrokeLineCap.ROUND);
con3.setStroke(Color.MIDNIGHTBLUE);
con3.setStrokeWidth(2.0);
OFAAnchorInsideImageNode mainAnchor = new OFAAnchorInsideImageNode(226.0, 41.0);
final Anchor anchor3 = new Anchor("anchor3", con.startXProperty(), con.startYProperty());
final Anchor anchor4 = new Anchor("anchor4", con.endXProperty(), con.endYProperty());
final Anchor anchor5 = new Anchor("anchor5", con1.startXProperty(), con1.startYProperty());
final Anchor anchor6 = new Anchor("anchor6", con1.endXProperty(), con1.endYProperty());
final Anchor anchor7 = new Anchor("anchor7", con2.startXProperty(), con2.startYProperty());
final Anchor anchor8 = new Anchor("anchor8", con2.endXProperty(), con2.endYProperty());
final Anchor anchor9 = new Anchor("anchor9", con3.startXProperty(), con3.startYProperty());
final Anchor anchor10 = new Anchor("anchor10", con3.endXProperty(), con3.endYProperty());
anchor3.setLayoutX(content.getLayoutX());
anchor3.setLayoutY(content.getLayoutY());
anchor3.setVisible(false);
anchor4.setLayoutX(content.getLayoutX() + 40);
anchor4.setLayoutY(content.getLayoutY());
anchor5.setLayoutX(content.getLayoutX());
anchor5.setLayoutY(content.getLayoutY());
anchor5.setVisible(false);
anchor6.setLayoutX(content.getLayoutX() + 40);
anchor6.setLayoutY(content.getLayoutY() + 100);
anchor7.setLayoutX(content.getLayoutX());
anchor7.setLayoutY(content.getLayoutY());
anchor7.setVisible(false);
anchor8.setLayoutX(content.getLayoutX());
anchor8.setLayoutY(content.getLayoutY() + 50);
anchor9.setLayoutX(content.getLayoutX());
anchor9.setLayoutY(content.getLayoutY());
anchor9.setVisible(false);
anchor10.setLayoutX(content.getLayoutX() + 80);
anchor10.setLayoutY(content.getLayoutY() + 50);
con1.setLayoutX(anchor6.getLayoutX());
con1.setLayoutY(anchor6.getLayoutY());
con.setLayoutX(anchor4.getLayoutX());
con.setLayoutY(anchor4.getLayoutY());
con2.setLayoutX(anchor8.getLayoutX());
con2.setLayoutY(anchor8.getLayoutY());
con3.setLayoutX(anchor10.getLayoutX());
con3.setLayoutY(anchor10.getLayoutY());
con.setId("connectingLine");
con.setLayoutX(anchor4.getLayoutX());
con.setLayoutY(anchor4.getLayoutY());
anchorFlag = true;
hb.getChildren().addAll(con, anchor3, anchor4, con1, anchor5, anchor6, con2, anchor7, anchor8, con3, anchor9, anchor10);
HashMap<Node, String> anchorNodeHash = new HashMap();
anchorNodeHash.put(anchor4, anchor4.getId());
anchorNodeHash.put(anchor6, anchor6.getId());
anchorNodeHash.put(anchor8, anchor8.getId());
anchorNodeHash.put(anchor10, anchor10.getId());
anchorNodeHash.put(con1, con1.getId());
anchorNodeHash.put(con2, con2.getId());
anchorNodeHash.put(con3, con3.getId());
anchorNodeHash.put(con, con.getId());
final ObservableList<Node> allNodeInCanvas = hb.getChildren();
mainAnchor.anchorsInsideImage(anchor4, 40, 0, 40, 100, hb, content, hbox, con, draggedImagesName, arrayOfInterFaceHash, linkTopologyHash, anchorNodeHash);
mainAnchor.anchorsInsideImage(anchor6, 40, 100, 40, 0, hb, content, hbox, con, draggedImagesName, arrayOfInterFaceHash, linkTopologyHash, anchorNodeHash);
mainAnchor.anchorsInsideImage(anchor8, 0, 50, 80, 50, hb, content, hbox, con, draggedImagesName, arrayOfInterFaceHash, linkTopologyHash, anchorNodeHash);
mainAnchor.anchorsInsideImage(anchor10, 80, 50, 0, 50, hb, content, hbox, con, draggedImagesName, arrayOfInterFaceHash, linkTopologyHash, anchorNodeHash);
hbox.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
hbox.startFullDrag();
}
});
hbox.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
anchorFlag = false;
hb.getChildren().removeAll(con, con1, con2, con3, anchor4, anchor6, anchor8, anchor10);
}
});
content.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
Double x13 = content.getScene().getX() + 482.0 + 53.0;
Double x14 = content.getLayoutX() + 482.0;
Double y13 = content.getScene().getY() + 142.0 + 92.0;
Double y14 = content.getLayoutY() + 142.0;
boolean exitFlag = false;
for (int i = 0; i <= 80; i++) {
for (int j = 0; j <= 100; j++) {
Double x1 = content.getScene().getX();
Double y1 = content.getScene().getX();
Double x11 = x1 + i;
Double y11 = y1 + j;
if (x11 == arg0.getSceneX()) {
if (y11 == arg0.getSceneY()) {
exitFlag = true;
}
}
}
}
if (exitFlag == false) {
anchorFlag = false;
hb.getChildren().removeAll(con, con1, con2, con3, anchor4, anchor5, anchor6, anchor7, anchor8, anchor9, anchor10);
}
}
});
}
}
if (arg0.getClickCount() == 2) {
if (deviceInfo[0].equals("fvtapidriver") || deviceInfo[0].equals("poxclidriver") || deviceInfo[0].equals("mininetclidriver") || deviceInfo[0].equals("dpctlclidriver")
|| deviceInfo[0].equals("floodlightclidriver") || deviceInfo[0].equals("flowvisorclidriver") || deviceInfo[0].equals("hpswitchclidriver")
|| deviceInfo[0].equals("remotevmdriver") || deviceInfo[0].equals("remotepoxdriver") || deviceInfo[0].equals("flowvisordriver") || deviceInfo[0].equals("switchclidriver")) {
try {
topoplogy = new OFATopology();
topoplogy.start(new Stage());
} catch (Exception ex) {
Logger.getLogger(TopologyWizard.class.getName()).log(Level.SEVERE, null, ex);
}
if (topoplogy.testTargetRadioButton.isSelected()) {
selectFlag = true;
}
topoplogy.cancelButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
topoplogy.copyStage.close();
}
});
topoplogy.save.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
topoplogy.getHostName = topoplogy.hostNameText.getText();
topoplogy.getUserName = topoplogy.userNameText.getText();
topoplogy.getPassword = topoplogy.passwordText.getText();
for (int i = 0; i < topoplogy.deviceTable.getItems().size(); i++) {
topoplogy.deviceTable.getSelectionModel().select(i);
interFaceHashDetail.put(topoplogy.deviceTable.getSelectionModel().getSelectedItem().getDeviceName().getText(), topoplogy.deviceTable.getSelectionModel().getSelectedItem().getDeviceType().getText() + "_" + text.getText());
arrayOfInterFaceHash = new ArrayList<HashMap<String, String>>();
arrayOfInterFaceHash.add(interFaceHashDetail);
}
draggedImagesName.add(text.getText());
propertyValue.add(text.getText() + "\n" + topoplogy.getHostName + "\n" + topoplogy.getUserName + "\n" + topoplogy.getPassword + "\n" + topoplogy.getTranportProtocol + "\n" + deviceInfo[0] + "\n" + topoplogy.getPort + "\n" + content.getId());
topoplogy.copyStage.close();
}
});
}
if (deviceInfo[1].equals("cli") || deviceInfo[1].equals("poxclidriver") || deviceInfo[1].equals("mininetclidriver") || deviceInfo[1].equals("dpctlclidriver")
|| deviceInfo[1].equals("floodlightclidriver") || deviceInfo[1].equals("flowvisorclidriver") || deviceInfo[1].equals("hpswitchclidriver")
|| deviceInfo[1].equals("remotevmdriver") || deviceInfo[1].equals("remotepoxdriver") || deviceInfo[1].equals("flowvisordriver") || deviceInfo[1].equals("switchclidriver")) {
try {
topoplogy = new OFATopology();
topoplogy.start(new Stage());
} catch (Exception ex) {
Logger.getLogger(TopologyWizard.class.getName()).log(Level.SEVERE, null, ex);
}
topoplogy.cancelButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
topoplogy.copyStage.close();
}
});
try {
topoplogy.save.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
topoplogy.getHostName = topoplogy.hostNameText.getText();
topoplogy.getUserName = topoplogy.userNameText.getText();
topoplogy.getPassword = topoplogy.passwordText.getText();
for (int i = 0; i < topoplogy.deviceTable.getItems().size(); i++) {
topoplogy.deviceTable.getSelectionModel().select(i);
interFaceHashDetail.put(topoplogy.deviceTable.getSelectionModel().getSelectedItem().getDeviceName().getText(), topoplogy.deviceTable.getSelectionModel().getSelectedItem().getDeviceType().getText() + "_" + text.getText());
arrayOfInterFaceHash = new ArrayList<HashMap<String, String>>();
arrayOfInterFaceHash.add(interFaceHashDetail);
}
draggedImagesName.add(text.getText());
propertyValue.add(text.getText() + "\n" + topoplogy.getHostName + "\n" + topoplogy.getUserName + "\n" + topoplogy.getPassword + "\n" + topoplogy.getTranportProtocol + "\n" + deviceInfo[0] + "\n" + topoplogy.getPort + "\n" + content.getId());
topoplogy.copyStage.close();
}
});
} catch (Exception e) {
}
}
}
}
});
final Button closeButton = new Button();
Tooltip close = new Tooltip();
close.setText("Delete this device");
closeButton.setTooltip(close);
Image image = new Image(getClass().getResourceAsStream("/images/close_icon2.jpg"), 12, 12, true, true);
ImageView imageNew3 = new ImageView(image);
closeButton.setGraphic(imageNew3);
closeButton.setStyle("-fx-background-color: white;");
final ArrayList<Node> removeNodes = new ArrayList<Node>();
closeButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
OFAAnchorInsideImageNode node = new OFAAnchorInsideImageNode(224.0, 41.0);
node.closeNodeOnCanvas(closeButton, hbox, hb, content);
Node parent = hbox.getParent();
ObservableList<Node> allCurrentNode = hb.getChildren();
for (Node node1 : allCurrentNode) {
if (node1.toString().contains("Line")) {
if (!node1.toString().matches("Line[id=Line[id=null,null]]")) {
if (node1.getId() != null) {
String[] startLineNode = node1.getId().split(",");
Integer nodeHash = content.hashCode();
if (nodeHash.toString().equals(startLineNode[0])) {
removeNodes.add(node1);
}
if (startLineNode.length == 2) {
if (nodeHash.toString().equals(startLineNode[1])) {
removeNodes.add(node1);
}
}
}
}
}
}
for (Node removenode : removeNodes) {
hb.getChildren().remove(removenode);
}
hb.getChildren().remove(content);
}
});
hbox.getChildren().addAll(closeButton, iv, text);
hbox.setId(iv.toString());
text.setPromptText("Device Name");
content.getChildren().add(hbox);
content.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
hbox.setStyle("-fx-border-color: Gold");
}
});
content.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
hbox.setStyle("-fx-border-color: Transparent");
Double xcoordinate = content.getLayoutX();
Double ycoordinate = content.getLayoutY();
OFATopology device = new OFATopology();
content.setId(xcoordinate.toString() + "," + ycoordinate.toString());
}
});
content.setLayoutX(x - 40);
content.setLayoutY(y - 30);
hb.getChildren().add(content);
}
void anchorsInsideImageNode(final Anchor anchor, final double bindLinex, final double bindLiney, final Pane hb, final DraggableNode content, final VBox hbox, final Line con) {
final Line con11 = new Line();
anchor.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
anchor.startFullDrag();
enableDrag(anchor);
}
});
anchor.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
boolean exitFlag = false;
for (int i = 0; i <= 80; i++) {
for (int j = 0; j <= 100; j++) {
Double x1 = anchor.getLayoutX() + 482.0;
Double y1 = anchor.getLayoutY() + 142.0;
Double x11 = x1 + i;
Double y11 = y1 + j;
if (x11 == arg0.getSceneX()) {
if (y11 == arg0.getSceneY()) {
exitFlag = true;
}
}
}
}
if (exitFlag == false) {
hbox.setStyle("-fx-border-color: Transparent");
anchor.setVisible(false);
con.setVisible(false);
}
}
});
hbox.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
try {
con.setVisible(false);
anchor.setVisible(false);
hb.getChildren().removeAll(con, anchor);
} catch (Exception e) {
}
}
});
anchor.setOnMouseDragReleased(new EventHandler<MouseDragEvent>() {
@Override
public void handle(MouseDragEvent arg0) {
ObservableList<Node> allNodesCanvas = hb.getChildren();
boolean flag = false;
try {
for (Node node : allNodesCanvas) {
Double x = node.getLayoutX() + 226.0;
Double y = node.getLayoutY() + 41.0;
if (node.toString().startsWith("DraggableNode")) {
for (int i = 0; i <= 80; i++) {
for (int j = 0; j <= 100; j++) {
Double x1 = node.getLayoutX() + 226.0;
Double y1 = node.getLayoutY() + 41.0;
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(bindLinex));
con11.startYProperty().bind(content.layoutYProperty().add(bindLiney));
con11.endXProperty().bind(node.layoutXProperty().add(bindLinex));
con11.endYProperty().bind(node.layoutYProperty().add(bindLiney));
hbox.setStyle("-fx-border-color: Transparent");
hb.getChildren().add(con11);
con.setVisible(false);
anchor.setVisible(false);
flag = true;
}
}
}
}
}
}
if (flag == false) {
con.setVisible(false);
anchor.setVisible(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();
}
});
}
if (arg0.getButton() == MouseButton.SECONDARY) {
deleteLineContextMenu(contentLine, con11, arg0);
}
}
});
}
void insertImage1(Image i, Tab hb) {
ImageView iv = new ImageView();
iv.setImage(i);
setupGestureSource(iv);
}
void setupGestureTarget(final HBox targetBox) {
targetBox.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasImage()) {
event.acceptTransferModes(TransferMode.COPY);
}
event.consume();
}
});
targetBox.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasImage()) {
event.setDropCompleted(true);
} else {
event.setDropCompleted(false);
}
event.consume();
}
});
}
void setupGestureSource(final ImageView source) {
source.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
/*
* allow any transfer mode
*/
Dragboard db = source.startDragAndDrop(TransferMode.COPY);
/*
* put a image on dragboard
*/
ClipboardContent content = new ClipboardContent();
Image sourceImage = source.getImage();
content.putImage(sourceImage);
db.setContent(content);
event.consume();
}
});
}
void deleteLineContextMenu(final DraggableNode contentLine, final Line connecting, MouseEvent arg0) {
ContextMenu menu = new ContextMenu();
MenuItem item = new MenuItem("Delete Line");
item.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
contentLine.setVisible(false);
contentLine.getChildren().remove(connecting);
}
});
menu.getItems().add(item);
menu.show(contentLine, arg0.getScreenX(), arg0.getScreenY());
}
public ArrayList<TextField> getDeviceNameList() {
return deviceNameList;
}
public ArrayList<String> getPropertyDetail() {
return propertyValue;
}
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 Anchor2 extends DraggableNode {
Anchor2(String id, DoubleProperty x, DoubleProperty y) {
super();
setId(id);
x.bind(layoutXProperty());
y.bind(layoutYProperty());
}
}
private void enableDragLineWithAnchors(final Line connecting, final Circle anchor1, final Circle anchor2) {
final Delta dragDelta = new Delta();
connecting.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
// record a delta distance for the drag and drop operation.
dragDelta.x = connecting.getLayoutX() - mouseEvent.getX();
dragDelta.y = connecting.getLayoutY() - mouseEvent.getY();
dragDelta.x = anchor1.getLayoutX() - mouseEvent.getX();
dragDelta.y = anchor1.getLayoutY() - mouseEvent.getY();
dragDelta.x = anchor2.getLayoutX() - mouseEvent.getX();
dragDelta.y = anchor2.getLayoutY() - mouseEvent.getY();
connecting.getScene().setCursor(Cursor.MOVE);
}
});
connecting.setOnMouseReleased(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
connecting.getScene().setCursor(Cursor.HAND);
}
});
connecting.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
connecting.setLayoutX(mouseEvent.getX() + dragDelta.x);
connecting.setLayoutY(mouseEvent.getY() + dragDelta.y);
anchor1.setLayoutX(mouseEvent.getX() + dragDelta.x);
anchor1.setLayoutY(mouseEvent.getY() + dragDelta.y);
anchor2.setLayoutX(mouseEvent.getX() + dragDelta.x);
anchor2.setLayoutY(mouseEvent.getY() + dragDelta.y);
}
});
connecting.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
if (!mouseEvent.isPrimaryButtonDown()) {
connecting.getScene().setCursor(Cursor.HAND);
}
}
});
connecting.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
if (!mouseEvent.isPrimaryButtonDown()) {
connecting.getScene().setCursor(Cursor.DEFAULT);
}
}
});
}
private void enableDrag(final Circle circle) {
final TopologyWizard.Delta dragDelta = new TopologyWizard.Delta();
circle.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
// record a delta distance for the drag and drop operation.
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.getScene().setCursor(Cursor.HAND);
}
});
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()) {
circle.getScene().setCursor(Cursor.DEFAULT);
}
}
});
}
class Delta {
double x, y;
}
}