package tim.prune.function.settings; import tim.prune.App; import tim.prune.DataSubscriber; import tim.prune.UpdateMessageBroker; import tim.prune.config.Config; import tim.prune.data.Unit; import tim.prune.function.SingleNumericParameterFunction; /** * Function to set the tolerance for the altitude range calculations */ public class SetAltitudeTolerance extends SingleNumericParameterFunction { /** * Constructor * @param inApp App object */ public SetAltitudeTolerance(App inApp) { super(inApp, 0, 100); } /** @return name key */ public String getNameKey() { return "function.setaltitudetolerance"; } /** * @return description key */ public String getDescriptionKey() { // Two different keys for feet and metres final boolean isMetres = Config.getUnitSet().getAltitudeUnit().isStandard(); return "dialog.setaltitudetolerance.text." + (isMetres ? "metres" : "feet"); } /** * @return the current value to display */ public int getCurrentParamValue() { int configVal = Config.getConfigInt(Config.KEY_ALTITUDE_TOLERANCE); // Convert this to feet if necessary Unit altUnit = Config.getUnitSet().getAltitudeUnit(); if (altUnit.isStandard()) { return configVal / 100; } return (int) (configVal * altUnit.getMultFactorFromStd() / 100.0); } /** * Run function */ public void begin() { // Not required, because this function is started from a ChooseSingleParameter function // and goes directly to the completeFunction method. } /** * Complete the function using the given tolerance parameter */ public void completeFunction(int inTolerance) { // Convert back from feet into metres again Unit altUnit = Config.getUnitSet().getAltitudeUnit(); int configVal = inTolerance * 100; if (!altUnit.isStandard()) { configVal = (int) (inTolerance * 100.0 / altUnit.getMultFactorFromStd()); } Config.setConfigInt(Config.KEY_ALTITUDE_TOLERANCE, configVal); UpdateMessageBroker.informSubscribers(DataSubscriber.SELECTION_CHANGED); } }