forked from bigolol/JoanaKeyGui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSourceSinkAdderDialogHandler.java
100 lines (84 loc) · 3.12 KB
/
SourceSinkAdderDialogHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package joanakeygui;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.stage.Stage;
import joanakeygui.joanahandler.JoanaInstance;
/**
*
* @author holger
*/
public class SourceSinkAdderDialogHandler {
private ListView<String> sourcesList;
private ListView<String> sinkList;
private List<SinkOrSource> sources = new ArrayList<>();
private List<SinkOrSource> sinks = new ArrayList<>();
private JoanaInstance joanaInstance;
AddSourceDialogController controller;
public SourceSinkAdderDialogHandler(ListView<String> sourcesList, ListView<String> sinkList) throws IOException {
this.sourcesList = sourcesList;
this.sinkList = sinkList;
FXMLLoader fXMLLoader = new FXMLLoader(getClass().getResource("AddSourceDialog.fxml"));
Parent root = fXMLLoader.load();
controller = (AddSourceDialogController) fXMLLoader.getController();
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
controller.setStage(stage);
}
public SinkOrSource letUserAddSink(Stage parentStage) {
Optional<SinkOrSource> sink = controller.showForSink();
sinks.add(sink.get());
return sink.get();
}
public SinkOrSource letUserAddSrc(Stage parentStage) {
Optional<SinkOrSource> src = controller.showForSrc();
sources.add(src.get());
return src.get();
}
public void removeSelectedSrc() {
}
public void removeSelectedSink() {
}
void setJoanaInstance(JoanaInstance joanaInstance) {
this.joanaInstance = joanaInstance;
controller.setJoanaInstance(joanaInstance);
}
public String createSinkSourceJson() {
String sourcesStringTemplate = "sources : [SOURCES]";
String sourcesJsonString = "{";
for (SinkOrSource src : sources) {
sourcesJsonString += src.generateJson();
sourcesJsonString += "},\n{";
}
if (sources.isEmpty()) {
sourcesJsonString = "";
} else {
sourcesJsonString = sourcesJsonString.substring(0, sourcesJsonString.length() - 3);
}
sourcesJsonString = sourcesStringTemplate.replace("SOURCES", sourcesJsonString);
String sinkStringTemplate = "sinks : [SINKS]";
String sinksJsonString = "{";
for (SinkOrSource sink : sinks) {
sinksJsonString += sink.generateJson();
sinksJsonString += "},\n{";
}
if (sinks.isEmpty()) {
sinksJsonString = "";
} else {
sinksJsonString = sinksJsonString.substring(0, sinksJsonString.length() - 3);
}
sinksJsonString = sinkStringTemplate.replace("SINKS", sinksJsonString);
return sourcesJsonString + ",\n" + sinksJsonString;
}
}