-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataManagerPane.java
More file actions
138 lines (124 loc) · 3.55 KB
/
DataManagerPane.java
File metadata and controls
138 lines (124 loc) · 3.55 KB
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/**
* DataManagerPane.java created by wenxiyang on MacBook Pro in a2
*
* Author: Wenxi Yang(wyang235@wisc.edu)
* Date: 4/21/2020
*
* Course: CS400
* Semester: Spring 2020
* Lecture: 001
*
* IDE: Eclipse IDE for Java Developers
* Version: 2019-12 (4.14.0)
* Build id: 20191212-1212
*
* Device: Wenxi’s MacBook Pro
* OS: MacOS Mojave
* Version: 10.14.4
* OS Build: 18E226
*
* List Collaboratons:
*
* Other Credits:
*
* Known bugs:
*/
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.ListView;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
/**
* The Class UserFunctionPane.
*/
public class DataManagerPane {
/** The pane. */
private static GridPane pane;
/** The raw data pane. */
private static RawDataPane rawDataPane;
/** The raw data stage. */
private static Stage rawDataStage;
/**
* Gets the user function pane.
*
* @return the user function pane
*/
public static GridPane getDataManagerPane(MilkData milkData) {
if (pane == null) {
rawDataPane = RawDataPane.createRawDataPane(milkData);
pane = new GridPane();
pane.setPadding(new Insets(10, 10, 10, 20));
// Setting the vertical and horizontal gaps between the columns
pane.setVgap(20);
pane.setHgap(20);
Button bt_ManageData = new Button("Manage Data");
bt_ManageData.setPrefWidth(120);
pane.add(bt_ManageData, 2, 0);
bt_ManageData.setOnAction(action -> {
if (rawDataStage == null) {
rawDataStage = new Stage();
Scene scene = new Scene(rawDataPane.getMyPane());
rawDataStage.setScene(scene);
}
rawDataStage.show();
});
ListView<File> listV = new ListView<File>();
listV.setPrefWidth(600);
pane.add(listV, 1, 1, 2, 1);
DirectoryChooser dirChooser = new DirectoryChooser();
dirChooser.setInitialDirectory(new File("csv"));
Hyperlink hyperlink = new Hyperlink("Read Data Files...");
hyperlink.setFont(Font.font(15));
pane.add(hyperlink, 1, 0);
Stage fileStage = new Stage();
Comparator<File> comparator = (f1, f2) -> {
String name = f1.getName();
name = name.substring(0, name.length() - 4);
String[] darr1 = name.split("-");
name = f2.getName();
name = name.substring(0, name.length() - 4);
String[] darr2 = name.split("-");
int res = -1;
if (darr1.length > 1 && darr1.length == darr2.length) {
try {
for (int i = 0; i < darr1.length; i++) {
res = Integer.compare(Integer.valueOf(darr1[i]), Integer.valueOf(darr2[i]));
if (res != 0) {
break;
}
}
} catch (NumberFormatException e) {
System.err.println("Error data, weight number format error: " + f1 + ", " + f2);
}
}
return res;
};
hyperlink.setOnAction((final ActionEvent e) -> {
File csvDir = dirChooser.showDialog(fileStage);
if (csvDir != null) {
try {
List<File> fList = milkData.readMilkData(csvDir.getAbsolutePath());
Collections.sort(fList, comparator);
rawDataPane.fillMonthComboBox();
listV.getItems().clear();
listV.getItems().addAll(fList);
EventLog.getInstance().log("Read files from " + csvDir.getAbsolutePath() + ".");
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
}
return pane;
}
}