package fr.lyrgard.hexScape.gui.desktop.view.game.leftPanel;
import java.util.Collection;
import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import fr.lyrgard.hexScape.model.card.CardInstance;
import fr.lyrgard.hexScape.model.marker.HiddenMarkerDefinition;
import fr.lyrgard.hexScape.model.marker.MarkerDefinition;
import fr.lyrgard.hexScape.model.marker.RevealableMarkerDefinition;
import fr.lyrgard.hexScape.service.MarkerService;
import fr.lyrgard.hexScape.gui.desktop.action.AddMarkerToCardAction;
import fr.lyrgard.hexScape.gui.desktop.action.AddStackableMarkerToCardAction;
import fr.lyrgard.hexScape.gui.desktop.action.RemoveAllMarkersOfTypeForPlayerdAction;
public class ArmyCardMenu extends JPopupMenu {
private static final long serialVersionUID = 7054882230582407223L;
public ArmyCardMenu(final CardInstance card) {
Collection<MarkerDefinition> markerTypes = MarkerService.getInstance().getMarkersListForCard();
for (final MarkerDefinition markerType : markerTypes) {
switch(markerType.getType()) {
case STACKABLE:
final ImageIcon icon = new ImageIcon(markerType.getImage().getAbsolutePath());
JMenu addStackableMarkerMenu = new JMenu("add/remove " + markerType.getName() + " to this card");
addStackableMarkerMenu.setIcon(icon);
for (int i = 1; i <= 10; i++) {
JMenuItem numberItem = new JMenuItem(new AddStackableMarkerToCardAction(markerType, card, i));
addStackableMarkerMenu.add(numberItem);
}
for (int i = -1; i >= -10; i--) {
JMenuItem numberItem = new JMenuItem(new AddStackableMarkerToCardAction(markerType, card, i));
addStackableMarkerMenu.add(numberItem);
}
add(addStackableMarkerMenu);
break;
case REVEALABLE:
add(new JMenuItem(new AddMarkerToCardAction(markerType, ((RevealableMarkerDefinition)markerType).getHiddenMarkerDefinition(), card)));
break;
case NORMAL:
add(new JMenuItem(new AddMarkerToCardAction(markerType, null, card)));
break;
case HIDDEN:
break;
}
}
for (final MarkerDefinition markerType : markerTypes) {
if (markerType instanceof HiddenMarkerDefinition) {
JMenuItem removeMarkersItem = new JMenuItem(new RemoveAllMarkersOfTypeForPlayerdAction(markerType));
add(removeMarkersItem);
}
}
}
}