From 8f2201ba9b80c6a2cad21ce260b7132b643843dd Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 2 Jun 2022 00:44:10 +0200 Subject: [PATCH] Fix duplication NullPointException --- .../sf/openrocket/gui/main/RocketActions.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/main/RocketActions.java b/swing/src/net/sf/openrocket/gui/main/RocketActions.java index ff1d94593..61a864c2c 100644 --- a/swing/src/net/sf/openrocket/gui/main/RocketActions.java +++ b/swing/src/net/sf/openrocket/gui/main/RocketActions.java @@ -5,6 +5,7 @@ import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.List; @@ -802,41 +803,40 @@ public class RocketActions { public void actionPerformed(ActionEvent e) { List components = selectionModel.getSelectedComponents(); if (components != null) { + components.sort(Comparator.comparing(c -> c.getParent() != null ? c.getParent().getChildPosition(c) : 0)); components = new ArrayList<>(components); fillInMissingSelections(components); - - components.sort(Comparator.comparing(c -> c.getParent() != null ? -c.getParent().getChildPosition(c) : 0)); } Simulation[] sims = selectionModel.getSelectedSimulations(); if (isCopyable(components)) { ComponentConfigDialog.disposeDialog(); - List copiedComponents = new LinkedList<>(copyComponentsMaintainParent(components)); + List copiedComponents = copyComponentsMaintainParent(components); OpenRocketClipboard.setClipboard(copiedComponents); - copiedComponents = new LinkedList<>(OpenRocketClipboard.getClipboardComponents()); - List pasted = new LinkedList<>(); + + List duplicateComponents = new LinkedList<>(); for (RocketComponent component : copiedComponents) { - pasted.add(component.copy()); + duplicateComponents.add(component.copy()); } List> positions = new LinkedList<>(); - for (RocketComponent component : pasted) { + for (RocketComponent component : duplicateComponents) { positions.add(getPastePosition(component)); } - if (pasted.size() == 1) { - document.addUndoPosition("Duplicate " + pasted.get(0).getComponentName()); + if (duplicateComponents.size() == 1) { + document.addUndoPosition("Duplicate " + duplicateComponents.get(0).getComponentName()); } else { document.addUndoPosition("Duplicate components"); } - for (int i = 0; i < pasted.size(); i++) { - positions.get(i).getU().addChild(pasted.get(i), positions.get(i).getV()); + for (int i = 0; i < duplicateComponents.size(); i++) { + positions.get(i).getU().addChild(duplicateComponents.get(i), positions.get(i).getV()); } - selectionModel.setSelectedComponents(pasted); + selectionModel.setSelectedComponents(duplicateComponents); parentFrame.selectTab(BasicFrame.COMPONENT_TAB); } else if (sims != null && sims.length > 0) {