Skip to content

Commit 82c931b

Browse files
authored
Merge pull request #184 from Dokyeongyun/ft-220225-runMenu
Ft 220225 run menu
2 parents 1ec0266 + 81868f3 commit 82c931b

File tree

3 files changed

+264
-89
lines changed

3 files changed

+264
-89
lines changed

src/main/java/root/javafx/Controller/RunMenuController.java

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import java.net.URL;
44
import java.util.ArrayList;
55
import java.util.Arrays;
6-
import java.util.HashMap;
76
import java.util.List;
8-
import java.util.Map;
97
import java.util.ResourceBundle;
108
import java.util.stream.Collectors;
119

@@ -88,7 +86,7 @@ public class RunMenuController implements Initializable {
8886

8987
@FXML
9088
JFXComboBox<RoundingDigits> roundingDigitsCB;
91-
89+
9290
@FXML
9391
JFXComboBox<UsageUIType> usageUITypeCB;
9492

@@ -118,13 +116,13 @@ public class RunMenuController implements Initializable {
118116

119117
@FXML
120118
AnchorPane osDiskAP;
121-
119+
122120
@FXML
123121
AnchorPane step4AP;
124122

125123
@FXML
126124
Label step4Label;
127-
125+
128126
@FXML
129127
HBox step3ToStep4Arrow;
130128

@@ -180,14 +178,12 @@ private void setAnchorPaneAnchor(Node node, double top, double right, double bot
180178
/**
181179
* 모니터링 실행 결과 TableView를 부모 AnchorPane에 추가한다.
182180
*
183-
* @param <T> 모니터링 타입
184-
* @param parent 부모 AnchorPane
185-
* @param monitoringType 모니터링 타입 클래스
181+
* @param <T> 모니터링 타입
182+
* @param parent 부모 AnchorPane
186183
* @return 생성된 TableView
187184
*/
188-
private <T> MonitoringTableView<T> addMonitoringTableView(AnchorPane parent,
189-
Class<? extends MonitoringResult> monitoringType) {
190-
MonitoringTableView<T> tableView = new MonitoringTableView<>(monitoringType);
185+
private <T extends MonitoringResult> MonitoringTableView<T> addMonitoringTableView(AnchorPane parent) {
186+
MonitoringTableView<T> tableView = new MonitoringTableView<>();
191187
setAnchorPaneAnchor(tableView, 20, 0, 0, 0);
192188
parent.getChildren().add(tableView);
193189
return tableView;
@@ -252,6 +248,9 @@ public void runMonitoring(ActionEvent e) {
252248
propService.loadConnectionInfoConfig(connInfoConfigFilePath);
253249
propService.loadMonitoringInfoConfig(presetConfigFilePath);
254250

251+
UsageUIType usageUIType = usageUITypeCB.getSelectionModel().getSelectedItem();
252+
setUsageColumnUIType(usageUIType);
253+
255254
boolean isSave = resultSaveToggleBtn.isSelected();
256255

257256
List<String> dbNames = propService.getMonitoringDBNameList();
@@ -303,7 +302,7 @@ public void runMonitoring(ActionEvent e) {
303302
/**
304303
* 모니터링 결과를 TableView에 렌더링한다.
305304
*/
306-
public <T> void setMonitoringResult(MonitoringTableView<T> tableView, List<T> result) {
305+
public <T extends MonitoringResult> void setMonitoringResult(MonitoringTableView<T> tableView, List<T> result) {
307306
tableView.setItems(FXCollections.observableArrayList(result));
308307
}
309308

@@ -406,7 +405,7 @@ public RoundingDigits fromString(String digits) {
406405
return RoundingDigits.find(digits);
407406
}
408407
});
409-
408+
410409
// 3-3. 사용량 컬럼 UI 타입
411410
// 사용량 표시방법 콤보박스 아이템 설정
412411
usageUITypeCB.getItems().addAll(UsageUIType.values());
@@ -441,22 +440,29 @@ private void initRunStep4() {
441440
step3ToStep4Arrow.setPrefWidth(Control.USE_COMPUTED_SIZE);
442441

443442
// 4-1. 실행결과 TableView 생성 및 Column 추가
444-
archiveTable = addMonitoringTableView(archiveAP, ArchiveUsage.class);
443+
archiveTable = addMonitoringTableView(archiveAP);
445444
archiveTable.addColumn("Archive", "archiveName");
446445
archiveTable.addColumn("사용량(%)", "usedPercent");
447446

448-
tableSpaceTable = addMonitoringTableView(tableSpaceAP, TableSpaceUsage.class);
447+
tableSpaceTable = addMonitoringTableView(tableSpaceAP);
449448
tableSpaceTable.addColumn("테이블스페이스", "tableSpaceName");
450449
tableSpaceTable.addColumn("사용량(%)", "usedPercent");
451450

452-
asmDiskTable = addMonitoringTableView(asmDiskAP, ASMDiskUsage.class);
451+
asmDiskTable = addMonitoringTableView(asmDiskAP);
453452
asmDiskTable.addColumn("디스크 그룹", "asmDiskGroupName");
454453
asmDiskTable.addColumn("디스크 타입", "asmDiskGroupType");
455454
asmDiskTable.addColumn("사용량(%)", "usedPercent");
456455

457-
osDiskTable = addMonitoringTableView(osDiskAP, OSDiskUsage.class);
456+
osDiskTable = addMonitoringTableView(osDiskAP);
458457
osDiskTable.addColumn("파일 시스템", "fileSystem");
459458
osDiskTable.addColumn("마운트 위치", "mountedOn");
460459
osDiskTable.addColumn("사용량(%)", "usedPercent");
461460
}
461+
462+
private void setUsageColumnUIType(UsageUIType usageUIType) {
463+
archiveTable.setUsageUIType(usageUIType);
464+
tableSpaceTable.setUsageUIType(usageUIType);
465+
asmDiskTable.setUsageUIType(usageUIType);
466+
osDiskTable.setUsageUIType(usageUIType);
467+
}
462468
}
Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,51 @@
11
package root.javafx.CustomView;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import javafx.beans.binding.Bindings;
7+
import javafx.scene.control.TableCell;
38
import javafx.scene.control.TableColumn;
49
import javafx.scene.control.TableView;
510
import javafx.scene.control.cell.PropertyValueFactory;
611
import root.core.domain.MonitoringResult;
12+
import root.core.domain.enums.UsageUIType;
13+
import root.javafx.CustomView.UsageUI.UsageUI;
14+
import root.javafx.CustomView.UsageUI.UsageUIFactory;
715

8-
public class MonitoringTableView<T> extends TableView<T> {
9-
10-
private Class<? extends MonitoringResult> clazz;
16+
public class MonitoringTableView<T extends MonitoringResult> extends TableView<T> {
1117

12-
public MonitoringTableView(Class<? extends MonitoringResult> clazz) {
18+
private Map<String, TableColumn<T, Object>> tableColumnMap = new HashMap<>();
1319

14-
this.clazz = clazz;
20+
public MonitoringTableView() {
1521

1622
getStylesheets().add(System.getProperty("resourceBaseDir") + "/css/tableview.css");
1723
getStyleClass().add("tableView");
18-
24+
1925
setColumnResizePolicy(CONSTRAINED_RESIZE_POLICY);
2026
setTableMenuButtonVisible(true);
2127

2228
}
23-
29+
2430
public void addColumn(String title, String fieldName) {
25-
TableColumn<T, String> column = new TableColumn<>(title);
31+
TableColumn<T, Object> column = new TableColumn<>(title);
2632
column.setCellValueFactory(new PropertyValueFactory<>(fieldName));
27-
// column.setCellFactory(param -> {
28-
// });
33+
tableColumnMap.put(fieldName, column);
2934
getColumns().add(column);
3035
}
36+
37+
public void setUsageUIType(UsageUIType usageUIType) {
38+
TableColumn<T, Object> tc = tableColumnMap.get("usedPercent");
39+
tc.setCellFactory(col -> {
40+
TableCell<T, Object> cell = new TableCell<>();
41+
cell.itemProperty().addListener((observableValue, o, newValue) -> {
42+
if (newValue != null) {
43+
UsageUI usageUI = UsageUIFactory.create(usageUIType, Double.parseDouble(newValue.toString()), 90);
44+
cell.graphicProperty()
45+
.bind(Bindings.when(cell.emptyProperty()).then((UsageUI) null).otherwise(usageUI));
46+
}
47+
});
48+
return cell;
49+
});
50+
}
3151
}

0 commit comments

Comments
 (0)