Skip to content

Commit 9531ef8

Browse files
authored
Merge pull request #7214 from IllianiBird/newPersonnelMarketRememberLastSize
Improvement: New Personnel Market Dialog Will Now Remember Last Size
2 parents 25dd0c4 + 4c1ec79 commit 9531ef8

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

MekHQ/src/mekhq/gui/dialog/markets/personnelMarket/PersonnelMarketDialog.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import static mekhq.utilities.ReportingUtilities.spanOpeningWithCustomColor;
4747

4848
import java.awt.BorderLayout;
49+
import java.awt.Dimension;
4950
import java.awt.GridBagConstraints;
5051
import java.awt.GridBagLayout;
5152
import java.awt.Insets;
@@ -61,6 +62,9 @@
6162
import javax.swing.table.TableRowSorter;
6263

6364
import megamek.client.ui.comboBoxes.MMComboBox;
65+
import megamek.client.ui.preferences.JWindowPreference;
66+
import megamek.client.ui.preferences.PreferencesNode;
67+
import megamek.logging.MMLogger;
6468
import mekhq.MekHQ;
6569
import mekhq.campaign.Campaign;
6670
import mekhq.campaign.CampaignOptions;
@@ -108,22 +112,23 @@
108112
* @since 0.50.06
109113
*/
110114
public class PersonnelMarketDialog extends JDialog {
115+
private static final MMLogger LOGGER = MMLogger.create(PersonnelMarketDialog.class);
111116
private static final String RESOURCE_BUNDLE = "mekhq.resources.PersonnelMarket";
112117

113118
private static final int MAXIMUM_DAYS_IN_MONTH = 31;
114119
private static final int MAXIMUM_NUMBER_OF_SYSTEM_ROLLS = 4;
115120

116121
private final int PADDING = scaleForGUI(5);
122+
private final Dimension PERSON_VIEW_MINIMUM_SIZE = scaleForGUI(500, 500);
117123

118124
private final NewPersonnelMarket market;
119125
private final JFrame parent;
120126
private final Campaign campaign;
121127
private final CampaignOptions campaignOptions;
122128

123-
private List<Person> currentApplicants;
129+
private final List<Person> currentApplicants;
124130
private MMComboBox<PersonnelFilter> roleComboBox = new MMComboBox<>("roleFilter");
125-
private JCheckBox goldenHelloCheckbox = new JCheckBox();
126-
private Person selectedPerson;
131+
private final JCheckBox goldenHelloCheckbox = new JCheckBox();
127132
private PersonnelTablePanel tablePanel;
128133
private PersonViewPanel personViewPanel;
129134

@@ -191,7 +196,8 @@ public void windowClosing(WindowEvent e) {
191196
setModal(true);
192197
pack();
193198
setLocationRelativeTo(parent);
194-
setVisible(true);
199+
setPreferences(this); // Must be before setVisible
200+
setVisible(true); // Should always be last
195201
}
196202

197203
/**
@@ -233,7 +239,7 @@ private JPanel initializeHeader() {
233239

234240
// Golden Hello Checkbox
235241
leftGbc.gridy = leftRow++;
236-
leftGbc.insets = new Insets(0, 0, 8, 0);
242+
leftGbc.insets = new Insets(0, 0, PADDING, 0);
237243
goldenHelloCheckbox.setText(getTextAt(RESOURCE_BUNDLE,
238244
"checkbox.personnelMarket.goldenHello"));
239245
goldenHelloCheckbox.setSelected(market.isOfferingGoldenHello());
@@ -259,7 +265,7 @@ private JPanel initializeHeader() {
259265

260266
// Personnel Availability Label (Centered)
261267
rightGbc.gridy = rightRow++;
262-
rightGbc.insets = new Insets(0, 0, 8, 0);
268+
rightGbc.insets = new Insets(0, 0, PADDING, 0);
263269
JLabel availabilityLabel = new JLabel(getTextAt(RESOURCE_BUNDLE, "label.personnelMarket.availability"));
264270
availabilityLabel.setHorizontalAlignment(SwingConstants.CENTER);
265271
rightPanel.add(availabilityLabel, rightGbc);
@@ -465,7 +471,7 @@ public boolean include(Entry<? extends TableModel, ? extends Integer> entry) {
465471
private JSplitPane initializePersonView(AtomicReference<Person> selectedPerson, JPanel mainPanel) {
466472
personViewPanel = new PersonViewPanel(selectedPerson.get(), campaign, campaign.getApp().getCampaigngui());
467473
JScrollPane viewScrollPane = new JScrollPane(personViewPanel);
468-
viewScrollPane.setPreferredSize(scaleForGUI(500, 750));
474+
viewScrollPane.setMinimumSize(PERSON_VIEW_MINIMUM_SIZE);
469475
SwingUtilities.invokeLater(() -> viewScrollPane.getVerticalScrollBar().setValue(0));
470476

471477
JPanel buttonPanel = initializeButtonPanel();
@@ -599,4 +605,17 @@ private String getAvailabilityModifierMessage() {
599605
}
600606
return noAvailabilityMessage;
601607
}
608+
609+
/**
610+
* This override forces the preferences for this class to be tracked in MekHQ instead of MegaMek.
611+
*/
612+
private void setPreferences(JDialog dialog) {
613+
try {
614+
PreferencesNode preferences = MekHQ.getMHQPreferences().forClass(PersonnelMarketDialog.class);
615+
dialog.setName("PersonnelMarketDialog");
616+
preferences.manage(new JWindowPreference(dialog));
617+
} catch (Exception ex) {
618+
LOGGER.error("Failed to set user preferences", ex);
619+
}
620+
}
602621
}

0 commit comments

Comments
 (0)