From 793c7dd3bb6bb88c2de76e33df3e04edad28e186 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Sat, 27 Apr 2013 20:59:36 -0500 Subject: [PATCH] Prevent NPEs by disabling the Export menu item when no decals are on the model. Also have the Edit button in AppearancePanel be enabled only by the addition of an image on the AppearanceBuilder. --- .../openrocket/gui/configdialog/AppearancePanel.java | 2 +- core/src/net/sf/openrocket/gui/main/BasicFrame.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java b/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java index 485a8d70b..459750cd2 100644 --- a/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java +++ b/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java @@ -257,6 +257,7 @@ public class AppearancePanel extends JPanel { add(p, "span 3, growx, wrap"); final JButton editBtn = new JButton(trans.get("AppearanceCfg.but.edit")); editBtn.setEnabled(ab.getImage() != null); + // Enable the editBtn only when the appearance builder has an Image assigned to it. ab.addChangeListener(new StateChangeListener() { @Override public void stateChanged(EventObject e) { @@ -275,7 +276,6 @@ public class AppearancePanel extends JPanel { } }); - mDefault.addEnableComponent(editBtn, false); p.add(editBtn); } diff --git a/core/src/net/sf/openrocket/gui/main/BasicFrame.java b/core/src/net/sf/openrocket/gui/main/BasicFrame.java index 0609ec8c6..ea48da24a 100644 --- a/core/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/core/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -22,6 +22,7 @@ import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Arrays; +import java.util.EventObject; import java.util.LinkedList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -101,6 +102,7 @@ import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.MemoryManagement; import net.sf.openrocket.util.MemoryManagement.MemoryData; import net.sf.openrocket.util.Reflection; +import net.sf.openrocket.util.StateChangeListener; import net.sf.openrocket.util.TestRockets; public class BasicFrame extends JFrame { @@ -477,6 +479,16 @@ public class BasicFrame extends JFrame { exportDecalAction(); } }); + item.setEnabled(document.getDecalList().size() > 0); + final JMenuItem exportMenuItem = item; + document.getRocket().addChangeListener(new StateChangeListener() { + + @Override + public void stateChanged(EventObject e) { + exportMenuItem.setEnabled(document.getDecalList().size() > 0); + } + + }); menu.add(item);