From 0bf8ed954667a11c4e7f3bd9b8653719b7e2e9a6 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 31 May 2015 02:49:41 +0000 Subject: [PATCH] Create Online menu --- .gitattributes | 1 + .../src/main/java/forge/gui/FNetOverlay.java | 12 +++-- .../src/main/java/forge/menus/ForgeMenu.java | 18 +------ .../main/java/forge/screens/home/CHomeUI.java | 7 +++ .../home/online/CSubmenuOnlineLobby.java | 14 +++-- .../forge/screens/home/online/OnlineMenu.java | 51 +++++++++++++++++++ 6 files changed, 80 insertions(+), 23 deletions(-) create mode 100644 forge-gui-desktop/src/main/java/forge/screens/home/online/OnlineMenu.java diff --git a/.gitattributes b/.gitattributes index 670f5bf180a..37e7894cc94 100644 --- a/.gitattributes +++ b/.gitattributes @@ -945,6 +945,7 @@ forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletCont forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletLoad.java -text forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java -text forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java -text +forge-gui-desktop/src/main/java/forge/screens/home/online/OnlineMenu.java -text forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java -text forge-gui-desktop/src/main/java/forge/screens/home/package-info.java -text forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java -text diff --git a/forge-gui-desktop/src/main/java/forge/gui/FNetOverlay.java b/forge-gui-desktop/src/main/java/forge/gui/FNetOverlay.java index 908309d68f5..2c6dbde8240 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/FNetOverlay.java +++ b/forge-gui-desktop/src/main/java/forge/gui/FNetOverlay.java @@ -22,6 +22,7 @@ import forge.net.IRemote; import forge.net.event.MessageEvent; import forge.properties.ForgePreferences; import forge.properties.ForgePreferences.FPref; +import forge.screens.home.online.OnlineMenu; import forge.toolbox.FLabel; import forge.toolbox.FMouseAdapter; import forge.toolbox.FScrollPane; @@ -63,6 +64,7 @@ public enum FNetOverlay { if (b0) { hasBeenShown = true; } + OnlineMenu.chatItem.setState(b0); } }; public FDialog getWindow() { @@ -125,10 +127,14 @@ public enum FNetOverlay { cmdSend.setCommand(new Runnable() { @Override public void run() { onSend.actionPerformed(null); } }); } - public void shopUp() { - showUp(null); + public void hide() { + window.setVisible(false); } - public void showUp(final String message) { + + public void show() { + show(null); + } + public void show(final String message) { if (!hasBeenShown) { hasBeenShown = true; loadLocation(); diff --git a/forge-gui-desktop/src/main/java/forge/menus/ForgeMenu.java b/forge-gui-desktop/src/main/java/forge/menus/ForgeMenu.java index 8dc7ad3a556..8ebe4a92043 100644 --- a/forge-gui-desktop/src/main/java/forge/menus/ForgeMenu.java +++ b/forge-gui-desktop/src/main/java/forge/menus/ForgeMenu.java @@ -15,8 +15,8 @@ import javax.swing.event.PopupMenuListener; import forge.Singletons; import forge.control.RestartUtil; -import forge.gui.FNetOverlay; import forge.gui.GuiUtils; +import forge.screens.home.online.OnlineMenu; import forge.util.ReflectionUtil; public final class ForgeMenu { @@ -74,7 +74,7 @@ public final class ForgeMenu { add(new LayoutMenu().getMenu()); add(HelpMenu.getMenu()); addSeparator(); - add(getMenuItem_ChatPanel()); + add(OnlineMenu.getMenu()); addSeparator(); add(getMenuItem_Restart()); add(getMenuItem_Exit()); @@ -123,20 +123,6 @@ public final class ForgeMenu { return false; } - private static JMenuItem getMenuItem_ChatPanel() { - final JMenuItem menuItem = new JMenuItem("Open chat panel"); - menuItem.addActionListener(getChatPanelAction()); - return menuItem; - } - - private static ActionListener getChatPanelAction() { - return new ActionListener() { - @Override public final void actionPerformed(final ActionEvent e) { - FNetOverlay.SINGLETON_INSTANCE.shopUp(); - } - }; - } - private static JMenuItem getMenuItem_Restart() { JMenuItem menuItem = new JMenuItem("Restart"); menuItem.setMnemonic(KeyEvent.VK_R); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/CHomeUI.java b/forge-gui-desktop/src/main/java/forge/screens/home/CHomeUI.java index cb95905cb82..6249fc710ab 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/CHomeUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/CHomeUI.java @@ -25,6 +25,7 @@ public enum CHomeUI implements ICDoc, IMenuProvider { /** */ SINGLETON_INSTANCE; + EDocID currentDocID; Object previousDoc = null; private LblMenuItem lblSelected = new LblMenuItem(VSubmenuConstructed.SINGLETON_INSTANCE); @@ -39,6 +40,8 @@ public enum CHomeUI implements ICDoc, IMenuProvider { lblSelected.repaintSelf(); } + currentDocID = id0; + if (previousDoc != null) { if (!previousDoc.equals(id0.getDoc().getLayoutControl())) { MenuUtil.setMenuProvider(null); @@ -57,6 +60,10 @@ public enum CHomeUI implements ICDoc, IMenuProvider { previousDoc = id0.getDoc().getLayoutControl(); } + public EDocID getCurrentDocID() { + return currentDocID; + } + /** @param lbl0 {@link forge.screens.home.LblMenuItem} */ public void setLblSelected(final LblMenuItem lbl0) { this.lblSelected = lbl0; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java index 14ba6f64d8c..2446795ed0c 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java @@ -13,6 +13,7 @@ import forge.GuiBase; import forge.assets.FSkinProp; import forge.gui.FNetOverlay; import forge.gui.SOverlayUtils; +import forge.gui.framework.EDocID; import forge.gui.framework.ICDoc; import forge.interfaces.IGuiGame; import forge.interfaces.ILobbyListener; @@ -34,6 +35,7 @@ import forge.net.server.ServerGameLobby; import forge.player.GamePlayerUtil; import forge.properties.ForgePreferences.FPref; import forge.properties.ForgeProfileProperties; +import forge.screens.home.CHomeUI; import forge.screens.home.CLobby; import forge.screens.home.VLobby; import forge.screens.home.sanctioned.ConstructedGameMenu; @@ -139,8 +141,10 @@ public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider { @Override public void run() { SOverlayUtils.hideOverlay(); - FNetOverlay.SINGLETON_INSTANCE.showUp(String.format("Hosting on port %d", port)); - VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate(); + FNetOverlay.SINGLETON_INSTANCE.show(String.format("Hosting on port %d", port)); + if (CHomeUI.SINGLETON_INSTANCE.getCurrentDocID() == EDocID.HOME_NETWORK) { + VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate(); + } } }); } @@ -208,8 +212,10 @@ public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider { @Override public void run() { SOverlayUtils.hideOverlay(); - FNetOverlay.SINGLETON_INSTANCE.showUp(String.format("Connected to %s:%d", hostname, port)); - VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate(); + FNetOverlay.SINGLETON_INSTANCE.show(String.format("Connected to %s:%d", hostname, port)); + if (CHomeUI.SINGLETON_INSTANCE.getCurrentDocID() == EDocID.HOME_NETWORK) { + VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate(); + } } }); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/online/OnlineMenu.java b/forge-gui-desktop/src/main/java/forge/screens/home/online/OnlineMenu.java new file mode 100644 index 00000000000..31b460a8c73 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/home/online/OnlineMenu.java @@ -0,0 +1,51 @@ +package forge.screens.home.online; + +import forge.gui.FNetOverlay; +import javax.swing.*; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; + +/** + * Returns a JMenu containing options for online play. + */ +public final class OnlineMenu { + + public static JMenu getMenu() { + JMenu menu = new JMenu("Online"); + menu.setMnemonic(KeyEvent.VK_O); + menu.add(getMenuItem_ConnectToServer()); + menu.add(new JSeparator()); + menu.add(chatItem); + return menu; + } + + public static final JCheckBoxMenuItem chatItem; + + static { + chatItem = new JCheckBoxMenuItem("Show Chat Panel"); + chatItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (((JMenuItem)e.getSource()).isSelected()) { + FNetOverlay.SINGLETON_INSTANCE.show(); + } + else { + FNetOverlay.SINGLETON_INSTANCE.hide(); + } + } + }); + } + + private static JMenuItem getMenuItem_ConnectToServer() { + JMenuItem menuItem = new JMenuItem("Connect to Server"); + menuItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CSubmenuOnlineLobby.SINGLETON_INSTANCE.connectToServer(); + } + }); + return menuItem; + } +} \ No newline at end of file