From 022820a708ff205a8c8ac6acc21c65540ae872a8 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 23 Aug 2023 21:10:36 +0200 Subject: [PATCH] Add export components to OBJ export dialog --- core/resources/l10n/messages.properties | 2 ++ .../file/wavefrontobj/OBJOptionChooser.java | 36 +++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 6c16499ad..11e5d931d 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -1487,6 +1487,8 @@ StorageOptChooser.ttip.Saveopt = Save options StorageOptChooser.lbl.Saveopt = Save options ! OBJOptionChooser +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 diff --git a/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java b/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java index 4329bfaa9..1b7f051eb 100644 --- a/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java +++ b/swing/src/net/sf/openrocket/file/wavefrontobj/OBJOptionChooser.java @@ -50,6 +50,37 @@ public class OBJOptionChooser extends JPanel { this.selectedComponents = selectedComponents; this.rocket = rocket; + // ------------ Component selection ------------ + final boolean singleComponent = selectedComponents.size() == 1; + String componentName = singleComponent ? + "" + selectedComponents.get(0).getName() + "": + trans.get("OBJOptionChooser.lbl.multipleComponents"); + JLabel components = new JLabel(String.format(trans.get("OBJOptionChooser.lbl.component"), + componentName)); + if (!singleComponent) { + StringBuilder tooltipBuilder = new StringBuilder(""); + int counter = 0; + for (int i = 0; i < selectedComponents.size()-1; i++) { + tooltipBuilder.append(selectedComponents.get(i).getName()).append(", "); + + // Add line break every 4 components + if (counter == 4) { + tooltipBuilder.append("
"); + counter = 0; + } else { + counter++; + } + } + tooltipBuilder.append(selectedComponents.get(selectedComponents.size()-1).getComponentName()); + tooltipBuilder.append(""); + + components.setToolTipText(tooltipBuilder.toString()); + } + this.add(components, "spanx, wrap"); + + this.add(new JSeparator(JSeparator.HORIZONTAL), "spanx, growx, wrap para"); + + // ------------ Basic options ------------ //// Export children this.exportChildren = new JCheckBox(trans.get("OBJOptionChooser.checkbox.exportChildren")); @@ -78,12 +109,11 @@ public class OBJOptionChooser extends JPanel { JSpinner spin = new JSpinner(scalingModel.getSpinnerModel()); spin.setToolTipText(trans.get("OBJOptionChooser.lbl.Scaling.ttip")); spin.setEditor(new SpinnerEditor(spin, 5)); - this.add(spin, "wrap para"); + this.add(spin, "wrap"); + this.add(new JSeparator(JSeparator.HORIZONTAL), "spanx, growx, wrap para"); // ------------ Advanced options ------------ - this.add(new JSeparator(JSeparator.HORIZONTAL), "spanx, growx, wrap"); - // Show advanced options toggle JToggleButton advancedToggle = new JToggleButton(trans.get("OBJOptionChooser.btn.showAdvanced")); this.add(advancedToggle, "spanx, wrap para");