Skip to content

Commit 108b8f5

Browse files
committed
Create 'ToggleGroupVBox' and using this at 'MonitoringYNVBox'
1 parent dcb7070 commit 108b8f5

File tree

7 files changed

+154
-165
lines changed

7 files changed

+154
-165
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,15 +263,15 @@ private void addMonitoringPresetPreview(List<MonitoringYN> dbYnList, List<Monito
263263
CustomTreeTableView dbCtv = new CustomTreeTableView("", FontAwesomeIcon.LIST);
264264
dbCtv.addMonitoringInstanceColumn("Instance", "monitoringAlias");
265265
dbMonitoringTypeList.forEach(type -> dbCtv.addMonitoringYNTableColumn(type.getName(), type));
266-
dbCtv.addTreeTableItem(new MonitoringYN("DB"), dbYnList, FontAwesomeIcon.DATABASE);
266+
dbCtv.addTreeTableItem(new MonitoringYN("DB "), dbYnList, FontAwesomeIcon.DATABASE);
267267
setAnchorPaneAnchor(dbCtv, 0, 0, 0, 0);
268268
dbPresetAP.getChildren().add(dbCtv);
269269

270270
// 모니터링 여부 리스트 TreeTableView - Server
271271
CustomTreeTableView serverCtv = new CustomTreeTableView("", FontAwesomeIcon.LIST);
272272
serverCtv.addMonitoringInstanceColumn("Instance", "monitoringAlias");
273273
serverMonitoringTypeList.forEach(type -> serverCtv.addMonitoringYNTableColumn(type.getName(), type));
274-
serverCtv.addTreeTableItem(new MonitoringYN("Server"), serverYnList, FontAwesomeIcon.SERVER);
274+
serverCtv.addTreeTableItem(new MonitoringYN("Server "), serverYnList, FontAwesomeIcon.SERVER);
275275
setAnchorPaneAnchor(serverCtv, 0, 0, 0, 0);
276276
serverPresetAP.getChildren().add(serverCtv);
277277
}

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

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22

33
import java.io.File;
44
import java.net.URL;
5+
import java.util.ArrayList;
56
import java.util.HashMap;
7+
import java.util.HashSet;
68
import java.util.List;
79
import java.util.Map;
810
import java.util.Optional;
911
import java.util.ResourceBundle;
12+
import java.util.Set;
13+
import java.util.stream.Collectors;
1014

1115
import org.apache.commons.configuration2.PropertiesConfiguration;
1216
import org.apache.commons.lang3.StringUtils;
@@ -39,8 +43,11 @@
3943
import root.core.domain.ArchiveUsage;
4044
import root.core.domain.JdbcConnectionInfo;
4145
import root.core.domain.JschConnectionInfo;
46+
import root.core.domain.MonitoringYN;
4247
import root.core.domain.OSDiskUsage;
4348
import root.core.domain.TableSpaceUsage;
49+
import root.core.domain.MonitoringYN.MonitoringTypeAndYN;
50+
import root.core.domain.enums.MonitoringType;
4451
import root.core.domain.enums.RoundingDigits;
4552
import root.core.domain.enums.UsageUIType;
4653
import root.core.repository.constracts.PropertyRepository;
@@ -394,19 +401,41 @@ public void saveMonitoringSettings(ActionEvent e) {
394401
*/
395402
private void createMonitoringElements(VBox rootVBox, String[] dbAlias, String[] serverAlias) {
396403

404+
405+
List<MonitoringYN> dbYnList = new ArrayList<>();
406+
List<MonitoringTypeAndYN> childList = new ArrayList<>();
407+
childList.add(new MonitoringTypeAndYN(MonitoringType.ARCHIVE, true));
408+
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+
412+
List<MonitoringYN> serverYnList = new ArrayList<>();
413+
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+
397426
MonitoringYNVBox monitoringYNVBox = new MonitoringYNVBox();
398427

399-
for (Class<?> monitoringType : DB_MONITORING_CONTENTS.keySet()) {
400-
monitoringYNVBox.addParentToggle(monitoringType, DB_MONITORING_CONTENTS.get(monitoringType));
428+
for (MonitoringType monitoringType : dbMonitoringTypeList) {
429+
monitoringYNVBox.addParentToggle(monitoringType, monitoringType.getName());
401430
for (String alias : dbAlias) {
402431
// TODO 초기값 설정
403432
monitoringYNVBox.addChildToggle(monitoringType, alias, true);
404433
}
405434
}
406435

407-
for (Class<?> monitoringType : SERVER_MONITORING_CONTENTS.keySet()) {
436+
for (MonitoringType monitoringType : serverMonitoringTypeList) {
408437

409-
monitoringYNVBox.addParentToggle(monitoringType, SERVER_MONITORING_CONTENTS.get(monitoringType));
438+
monitoringYNVBox.addParentToggle(monitoringType, monitoringType.getName());
410439
for (String alias : serverAlias) {
411440
// TODO 초기값 설정
412441
monitoringYNVBox.addChildToggle(monitoringType, alias, false);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,10 @@ protected void updateItem(String item, boolean empty) {
143143
private Label getMonitoringInstanceLabel(String item) {
144144
Label label = new Label(item);
145145
FontAwesomeIconView icon;
146-
if (item.equals("DB")) {
146+
if (item.equals("DB ")) {
147147
icon = getIconView(FontAwesomeIcon.DATABASE);
148148
label.setPadding(new Insets(0, 0, 0, 15));
149-
} else if (item.equals("Server")) {
149+
} else if (item.equals("Server ")) {
150150
icon = getIconView(FontAwesomeIcon.SERVER);
151151
label.setPadding(new Insets(0, 0, 0, 15));
152152
} else {
Lines changed: 10 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,17 @@
11
package root.javafx.CustomView;
22

33
import java.io.IOException;
4-
import java.util.ArrayList;
54
import java.util.HashMap;
6-
import java.util.List;
75
import java.util.Map;
86

9-
import javafx.event.ActionEvent;
10-
import javafx.event.EventHandler;
11-
import javafx.fxml.FXML;
127
import javafx.fxml.FXMLLoader;
13-
import javafx.scene.layout.FlowPane;
14-
import javafx.scene.layout.HBox;
158
import javafx.scene.layout.VBox;
16-
import javafx.scene.paint.Paint;
17-
import root.core.domain.ASMDiskUsage;
18-
import root.core.domain.AlertLog;
19-
import root.core.domain.ArchiveUsage;
20-
import root.core.domain.OSDiskUsage;
21-
import root.core.domain.TableSpaceUsage;
9+
import root.core.domain.enums.MonitoringType;
2210
import root.javafx.DI.DependencyInjection;
2311

2412
public class MonitoringYNVBox extends VBox {
2513

26-
private static final Paint PARENT_TOGGLE_COLOR = Paint.valueOf("#0132ac");
27-
private static final Paint PARENT_TOGGLE_LINE_COLOR = Paint.valueOf("#6e93ea");
28-
private static final Paint CHILD_TOGGLE_COLOR = Paint.valueOf("#009688");
29-
private static final Paint CHILD_TOGGLE_LINE_COLOR = Paint.valueOf("#77c2bb");
30-
private static final int PARENT_TOGGLE_SIZE = 6;
31-
private static final int CHILD_TOGGLE_SIZE = 4;
32-
33-
@FXML
34-
HBox archiveUsageParentHBox;
35-
36-
@FXML
37-
FlowPane archiveUsageChildFlowPane;
38-
39-
@FXML
40-
HBox tableSpaceUsageParentHBox;
41-
42-
@FXML
43-
FlowPane tableSpaceUsageChildFlowPane;
44-
45-
@FXML
46-
HBox asmDiskUsageParentHBox;
47-
48-
@FXML
49-
FlowPane asmDiskUsageChildFlowPane;
50-
51-
@FXML
52-
HBox osDiskUsageParentHBox;
53-
54-
@FXML
55-
FlowPane osDiskUsageChildFlowPane;
56-
57-
@FXML
58-
HBox alertLogParentHBox;
59-
60-
@FXML
61-
FlowPane alertLogChildFlowPane;
62-
63-
Map<Class<?>, HBox> parentHBoxMap = new HashMap<>();
64-
65-
Map<Class<?>, FlowPane> childFlowPaneMap = new HashMap<>();
66-
67-
Map<Class<?>, ToggleHBox> parentToggleMap = new HashMap<>();
68-
69-
Map<Class<?>, List<ToggleHBox>> childToggleListMap = new HashMap<>();
14+
Map<MonitoringType, ToggleGroupVBox> toggleGroupVBoxs = new HashMap<>();
7015

7116
public MonitoringYNVBox() {
7217
try {
@@ -77,18 +22,6 @@ public MonitoringYNVBox() {
7722
} catch (IOException e) {
7823
e.printStackTrace();
7924
}
80-
81-
parentHBoxMap.put(ArchiveUsage.class, archiveUsageParentHBox);
82-
parentHBoxMap.put(TableSpaceUsage.class, tableSpaceUsageParentHBox);
83-
parentHBoxMap.put(ASMDiskUsage.class, asmDiskUsageParentHBox);
84-
parentHBoxMap.put(OSDiskUsage.class, osDiskUsageParentHBox);
85-
parentHBoxMap.put(AlertLog.class, alertLogParentHBox);
86-
87-
childFlowPaneMap.put(ArchiveUsage.class, archiveUsageChildFlowPane);
88-
childFlowPaneMap.put(TableSpaceUsage.class, tableSpaceUsageChildFlowPane);
89-
childFlowPaneMap.put(ASMDiskUsage.class, asmDiskUsageChildFlowPane);
90-
childFlowPaneMap.put(OSDiskUsage.class, osDiskUsageChildFlowPane);
91-
childFlowPaneMap.put(AlertLog.class, alertLogChildFlowPane);
9225
}
9326

9427
/**
@@ -97,86 +30,25 @@ public MonitoringYNVBox() {
9730
* @param type 모니터링 타입
9831
* @param text 토글 우글 라벨 텍스트
9932
*/
100-
public void addParentToggle(Class<?> type, String text) {
101-
if (!parentToggleMap.containsKey(type)) {
102-
parentToggleMap.put(type, new ToggleHBox());
103-
childToggleListMap.put(type, new ArrayList<>());
33+
public void addParentToggle(MonitoringType type, String text) {
34+
if (!toggleGroupVBoxs.containsKey(type)) {
35+
toggleGroupVBoxs.put(type, new ToggleGroupVBox());
10436
}
10537

106-
ToggleHBox parentToggle = parentToggleMap.get(type);
107-
parentToggle.setLabelText(text);
108-
parentToggle.setToggle(PARENT_TOGGLE_SIZE, PARENT_TOGGLE_COLOR, PARENT_TOGGLE_LINE_COLOR);
109-
parentToggle.setToggleSelected(false);
110-
parentToggle.setToggleAction(new EventHandler<ActionEvent>() {
111-
112-
@Override
113-
public void handle(ActionEvent e) {
114-
for (ToggleHBox t : childToggleListMap.get(type)) {
115-
t.setToggleSelected(parentToggle.isToggleSelected());
116-
}
117-
}
118-
});
119-
120-
parentHBoxMap.get(type).getChildren().add(parentToggle);
121-
}
38+
ToggleGroupVBox parentToggle = toggleGroupVBoxs.get(type);
39+
parentToggle.setParentToggle(text);
12240

123-
/**
124-
* 자식 토글 버튼을 추가한다.
125-
*
126-
* @param type 모니터링 타입
127-
* @param text 토글 우측 라벨 텍스트
128-
* @param isSelected 토글 선택 여부
129-
*/
130-
public void addChildToggle(Class<?> type, String text, boolean isSelected) {
131-
addChildToggle(type, text, CHILD_TOGGLE_COLOR, CHILD_TOGGLE_LINE_COLOR, isSelected);
41+
getChildren().add(parentToggle);
13242
}
13343

13444
/**
13545
* 자식 토글 버튼을 추가한다.
13646
*
13747
* @param type 모니터링 타입
13848
* @param text 토글 우측 라벨 텍스트
139-
* @param color 토글 색
140-
* @param lineColor 토글 라인 색
14149
* @param isSelected 토글 선택 여부
14250
*/
143-
public void addChildToggle(Class<?> type, String text, Paint color, Paint lineColor, boolean isSelected) {
144-
ToggleHBox toggleHBox = new ToggleHBox();
145-
toggleHBox.setLabelText(text);
146-
toggleHBox.setToggle(CHILD_TOGGLE_SIZE, color, lineColor);
147-
toggleHBox.setToggleSelected(isSelected);
148-
toggleHBox.setToggleAction(new EventHandler<ActionEvent>() {
149-
150-
@Override
151-
public void handle(ActionEvent e) {
152-
if (toggleHBox.isToggleSelected()) {
153-
parentToggleMap.get(type).setToggleSelected(true);
154-
} else {
155-
parentToggleMap.get(type).setToggleSelected(!isAllNotSelected(type));
156-
}
157-
}
158-
});
159-
160-
parentToggleMap.get(type).setToggleSelected(!isAllNotSelected(type));
161-
162-
childFlowPaneMap.get(type).getChildren().add(toggleHBox);
163-
childToggleListMap.get(type).add(toggleHBox);
164-
}
165-
166-
/**
167-
* 자식 토글 버튼이 모두 선택되지 않았는지 여부를 반환한다.
168-
*
169-
* @param type 모니터링 타입
170-
* @return
171-
*/
172-
private boolean isAllNotSelected(Class<?> type) {
173-
boolean isAllNotSelected = true;
174-
for (ToggleHBox t : childToggleListMap.get(type)) {
175-
if (t.isToggleSelected()) {
176-
isAllNotSelected = false;
177-
break;
178-
}
179-
}
180-
return isAllNotSelected;
51+
public void addChildToggle(MonitoringType type, String text, boolean isSelected) {
52+
toggleGroupVBoxs.get(type).addChildToggle(text, isSelected);
18153
}
18254
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package root.javafx.CustomView;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import javafx.event.ActionEvent;
7+
import javafx.event.EventHandler;
8+
import javafx.scene.layout.FlowPane;
9+
import javafx.scene.layout.VBox;
10+
import javafx.scene.paint.Paint;
11+
12+
public class ToggleGroupVBox extends VBox {
13+
14+
private static final Paint PARENT_TOGGLE_COLOR = Paint.valueOf("#0132ac");
15+
private static final Paint PARENT_TOGGLE_LINE_COLOR = Paint.valueOf("#6e93ea");
16+
private static final Paint CHILD_TOGGLE_COLOR = Paint.valueOf("#009688");
17+
private static final Paint CHILD_TOGGLE_LINE_COLOR = Paint.valueOf("#77c2bb");
18+
private static final int PARENT_TOGGLE_SIZE = 6;
19+
private static final int CHILD_TOGGLE_SIZE = 4;
20+
21+
List<ToggleHBox> childToggleList = new ArrayList<>();
22+
23+
private ToggleHBox parentToggleHBox = new ToggleHBox();
24+
25+
private FlowPane childFlowPane = new FlowPane();
26+
27+
public ToggleGroupVBox() {
28+
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+
}
35+
}
36+
});
37+
38+
getChildren().addAll(parentToggleHBox, childFlowPane);
39+
}
40+
41+
/**
42+
* Group의 부모 토글 버튼의 텍스트, 사이즈, 컬러를 설정한다.
43+
*
44+
* @param text 토글 우측 라벨 텍스트
45+
*/
46+
public void setParentToggle(String text) {
47+
parentToggleHBox.setLabelText(text);
48+
parentToggleHBox.setToggle(PARENT_TOGGLE_SIZE, PARENT_TOGGLE_COLOR, PARENT_TOGGLE_LINE_COLOR);
49+
}
50+
51+
/**
52+
* Group의 자식 토글 버튼을 추가한다.
53+
*
54+
* @param text 토글 우측 라벨 텍스트
55+
* @param isSelected 선택 여부
56+
*/
57+
public void addChildToggle(String text, boolean isSelected) {
58+
ToggleHBox childToggleHBox = new ToggleHBox();
59+
childToggleHBox.setLabelText(text);
60+
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+
}
71+
}
72+
});
73+
74+
parentToggleHBox.setToggleSelected(!isAllNotSelected());
75+
76+
childToggleList.add(childToggleHBox);
77+
childFlowPane.getChildren().add(childToggleHBox);
78+
}
79+
80+
/**
81+
* Group의 자식 토글 버튼이 모두 선택되지 않았는지 여부를 반환한다.
82+
*
83+
* @return
84+
*/
85+
private boolean isAllNotSelected() {
86+
boolean isAllNotSelected = true;
87+
for (ToggleHBox t : childToggleList) {
88+
if (t.isToggleSelected()) {
89+
isAllNotSelected = false;
90+
break;
91+
}
92+
}
93+
return isAllNotSelected;
94+
}
95+
}

0 commit comments

Comments
 (0)