diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 11e5d931d..0ccde6a8f 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -1491,7 +1491,8 @@ OBJOptionChooser.lbl.component = Component: %s OBJOptionChooser.lbl.multipleComponents = Multiple components OBJOptionChooser.checkbox.exportChildren = Export children OBJOptionChooser.checkbox.exportChildren.ttip = If true, export children of the selected components as well. -OBJOptionChooser.checkbox.exportChildren.assemblies.ttip = Component assemblies always export their children +OBJOptionChooser.checkbox.exportChildren.assemblies.ttip = Component assemblies always export their children. +OBJOptionChooser.checkbox.exportChildren.noChildren.ttip = Selected components don't have children. OBJOptionChooser.checkbox.exportAppearance = Export appearance OBJOptionChooser.checkbox.exportAppearance.ttip = If true, export the component appearances to an MTL file. OBJOptionChooser.checkbox.exportAsSeparateFiles = Export as separate files diff --git a/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java b/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java index 1b7f051eb..e8b88b4eb 100644 --- a/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java +++ b/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java @@ -11,6 +11,7 @@ import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; +import org.jetbrains.annotations.NotNull; import javax.swing.JCheckBox; import javax.swing.JComboBox; @@ -226,10 +227,15 @@ public class OBJOptionChooser extends JPanel { public void loadOptions(OBJExportOptions opts) { boolean onlyComponentAssemblies = isOnlyComponentAssembliesSelected(selectedComponents); - if (onlyComponentAssemblies) { + boolean hasChildren = isComponentsHaveChildren(selectedComponents); + if (onlyComponentAssemblies || !hasChildren) { exportChildren.setEnabled(false); exportChildren.setSelected(true); - exportChildren.setToolTipText(trans.get("OBJOptionChooser.checkbox.exportChildren.assemblies.ttip")); + if (onlyComponentAssemblies) { + exportChildren.setToolTipText(trans.get("OBJOptionChooser.checkbox.exportChildren.assemblies.ttip")); + } else { + exportChildren.setToolTipText(trans.get("OBJOptionChooser.checkbox.exportChildren.noChildren.ttip")); + } } else { exportChildren.setEnabled(true); exportChildren.setSelected(opts.isExportChildren()); @@ -278,14 +284,21 @@ public class OBJOptionChooser extends JPanel { } private static boolean isOnlyComponentAssembliesSelected(List selectedComponents) { - boolean onlyComponentAssemblies = true; for (RocketComponent component : selectedComponents) { if (!(component instanceof ComponentAssembly)) { - onlyComponentAssemblies = false; - break; + return false; } } - return onlyComponentAssemblies; + return true; + } + + private static boolean isComponentsHaveChildren(List selectedComponents) { + for (RocketComponent component : selectedComponents) { + if (component.getChildCount() > 0) { + return true; + } + } + return false; } private void coordTransComboAction(ItemEvent e, JComboBox otherCombo) {