Skip to content

Commit da9e1d9

Browse files
committed
Set group toggle button initial value by MonitoringYN value
1 parent 108b8f5 commit da9e1d9

File tree

4 files changed

+104
-69
lines changed

4 files changed

+104
-69
lines changed

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

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import java.net.URL;
55
import java.util.ArrayList;
66
import java.util.HashMap;
7-
import java.util.HashSet;
7+
import java.util.LinkedHashSet;
88
import java.util.List;
99
import java.util.Map;
1010
import java.util.Optional;
@@ -44,9 +44,9 @@
4444
import root.core.domain.JdbcConnectionInfo;
4545
import root.core.domain.JschConnectionInfo;
4646
import root.core.domain.MonitoringYN;
47+
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
4748
import root.core.domain.OSDiskUsage;
4849
import root.core.domain.TableSpaceUsage;
49-
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
5050
import root.core.domain.enums.MonitoringType;
5151
import root.core.domain.enums.RoundingDigits;
5252
import root.core.domain.enums.UsageUIType;
@@ -332,7 +332,7 @@ private void loadMonitoringConfigFile(String filePath) {
332332
String[] dbNames = propRepo.getMonitoringDBNames();
333333
String[] serverNames = propRepo.getMonitoringServerNames();
334334

335-
createMonitoringElements(monitoringElementsVBox, dbNames, serverNames);
335+
createMonitoringElements(monitoringElementsVBox);
336336
}
337337

338338
/**
@@ -399,48 +399,42 @@ public void saveMonitoringSettings(ActionEvent e) {
399399
* @param monitoringElements
400400
* @param monitoringAlias
401401
*/
402-
private void createMonitoringElements(VBox rootVBox, String[] dbAlias, String[] serverAlias) {
402+
private void createMonitoringElements(VBox rootVBox) {
403403

404-
405404
List<MonitoringYN> dbYnList = new ArrayList<>();
406405
List<MonitoringTypeAndYN> childList = new ArrayList<>();
407-
childList.add(new MonitoringTypeAndYN(MonitoringType.ARCHIVE, true));
406+
childList.add(new MonitoringTypeAndYN(MonitoringType.ARCHIVE, false));
408407
childList.add(new MonitoringTypeAndYN(MonitoringType.TABLE_SPACE, true));
409-
childList.add(new MonitoringTypeAndYN(MonitoringType.ASM_DISK, true));
410-
dbYnList.add(new MonitoringYN("DB1", childList));
411-
408+
childList.add(new MonitoringTypeAndYN(MonitoringType.ASM_DISK, false));
409+
dbYnList.add(new MonitoringYN("ERP", childList));
410+
dbYnList.add(new MonitoringYN("ERP2", childList));
411+
dbYnList.add(new MonitoringYN("ERP3", childList));
412+
412413
List<MonitoringYN> serverYnList = new ArrayList<>();
413414
List<MonitoringTypeAndYN> childList2 = new ArrayList<>();
414-
childList2.add(new MonitoringTypeAndYN(MonitoringType.OS_DISK, false));
415-
childList2.add(new MonitoringTypeAndYN(MonitoringType.ALERT_LOG, false));
416-
serverYnList.add(new MonitoringYN("SERVER1", childList2));
417-
418-
Set<MonitoringType> dbMonitoringTypeList = new HashSet<>();
419-
dbYnList.stream().map(m -> m.getDistinctMonitoringTypes()).collect(Collectors.toList())
420-
.forEach(type -> dbMonitoringTypeList.addAll(type));
421-
422-
Set<MonitoringType> serverMonitoringTypeList = new HashSet<>();
423-
serverYnList.stream().map(m -> m.getDistinctMonitoringTypes()).collect(Collectors.toList())
424-
.forEach(type -> serverMonitoringTypeList.addAll(type));
425-
426-
MonitoringYNVBox monitoringYNVBox = new MonitoringYNVBox();
415+
childList2.add(new MonitoringTypeAndYN(MonitoringType.OS_DISK, true));
416+
childList2.add(new MonitoringTypeAndYN(MonitoringType.ALERT_LOG, true));
417+
serverYnList.add(new MonitoringYN("DBERP1", childList2));
427418

428-
for (MonitoringType monitoringType : dbMonitoringTypeList) {
429-
monitoringYNVBox.addParentToggle(monitoringType, monitoringType.getName());
430-
for (String alias : dbAlias) {
431-
// TODO 초기값 설정
432-
monitoringYNVBox.addChildToggle(monitoringType, alias, true);
419+
MonitoringYNVBox monitoringYNVBox = new MonitoringYNVBox();
420+
for (MonitoringYN dbYn : dbYnList) {
421+
for (MonitoringTypeAndYN typeAndYn : dbYn.getMonitoringTypeList()) {
422+
MonitoringType type = typeAndYn.getMonitoringType();
423+
monitoringYNVBox.addParentToggle(type, type.getName());
424+
monitoringYNVBox.addChildToggle(type, dbYn.getMonitoringAlias());
433425
}
434426
}
435-
436-
for (MonitoringType monitoringType : serverMonitoringTypeList) {
437-
438-
monitoringYNVBox.addParentToggle(monitoringType, monitoringType.getName());
439-
for (String alias : serverAlias) {
440-
// TODO 초기값 설정
441-
monitoringYNVBox.addChildToggle(monitoringType, alias, false);
427+
monitoringYNVBox.initSelection(dbYnList);
428+
429+
for (MonitoringYN serverYn : serverYnList) {
430+
for (MonitoringTypeAndYN typeAndYn : serverYn.getMonitoringTypeList()) {
431+
MonitoringType type = typeAndYn.getMonitoringType();
432+
monitoringYNVBox.addParentToggle(type, type.getName());
433+
monitoringYNVBox.addChildToggle(type, serverYn.getMonitoringAlias());
442434
}
443435
}
436+
monitoringYNVBox.initSelection(serverYnList);
437+
444438
rootVBox.getChildren().add(monitoringYNVBox);
445439
}
446440

src/main/java/root/javafx/CustomView/MonitoringYNVBox.java

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
import java.io.IOException;
44
import java.util.HashMap;
5+
import java.util.List;
56
import java.util.Map;
67

78
import javafx.fxml.FXMLLoader;
89
import javafx.scene.layout.VBox;
10+
import root.core.domain.MonitoringYN;
11+
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
912
import root.core.domain.enums.MonitoringType;
1013
import root.javafx.DI.DependencyInjection;
1114

@@ -32,13 +35,12 @@ public MonitoringYNVBox() {
3235
*/
3336
public void addParentToggle(MonitoringType type, String text) {
3437
if (!toggleGroupVBoxs.containsKey(type)) {
35-
toggleGroupVBoxs.put(type, new ToggleGroupVBox());
38+
ToggleGroupVBox toggleGroupVBox = new ToggleGroupVBox();
39+
toggleGroupVBox.setParentToggle(text);
40+
41+
toggleGroupVBoxs.put(type, toggleGroupVBox);
42+
getChildren().add(toggleGroupVBox);
3643
}
37-
38-
ToggleGroupVBox parentToggle = toggleGroupVBoxs.get(type);
39-
parentToggle.setParentToggle(text);
40-
41-
getChildren().add(parentToggle);
4244
}
4345

4446
/**
@@ -48,7 +50,40 @@ public void addParentToggle(MonitoringType type, String text) {
4850
* @param text 토글 우측 라벨 텍스트
4951
* @param isSelected 토글 선택 여부
5052
*/
51-
public void addChildToggle(MonitoringType type, String text, boolean isSelected) {
52-
toggleGroupVBoxs.get(type).addChildToggle(text, isSelected);
53+
public void addChildToggle(MonitoringType type, String text) {
54+
toggleGroupVBoxs.get(type).addChildToggle(text);
55+
}
56+
57+
/**
58+
* 자식 토글의 선택여부를 초기화한다.
59+
*
60+
* @param monitoringYn
61+
*/
62+
public void initSelection(MonitoringYN monitoringYn) {
63+
String alias = monitoringYn.getMonitoringAlias();
64+
65+
for (MonitoringTypeAndYN typeAndYn : monitoringYn.getMonitoringTypeList()) {
66+
ToggleGroupVBox toggleGroupVBox = toggleGroupVBoxs.get(typeAndYn.getMonitoringType());
67+
if (toggleGroupVBox != null) {
68+
toggleGroupVBoxs.get(typeAndYn.getMonitoringType()).setSelected(alias, typeAndYn.isMonitoring());
69+
}
70+
}
71+
}
72+
73+
/**
74+
* 자식 토글의 선택여부를 초기화한다.
75+
*
76+
* @param list
77+
*/
78+
public void initSelection(List<MonitoringYN> list) {
79+
for (MonitoringYN yn : list) {
80+
String alias = yn.getMonitoringAlias();
81+
82+
for (MonitoringTypeAndYN typeAndYn : yn.getMonitoringTypeList()) {
83+
if (toggleGroupVBoxs.get(typeAndYn.getMonitoringType()) != null) {
84+
toggleGroupVBoxs.get(typeAndYn.getMonitoringType()).setSelected(alias, typeAndYn.isMonitoring());
85+
}
86+
}
87+
}
5388
}
5489
}

src/main/java/root/javafx/CustomView/ToggleGroupVBox.java

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import java.util.ArrayList;
44
import java.util.List;
55

6-
import javafx.event.ActionEvent;
7-
import javafx.event.EventHandler;
86
import javafx.scene.layout.FlowPane;
97
import javafx.scene.layout.VBox;
108
import javafx.scene.paint.Paint;
@@ -26,12 +24,9 @@ public class ToggleGroupVBox extends VBox {
2624

2725
public ToggleGroupVBox() {
2826

29-
parentToggleHBox.setToggleAction(new EventHandler<ActionEvent>() {
30-
@Override
31-
public void handle(ActionEvent event) {
32-
for (ToggleHBox t : childToggleList) {
33-
t.setToggleSelected(parentToggleHBox.isToggleSelected());
34-
}
27+
parentToggleHBox.setToggleChangeListener((ob, oldValue, newValue) -> {
28+
for (ToggleHBox t : childToggleList) {
29+
t.setToggleSelected(parentToggleHBox.isToggleSelected());
3530
}
3631
});
3732

@@ -51,32 +46,35 @@ public void setParentToggle(String text) {
5146
/**
5247
* Group의 자식 토글 버튼을 추가한다.
5348
*
54-
* @param text 토글 우측 라벨 텍스트
55-
* @param isSelected 선택 여부
49+
* @param text 토글 우측 라벨 텍스트
5650
*/
57-
public void addChildToggle(String text, boolean isSelected) {
51+
public void addChildToggle(String text) {
5852
ToggleHBox childToggleHBox = new ToggleHBox();
5953
childToggleHBox.setLabelText(text);
6054
childToggleHBox.setToggle(CHILD_TOGGLE_SIZE, CHILD_TOGGLE_COLOR, CHILD_TOGGLE_LINE_COLOR);
61-
childToggleHBox.setToggleSelected(isSelected);
62-
childToggleHBox.setToggleAction(new EventHandler<ActionEvent>() {
63-
64-
@Override
65-
public void handle(ActionEvent e) {
66-
if (childToggleHBox.isToggleSelected()) {
67-
parentToggleHBox.setToggleSelected(true);
68-
} else {
69-
parentToggleHBox.setToggleSelected(!isAllNotSelected());
70-
}
55+
childToggleHBox.setToggleChangeListener((ob, oldValue, newValue) -> {
56+
if (childToggleHBox.isToggleSelected()) {
57+
parentToggleHBox.setToggleSelected(true);
58+
} else {
59+
parentToggleHBox.setToggleSelected(!isAllNotSelected());
7160
}
7261
});
7362

74-
parentToggleHBox.setToggleSelected(!isAllNotSelected());
75-
7663
childToggleList.add(childToggleHBox);
7764
childFlowPane.getChildren().add(childToggleHBox);
7865
}
7966

67+
/**
68+
* Group의 자식 토글 버튼의 선택여부를 변경한다.
69+
*
70+
* @param alias 변경하고자 하는 토글 버튼 우측의 Label Text
71+
* @param isSelected 선택여부
72+
*/
73+
public void setSelected(String alias, boolean isSelected) {
74+
childToggleList.stream().filter(child -> child.getLabelText().equals(alias))
75+
.forEach(child -> child.setToggleSelected(isSelected));
76+
}
77+
8078
/**
8179
* Group의 자식 토글 버튼이 모두 선택되지 않았는지 여부를 반환한다.
8280
*

src/main/java/root/javafx/CustomView/ToggleHBox.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
import com.jfoenix.controls.JFXToggleButton;
66

7-
import javafx.event.ActionEvent;
8-
import javafx.event.EventHandler;
7+
import javafx.beans.value.ChangeListener;
98
import javafx.fxml.FXML;
109
import javafx.fxml.FXMLLoader;
1110
import javafx.scene.control.Label;
@@ -41,6 +40,15 @@ public void setLabelText(String text) {
4140
label.setText(text);
4241
}
4342

43+
/**
44+
* Toggle 버튼 우측 Label의 텍스트를 반환한다.
45+
*
46+
* @return
47+
*/
48+
public String getLabelText() {
49+
return label.getText();
50+
}
51+
4452
/**
4553
* Toggle의 속성을 설정한다.
4654
*
@@ -77,7 +85,7 @@ public boolean isToggleSelected() {
7785
*
7886
* @param e
7987
*/
80-
public void setToggleAction(EventHandler<ActionEvent> e) {
81-
toggleBtn.setOnAction(e);
88+
public void setToggleChangeListener(ChangeListener<? super Boolean> listener) {
89+
toggleBtn.selectedProperty().addListener(listener);
8290
}
8391
}

0 commit comments

Comments
 (0)