[#1489] Visually select child components of selected rocket/stage/podset
This commit is contained in:
parent
f6a608e403
commit
5cc793fc9d
@ -74,6 +74,7 @@ import net.sf.openrocket.logging.Markers;
|
|||||||
import net.sf.openrocket.rocketcomponent.AxialStage;
|
import net.sf.openrocket.rocketcomponent.AxialStage;
|
||||||
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
||||||
import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
|
import net.sf.openrocket.rocketcomponent.ComponentChangeListener;
|
||||||
|
import net.sf.openrocket.rocketcomponent.PodSet;
|
||||||
import net.sf.openrocket.rocketcomponent.Rocket;
|
import net.sf.openrocket.rocketcomponent.Rocket;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
import net.sf.openrocket.startup.Application;
|
import net.sf.openrocket.startup.Application;
|
||||||
@ -294,7 +295,30 @@ public class BasicFrame extends JFrame {
|
|||||||
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_KEY), null);
|
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_KEY), null);
|
||||||
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_N, SHORTCUT_KEY), null);
|
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_N, SHORTCUT_KEY), null);
|
||||||
|
|
||||||
|
// Visually select all child components of a stage/rocket/podset when it is selected
|
||||||
|
componentSelectionModel.addTreeSelectionListener(new TreeSelectionListener() {
|
||||||
|
@Override
|
||||||
|
public void valueChanged(TreeSelectionEvent e) {
|
||||||
|
TreePath selPath = e.getNewLeadSelectionPath();
|
||||||
|
if (selPath == null) return;
|
||||||
|
RocketComponent c = (RocketComponent) selPath.getLastPathComponent();
|
||||||
|
|
||||||
|
if (c instanceof AxialStage || c instanceof Rocket || c instanceof PodSet) {
|
||||||
|
if (rocketpanel == null) return;
|
||||||
|
|
||||||
|
List<RocketComponent> children = new LinkedList<>();
|
||||||
|
for (RocketComponent child : c) {
|
||||||
|
children.add(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select all the child components
|
||||||
|
if (rocketpanel.getFigure() != null && rocketpanel.getFigure3d() != null) {
|
||||||
|
rocketpanel.getFigure().setSelection(children.toArray(new RocketComponent[0]));
|
||||||
|
rocketpanel.getFigure3d().setSelection(children.toArray(new RocketComponent[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Double-click opens config dialog
|
// Double-click opens config dialog
|
||||||
MouseListener ml = new MouseAdapter() {
|
MouseListener ml = new MouseAdapter() {
|
||||||
|
@ -421,6 +421,10 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
|||||||
return figure;
|
return figure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RocketFigure3d getFigure3d() {
|
||||||
|
return figure3d;
|
||||||
|
}
|
||||||
|
|
||||||
public AerodynamicCalculator getAerodynamicCalculator() {
|
public AerodynamicCalculator getAerodynamicCalculator() {
|
||||||
return aerodynamicCalculator;
|
return aerodynamicCalculator;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user