diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/CDeckEditorUI.java b/forge-gui/src/main/java/forge/gui/deckeditor/CDeckEditorUI.java index 71737e110d3..1426376d917 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/CDeckEditorUI.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/CDeckEditorUI.java @@ -29,10 +29,8 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.HashMap; -import java.util.List; import java.util.Map.Entry; -import javax.swing.JMenu; import javax.swing.JPopupMenu; import javax.swing.KeyStroke; import javax.swing.Popup; @@ -55,14 +53,12 @@ import forge.gui.deckeditor.controllers.CEditorConstructed; import forge.gui.deckeditor.controllers.CProbabilities; import forge.gui.deckeditor.controllers.CStatistics; import forge.gui.deckeditor.controllers.DeckController; -import forge.gui.deckeditor.menus.CDeckEditorUIMenus; import forge.gui.deckeditor.views.VCardCatalog; import forge.gui.deckeditor.views.VCurrentDeck; import forge.gui.framework.FScreen; import forge.gui.framework.ICDoc; import forge.gui.match.controllers.CDetail; import forge.gui.match.controllers.CPicture; -import forge.gui.menus.IMenuProvider; import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FMouseAdapter; import forge.gui.toolbox.FSkin; @@ -81,7 +77,7 @@ import forge.util.ItemPool; * *

(C at beginning of class name denotes a control class.) */ -public enum CDeckEditorUI implements ICDoc, IMenuProvider { +public enum CDeckEditorUI implements ICDoc { /** */ SINGLETON_INSTANCE; @@ -332,6 +328,7 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider { */ private void setCurrentEditorController(ACEditorBase childController0) { this.childController = childController0; + Singletons.getControl().getForgeMenu().setProvider(childController0); if (childController == null) { return; } @@ -624,14 +621,6 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider { } } - /* (non-Javadoc) - * @see forge.gui.menubar.IMenuProvider#getMenus() - */ - @Override - public List getMenus() { - return new CDeckEditorUIMenus().getMenus(); - } - /* (non-Javadoc) * @see forge.gui.framework.ICDoc#getCommandOnSelect() */ @@ -645,8 +634,6 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider { */ @Override public void initialize() { - Singletons.getControl().getForgeMenu().setProvider(this); - //change to previously open child controller based on screen FScreen screen = Singletons.getControl().getCurrentScreen(); ACEditorBase screenChildController = screenChildControllers.get(screen); diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/ACEditorBase.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/ACEditorBase.java index 4947064cc9c..132c2003c11 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/ACEditorBase.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/ACEditorBase.java @@ -17,19 +17,23 @@ */ package forge.gui.deckeditor.controllers; +import java.util.List; import java.util.Map.Entry; +import javax.swing.JMenu; import javax.swing.SwingUtilities; import forge.Command; import forge.deck.DeckBase; import forge.deck.DeckSection; import forge.gui.deckeditor.CDeckEditorUI; +import forge.gui.deckeditor.menus.CDeckEditorUIMenus; import forge.gui.framework.DragCell; import forge.gui.framework.FScreen; import forge.gui.framework.ICDoc; import forge.gui.framework.IVDoc; import forge.gui.framework.SRearrangingUtil; +import forge.gui.menus.IMenuProvider; import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FSkin; import forge.gui.toolbox.itemmanager.ItemManager; @@ -52,7 +56,7 @@ import forge.view.FView; * @param extends {@link forge.item.InventoryItem} * @param extends {@link forge.deck.DeckBase} */ -public abstract class ACEditorBase { +public abstract class ACEditorBase implements IMenuProvider { public interface ContextMenuBuilder { /** * Adds move-related items to the context menu @@ -119,6 +123,17 @@ public abstract class ACEditorBase getMenus() { + if (this.getDeckController() == null) { + return null; + } + return new CDeckEditorUIMenus().getMenus(); + } + public final void addItem(TItem item) { onAddItems(createPoolForItem(item, 1), false); } diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/menus/DeckFileMenu.java b/forge-gui/src/main/java/forge/gui/deckeditor/menus/DeckFileMenu.java index 83bfae204e2..b9050efcf25 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/menus/DeckFileMenu.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/menus/DeckFileMenu.java @@ -43,8 +43,12 @@ public final class DeckFileMenu { private static JMenuItem menuItem_Save, menuItem_SaveAs; public static void updateSaveEnabled() { - menuItem_Save.setEnabled(CDeckEditorUI.SINGLETON_INSTANCE.hasChanges()); - menuItem_SaveAs.setEnabled(CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController() != null); + if (menuItem_Save != null) { + menuItem_Save.setEnabled(CDeckEditorUI.SINGLETON_INSTANCE.hasChanges()); + } + if (menuItem_SaveAs != null) { + menuItem_SaveAs.setEnabled(CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController() != null); + } } private static JMenuItem getMenuItem_New() {