diff --git a/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java b/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java index fd007b08ad1..c8d288df2a3 100644 --- a/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java +++ b/forge-gui/src/main/java/forge/gui/deckchooser/FDeckChooser.java @@ -29,10 +29,9 @@ import forge.quest.QuestUtil; @SuppressWarnings("serial") public class FDeckChooser extends JPanel implements IDecksComboBoxListener { - private boolean isUISetup = false; - - private DecksComboBox decksComboBox = new DecksComboBox(); - private DeckType selectedDeckType = DeckType.COLOR_DECK; + private DecksComboBox decksComboBox; + private DeckType selectedDeckType; + private ItemManagerContainer lstDecksContainer; private final DeckManager lstDecks = new DeckManager(GameType.Constructed); private final FLabel btnViewDeck = new FLabel.ButtonBuilder().text("View Deck").fontSize(14).build(); @@ -267,17 +266,24 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { } public void populate() { - removeAll(); + if (decksComboBox == null) { //initialize components with delayed initialization the first time this is populated + decksComboBox = new DecksComboBox(); + lstDecksContainer = new ItemManagerContainer(lstDecks); + restoreSavedState(); + decksComboBox.addListener(this); + } + else { + removeAll(); + } this.setLayout(new MigLayout("insets 0, gap 0")); decksComboBox.addTo(this, "w 100%, h 30px!, gapbottom 5px, spanx 2, wrap"); - this.add(new ItemManagerContainer(lstDecks), "w 100%, growy, pushy, spanx 2, wrap"); + this.add(lstDecksContainer, "w 100%, growy, pushy, spanx 2, wrap"); this.add(btnViewDeck, "w 50%-3px, h 30px!, gaptop 5px, gapright 6px"); this.add(btnRandom, "w 50%-3px, h 30px!, gaptop 5px"); if (isShowing()) { - validate(); + revalidate(); repaint(); } - setupUI(); } public final boolean isAi() { @@ -296,23 +302,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { refreshDecksList(ev.getDeckType(), false, ev); } - /** - * Creates the various UI components that make up the Deck Chooser. - *
- * Only needs to be called once from populate() method so that
- * components are "lazy-loaded" when Deck Chooser is first displayed.
- */
- private void setupUI() {
- if (!isUISetup) {
- // Only do this once.
- isUISetup = true;
- // monitor events generated by these components.
- decksComboBox.addListener(this);
- // now everything is in place, fire initial populate event.
- restoreSavedState();
- }
- }
-
private void refreshDecksList(DeckType deckType, boolean forceRefresh, DecksComboBoxEvent ev) {
if (selectedDeckType == deckType && !forceRefresh) { return; }
selectedDeckType = deckType;
diff --git a/forge-gui/src/main/java/forge/gui/home/sanctioned/VSubmenuConstructed.java b/forge-gui/src/main/java/forge/gui/home/sanctioned/VSubmenuConstructed.java
index c2ca2277c62..616015a1716 100644
--- a/forge-gui/src/main/java/forge/gui/home/sanctioned/VSubmenuConstructed.java
+++ b/forge-gui/src/main/java/forge/gui/home/sanctioned/VSubmenuConstructed.java
@@ -483,14 +483,13 @@ public enum VSubmenuConstructed implements IVSubmenu