summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui/dialog
diff options
context:
space:
mode:
authorGravatar Yanis482020-05-19 08:19:07 +0200
committerGravatar GitHub2020-05-19 02:19:07 -0400
commit9e75b56aa633b696dcce4478ddb4f1d9baf8c9a1 (patch)
tree837844c54956c57b14da001e8a06b07e5e6f0c7a /src/main/java/cuchaz/enigma/gui/dialog
parentCreate zh_cn.json (#216) (diff)
downloadenigma-fork-9e75b56aa633b696dcce4478ddb4f1d9baf8c9a1.tar.gz
enigma-fork-9e75b56aa633b696dcce4478ddb4f1d9baf8c9a1.tar.xz
enigma-fork-9e75b56aa633b696dcce4478ddb4f1d9baf8c9a1.zip
QOL fixes - Volume 2 (#239)
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/dialog')
-rw-r--r--src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java50
-rw-r--r--src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java82
2 files changed, 132 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java b/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java
new file mode 100644
index 0000000..64219ab
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/gui/dialog/ChangeDialog.java
@@ -0,0 +1,50 @@
1package cuchaz.enigma.gui.dialog;
2
3import java.awt.BorderLayout;
4import java.awt.event.KeyAdapter;
5import java.awt.event.KeyEvent;
6
7import javax.swing.JButton;
8import javax.swing.JFrame;
9import javax.swing.JLabel;
10import javax.swing.JPanel;
11
12import cuchaz.enigma.gui.Gui;
13import cuchaz.enigma.utils.I18n;
14
15public class ChangeDialog {
16
17 public static void show(Gui gui) {
18 // init frame
19 JFrame frame = new JFrame(I18n.translate("menu.view.change.title"));
20 JPanel textPanel = new JPanel();
21 JPanel buttonPanel = new JPanel();
22 frame.setLayout(new BorderLayout());
23 frame.add(BorderLayout.NORTH, textPanel);
24 frame.add(BorderLayout.SOUTH, buttonPanel);
25
26 // show text
27 JLabel text = new JLabel((I18n.translate("menu.view.change.summary")));
28 text.setHorizontalAlignment(JLabel.CENTER);
29 textPanel.add(text);
30
31 // show ok button
32 JButton okButton = new JButton(I18n.translate("menu.view.change.ok"));
33 buttonPanel.add(okButton);
34 okButton.addActionListener(event -> frame.dispose());
35 okButton.addKeyListener(new KeyAdapter() {
36 @Override
37 public void keyPressed(KeyEvent e) {
38 if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
39 frame.dispose();
40 }
41 }
42 });
43
44 // show the frame
45 frame.pack();
46 frame.setVisible(true);
47 frame.setResizable(false);
48 frame.setLocationRelativeTo(gui.getFrame());
49 }
50}
diff --git a/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java b/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java
new file mode 100644
index 0000000..868eba7
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java
@@ -0,0 +1,82 @@
1package cuchaz.enigma.gui.dialog;
2
3import java.awt.BorderLayout;
4import java.util.Arrays;
5import java.util.Locale;
6import java.util.Map;
7import java.util.Set;
8import java.util.stream.Collectors;
9
10import javax.swing.JButton;
11import javax.swing.JCheckBox;
12import javax.swing.JFrame;
13import javax.swing.JPanel;
14
15import cuchaz.enigma.gui.Gui;
16import cuchaz.enigma.gui.stats.StatsMember;
17import cuchaz.enigma.gui.util.ScaleUtil;
18import cuchaz.enigma.utils.I18n;
19
20public class StatsDialog {
21
22 public static void show(Gui gui) {
23 // init frame
24 JFrame frame = new JFrame(I18n.translate("menu.file.stats.title"));
25 JPanel checkboxesPanel = new JPanel();
26 JPanel buttonPanel = new JPanel();
27 frame.setLayout(new BorderLayout());
28 frame.add(BorderLayout.NORTH, checkboxesPanel);
29 frame.add(BorderLayout.SOUTH, buttonPanel);
30
31 // show checkboxes
32 Map<StatsMember, JCheckBox> checkboxes = Arrays
33 .stream(StatsMember.values())
34 .collect(Collectors.toMap(m -> m, m -> {
35 JCheckBox checkbox = new JCheckBox(I18n.translate("type." + m.name().toLowerCase(Locale.ROOT)));
36 checkboxesPanel.add(checkbox);
37 return checkbox;
38 }));
39
40 // show generate button
41 JButton button = new JButton(I18n.translate("menu.file.stats.generate"));
42 buttonPanel.add(button);
43 button.setEnabled(false);
44 button.addActionListener(action -> {
45 frame.dispose();
46 generateStats(gui, checkboxes);
47 });
48
49 // add action listener to each checkbox
50 checkboxes.entrySet().forEach(checkbox -> {
51 checkbox.getValue().addActionListener(action -> {
52 if (!button.isEnabled()) {
53 button.setEnabled(true);
54 } else if (checkboxes.entrySet().stream().allMatch(entry -> !entry.getValue().isSelected())) {
55 button.setEnabled(false);
56 }
57 });
58 });
59
60 // show the frame
61 frame.pack();
62 frame.setVisible(true);
63 frame.setSize(ScaleUtil.getDimension(500, 120));
64 frame.setResizable(false);
65 frame.setLocationRelativeTo(gui.getFrame());
66 }
67
68 private static void generateStats(Gui gui, Map<StatsMember, JCheckBox> checkboxes) {
69 // get members from selected checkboxes
70 Set<StatsMember> includedMembers = checkboxes
71 .entrySet()
72 .stream()
73 .filter(entry -> entry.getValue().isSelected())
74 .map(Map.Entry::getKey)
75 .collect(Collectors.toSet());
76
77 // checks if a projet is open
78 if (gui.getController().project != null) {
79 gui.getController().openStats(includedMembers);
80 }
81 }
82}