From 51b3ad9c58ff6110ad22bc13abfc9b878c0ea12a Mon Sep 17 00:00:00 2001 From: Carl Spain Date: Tue, 28 Apr 2020 15:13:16 -0500 Subject: [PATCH 1/7] Removed drone and MASH extra equipment and repurposed their flags. --- .../com/printing/PrintDropship.java | 20 ++-------------- src/megameklab/com/util/ImageHelper.java | 23 +++++++++++++------ src/megameklab/com/util/UnitUtil.java | 5 +--- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/megameklab/com/printing/PrintDropship.java b/src/megameklab/com/printing/PrintDropship.java index e3079193a9e..dddf018801b 100644 --- a/src/megameklab/com/printing/PrintDropship.java +++ b/src/megameklab/com/printing/PrintDropship.java @@ -345,15 +345,8 @@ public String formatFeatures() { int drones = 0; Map eqCount = new HashMap<>(); for (Mounted mount : ship.getMisc()) { - // MASH and DCC use an additional MiscType to expand their capacity. - // Present them as a single piece of equipment and show size. - if (mount.getType().hasFlag(MiscType.F_MASH) || mount.getType().hasFlag(MiscType.F_MASH_EXTRA)) { - mashTheaters++; - } else if (mount.getType().hasFlag(MiscType.F_DRONE_CARRIER_CONTROL) - || mount.getType().hasFlag(MiscType.F_DRONE_EXTRA)){ - drones++; - } else if (UnitUtil.isPrintableEquipment(mount.getType())) { - eqCount.merge(mount.getType().getShortName(), 1, Integer::sum); + if (UnitUtil.isPrintableEquipment(mount.getType())) { + eqCount.merge(mount.getShortName(), 1, Integer::sum); } } if (ship instanceof Jumpship && ((Jumpship) ship).hasLF()) { @@ -366,15 +359,6 @@ public String formatFeatures() { sj.add(eq); } } - if (mashTheaters > 1) { - sj.add("MASH (" + mashTheaters + " theaters)"); - } else if (mashTheaters == 1) { - sj.add("MASH"); - } - if (drones > 0) { - sj.add("Drone Carrier Control System (" + drones - + ((drones > 1) ? " drones)" : " drone)")); - } return sj.toString(); } diff --git a/src/megameklab/com/util/ImageHelper.java b/src/megameklab/com/util/ImageHelper.java index 6b74031dd93..6504241ac73 100644 --- a/src/megameklab/com/util/ImageHelper.java +++ b/src/megameklab/com/util/ImageHelper.java @@ -31,17 +31,14 @@ import java.io.IOException; import java.io.InputStream; import java.net.URI; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Vector; +import java.util.*; import javax.swing.ImageIcon; import com.kitfox.svg.SVGDiagram; import com.kitfox.svg.SVGUniverse; +import jdk.nashorn.internal.runtime.options.Option; import megamek.common.Aero; import megamek.common.AmmoType; import megamek.common.BattleArmor; @@ -1163,7 +1160,13 @@ public static void printC3RemoteSensorAmmoName(Graphics2D g2d, public static void printMashCore(Graphics2D g2d, float lineStart, float linePoint, Font font, boolean isArmored, Entity entity) { - int theaters = entity.countWorkingMisc(MiscType.F_MASH_EXTRA) + 1; + int theaters = 1; + Optional mash = entity.getMisc().stream() + .filter(m -> m.getType().hasFlag(MiscType.F_DRONE_CARRIER_CONTROL)) + .findFirst(); + if (mash.isPresent()) { + theaters = (int) mash.get().getSize(); + } String theaterString = theaters > 1 ? " theaters)" : " theater)"; String printString; if (isArmored) { @@ -1179,7 +1182,13 @@ public static void printMashCore(Graphics2D g2d, float lineStart, public static void printDroneControl(Graphics2D g2d, float lineStart, float linePoint, Font font, boolean isArmored, Entity entity) { - int drones = entity.countWorkingMisc(MiscType.F_DRONE_EXTRA); + int drones = 1; + Optional dccs = entity.getMisc().stream() + .filter(m -> m.getType().hasFlag(MiscType.F_DRONE_CARRIER_CONTROL)) + .findFirst(); + if (dccs.isPresent()) { + drones = (int) dccs.get().getSize(); + } String droneString = drones > 1 ? " drones)" : " drone)"; String printString; if (isArmored) { diff --git a/src/megameklab/com/util/UnitUtil.java b/src/megameklab/com/util/UnitUtil.java index 2bc470d1c58..6a9fe6659cf 100644 --- a/src/megameklab/com/util/UnitUtil.java +++ b/src/megameklab/com/util/UnitUtil.java @@ -1131,10 +1131,7 @@ public static boolean isPrintableEquipment(EquipmentType eq, boolean isMech) { || eq.hasFlag(MiscType.F_HARJEL) || eq.hasFlag(MiscType.F_MASS) || eq.hasFlag(MiscType.F_CHASSIS_MODIFICATION) - || eq.hasFlag(MiscType.F_MASH_EXTRA) - || eq.hasFlag(MiscType.F_CHASSIS_MODIFICATION) - || eq.hasFlag(MiscType.F_DRONE_EXTRA) || eq - .hasFlag(MiscType.F_SPONSON_TURRET)) + || eq.hasFlag(MiscType.F_SPONSON_TURRET)) || eq.hasFlag(MiscType.F_EXTERNAL_STORES_HARDPOINT) || eq.hasFlag(MiscType.F_BASIC_FIRECONTROL) || eq.hasFlag(MiscType.F_ADVANCED_FIRECONTROL)) { From 08a5d8c4a36a4972de792e2d65181d56e244e9ce Mon Sep 17 00:00:00 2001 From: Carl Spain Date: Tue, 28 Apr 2020 16:17:47 -0500 Subject: [PATCH 2/7] Include equipment size in mount name and description. --- src/megameklab/com/printing/StandardInventoryEntry.java | 4 ++-- src/megameklab/com/util/RecordSheetEquipmentLine.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/megameklab/com/printing/StandardInventoryEntry.java b/src/megameklab/com/printing/StandardInventoryEntry.java index ec05a5e3459..d778bc126f3 100644 --- a/src/megameklab/com/printing/StandardInventoryEntry.java +++ b/src/megameklab/com/printing/StandardInventoryEntry.java @@ -157,9 +157,9 @@ private String[][] atmAV() { } private String formatName() { - String eqName = mount.getType().getName(); + String eqName = mount.getName(); if (eqName.length() > 20) { - eqName = mount.getType().getShortName(); + eqName = mount.getShortName(); } // Remove trailing IS or Clan tag in brackets or parentheses, including possible leading space StringBuilder name = new StringBuilder(eqName.replaceAll(" ?[\\[(](Clan|IS)[])]", "")); diff --git a/src/megameklab/com/util/RecordSheetEquipmentLine.java b/src/megameklab/com/util/RecordSheetEquipmentLine.java index 0eb914141ec..e655033531a 100644 --- a/src/megameklab/com/util/RecordSheetEquipmentLine.java +++ b/src/megameklab/com/util/RecordSheetEquipmentLine.java @@ -48,7 +48,7 @@ public RecordSheetEquipmentLine(Mounted m) { rear = m.isRearMounted(); turret = m.isMechTurretMounted(); if (eqInfo.name.length() > 20) { - eqInfo.name = eqInfo.name.replace(m.getType().getName(), m.getType().getShortName()); + eqInfo.name = eqInfo.name.replace(m.getName(), m.getShortName()); } } From e6de0306ade621b643a961f5dd895dff5e783d46 Mon Sep 17 00:00:00 2001 From: Carl Spain Date: Wed, 29 Apr 2020 00:00:21 -0500 Subject: [PATCH 3/7] Account for variable sized-equipment in TRO summaries. --- data/mechfiles/UnitVerifierOptions.xml | 77 -------------------------- 1 file changed, 77 deletions(-) delete mode 100644 data/mechfiles/UnitVerifierOptions.xml diff --git a/data/mechfiles/UnitVerifierOptions.xml b/data/mechfiles/UnitVerifierOptions.xml deleted file mode 100644 index 3a4513fad74..00000000000 --- a/data/mechfiles/UnitVerifierOptions.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - HALFTON - HALFTON - HALFTON - HALFTON - TON - TON - HALFTON - - - true - - - 0 - - - false - - - 1.0 - - - Claw (THB), CC Sensors, Command Console, Dual Cockpit - - - false - - - 0 - - - 70 - - - true - - - true - - - true - - - - - HALFTON - HALFTON - HALFTON - HALFTON - TON - TON - HALFTON - HALFTON - HALFTON - - - true - - - 0 - - - false - - - 1.0 - - - - - false - - - From 5a6c5e91cf4bb2dc92749959bb4247929fa02f35 Mon Sep 17 00:00:00 2001 From: Carl Spain Date: Wed, 29 Apr 2020 16:11:20 -0500 Subject: [PATCH 4/7] Added a size column to the CriticalTableModel --- src/megameklab/com/util/CriticalTableModel.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/megameklab/com/util/CriticalTableModel.java b/src/megameklab/com/util/CriticalTableModel.java index 0a9824e0f91..d6bf20260b2 100644 --- a/src/megameklab/com/util/CriticalTableModel.java +++ b/src/megameklab/com/util/CriticalTableModel.java @@ -17,6 +17,7 @@ package megameklab.com.util; import java.awt.Component; +import java.text.NumberFormat; import java.util.Vector; import javax.swing.JLabel; @@ -53,7 +54,8 @@ public class CriticalTableModel extends AbstractTableModel { public final static int CRITS = 2; public final static int HEAT = 3; public final static int LOCATION = 4; - public final static int EQUIPMENT = 5; + public final static int SIZE = 5; + public final static int EQUIPMENT = 6; public final static int EQUIPMENTTABLE = 0; public final static int WEAPONTABLE = 1; @@ -77,9 +79,9 @@ public CriticalTableModel(Entity unit, int tableType) { if (tableType == WEAPONTABLE) { longValues = new String[] { "XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX", - "XXXXXXXXX", "XXX" }; + "XXXXXXXXX", "XXX", "XXXX" }; columnNames = new String[] { "Name", "Tons", "Slots", "Heat", - "Loc" }; + "Loc", "Size" }; } if (kgStandard) { @@ -201,6 +203,12 @@ public Object getValueAt(int row, int col) { } else { return unit.getLocationAbbr(crit.getLocation()); } + case SIZE: + if (crit.getType().isVariableTonnage()) { + return NumberFormat.getInstance().format(crit.getSize()); + } else { + return null; + } } return ""; } From 091a6a0ec7fc8abadd88c8d8defbf7fd168e4006 Mon Sep 17 00:00:00 2001 From: Carl Spain Date: Wed, 29 Apr 2020 16:45:05 -0500 Subject: [PATCH 5/7] Allow editing of size column on equipment tab. --- .../com/ui/Aero/tabs/EquipmentTab.java | 8 +++++ .../com/ui/BattleArmor/tabs/EquipmentTab.java | 8 +++++ .../com/ui/Mek/tabs/EquipmentTab.java | 8 +++++ .../com/ui/Vehicle/tabs/EquipmentTab.java | 8 +++++ src/megameklab/com/ui/tabs/EquipmentTab.java | 8 +++++ .../com/util/CriticalTableModel.java | 32 +++++++++++++------ 6 files changed, 62 insertions(+), 10 deletions(-) diff --git a/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java b/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java index 7f5debd0a09..298163d5688 100644 --- a/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java @@ -169,6 +169,14 @@ public EquipmentTab(EntitySource eSource) { column.setCellRenderer(equipmentList.getRenderer()); } + equipmentList.addTableModelListener(ev -> { + if (refresh != null) { + refresh.refreshStatus(); + refresh.refreshPreview(); + refresh.refreshBuild(); + refresh.refreshSummary(); + } + }); equipmentScroll.setViewportView(equipmentTable); equipmentScroll.setMinimumSize(new java.awt.Dimension(300, 200)); equipmentScroll.setPreferredSize(new java.awt.Dimension(300, 200)); diff --git a/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java b/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java index 08906f03b54..bc2b3ce1220 100644 --- a/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java @@ -160,6 +160,14 @@ public EquipmentTab(EntitySource eSource) { column.setCellRenderer(equipmentList.getRenderer()); } + equipmentList.addTableModelListener(ev -> { + if (refresh != null) { + refresh.refreshStatus(); + refresh.refreshPreview(); + refresh.refreshBuild(); + refresh.refreshSummary(); + } + }); equipmentScroll.setViewportView(equipmentTable); equipmentScroll.setMinimumSize(new java.awt.Dimension(300, 200)); equipmentScroll.setPreferredSize(new java.awt.Dimension(300, 200)); diff --git a/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java b/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java index 903d01827a4..4d65a35886d 100644 --- a/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java @@ -162,6 +162,14 @@ public EquipmentTab(EntitySource eSource) { column.setCellRenderer(equipmentList.getRenderer()); } + equipmentList.addTableModelListener(ev -> { + if (refresh != null) { + refresh.refreshStatus(); + refresh.refreshPreview(); + refresh.refreshBuild(); + refresh.refreshSummary(); + } + }); equipmentScroll.setViewportView(equipmentTable); equipmentScroll.setMinimumSize(new java.awt.Dimension(300, 200)); equipmentScroll.setPreferredSize(new java.awt.Dimension(300, 200)); diff --git a/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java b/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java index f121c3a1e5d..e86997ebb22 100644 --- a/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java @@ -162,6 +162,14 @@ public EquipmentTab(EntitySource eSource) { column.setCellRenderer(equipmentList.getRenderer()); } + equipmentList.addTableModelListener(ev -> { + if (refresh != null) { + refresh.refreshStatus(); + refresh.refreshPreview(); + refresh.refreshBuild(); + refresh.refreshSummary(); + } + }); equipmentScroll.setViewportView(equipmentTable); equipmentScroll.setMinimumSize(new java.awt.Dimension(300, 200)); equipmentScroll.setPreferredSize(new java.awt.Dimension(300, 200)); diff --git a/src/megameklab/com/ui/tabs/EquipmentTab.java b/src/megameklab/com/ui/tabs/EquipmentTab.java index f71624b0b6e..13cc146bd93 100644 --- a/src/megameklab/com/ui/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/tabs/EquipmentTab.java @@ -199,6 +199,14 @@ public EquipmentTab(EntitySource eSource) { column.setCellRenderer(equipmentList.getRenderer()); } + equipmentList.addTableModelListener(ev -> { + if (refresh != null) { + refresh.refreshStatus(); + refresh.refreshPreview(); + refresh.refreshBuild(); + refresh.refreshSummary(); + } + }); JScrollPane equipmentScroll = new JScrollPane(); equipmentScroll.setViewportView(equipmentTable); equipmentScroll.setMinimumSize(new java.awt.Dimension(300, 200)); diff --git a/src/megameklab/com/util/CriticalTableModel.java b/src/megameklab/com/util/CriticalTableModel.java index d6bf20260b2..76011e5b2f1 100644 --- a/src/megameklab/com/util/CriticalTableModel.java +++ b/src/megameklab/com/util/CriticalTableModel.java @@ -1,5 +1,5 @@ /* - * MegaMekLab - Copyright (C) 2008 + * MegaMekLab - Copyright (C) 2008-2020 The MegaMek Team * * Original author - jtighe (torren@users.sourceforge.net) * @@ -18,6 +18,8 @@ import java.awt.Component; import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.List; import java.util.Vector; import javax.swing.JLabel; @@ -46,7 +48,7 @@ public class CriticalTableModel extends AbstractTableModel { private static final long serialVersionUID = 7615555055651822051L; private Mounted[] sortedEquipment = {}; - public Vector crits = new Vector(); + public List crits = new ArrayList<>(); public Entity unit; public final static int NAME = 0; @@ -61,8 +63,8 @@ public class CriticalTableModel extends AbstractTableModel { public final static int WEAPONTABLE = 1; public final static int BUILDTABLE = 2; - private int tableType = EQUIPMENTTABLE; - private boolean kgStandard = false; + private int tableType; + private boolean kgStandard; private String[] columnNames = { "Name", "Tons", "Crits"}; @@ -135,7 +137,8 @@ public String getColumnName(int col) { @Override public boolean isCellEditable(int row, int col) { - return false; + return (col == SIZE) && (row >= 0) && (row < sortedEquipment.length) + && sortedEquipment[row].getType().isVariableTonnage(); } @Override @@ -193,7 +196,7 @@ public Object getValueAt(int row, int col) { return crit; case HEAT: if (crit.getType() instanceof WeaponType) { - return ((WeaponType) crit.getType()).getHeat(); + return crit.getType().getHeat(); } return 0; case LOCATION: @@ -213,6 +216,15 @@ public Object getValueAt(int row, int col) { return ""; } + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + if ((columnIndex == SIZE) && (rowIndex >= 0) && (rowIndex < getRowCount())) { + Mounted crit = sortedEquipment[rowIndex]; + crit.setSize(Double.parseDouble(aValue.toString())); + fireTableDataChanged(); + } + } + public CriticalTableModel.Renderer getRenderer() { return new Renderer(); } @@ -299,7 +311,7 @@ public void addCrit(Mounted mount) { } public void removeCrit(int location) { - crits.removeElementAt(location); + crits.remove(location); } /** @@ -310,13 +322,13 @@ public void removeCrit(int location) { public void removeCrits(int[] locs) { Vector mounts = new Vector<>(locs.length); for (Integer l : locs){ - mounts.add(crits.elementAt(l)); + mounts.add(crits.get(l)); } crits.removeAll(mounts); } public void removeAllCrits() { - crits.removeAllElements(); + crits.clear(); } public void removeMounted(int row) { @@ -324,7 +336,7 @@ public void removeMounted(int row) { (Mounted) getValueAt(row, CriticalTableModel.EQUIPMENT)); } - public Vector getCrits() { + public List getCrits() { return crits; } From fdfc9e652c089490aa7742f095b8790c03db54e8 Mon Sep 17 00:00:00 2001 From: Carl Spain Date: Wed, 29 Apr 2020 20:12:27 -0500 Subject: [PATCH 6/7] Use a spinner to edit the size column on the equipment tab. --- .../com/ui/Aero/tabs/EquipmentTab.java | 5 +- .../com/ui/BattleArmor/tabs/EquipmentTab.java | 4 +- .../com/ui/Mek/tabs/EquipmentTab.java | 4 +- .../com/ui/Vehicle/tabs/EquipmentTab.java | 4 +- src/megameklab/com/ui/tabs/EquipmentTab.java | 6 +- .../com/util/CriticalTableModel.java | 56 +++++++++++++++---- 6 files changed, 62 insertions(+), 17 deletions(-) diff --git a/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java b/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java index 298163d5688..fdbbc67d320 100644 --- a/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/Aero/tabs/EquipmentTab.java @@ -160,11 +160,14 @@ public EquipmentTab(EntitySource eSource) { equipmentTable.setShowGrid(false); equipmentTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); equipmentTable.setDoubleBuffered(true); + equipmentTable.setRowHeight((int) (equipmentTable.getRowHeight() * 1.2)); TableColumn column = null; for (int i = 0; i < equipmentList.getColumnCount(); i++) { column = equipmentTable.getColumnModel().getColumn(i); - if(i == 0) { + if (i == CriticalTableModel.NAME) { column.setPreferredWidth(200); + } else if (i == CriticalTableModel.SIZE) { + column.setCellEditor(equipmentList.new SpinnerCellEditor()); } column.setCellRenderer(equipmentList.getRenderer()); diff --git a/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java b/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java index bc2b3ce1220..1949fc618f7 100644 --- a/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/BattleArmor/tabs/EquipmentTab.java @@ -154,8 +154,10 @@ public EquipmentTab(EntitySource eSource) { TableColumn column = null; for (int i = 0; i < equipmentList.getColumnCount(); i++) { column = equipmentTable.getColumnModel().getColumn(i); - if(i == 0) { + if (i == CriticalTableModel.NAME) { column.setPreferredWidth(200); + } else if (i == CriticalTableModel.SIZE) { + column.setCellEditor(equipmentList.new SpinnerCellEditor()); } column.setCellRenderer(equipmentList.getRenderer()); diff --git a/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java b/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java index 4d65a35886d..fe9de545a8d 100644 --- a/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/Mek/tabs/EquipmentTab.java @@ -156,8 +156,10 @@ public EquipmentTab(EntitySource eSource) { TableColumn column = null; for (int i = 0; i < equipmentList.getColumnCount(); i++) { column = equipmentTable.getColumnModel().getColumn(i); - if(i == 0) { + if (i == CriticalTableModel.NAME) { column.setPreferredWidth(200); + } else if (i == CriticalTableModel.SIZE) { + column.setCellEditor(equipmentList.new SpinnerCellEditor()); } column.setCellRenderer(equipmentList.getRenderer()); diff --git a/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java b/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java index e86997ebb22..411d8b0ee9f 100644 --- a/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/Vehicle/tabs/EquipmentTab.java @@ -156,8 +156,10 @@ public EquipmentTab(EntitySource eSource) { TableColumn column = null; for (int i = 0; i < equipmentList.getColumnCount(); i++) { column = equipmentTable.getColumnModel().getColumn(i); - if(i == 0) { + if (i == CriticalTableModel.NAME) { column.setPreferredWidth(200); + } else if (i == CriticalTableModel.SIZE) { + column.setCellEditor(equipmentList.new SpinnerCellEditor()); } column.setCellRenderer(equipmentList.getRenderer()); diff --git a/src/megameklab/com/ui/tabs/EquipmentTab.java b/src/megameklab/com/ui/tabs/EquipmentTab.java index 13cc146bd93..d0e6a6312c0 100644 --- a/src/megameklab/com/ui/tabs/EquipmentTab.java +++ b/src/megameklab/com/ui/tabs/EquipmentTab.java @@ -189,12 +189,14 @@ public EquipmentTab(EntitySource eSource) { equipmentTable.setIntercellSpacing(new Dimension(0, 0)); equipmentTable.setShowGrid(false); equipmentTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - equipmentTable.setDoubleBuffered(true); + equipmentTable.setRowHeight((int) (equipmentTable.getRowHeight() * 1.2)); TableColumn column; for (int i = 0; i < equipmentList.getColumnCount(); i++) { column = equipmentTable.getColumnModel().getColumn(i); - if(i == 0) { + if (i == CriticalTableModel.NAME) { column.setPreferredWidth(200); + } else if (i == CriticalTableModel.SIZE) { + column.setCellEditor(equipmentList.new SpinnerCellEditor()); } column.setCellRenderer(equipmentList.getRenderer()); diff --git a/src/megameklab/com/util/CriticalTableModel.java b/src/megameklab/com/util/CriticalTableModel.java index 76011e5b2f1..44d4f1baeee 100644 --- a/src/megameklab/com/util/CriticalTableModel.java +++ b/src/megameklab/com/util/CriticalTableModel.java @@ -22,23 +22,19 @@ import java.util.List; import java.util.Vector; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.SwingConstants; +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellEditor; import javax.swing.table.TableColumn; -import megamek.common.AmmoType; -import megamek.common.BattleArmor; -import megamek.common.Entity; -import megamek.common.Mech; -import megamek.common.MiscType; -import megamek.common.Mounted; -import megamek.common.Tank; -import megamek.common.WeaponType; +import megamek.common.*; +import megamek.common.verifier.BayData; import megamek.common.verifier.TestEntity; import megamek.common.verifier.TestProtomech; +import megameklab.com.ui.tabs.TransportTab; public class CriticalTableModel extends AbstractTableModel { @@ -306,6 +302,44 @@ public Component getTableCellRendererComponent(JTable table, } } + /** + * Cell editor for the size column + */ + public class SpinnerCellEditor extends AbstractCellEditor implements TableCellEditor, ChangeListener { + + private static final long serialVersionUID = 1949617773287631727L; + + private final JSpinner spinner = new JSpinner(); + private int rowIndex = 0; + + public SpinnerCellEditor() { + spinner.addChangeListener(this); + } + + @Override + public Object getCellEditorValue() { + return spinner.getValue(); + } + + @Override + public void stateChanged(ChangeEvent e) { + setValueAt(getCellEditorValue(), rowIndex, SIZE); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, + int column) { + this.rowIndex = row; + Mounted mounted = (Mounted) getValueAt(row, EQUIPMENT); + spinner.removeChangeListener(this); + spinner.setModel(new SpinnerNumberModel(Double.valueOf(mounted.getSize()), + mounted.getType().variableStepSize(), mounted.getType().variableMaxSize(), + mounted.getType().variableStepSize())); + spinner.addChangeListener(this); + return spinner; + } + } + public void addCrit(Mounted mount) { crits.add(mount); } From bd9d30ed15df57ee3376d6f87a13b5e11cdbcf88 Mon Sep 17 00:00:00 2001 From: Carl Spain Date: Thu, 7 May 2020 16:08:04 -0500 Subject: [PATCH 7/7] Restore accidental deletion --- data/mechfiles/UnitVerifierOptions.xml | 77 ++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 data/mechfiles/UnitVerifierOptions.xml diff --git a/data/mechfiles/UnitVerifierOptions.xml b/data/mechfiles/UnitVerifierOptions.xml new file mode 100644 index 00000000000..3a4513fad74 --- /dev/null +++ b/data/mechfiles/UnitVerifierOptions.xml @@ -0,0 +1,77 @@ + + + + + HALFTON + HALFTON + HALFTON + HALFTON + TON + TON + HALFTON + + + true + + + 0 + + + false + + + 1.0 + + + Claw (THB), CC Sensors, Command Console, Dual Cockpit + + + false + + + 0 + + + 70 + + + true + + + true + + + true + + + + + HALFTON + HALFTON + HALFTON + HALFTON + TON + TON + HALFTON + HALFTON + HALFTON + + + true + + + 0 + + + false + + + 1.0 + + + + + false + + +