From 77cfa2bdf2d4f928eaa7a4f7840da7bb300c272b Mon Sep 17 00:00:00 2001 From: Craig Earls Date: Sat, 13 Dec 2014 16:45:49 -0700 Subject: [PATCH] Sum up mass of subcomponent and put in component tree tooltip. --- .../openrocket/rocketcomponent/RocketComponent.java | 13 +++++++++++++ .../main/componenttree/ComponentTreeRenderer.java | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index baa175065..30cb2ceaa 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -1121,6 +1121,19 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab return getComponentMass(); } + /** + * Return the mass of this component and all of its subcomponents. + */ + public final double getSectionMass() { + Double massSubtotal = getMass(); + mutex.verify(); + for (RocketComponent rc : children) { + massSubtotal += rc.getSectionMass(); + } + + return massSubtotal; + } + /** * Return the (possibly overridden) center of gravity and mass. * diff --git a/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java index 719229d75..6f4423457 100644 --- a/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java +++ b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeRenderer.java @@ -69,7 +69,10 @@ public class ComponentTreeRenderer extends DefaultTreeCellRenderer { sb.append("").append(c.getName()).append(""); if (c.isMassive() || c.isMassOverridden() ) { - sb.append(" (").append(UnitGroup.UNITS_MASS.toStringUnit(c.getMass())).append(")"); + sb.append(" (").append(UnitGroup.UNITS_MASS.toStringUnit(c.getMass())).append(" of "); + sb.append(UnitGroup.UNITS_MASS.toStringUnit(c.getSectionMass())).append( " total)"); + } else { + sb.append(" (").append(UnitGroup.UNITS_MASS.toStringUnit(c.getSectionMass())).append( " total)"); } if ( c.isMassOverridden() ) {