diff options
Diffstat (limited to 'enigma-swing/src/main/java')
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 15afeed..ed0a2bf 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 868eba7..d8d3acd 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 @@ | |||
| 1 | package cuchaz.enigma.gui.dialog; | 1 | package cuchaz.enigma.gui.dialog; |
| 2 | 2 | ||
| 3 | import java.awt.BorderLayout; | 3 | import java.awt.*; |
| 4 | import java.util.Arrays; | 4 | import java.util.Arrays; |
| 5 | import java.util.Locale; | 5 | import java.util.Locale; |
| 6 | import java.util.Map; | 6 | import java.util.Map; |
| 7 | import java.util.Set; | 7 | import java.util.Set; |
| 8 | import java.util.stream.Collectors; | 8 | import java.util.stream.Collectors; |
| 9 | 9 | ||
| 10 | import javax.swing.JButton; | 10 | import javax.swing.*; |
| 11 | import javax.swing.JCheckBox; | ||
| 12 | import javax.swing.JFrame; | ||
| 13 | import javax.swing.JPanel; | ||
| 14 | 11 | ||
| 15 | import cuchaz.enigma.gui.Gui; | 12 | import cuchaz.enigma.gui.Gui; |
| 16 | import cuchaz.enigma.gui.stats.StatsMember; | 13 | import 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 aa878bb..3d031a7 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); |