4646import static mekhq .utilities .ReportingUtilities .spanOpeningWithCustomColor ;
4747
4848import java .awt .BorderLayout ;
49+ import java .awt .Dimension ;
4950import java .awt .GridBagConstraints ;
5051import java .awt .GridBagLayout ;
5152import java .awt .Insets ;
6162import javax .swing .table .TableRowSorter ;
6263
6364import megamek .client .ui .comboBoxes .MMComboBox ;
65+ import megamek .client .ui .preferences .JWindowPreference ;
66+ import megamek .client .ui .preferences .PreferencesNode ;
67+ import megamek .logging .MMLogger ;
6468import mekhq .MekHQ ;
6569import mekhq .campaign .Campaign ;
6670import mekhq .campaign .CampaignOptions ;
108112 * @since 0.50.06
109113 */
110114public 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