package nl.tudelft.bw4t.client.gui.menu;
import java.awt.Color;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import nl.tudelft.bw4t.client.controller.ClientMapController;
import nl.tudelft.bw4t.client.gui.BW4TClientGUI;
import nl.tudelft.bw4t.client.gui.listeners.MessageSenderActionListener;
import nl.tudelft.bw4t.client.gui.listeners.PutdownActionListener;
import nl.tudelft.bw4t.client.message.BW4TMessage;
import nl.tudelft.bw4t.client.message.MessageType;
import nl.tudelft.bw4t.map.ColorTranslator;
import nl.tudelft.bw4t.map.Zone;
import nl.tudelft.bw4t.map.view.ViewBlock;
import nl.tudelft.bw4t.map.view.ViewEntity;
public class BlockadeMenu {
/**
* Builds a pop up menu for when the player clicked on a hallway
*
* @param gui
* gui on which the popUpMenu will be build
*/
public static void buildPopUpMenuForBlockade(BW4TClientGUI gui) {
gui.getjPopupMenu().removeAll();
ClientMapController cmc = gui.getController().getMapController();
ViewBlock holdingID = cmc.getTheBot().getTopBlock();
Color entityColor = cmc.getTheBot().getColor();
JMenuItem menuItem = new JMenuItem();
if (holdingID != null) {
menuItem = new JMenuItem("Put down box");
menuItem.addActionListener(new PutdownActionListener(gui
.getController()));
gui.getjPopupMenu().add(menuItem);
}
buildTellMenu(gui, cmc, holdingID, entityColor);
}
/**
*
* @param gui
* gui on which the popUpMenu will be build
* @param cmc
* ClientMapController used to get all rooms.
* @param holdingID
* ID of the currently holding block (if any).
* @param entityColor
* Color of the robot.
*/
public static void buildTellMenu(BW4TClientGUI gui,
ClientMapController cmc, ViewBlock holdingID, Color entityColor) {
JMenuItem menuItem;
BasicMenuOperations.addSectionTitleToPopupMenu("Tell: ",
gui.getjPopupMenu());
for (Zone roomInfo : cmc.getRooms()) {
BasicMenuOperations.addMenuItemToPopupMenu(new BW4TMessage(
MessageType.AMWAITINGOUTSIDEROOM, roomInfo.getName(), null,
null), gui);
}
tellMenuHolding(gui, cmc, holdingID, entityColor);
gui.getjPopupMenu().addSeparator();
menuItem = new JMenuItem("Close menu");
gui.getjPopupMenu().add(menuItem);
}
/**
*
* @param gui
* gui on which the popUpMenu will be build
* @param cmc
* ClientMapController used to get all rooms.
* @param holdingID
* ID of the currently holding block (if any).
* @param entityColor
* Color of the robot.
*/
private static void tellMenuHolding(BW4TClientGUI gui,
ClientMapController cmc, ViewBlock holdingID, Color entityColor) {
JMenuItem menuItem;
if (holdingID != null) {
ViewEntity ourEntity = gui.getController().getMapController()
.getTheBot();
String colorAsString = BasicMenuOperations.getColor(
ColorTranslator.translate2ColorString(entityColor),
ourEntity);
BasicMenuOperations.addMenuItemToPopupMenu(new BW4TMessage(
MessageType.HASCOLOR, null, colorAsString, null), gui);
JMenu submenu = BasicMenuOperations.addSubMenuToPopupMenu(
"I have a " + colorAsString + " block from ",
gui.getjPopupMenu());
for (Zone roomInfo : cmc.getRooms()) {
menuItem = new JMenuItem(roomInfo.getName());
menuItem.addActionListener(new MessageSenderActionListener(
new BW4TMessage(MessageType.HASCOLOR, roomInfo
.getName(), colorAsString, null), gui
.getController()));
submenu.add(menuItem);
}
}
}
}