summaryrefslogtreecommitdiff
path: root/enigma-swing/src
diff options
context:
space:
mode:
authorGravatar Yanis482020-06-08 22:50:28 +0200
committerGravatar GitHub2020-06-08 16:50:28 -0400
commitb06a81442bdaf15c4daebe87582c4f50ec1195b4 (patch)
tree4008e2b5b01d31252702adc1e47696f8b5a812f8 /enigma-swing/src
parentFix javadoc loss when renaming entry (#259) (diff)
downloadenigma-b06a81442bdaf15c4daebe87582c4f50ec1195b4.tar.gz
enigma-b06a81442bdaf15c4daebe87582c4f50ec1195b4.tar.xz
enigma-b06a81442bdaf15c4daebe87582c4f50ec1195b4.zip
Top-level package option when generating stats (#264)
* Top-level package option when generating stats * forgot to rename this
Diffstat (limited to 'enigma-swing/src')
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java4
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/StatsDialog.java32
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java9
3 files changed, 26 insertions, 19 deletions
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
index 15afeed1..ed0a2bf0 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
@@ -484,9 +484,9 @@ public class GuiController implements ClientPacketHandler {
484 chp.invalidateMapped(); 484 chp.invalidateMapped();
485 } 485 }
486 486
487 public void openStats(Set<StatsMember> includedMembers) { 487 public void openStats(Set<StatsMember> includedMembers, String topLevelPackage) {
488 ProgressDialog.runOffThread(gui.getFrame(), progress -> { 488 ProgressDialog.runOffThread(gui.getFrame(), progress -> {
489 String data = new StatsGenerator(project).generate(progress, includedMembers); 489 String data = new StatsGenerator(project).generate(progress, includedMembers, topLevelPackage);
490 490
491 try { 491 try {
492 File statsFile = File.createTempFile("stats", ".html"); 492 File statsFile = File.createTempFile("stats", ".html");
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 868eba79..d8d3acd2 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
@@ -1,16 +1,13 @@
1package cuchaz.enigma.gui.dialog; 1package cuchaz.enigma.gui.dialog;
2 2
3import java.awt.BorderLayout; 3import java.awt.*;
4import java.util.Arrays; 4import java.util.Arrays;
5import java.util.Locale; 5import java.util.Locale;
6import java.util.Map; 6import java.util.Map;
7import java.util.Set; 7import java.util.Set;
8import java.util.stream.Collectors; 8import java.util.stream.Collectors;
9 9
10import javax.swing.JButton; 10import javax.swing.*;
11import javax.swing.JCheckBox;
12import javax.swing.JFrame;
13import javax.swing.JPanel;
14 11
15import cuchaz.enigma.gui.Gui; 12import cuchaz.enigma.gui.Gui;
16import cuchaz.enigma.gui.stats.StatsMember; 13import cuchaz.enigma.gui.stats.StatsMember;
@@ -23,10 +20,12 @@ public class StatsDialog {
23 // init frame 20 // init frame
24 JFrame frame = new JFrame(I18n.translate("menu.file.stats.title")); 21 JFrame frame = new JFrame(I18n.translate("menu.file.stats.title"));
25 JPanel checkboxesPanel = new JPanel(); 22 JPanel checkboxesPanel = new JPanel();
23 JPanel topLevelPackagePanel = new JPanel();
26 JPanel buttonPanel = new JPanel(); 24 JPanel buttonPanel = new JPanel();
27 frame.setLayout(new BorderLayout()); 25 frame.setLayout(new GridLayout(3, 0));
28 frame.add(BorderLayout.NORTH, checkboxesPanel); 26 frame.add(checkboxesPanel);
29 frame.add(BorderLayout.SOUTH, buttonPanel); 27 frame.add(topLevelPackagePanel);
28 frame.add(buttonPanel);
30 29
31 // show checkboxes 30 // show checkboxes
32 Map<StatsMember, JCheckBox> checkboxes = Arrays 31 Map<StatsMember, JCheckBox> checkboxes = Arrays
@@ -37,13 +36,20 @@ public class StatsDialog {
37 return checkbox; 36 return checkbox;
38 })); 37 }));
39 38
39 // show top-level package option
40 JLabel topLevelPackageOption = new JLabel(I18n.translate("menu.file.stats.top_level_package"));
41 JTextField topLevelPackage = new JTextField();
42 topLevelPackage.setPreferredSize(ScaleUtil.getDimension(200, 25));
43 topLevelPackagePanel.add(topLevelPackageOption);
44 topLevelPackagePanel.add(topLevelPackage);
45
40 // show generate button 46 // show generate button
41 JButton button = new JButton(I18n.translate("menu.file.stats.generate")); 47 JButton button = new JButton(I18n.translate("menu.file.stats.generate"));
42 buttonPanel.add(button); 48 buttonPanel.add(button);
43 button.setEnabled(false); 49 button.setEnabled(false);
44 button.addActionListener(action -> { 50 button.addActionListener(action -> {
45 frame.dispose(); 51 frame.dispose();
46 generateStats(gui, checkboxes); 52 generateStats(gui, checkboxes, topLevelPackage.getText());
47 }); 53 });
48 54
49 // add action listener to each checkbox 55 // add action listener to each checkbox
@@ -60,12 +66,12 @@ public class StatsDialog {
60 // show the frame 66 // show the frame
61 frame.pack(); 67 frame.pack();
62 frame.setVisible(true); 68 frame.setVisible(true);
63 frame.setSize(ScaleUtil.getDimension(500, 120)); 69 frame.setSize(ScaleUtil.getDimension(500, 150));
64 frame.setResizable(false); 70 frame.setResizable(false);
65 frame.setLocationRelativeTo(gui.getFrame()); 71 frame.setLocationRelativeTo(gui.getFrame());
66 } 72 }
67 73
68 private static void generateStats(Gui gui, Map<StatsMember, JCheckBox> checkboxes) { 74 private static void generateStats(Gui gui, Map<StatsMember, JCheckBox> checkboxes, String topLevelPackage) {
69 // get members from selected checkboxes 75 // get members from selected checkboxes
70 Set<StatsMember> includedMembers = checkboxes 76 Set<StatsMember> includedMembers = checkboxes
71 .entrySet() 77 .entrySet()
@@ -74,9 +80,9 @@ public class StatsDialog {
74 .map(Map.Entry::getKey) 80 .map(Map.Entry::getKey)
75 .collect(Collectors.toSet()); 81 .collect(Collectors.toSet());
76 82
77 // checks if a projet is open 83 // checks if a project is open
78 if (gui.getController().project != null) { 84 if (gui.getController().project != null) {
79 gui.getController().openStats(includedMembers); 85 gui.getController().openStats(includedMembers, topLevelPackage);
80 } 86 }
81 } 87 }
82} 88}
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java
index aa878bb2..3d031a72 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java
@@ -30,7 +30,7 @@ public class StatsGenerator {
30 nameProposalServices = project.getEnigma().getServices().get(NameProposalService.TYPE); 30 nameProposalServices = project.getEnigma().getServices().get(NameProposalService.TYPE);
31 } 31 }
32 32
33 public String generate(ProgressListener progress, Set<StatsMember> includedMembers) { 33 public String generate(ProgressListener progress, Set<StatsMember> includedMembers, String topLevelPackage) {
34 includedMembers = EnumSet.copyOf(includedMembers); 34 includedMembers = EnumSet.copyOf(includedMembers);
35 int totalWork = 0; 35 int totalWork = 0;
36 36
@@ -46,7 +46,7 @@ public class StatsGenerator {
46 totalWork += entryIndex.getClasses().size(); 46 totalWork += entryIndex.getClasses().size();
47 } 47 }
48 48
49 progress.init(totalWork, "progress.stats"); 49 progress.init(totalWork, I18n.translate("progress.stats"));
50 50
51 Map<String, Integer> counts = new HashMap<>(); 51 Map<String, Integer> counts = new HashMap<>();
52 52
@@ -97,8 +97,9 @@ public class StatsGenerator {
97 Tree<Integer> tree = new Tree<>(); 97 Tree<Integer> tree = new Tree<>();
98 98
99 for (Map.Entry<String, Integer> entry : counts.entrySet()) { 99 for (Map.Entry<String, Integer> entry : counts.entrySet()) {
100 if (entry.getKey().startsWith("com.mojang")) continue; // just a few unmapped names, no point in having a subsection 100 if (entry.getKey().startsWith(topLevelPackage)) {
101 tree.getNode(entry.getKey()).value = entry.getValue(); 101 tree.getNode(entry.getKey()).value = entry.getValue();
102 }
102 } 103 }
103 104
104 tree.collapse(tree.root); 105 tree.collapse(tree.root);