Skip to content

Commit 354e2f0

Browse files
authored
Added logic to allow charges to be edited from the Inventory>Equipment menu. Also added logic to disable the EditCharges menu item for items that lack charges in both the Purchase and Equipment menus. (#7312)
1 parent e20396f commit 354e2f0

2 files changed

Lines changed: 57 additions & 1 deletion

File tree

code/src/java/pcgen/gui2/tabs/EquipInfoTab.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.io.IOException;
3131
import java.util.Arrays;
3232
import java.util.List;
33+
import java.util.Objects;
3334
import java.util.logging.Level;
3435
import java.util.logging.Logger;
3536
import java.util.stream.Collectors;
@@ -58,6 +59,7 @@
5859
import javax.swing.table.TableModel;
5960
import org.apache.commons.lang3.ArrayUtils;
6061
import org.apache.commons.lang3.StringUtils;
62+
import pcgen.core.Equipment;
6163
import pcgen.facade.core.CharacterFacade;
6264
import pcgen.facade.core.EquipmentFacade;
6365
import pcgen.facade.core.EquipmentSetFacade;
@@ -1009,6 +1011,8 @@ public void showPopup(MouseEvent e)
10091011
popupMenu.add(new MoveEquipDownMenuItem(character, targets));
10101012
popupMenu.addSeparator();
10111013
popupMenu.add(new SortEquipMenuItem(character, targets));
1014+
popupMenu.addSeparator();
1015+
popupMenu.add(new EditChargesMenuItem(character, targets));
10121016
popupMenu.show(e.getComponent(), e.getX(), e.getY());
10131017
}
10141018

@@ -1132,4 +1136,45 @@ public void actionPerformed(ActionEvent e)
11321136

11331137
}
11341138

1139+
/**
1140+
* Menu item for editing the number of charges on an item.
1141+
*/
1142+
private static class EditChargesMenuItem extends JMenuItem implements ActionListener
1143+
{
1144+
private final CharacterFacade character;
1145+
private final List<? extends EquipNode> targets;
1146+
1147+
EditChargesMenuItem(CharacterFacade character, List<? extends EquipNode> targets)
1148+
{
1149+
super(LanguageBundle.getString("in_igModifyCharges")); //$NON-NLS-1$
1150+
this.character = character;
1151+
this.targets = targets;
1152+
setIcon(Icons.Edit16.getImageIcon());
1153+
// Set enabled only if there are items with charges
1154+
boolean hasItemWithCharges = false;
1155+
for (EquipNode node : targets)
1156+
{
1157+
EquipmentFacade equipment = node.getEquipment();
1158+
if (equipment instanceof Equipment && ((Equipment) equipment).getMaxCharges() > 0)
1159+
{
1160+
hasItemWithCharges = true;
1161+
break;
1162+
}
1163+
}
1164+
setEnabled(hasItemWithCharges);
1165+
1166+
addActionListener(this);
1167+
}
1168+
1169+
@Override
1170+
public void actionPerformed(ActionEvent e)
1171+
{
1172+
List<EquipmentFacade> equipmentList = targets.stream()
1173+
.map(EquipNode::getEquipment)
1174+
.filter(Objects::nonNull)
1175+
.collect(Collectors.toList());
1176+
1177+
character.modifyCharges(equipmentList);
1178+
}
1179+
}
11351180
}

code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import javax.swing.tree.DefaultMutableTreeNode;
6868

6969
import pcgen.cdom.base.Constants;
70+
import pcgen.core.Equipment;
7071
import pcgen.facade.core.CharacterFacade;
7172
import pcgen.facade.core.EquipmentFacade;
7273
import pcgen.facade.core.EquipmentListFacade;
@@ -1553,7 +1554,17 @@ private static class ModifyChargesMenuItem extends JMenuItem implements ActionLi
15531554
super(LanguageBundle.getString("in_igModifyCharges")); //$NON-NLS-1$
15541555
this.character = character;
15551556
this.targets = targets;
1556-
1557+
// Set enabled only if there are items with charges
1558+
boolean hasItemWithCharges = false;
1559+
for (EquipmentFacade equipment : targets)
1560+
{
1561+
if (equipment instanceof Equipment && ((Equipment) equipment).getMaxCharges() > 0)
1562+
{
1563+
hasItemWithCharges = true;
1564+
break;
1565+
}
1566+
}
1567+
setEnabled(hasItemWithCharges);
15571568
addActionListener(this);
15581569
}
15591570

0 commit comments

Comments
 (0)