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.
This commit is contained in:
kruland2607 2013-04-27 20:59:36 -05:00
parent 0607823f63
commit 793c7dd3bb
2 changed files with 13 additions and 1 deletions

View File

@ -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);
}

View File

@ -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);