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) {