Skip to content

Commit

Permalink
Merge pull request #3824 from jackreichelt/#3763-set-quality-reversing
Browse files Browse the repository at this point in the history
#3763 reversing quality names in unit set quality GM menu
  • Loading branch information
HammerGS authored Feb 4, 2024
2 parents 186b5bc + e0277ed commit 3afc62f
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 44 deletions.
12 changes: 8 additions & 4 deletions MekHQ/src/mekhq/gui/adapter/PartsTableMouseAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,14 @@ public void actionPerformed(ActionEvent action) {
} else if (command.contains("SET_QUALITY")) {
int q = -1;
boolean reverse = gui.getCampaign().getCampaignOptions().isReverseQualityNames();
Object[] possibilities = { Part.getQualityName(Part.QUALITY_A, reverse),
Part.getQualityName(Part.QUALITY_B, reverse), Part.getQualityName(Part.QUALITY_C, reverse),
Part.getQualityName(Part.QUALITY_D, reverse), Part.getQualityName(Part.QUALITY_E, reverse),
Part.getQualityName(Part.QUALITY_F, reverse) };
Object[] possibilities = {
Part.getQualityName(Part.QUALITY_A, reverse),
Part.getQualityName(Part.QUALITY_B, reverse),
Part.getQualityName(Part.QUALITY_C, reverse),
Part.getQualityName(Part.QUALITY_D, reverse),
Part.getQualityName(Part.QUALITY_E, reverse),
Part.getQualityName(Part.QUALITY_F, reverse)
};
String quality = (String) JOptionPane.showInputDialog(gui.getFrame(), "Choose the new quality level",
"Set Quality", JOptionPane.PLAIN_MESSAGE, null, possibilities,
Part.getQualityName(Part.QUALITY_D, reverse));
Expand Down
55 changes: 22 additions & 33 deletions MekHQ/src/mekhq/gui/adapter/UnitTableMouseAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -176,43 +176,32 @@ public void actionPerformed(ActionEvent action) {
} else if (command.equals(COMMAND_SUPPLY_COST)) { // Single Unit only
new MonthlyUnitCostReportDialog(gui.getFrame(), selectedUnit).setVisible(true);
} else if (command.equals(COMMAND_SET_QUALITY)) {
int q;
Object[] possibilities = { "F", "E", "D", "C", "B", "A" }; // TODO : this probably shouldn't be inline
String quality = (String) JOptionPane.showInputDialog(gui.getFrame(),
"Choose the new quality level", "Set Quality",
JOptionPane.PLAIN_MESSAGE, null, possibilities, "F");

// showInputDialog returns null when cancel is clicked, so we set a default here
if (quality == null) {
quality = "CANCELED";
}

switch (quality) {
case "A":
q = 0;
break;
case "B":
q = 1;
break;
case "C":
q = 2;
break;
case "D":
q = 3;
break;
case "E":
q = 4;
break;
case "F":
q = 5;
break;
default:
q = -1;
// TODO : Duplicated in PartsTableMouseAdapter#actionPerformed
int q = -1;
boolean reverse = gui.getCampaign().getCampaignOptions().isReverseQualityNames();
Object[] possibilities = {
Part.getQualityName(Part.QUALITY_A, reverse),
Part.getQualityName(Part.QUALITY_B, reverse),
Part.getQualityName(Part.QUALITY_C, reverse),
Part.getQualityName(Part.QUALITY_D, reverse),
Part.getQualityName(Part.QUALITY_E, reverse),
Part.getQualityName(Part.QUALITY_F, reverse)
};
String quality = (String) JOptionPane.showInputDialog(gui.getFrame(), "Choose the new quality level",
"Set Quality", JOptionPane.PLAIN_MESSAGE, null, possibilities,
Part.getQualityName(Part.QUALITY_D, reverse));
for (int i = 0; i < possibilities.length; i++) {
if (possibilities[i].equals(quality)) {
q = i;
break;
}
}
if (q != -1) {
for (Unit unit : units) {
unit.setQuality(q);
if (unit != null) {
unit.setQuality(q);
MekHQ.triggerEvent(new UnitChangedEvent(unit));
}
}
}
} else if (command.equals(COMMAND_SELL)) {
Expand Down
32 changes: 25 additions & 7 deletions MekHQ/src/mekhq/gui/panes/CampaignOptionsPane.java
Original file line number Diff line number Diff line change
Expand Up @@ -561,7 +561,7 @@ protected void initialize() {
addTab(resources.getString("suppliesAndAcquisitionsPanel.title"), createSuppliesAndAcquisitionsTab());
addTab(resources.getString("techLimitsPanel.title"), createTechLimitsTab());
addTab(resources.getString("personnelPanel.title"), createPersonnelTab());
addTab(resources.getString("financesPanel.title"), createFinancesTab());
addTab(resources.getString("financesPanel.title"), createFinancesTab(campaign.getCampaignOptions().isReverseQualityNames()));
addTab(resources.getString("mercenaryPanel.title"), createMercenaryTab());
addTab(resources.getString("experiencePanel.title"), createExperienceTab());
addTab(resources.getString("skillsPanel.title"), createSkillsTab());
Expand Down Expand Up @@ -908,6 +908,14 @@ private JScrollPane createRepairAndMaintenanceTab() {
gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
panSubMaintenance.add(reverseQualityNames, gridBagConstraints);

reverseQualityNames.addActionListener(evt -> {
if (reverseQualityNames.isSelected()) {
recreateFinancesPanel(true);
} else {
recreateFinancesPanel(false);
}
});

useUnofficialMaintenance = new JCheckBox(resources.getString("useUnofficialMaintenance.text"));
useUnofficialMaintenance.setToolTipText(resources.getString("useUnofficialMaintenance.toolTipText"));
gridBagConstraints = new GridBagConstraints();
Expand Down Expand Up @@ -1416,7 +1424,7 @@ private JScrollPane createTechLimitsTab() {
return new JScrollPane(panTech);
}

private JScrollPane createFinancesTab() {
private JScrollPane createFinancesTab(boolean reverseQualities) {
int gridy = 0;

AbstractMHQScrollablePanel panFinances = new DefaultMHQScrollablePanel(getFrame(),
Expand Down Expand Up @@ -1624,7 +1632,7 @@ public Component getListCellRendererComponent(JList<?> list, Object value, int i
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 20;
panFinances.add(createPriceModifiersPanel(), gridBagConstraints);
panFinances.add(createPriceModifiersPanel(reverseQualities), gridBagConstraints);

return new JScrollPane(panFinances);
}
Expand Down Expand Up @@ -5222,7 +5230,7 @@ private void createAgeRangeRandomDeathPanel(final JPanel panel) {
//endregion Personnel Tab

//region Finances Tab
private JPanel createPriceModifiersPanel() {
private JPanel createPriceModifiersPanel(boolean reverseQualities) {
// Create Panel Components
final JLabel lblCommonPartPriceMultiplier = new JLabel(resources.getString("lblCommonPartPriceMultiplier.text"));
lblCommonPartPriceMultiplier.setToolTipText(resources.getString("lblCommonPartPriceMultiplier.toolTipText"));
Expand Down Expand Up @@ -5272,7 +5280,7 @@ private JPanel createPriceModifiersPanel() {
spnMixedTechUnitPriceMultiplier.setToolTipText(resources.getString("lblMixedTechUnitPriceMultiplier.toolTipText"));
spnMixedTechUnitPriceMultiplier.setName("spnMixedTechUnitPriceMultiplier");

final JPanel usedPartsValueMultipliersPanel = createUsedPartsValueMultipliersPanel();
final JPanel usedPartsValueMultipliersPanel = createUsedPartsValueMultipliersPanel(reverseQualities);

final JLabel lblDamagedPartsValueMultiplier = new JLabel(resources.getString("lblDamagedPartsValueMultiplier.text"));
lblDamagedPartsValueMultiplier.setToolTipText(resources.getString("lblDamagedPartsValueMultiplier.toolTipText"));
Expand Down Expand Up @@ -5389,14 +5397,14 @@ private JPanel createPriceModifiersPanel() {
return panel;
}

private JPanel createUsedPartsValueMultipliersPanel() {
private JPanel createUsedPartsValueMultipliersPanel(boolean reverseQualities) {
final JPanel panel = new JPanel(new GridLayout(0, 2));
panel.setBorder(BorderFactory.createTitledBorder(resources.getString("usedPartsValueMultipliersPanel.title")));
panel.setName("usedPartsValueMultipliersPanel");

spnUsedPartPriceMultipliers = new JSpinner[Part.QUALITY_F + 1];
for (int i = Part.QUALITY_A; i <= Part.QUALITY_F; i++) {
final String qualityLevel = Part.getQualityName(i, false);
final String qualityLevel = Part.getQualityName(i, reverseQualities);

final JLabel label = new JLabel(qualityLevel);
label.setToolTipText(resources.getString("lblUsedPartPriceMultiplier.toolTipText"));
Expand Down Expand Up @@ -7134,6 +7142,16 @@ public void recreateSPAPanel(boolean enableAddSPA) {
panSpecialAbilities.repaint();
}

/**
* Recreates the finances panel to reverse the qualities labels.
* @param reverseQualities boolean for if the qualities are reversed.
*/
private void recreateFinancesPanel(boolean reverseQualities) {
int financesTabIndex = indexOfTab(resources.getString("financesPanel.title"));
removeTabAt(financesTabIndex);
insertTab(resources.getString("financesPanel.title"), null, createFinancesTab(reverseQualities), null, financesTabIndex);
}

private void enableAtBComponents(JPanel panel, boolean enabled) {
for (final Component c : panel.getComponents()) {
if (c.equals(chkUseAtB)) {
Expand Down

0 comments on commit 3afc62f

Please sign in to comment.