Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions code/src/java/pcgen/gui2/tabs/EquipInfoTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -58,6 +59,7 @@
import javax.swing.table.TableModel;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import pcgen.core.Equipment;
import pcgen.facade.core.CharacterFacade;
import pcgen.facade.core.EquipmentFacade;
import pcgen.facade.core.EquipmentSetFacade;
Expand Down Expand Up @@ -1009,6 +1011,8 @@ public void showPopup(MouseEvent e)
popupMenu.add(new MoveEquipDownMenuItem(character, targets));
popupMenu.addSeparator();
popupMenu.add(new SortEquipMenuItem(character, targets));
popupMenu.addSeparator();
popupMenu.add(new EditChargesMenuItem(character, targets));
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}

Expand Down Expand Up @@ -1132,4 +1136,45 @@ public void actionPerformed(ActionEvent e)

}

/**
* Menu item for editing the number of charges on an item.
*/
private static class EditChargesMenuItem extends JMenuItem implements ActionListener
{
private final CharacterFacade character;
private final List<? extends EquipNode> targets;

EditChargesMenuItem(CharacterFacade character, List<? extends EquipNode> targets)
{
super(LanguageBundle.getString("in_igModifyCharges")); //$NON-NLS-1$
this.character = character;
this.targets = targets;
setIcon(Icons.Edit16.getImageIcon());
// Set enabled only if there are items with charges
boolean hasItemWithCharges = false;
for (EquipNode node : targets)
{
EquipmentFacade equipment = node.getEquipment();
if (equipment instanceof Equipment && ((Equipment) equipment).getMaxCharges() > 0)
{
hasItemWithCharges = true;
break;
}
}
setEnabled(hasItemWithCharges);

addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e)
{
List<EquipmentFacade> equipmentList = targets.stream()
.map(EquipNode::getEquipment)
.filter(Objects::nonNull)
.collect(Collectors.toList());

character.modifyCharges(equipmentList);
}
}
}
13 changes: 12 additions & 1 deletion code/src/java/pcgen/gui2/tabs/PurchaseInfoTab.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
import javax.swing.tree.DefaultMutableTreeNode;

import pcgen.cdom.base.Constants;
import pcgen.core.Equipment;
import pcgen.facade.core.CharacterFacade;
import pcgen.facade.core.EquipmentFacade;
import pcgen.facade.core.EquipmentListFacade;
Expand Down Expand Up @@ -1553,7 +1554,17 @@ private static class ModifyChargesMenuItem extends JMenuItem implements ActionLi
super(LanguageBundle.getString("in_igModifyCharges")); //$NON-NLS-1$
this.character = character;
this.targets = targets;

// Set enabled only if there are items with charges
boolean hasItemWithCharges = false;
for (EquipmentFacade equipment : targets)
{
if (equipment instanceof Equipment && ((Equipment) equipment).getMaxCharges() > 0)
{
hasItemWithCharges = true;
break;
}
}
setEnabled(hasItemWithCharges);
addActionListener(this);
}

Expand Down