package games.strategy.triplea.ui.menubar; import java.awt.event.KeyEvent; import java.util.Optional; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JMenu; import games.strategy.engine.framework.IGame; import games.strategy.engine.framework.networkMaintenance.BanPlayerAction; import games.strategy.engine.framework.networkMaintenance.BootPlayerAction; import games.strategy.engine.framework.networkMaintenance.MutePlayerAction; import games.strategy.engine.framework.networkMaintenance.SetPasswordAction; import games.strategy.engine.framework.startup.login.ClientLoginValidator; import games.strategy.engine.framework.startup.ui.InGameLobbyWatcherWrapper; import games.strategy.net.IServerMessenger; import games.strategy.triplea.ui.PlayersPanel; import games.strategy.triplea.ui.TripleAFrame; import games.strategy.ui.SwingAction; public class NetworkMenu { private final IGame game; private final TripleAFrame frame; public NetworkMenu(final TripleAMenuBar menuBar, final Optional<InGameLobbyWatcherWrapper> watcher, final TripleAFrame frame) { this.frame = frame; game = frame.getGame(); final JMenu menuNetwork = new JMenu("Network"); menuNetwork.setMnemonic(KeyEvent.VK_N); addBootPlayer(menuNetwork); addBanPlayer(menuNetwork); addMutePlayer(menuNetwork); addSetGamePassword(menuNetwork, watcher); addShowPlayers(menuNetwork); menuBar.add(menuNetwork); } private void addBootPlayer(final JMenu parentMenu) { if (!game.getMessenger().isServer()) { return; } final IServerMessenger messenger = (IServerMessenger) game.getMessenger(); final Action boot = new BootPlayerAction(parentMenu, messenger); parentMenu.add(boot); } private void addBanPlayer(final JMenu parentMenu) { if (!game.getMessenger().isServer()) { return; } final IServerMessenger messenger = (IServerMessenger) game.getMessenger(); final Action ban = new BanPlayerAction(parentMenu, messenger); parentMenu.add(ban); } private void addMutePlayer(final JMenu parentMenu) { if (!game.getMessenger().isServer()) { return; } final IServerMessenger messenger = (IServerMessenger) game.getMessenger(); final Action mute = new MutePlayerAction(parentMenu, messenger); parentMenu.add(mute); } private void addSetGamePassword(final JMenu parentMenu, final Optional<InGameLobbyWatcherWrapper> watcher) { if (!watcher.isPresent()) { return; } final IServerMessenger messenger = (IServerMessenger) game.getMessenger(); parentMenu .add(new SetPasswordAction(parentMenu, watcher.get(), (ClientLoginValidator) messenger.getLoginValidator())); } private void addShowPlayers(final JMenu menuGame) { if (!game.getData().getProperties().getEditableProperties().isEmpty()) { final AbstractAction optionsAction = SwingAction.of("Show Who is Who", e -> PlayersPanel.showPlayers(game, frame)); menuGame.add(optionsAction); } } }