diff --git a/.gitattributes b/.gitattributes
index aa9c8a4cce8..3168d97ff22 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -915,6 +915,8 @@ forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletBuil
forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletContests.java -text
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/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
forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java -text
diff --git a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java
index 49ef5a3ecc5..89ddc6787fe 100644
--- a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java
+++ b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java
@@ -8,6 +8,7 @@ import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
+import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
@@ -29,79 +30,80 @@ import forge.screens.workshop.views.VWorkshopCatalog;
*
*
(E at beginning of class name denotes an enum.)
*/
-public enum EDocID { /** */
- CARD_PICTURE (VPicture.SINGLETON_INSTANCE), /** */
- CARD_DETAIL (VDetail.SINGLETON_INSTANCE), /** */
- CARD_ANTES (VAntes.SINGLETON_INSTANCE), /** */
+public enum EDocID {
+ CARD_PICTURE (VPicture.SINGLETON_INSTANCE),
+ CARD_DETAIL (VDetail.SINGLETON_INSTANCE),
+ CARD_ANTES (VAntes.SINGLETON_INSTANCE),
- EDITOR_ALLDECKS (VAllDecks.SINGLETON_INSTANCE), /** */
- EDITOR_STATISTICS (VStatistics.SINGLETON_INSTANCE), /** */
- EDITOR_PROBABILITIES (VProbabilities.SINGLETON_INSTANCE), /** */
- EDITOR_CATALOG (VCardCatalog.SINGLETON_INSTANCE), /** */
- EDITOR_CURRENTDECK (VCurrentDeck.SINGLETON_INSTANCE), /** */
- EDITOR_DECKGEN (VDeckgen.SINGLETON_INSTANCE), /** */
+ EDITOR_ALLDECKS (VAllDecks.SINGLETON_INSTANCE),
+ EDITOR_STATISTICS (VStatistics.SINGLETON_INSTANCE),
+ EDITOR_PROBABILITIES (VProbabilities.SINGLETON_INSTANCE),
+ EDITOR_CATALOG (VCardCatalog.SINGLETON_INSTANCE),
+ EDITOR_CURRENTDECK (VCurrentDeck.SINGLETON_INSTANCE),
+ EDITOR_DECKGEN (VDeckgen.SINGLETON_INSTANCE),
- WORKSHOP_CATALOG (VWorkshopCatalog.SINGLETON_INSTANCE), /** */
- WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE), /** */
- WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE), /** */
+ WORKSHOP_CATALOG (VWorkshopCatalog.SINGLETON_INSTANCE),
+ WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE),
+ WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE),
- HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE), /** */
- HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE), /** */
- HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE), /** */
- HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE), /** */
- HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE), /** */
- HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE), /** */
- HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE), /** */
- HOME_GAUNTLETLOAD (VSubmenuGauntletLoad.SINGLETON_INSTANCE), /** */
- HOME_GAUNTLETQUICK (VSubmenuGauntletQuick.SINGLETON_INSTANCE), /** */
- HOME_GAUNTLETCONTESTS (VSubmenuGauntletContests.SINGLETON_INSTANCE), /** */
- HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE), /** */
- HOME_ACHIEVEMENTS (VSubmenuAchievements.SINGLETON_INSTANCE), /** */
- HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE), /** */
- HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE), /** */
- HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE), /** */
- HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE), /** */
- HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE), /** */
- HOME_WINSTON (VSubmenuWinston.SINGLETON_INSTANCE), /** */
+ HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE),
+ HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE),
+ HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE),
+ HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE),
+ HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE),
+ HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE),
+ HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE),
+ HOME_GAUNTLETLOAD (VSubmenuGauntletLoad.SINGLETON_INSTANCE),
+ HOME_GAUNTLETQUICK (VSubmenuGauntletQuick.SINGLETON_INSTANCE),
+ HOME_GAUNTLETCONTESTS (VSubmenuGauntletContests.SINGLETON_INSTANCE),
+ HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE),
+ HOME_ACHIEVEMENTS (VSubmenuAchievements.SINGLETON_INSTANCE),
+ HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE),
+ HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE),
+ HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE),
+ HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE),
+ HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE),
+ HOME_WINSTON (VSubmenuWinston.SINGLETON_INSTANCE),
+ HOME_LOBBY (VSubmenuOnlineLobby.SINGLETON_INSTANCE),
HOME_RELEASE_NOTES (VSubmenuReleaseNotes.SINGLETON_INSTANCE),
- REPORT_MESSAGE (VPrompt.SINGLETON_INSTANCE), /** */
- REPORT_STACK (VStack.SINGLETON_INSTANCE), /** */
- REPORT_COMBAT (VCombat.SINGLETON_INSTANCE), /** */
- REPORT_LOG (VLog.SINGLETON_INSTANCE), /** */
- REPORT_PLAYERS (VPlayers.SINGLETON_INSTANCE), /** */
+ REPORT_MESSAGE (VPrompt.SINGLETON_INSTANCE),
+ REPORT_STACK (VStack.SINGLETON_INSTANCE),
+ REPORT_COMBAT (VCombat.SINGLETON_INSTANCE),
+ REPORT_LOG (VLog.SINGLETON_INSTANCE),
+ REPORT_PLAYERS (VPlayers.SINGLETON_INSTANCE),
- DEV_MODE (VDev.SINGLETON_INSTANCE), /** */
- BUTTON_DOCK (VDock.SINGLETON_INSTANCE), /** */
+ DEV_MODE (VDev.SINGLETON_INSTANCE),
+ BUTTON_DOCK (VDock.SINGLETON_INSTANCE),
// Non-user battlefields (AI or teammate), use setDoc to register.
- FIELD_0 (null), /** */
- FIELD_1 (null), /** */
- FIELD_2 (null), /** */
- FIELD_3 (null), /** */
- FIELD_4 (null), /** */
- FIELD_5 (null), /** */
- FIELD_6 (null), /** */
- FIELD_7 (null), /** */
+ FIELD_0 (null),
+ FIELD_1 (null),
+ FIELD_2 (null),
+ FIELD_3 (null),
+ FIELD_4 (null),
+ FIELD_5 (null),
+ FIELD_6 (null),
+ FIELD_7 (null),
// Non-user hands (AI or teammate), use setDoc to register.
- HAND_0 (null), /** */
- HAND_1 (null), /** */
- HAND_2 (null), /** */
- HAND_3 (null), /** */
- HAND_4 (null), /** */
- HAND_5 (null), /** */
- HAND_6 (null), /** */
- HAND_7 (null), /** */
+ HAND_0 (null),
+ HAND_1 (null),
+ HAND_2 (null),
+ HAND_3 (null),
+ HAND_4 (null),
+ HAND_5 (null),
+ HAND_6 (null),
+ HAND_7 (null),
- COMMAND_0 (null), /** */
- COMMAND_1 (null), /** */
- COMMAND_2 (null), /** */
- COMMAND_3 (null), /** */
- COMMAND_4 (null), /** */
- COMMAND_5 (null), /** */
- COMMAND_6 (null), /** */
- COMMAND_7 (null); /** */
+ COMMAND_0 (null),
+ COMMAND_1 (null),
+ COMMAND_2 (null),
+ COMMAND_3 (null),
+ COMMAND_4 (null),
+ COMMAND_5 (null),
+ COMMAND_6 (null),
+ COMMAND_7 (null);
public final static EDocID[] Commands = new EDocID[] {COMMAND_0, COMMAND_1, COMMAND_2, COMMAND_3, COMMAND_4, COMMAND_5, COMMAND_6, COMMAND_7};
public final static EDocID[] Fields = new EDocID[] {FIELD_0, FIELD_1, FIELD_2, FIELD_3, FIELD_4, FIELD_5, FIELD_6, FIELD_7};
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java b/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java
index 7772d41c235..7bad96f2bd2 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/EMenuGroup.java
@@ -7,10 +7,11 @@ package forge.screens.home;
*
*
(E at beginning of class name denotes an enum.)
*/
-public enum EMenuGroup { /** */
- SANCTIONED ("Sanctioned Formats"), /** */
- QUEST ("Quest Mode"), /** */
- GAUNTLET ("Gauntlets"), /** */
+public enum EMenuGroup {
+ SANCTIONED ("Sanctioned Formats"),
+ ONLINE ("Online Multiplayer"),
+ QUEST ("Quest Mode"),
+ GAUNTLET ("Gauntlets"),
SETTINGS ("Game Settings");
private final String strTitle;
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java b/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java
index a9e15cb43dc..41f2287f036 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java
@@ -27,6 +27,7 @@ import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
+import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
@@ -118,6 +119,8 @@ public enum VHomeUI implements IVTopLevelUI {
allSubmenus.add(VSubmenuSealed.SINGLETON_INSTANCE);
//allSubmenus.add(VSubmenuWinston.SINGLETON_INSTANCE);
+ allSubmenus.add(VSubmenuOnlineLobby.SINGLETON_INSTANCE);
+
allSubmenus.add(VSubmenuDuels.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuChallenges.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestDraft.SINGLETON_INSTANCE);
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
new file mode 100644
index 00000000000..8c0156ae4c7
--- /dev/null
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java
@@ -0,0 +1,44 @@
+package forge.screens.home.online;
+
+import forge.UiCommand;
+import forge.gui.framework.ICDoc;
+import forge.menus.IMenuProvider;
+import forge.menus.MenuUtil;
+import javax.swing.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider {
+ SINGLETON_INSTANCE;
+
+ private final VSubmenuOnlineLobby view = VSubmenuOnlineLobby.SINGLETON_INSTANCE;
+
+ @Override
+ public void update() {
+ MenuUtil.setMenuProvider(this);
+
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+
+ }
+ });
+ }
+
+ @Override
+ public void initialize() {
+ }
+
+ @Override
+ public UiCommand getCommandOnSelect() {
+ return null;
+ }
+
+ @Override
+ public List getMenus() {
+ List menus = new ArrayList();
+ return menus;
+ }
+}
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java
new file mode 100644
index 00000000000..355a52c0d95
--- /dev/null
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/online/VSubmenuOnlineLobby.java
@@ -0,0 +1,98 @@
+package forge.screens.home.online;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import net.miginfocom.swing.MigLayout;
+
+import forge.gui.framework.DragCell;
+import forge.gui.framework.DragTab;
+import forge.gui.framework.EDocID;
+import forge.screens.home.EMenuGroup;
+import forge.screens.home.IVSubmenu;
+import forge.screens.home.LblHeader;
+import forge.screens.home.StartButton;
+import forge.screens.home.VHomeUI;
+import forge.toolbox.FSkin;
+
+
+public enum VSubmenuOnlineLobby implements IVSubmenu {
+ SINGLETON_INSTANCE;
+
+ private DragCell parentCell;
+ private final DragTab tab = new DragTab("Lobby");
+
+ // General variables
+ private final LblHeader lblTitle = new LblHeader("Online Multiplayer: Lobby");
+
+ private final StartButton btnStart = new StartButton();
+ private final JPanel pnlStart = new JPanel(new MigLayout("insets 0, gap 0, wrap 2"));
+ private final JPanel constructedFrame = new JPanel(new MigLayout("insets 0, gap 0, wrap 2")); // Main content frame
+
+ private VSubmenuOnlineLobby() {
+ lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
+ constructedFrame.setOpaque(false);
+ pnlStart.setOpaque(false);
+ pnlStart.add(btnStart, "align center");
+ }
+
+ @Override
+ public void populate() {
+ JPanel container = VHomeUI.SINGLETON_INSTANCE.getPnlDisplay();
+
+ container.removeAll();
+ container.setLayout(new MigLayout("insets 0, gap 0, wrap 1, ax right"));
+ container.add(lblTitle, "w 80%, h 40px!, gap 0 0 15px 15px, span 2, al right, pushx");
+
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(constructedFrame, "gap 20px 20px 20px 0px, push, grow");
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlStart, "gap 0 0 3.5%! 3.5%!, ax center");
+
+ if (container.isShowing()) {
+ container.validate();
+ container.repaint();
+ }
+ }
+
+ public JButton getBtnStart() {
+ return btnStart;
+ }
+
+ @Override
+ public EMenuGroup getGroupEnum() {
+ return EMenuGroup.ONLINE;
+ }
+
+ @Override
+ public String getMenuTitle() {
+ return "Lobby";
+ }
+
+ @Override
+ public EDocID getItemEnum() {
+ return EDocID.HOME_LOBBY;
+ }
+
+ @Override
+ public EDocID getDocumentID() {
+ return EDocID.HOME_LOBBY;
+ }
+
+ @Override
+ public DragTab getTabLabel() {
+ return tab;
+ }
+
+ @Override
+ public CSubmenuOnlineLobby getLayoutControl() {
+ return CSubmenuOnlineLobby.SINGLETON_INSTANCE;
+ }
+
+ @Override
+ public void setParentCell(DragCell cell0) {
+ parentCell = cell0;
+ }
+
+ @Override
+ public DragCell getParentCell() {
+ return parentCell;
+ }
+}
diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java
index 3d0fda08cb2..4fbb0a8b66c 100644
--- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java
+++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java
@@ -88,8 +88,8 @@ public class ForgePreferences extends PreferencesStore {
SUBMENU_CURRENTMENU ("CONSTRUCTED"),
SUBMENU_SANCTIONED ("true"),
+ SUBMENU_ONLINE ("false"),
SUBMENU_GAUNTLET ("false"),
- SUBMENU_VARIANT ("false"),
SUBMENU_QUEST ("false"),
SUBMENU_SETTINGS ("false"),
SUBMENU_UTILITIES ("false"),