package fr.lyrgard.hexScape.gui.desktop.view.game; import java.awt.EventQueue; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JPanel; import com.google.common.eventbus.Subscribe; import fr.lyrgard.hexScape.bus.GuiMessageBus; import fr.lyrgard.hexScape.gui.desktop.action.LookAtMapAction; import fr.lyrgard.hexScape.gui.desktop.action.LookFreelyAction; import fr.lyrgard.hexScape.gui.desktop.action.LookFromPieceAction; import fr.lyrgard.hexScape.message.LookingFreelyMessage; import fr.lyrgard.hexScape.message.LookingFromAboveMessage; import fr.lyrgard.hexScape.message.LookingFromPieceMessage; import fr.lyrgard.hexScape.message.PieceRemovedMessage; import fr.lyrgard.hexScape.message.PieceSelectedMessage; import fr.lyrgard.hexScape.message.PieceUnselectedMessage; import fr.lyrgard.hexScape.model.CurrentUserInfo; public class ActionMenu extends JPanel { private static final long serialVersionUID = -3836798307597735579L; //final private JButton placePiece = new JButton(); final private JButton lookAtPointOfView = new JButton(); final private JButton lookAtMap = new JButton(new LookAtMapAction()); final private JButton lookFreely = new JButton(new LookFreelyAction()); private String selectedPieceId; public ActionMenu() { setLayout(new FlowLayout()); lookAtPointOfView.setVisible(false); lookAtMap.setVisible(false); lookFreely.setVisible(true); add(lookAtPointOfView); add(lookAtMap); add(lookFreely); GuiMessageBus.register(this); } // @Subscribe public void onCardSelected(CardSelectedMessage message) { // //final CardInstance card = message.getCard(); // // EventQueue.invokeLater(new Runnable() { // // public void run() { // //lookAtPointOfView.setAction(new AddPieceAction(pieceModelId, card)); // lookAtPointOfView.setVisible(true); // } // }); // } @Subscribe public void onPieceSelected(PieceSelectedMessage message) { final String pieceId = message.getPieceId(); String playerId = message.getPlayerId(); selectedPieceId = pieceId; if (playerId != null && playerId.equals(CurrentUserInfo.getInstance().getPlayerId())) { EventQueue.invokeLater(new Runnable() { public void run() { lookAtPointOfView.setAction(new LookFromPieceAction(pieceId)); lookAtPointOfView.setVisible(true); } }); } } @Subscribe public void onPieceUnselected(PieceUnselectedMessage message) { String playerId = message.getPlayerId(); selectedPieceId = null; if (playerId != null && playerId.equals(CurrentUserInfo.getInstance().getPlayerId())) { EventQueue.invokeLater(new Runnable() { public void run() { lookAtPointOfView.setVisible(false); } }); } } @Subscribe public void onPieceRemoved(PieceRemovedMessage message) { String playerId = message.getPlayerId(); selectedPieceId = null; if (playerId != null && playerId.equals(CurrentUserInfo.getInstance().getPlayerId())) { EventQueue.invokeLater(new Runnable() { public void run() { lookAtPointOfView.setVisible(false); } }); } } @Subscribe public void onLookingFromPiece(LookingFromPieceMessage message) { String playerId = message.getPlayerId(); String pieceId = message.getPieceId(); selectedPieceId = pieceId; if (playerId != null && playerId.equals(CurrentUserInfo.getInstance().getPlayerId())) { EventQueue.invokeLater(new Runnable() { public void run() { lookAtPointOfView.setVisible(false); lookAtMap.setVisible(true); lookFreely.setVisible(true); } }); } } @Subscribe public void onLookingFromAbove(LookingFromAboveMessage message) { String playerId = message.getPlayerId(); if (playerId != null && playerId.equals(CurrentUserInfo.getInstance().getPlayerId())) { EventQueue.invokeLater(new Runnable() { public void run() { if (selectedPieceId != null) { new LookFromPieceAction(selectedPieceId); lookAtPointOfView.setVisible(true); } lookAtMap.setVisible(false); lookFreely.setVisible(true); } }); } } @Subscribe public void onLookingFreely(LookingFreelyMessage message) { String playerId = message.getPlayerId(); if (playerId != null && playerId.equals(CurrentUserInfo.getInstance().getPlayerId())) { EventQueue.invokeLater(new Runnable() { public void run() { if (selectedPieceId != null) { new LookFromPieceAction(selectedPieceId); lookAtPointOfView.setVisible(true); } lookAtMap.setVisible(true); lookFreely.setVisible(false); } }); } } }