summaryrefslogtreecommitdiff
path: root/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java')
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java30
1 files changed, 25 insertions, 5 deletions
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java
index 1ab66ef2..5f030382 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java
@@ -37,13 +37,13 @@ public class StatsDialog {
37 results.put(member, statsGenerator.generate(listener, Collections.singleton(member), "", false)); 37 results.put(member, statsGenerator.generate(listener, Collections.singleton(member), "", false));
38 } 38 }
39 39
40 SwingUtilities.invokeLater(() -> show(gui, results)); 40 SwingUtilities.invokeLater(() -> show(gui, results, ""));
41 }); 41 });
42 } 42 }
43 43
44 public static void show(Gui gui, Map<StatsMember, StatsResult> results) { 44 public static void show(Gui gui, Map<StatsMember, StatsResult> results, String packageName) {
45 // init frame 45 // init frame
46 JDialog dialog = new JDialog(gui.getFrame(), I18n.translate("menu.file.stats.title"), true); 46 JDialog dialog = new JDialog(gui.getFrame(), packageName.isEmpty() ? I18n.translate("menu.file.stats.title") : I18n.translateFormatted("menu.file.stats.title_filtered", packageName), true);
47 Container contentPane = dialog.getContentPane(); 47 Container contentPane = dialog.getContentPane();
48 contentPane.setLayout(new GridBagLayout()); 48 contentPane.setLayout(new GridBagLayout());
49 49
@@ -80,10 +80,30 @@ public class StatsDialog {
80 topLevelPackage.setText(UiConfig.getLastTopLevelPackage()); 80 topLevelPackage.setText(UiConfig.getLastTopLevelPackage());
81 contentPane.add(topLevelPackage, cb1.pos(0, results.size() + 2).fill(GridBagConstraints.HORIZONTAL).build()); 81 contentPane.add(topLevelPackage, cb1.pos(0, results.size() + 2).fill(GridBagConstraints.HORIZONTAL).build());
82 82
83 // Show filter button
84 JButton filterButton = new JButton(I18n.translate("menu.file.stats.filter"));
85 filterButton.addActionListener(action -> {
86 dialog.dispose();
87 ProgressDialog.runOffThread(gui.getFrame(), listener -> {
88 UiConfig.setLastTopLevelPackage(topLevelPackage.getText());
89 UiConfig.save();
90
91 final StatsGenerator statsGenerator = new StatsGenerator(gui.getController().project);
92 final Map<StatsMember, StatsResult> filteredResults = new HashMap<>();
93
94 for (StatsMember member : StatsMember.values()) {
95 filteredResults.put(member, statsGenerator.generate(listener, Collections.singleton(member), UiConfig.getLastTopLevelPackage(), false));
96 }
97
98 SwingUtilities.invokeLater(() -> show(gui, filteredResults, UiConfig.getLastTopLevelPackage()));
99 });
100 });
101 contentPane.add(filterButton, cb1.pos(0, results.size() + 3).anchor(GridBagConstraints.EAST).build());
102
83 // show synthetic members option 103 // show synthetic members option
84 JCheckBox syntheticParametersOption = new JCheckBox(I18n.translate("menu.file.stats.synthetic_parameters")); 104 JCheckBox syntheticParametersOption = new JCheckBox(I18n.translate("menu.file.stats.synthetic_parameters"));
85 syntheticParametersOption.setSelected(UiConfig.shouldIncludeSyntheticParameters()); 105 syntheticParametersOption.setSelected(UiConfig.shouldIncludeSyntheticParameters());
86 contentPane.add(syntheticParametersOption, cb1.pos(0, results.size() + 3).build()); 106 contentPane.add(syntheticParametersOption, cb1.pos(0, results.size() + 4).build());
87 107
88 // show generate button 108 // show generate button
89 JButton button = new JButton(I18n.translate("menu.file.stats.generate")); 109 JButton button = new JButton(I18n.translate("menu.file.stats.generate"));
@@ -98,7 +118,7 @@ public class StatsDialog {
98 generateStats(gui, checkboxes, topLevelPackage.getText(), syntheticParametersOption.isSelected()); 118 generateStats(gui, checkboxes, topLevelPackage.getText(), syntheticParametersOption.isSelected());
99 }); 119 });
100 120
101 contentPane.add(button, cb1.pos(0, results.size() + 4).weightY(1.0).anchor(GridBagConstraints.SOUTHEAST).build()); 121 contentPane.add(button, cb1.pos(0, results.size() + 5).weightY(1.0).anchor(GridBagConstraints.SOUTHWEST).build());
102 122
103 // add action listener to each checkbox 123 // add action listener to each checkbox
104 checkboxes.forEach((key, value) -> value.addActionListener(action -> { 124 checkboxes.forEach((key, value) -> value.addActionListener(action -> {