From bab3b02a992e93049fb8c06a332c2f89c12f7e92 Mon Sep 17 00:00:00 2001 From: 2xsaiko Date: Sat, 18 Jul 2020 13:38:32 +0200 Subject: Replace usages of GridBagConstraints with GridBagConstraintsBuilder --- .../cuchaz/enigma/gui/dialog/AbstractDialog.java | 19 ++----- .../java/cuchaz/enigma/gui/dialog/StatsDialog.java | 64 ++++++---------------- .../java/cuchaz/enigma/gui/panels/EditorPanel.java | 38 +++---------- .../cuchaz/enigma/gui/panels/IdentifierPanel.java | 37 ++++--------- 4 files changed, 39 insertions(+), 119 deletions(-) diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/AbstractDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/AbstractDialog.java index b179eac1..57f7f948 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/AbstractDialog.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/AbstractDialog.java @@ -8,6 +8,7 @@ import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import cuchaz.enigma.gui.util.GridBagConstraintsBuilder; import cuchaz.enigma.gui.util.ScaleUtil; import cuchaz.enigma.utils.I18n; import cuchaz.enigma.utils.Pair; @@ -25,8 +26,6 @@ public abstract class AbstractDialog extends JDialog { Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); Container inputContainer = new JPanel(new GridBagLayout()); - GridBagConstraints c = new GridBagConstraints(); - List> components = createComponents(); for (int i = 0; i < components.size(); i += 1) { @@ -34,20 +33,10 @@ public abstract class AbstractDialog extends JDialog { JLabel label = new JLabel(I18n.translate(entry.a)); Component component = entry.b; - c.gridy = i; - c.insets = ScaleUtil.getInsets(4, 4, 4, 4); - - c.gridx = 0; - c.weightx = 0.0; - c.anchor = GridBagConstraints.LINE_END; - c.fill = GridBagConstraints.NONE; - inputContainer.add(label, c); + GridBagConstraintsBuilder cb = GridBagConstraintsBuilder.create().insets(4); - c.gridx = 1; - c.weightx = 1.0; - c.anchor = GridBagConstraints.LINE_START; - c.fill = GridBagConstraints.HORIZONTAL; - inputContainer.add(component, c); + inputContainer.add(label, cb.pos(0, i).weightX(0.0).anchor(GridBagConstraints.LINE_END).fill(GridBagConstraints.NONE).build()); + inputContainer.add(component, cb.pos(1, i).weightX(1.0).anchor(GridBagConstraints.LINE_END).fill(GridBagConstraints.HORIZONTAL).build()); } contentPane.add(inputContainer, BorderLayout.CENTER); Container buttonContainer = new JPanel(new FlowLayout(FlowLayout.RIGHT, ScaleUtil.scale(4), ScaleUtil.scale(4))); 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 c691d753..1e81a169 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 @@ -4,26 +4,16 @@ import java.awt.Container; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; -import java.util.Collections; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JDialog; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.SwingUtilities; +import javax.swing.*; import cuchaz.enigma.gui.Gui; import cuchaz.enigma.gui.stats.StatsGenerator; import cuchaz.enigma.gui.stats.StatsMember; import cuchaz.enigma.gui.stats.StatsResult; +import cuchaz.enigma.gui.util.GridBagConstraintsBuilder; import cuchaz.enigma.gui.util.ScaleUtil; import cuchaz.enigma.utils.I18n; @@ -46,59 +36,37 @@ public class StatsDialog { Container contentPane = dialog.getContentPane(); contentPane.setLayout(new GridBagLayout()); - GridBagConstraints c = new GridBagConstraints(); - c.insets = ScaleUtil.getInsets(4, 4, 4, 4); - c.gridy = 0; + GridBagConstraintsBuilder cb = GridBagConstraintsBuilder.create().insets(4); Map checkboxes = new HashMap<>(); + int[] i = {0}; results.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(e -> { StatsMember m = e.getKey(); StatsResult result = e.getValue(); - c.gridx = 0; - c.weightx = 1.0; - c.anchor = GridBagConstraints.WEST; JCheckBox checkBox = new JCheckBox(I18n.translate("type." + m.name().toLowerCase(Locale.ROOT))); checkboxes.put(m, checkBox); - contentPane.add(checkBox, c); + contentPane.add(checkBox, cb.pos(0, i[0]).weightX(1.0).anchor(GridBagConstraints.WEST).build()); - c.gridx = 1; - c.weightx = 0.0; - c.anchor = GridBagConstraints.EAST; - contentPane.add(new JLabel(Integer.toString(result.getMapped())), c); + GridBagConstraintsBuilder labels = cb.anchor(GridBagConstraints.EAST); - c.gridx = 2; - contentPane.add(new JLabel("/"), c); + contentPane.add(new JLabel(Integer.toString(result.getMapped())), labels.pos(1, i[0]).build()); + contentPane.add(new JLabel("/"), labels.pos(2, i[0]).build()); + contentPane.add(new JLabel(Integer.toString(result.getTotal())), labels.pos(3, i[0]).build()); + contentPane.add(new JLabel(String.format("%.2f%%", result.getPercentage())), labels.pos(4, i[0]).build()); - c.gridx = 3; - contentPane.add(new JLabel(Integer.toString(result.getTotal())), c); - - c.gridx = 4; - contentPane.add(new JLabel(String.format("%.2f%%", result.getPercentage())), c); - - c.gridy += 1; + i[0]++; }); - c.gridx = 0; - c.gridwidth = 5; - c.weightx = 1.0; - c.anchor = GridBagConstraints.WEST; + GridBagConstraintsBuilder cb1 = cb.pos(0, 0).width(5).weightX(1.0).anchor(GridBagConstraints.WEST); // show top-level package option JLabel topLevelPackageOption = new JLabel(I18n.translate("menu.file.stats.top_level_package")); - contentPane.add(topLevelPackageOption, c); + contentPane.add(topLevelPackageOption, cb1.pos(0, results.size() + 1).build()); - c.gridy += 1; - c.weightx = 1.0; - c.fill = GridBagConstraints.HORIZONTAL; JTextField topLevelPackage = new JTextField(); - contentPane.add(topLevelPackage, c); - - c.gridy += 1; - c.weighty = 1.0; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.SOUTHEAST; + contentPane.add(topLevelPackage, cb1.pos(0, results.size() + 2).fill(GridBagConstraints.HORIZONTAL).build()); // show generate button JButton button = new JButton(I18n.translate("menu.file.stats.generate")); @@ -108,7 +76,7 @@ public class StatsDialog { generateStats(gui, checkboxes, topLevelPackage.getText()); }); - contentPane.add(button, c); + contentPane.add(button, cb1.pos(0, results.size() + 3).weightY(1.0).anchor(GridBagConstraints.SOUTHEAST).build()); // add action listener to each checkbox checkboxes.forEach((key, value) -> value.addActionListener(action -> { diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java index 1ba0bbb1..e4a120b3 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java @@ -31,6 +31,7 @@ import cuchaz.enigma.gui.events.EditorActionListener; import cuchaz.enigma.gui.events.ThemeChangeListener; import cuchaz.enigma.gui.highlight.BoxHighlightPainter; import cuchaz.enigma.gui.highlight.SelectionHighlightPainter; +import cuchaz.enigma.gui.util.GridBagConstraintsBuilder; import cuchaz.enigma.gui.util.ScaleUtil; import cuchaz.enigma.source.DecompiledClassSource; import cuchaz.enigma.source.RenamableTokenType; @@ -364,15 +365,9 @@ public class EditorPanel { this.decompilingProgressBar.setIndeterminate(true); this.ui.setLayout(new GridBagLayout()); - GridBagConstraints c = new GridBagConstraints(); - c.gridx = 0; - c.gridy = 0; - c.insets = ScaleUtil.getInsets(2, 2, 2, 2); - c.anchor = GridBagConstraints.SOUTH; - this.ui.add(this.decompilingLabel, c); - c.gridy = 1; - c.anchor = GridBagConstraints.NORTH; - this.ui.add(this.decompilingProgressBar, c); + GridBagConstraintsBuilder cb = GridBagConstraintsBuilder.create().insets(ScaleUtil.scale(2)); + this.ui.add(this.decompilingLabel, cb.pos(0, 0).anchor(GridBagConstraints.SOUTH).build()); + this.ui.add(this.decompilingProgressBar, cb.pos(0, 1).anchor(GridBagConstraints.NORTH).build()); break; } case SUCCESS: { @@ -382,26 +377,11 @@ public class EditorPanel { } case ERRORED: { this.ui.setLayout(new GridBagLayout()); - GridBagConstraints c = new GridBagConstraints(); - c.insets = ScaleUtil.getInsets(2, 2, 2, 2); - c.gridx = 0; - c.gridy = 0; - c.weightx = 1.0; - c.anchor = GridBagConstraints.WEST; - this.ui.add(this.errorLabel, c); - c.gridy = 1; - c.fill = GridBagConstraints.HORIZONTAL; - this.ui.add(new JSeparator(JSeparator.HORIZONTAL), c); - c.gridy = 2; - c.fill = GridBagConstraints.BOTH; - c.weighty = 1.0; - this.ui.add(this.errorScrollPane, c); - c.gridy = 3; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.EAST; - c.weightx = 0.0; - c.weighty = 0.0; - this.ui.add(this.retryButton, c); + GridBagConstraintsBuilder cb = GridBagConstraintsBuilder.create().insets(ScaleUtil.scale(2)).weight(1.0, 0.0).anchor(GridBagConstraints.WEST); + this.ui.add(this.errorLabel, cb.pos(0, 0).build()); + this.ui.add(new JSeparator(JSeparator.HORIZONTAL), cb.pos(0, 1).fill(GridBagConstraints.HORIZONTAL).build()); + this.ui.add(this.errorScrollPane, cb.pos(0, 2).weight(1.0, 1.0).fill(GridBagConstraints.BOTH).build()); + this.ui.add(this.retryButton, cb.pos(0, 3).weight(0.0, 0.0).anchor(GridBagConstraints.EAST).build()); break; } } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java index be316ee4..7704242f 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/IdentifierPanel.java @@ -4,7 +4,6 @@ import java.awt.Component; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; -import java.awt.Insets; import java.awt.event.ItemEvent; import java.util.function.Consumer; @@ -18,16 +17,13 @@ import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.gui.Gui; import cuchaz.enigma.gui.elements.ConvertingTextField; import cuchaz.enigma.gui.events.ConvertingTextFieldListener; +import cuchaz.enigma.gui.util.GridBagConstraintsBuilder; import cuchaz.enigma.gui.util.GuiUtil; import cuchaz.enigma.gui.util.ScaleUtil; import cuchaz.enigma.network.packet.RenameC2SPacket; import cuchaz.enigma.translation.mapping.AccessModifier; import cuchaz.enigma.translation.mapping.EntryMapping; -import cuchaz.enigma.translation.representation.entry.ClassEntry; -import cuchaz.enigma.translation.representation.entry.Entry; -import cuchaz.enigma.translation.representation.entry.FieldEntry; -import cuchaz.enigma.translation.representation.entry.LocalVariableEntry; -import cuchaz.enigma.translation.representation.entry.MethodEntry; +import cuchaz.enigma.translation.representation.entry.*; import cuchaz.enigma.utils.I18n; import cuchaz.enigma.utils.validation.ValidationContext; @@ -177,26 +173,12 @@ public class IdentifierPanel { private final Container c; private final Entry e; private final EnigmaProject project; - private final GridBagConstraints col1; - private final GridBagConstraints col2; + private int row; public TableHelper(Container c, Entry e, EnigmaProject project) { this.c = c; this.e = e; this.project = project; - this.col1 = new GridBagConstraints(); - this.col2 = new GridBagConstraints(); - Insets insets = ScaleUtil.getInsets(2, 2, 2, 2); - this.col1.gridx = 0; - this.col1.gridy = 0; - this.col1.insets = insets; - this.col1.anchor = GridBagConstraints.WEST; - this.col2.gridx = 1; - this.col2.gridy = 0; - this.col2.weightx = 1.0; - this.col2.fill = GridBagConstraints.HORIZONTAL; - this.col2.insets = insets; - this.col2.anchor = GridBagConstraints.WEST; } public void begin() { @@ -205,11 +187,13 @@ public class IdentifierPanel { } public void addRow(Component c1, Component c2) { - c.add(c1, col1); - c.add(c2, col2); + GridBagConstraintsBuilder cb = GridBagConstraintsBuilder.create() + .insets(ScaleUtil.scale(2)) + .anchor(GridBagConstraints.WEST); + c.add(c1, cb.pos(0, this.row).build()); + c.add(c2, cb.pos(1, this.row).weightX(1.0).fill(GridBagConstraints.HORIZONTAL).build()); - col1.gridy += 1; - col2.gridy += 1; + this.row += 1; } public ConvertingTextField addCovertTextField(String c1, String c2) { @@ -255,8 +239,7 @@ public class IdentifierPanel { public void end() { // Add an empty panel with y-weight=1 so that all the other elements get placed at the top edge - this.col1.weighty = 1.0; - c.add(new JPanel(), col1); + c.add(new JPanel(), GridBagConstraintsBuilder.create().pos(0, row).weight(0.0, 1.0).build()); } } -- cgit v1.2.3