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 extends InventoryItem, ? extends DeckBase> 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 extends InventoryItem, ? extends DeckBase> 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() {