1 package tim.prune.function.settings;
4 import tim.prune.DataSubscriber;
5 import tim.prune.UpdateMessageBroker;
6 import tim.prune.config.Config;
7 import tim.prune.data.Unit;
8 import tim.prune.function.SingleNumericParameterFunction;
11 * Function to set the tolerance for the altitude range calculations
13 public class SetAltitudeTolerance extends SingleNumericParameterFunction
18 * @param inApp App object
20 public SetAltitudeTolerance(App inApp) {
24 /** @return name key */
25 public String getNameKey() {
26 return "function.setaltitudetolerance";
30 * @return description key
32 public String getDescriptionKey()
34 // Two different keys for feet and metres
35 final boolean isMetres = Config.getUnitSet().getAltitudeUnit().isStandard();
36 return "dialog.setaltitudetolerance.text." + (isMetres ? "metres" : "feet");
40 * @return the current value to display
42 public int getCurrentParamValue()
44 int configVal = Config.getConfigInt(Config.KEY_ALTITUDE_TOLERANCE);
45 // Convert this to feet if necessary
46 Unit altUnit = Config.getUnitSet().getAltitudeUnit();
47 if (altUnit.isStandard()) {
48 return configVal / 100;
50 return (int) (configVal * altUnit.getMultFactorFromStd() / 100.0);
58 // Not required, because this function is started from a ChooseSingleParameter function
59 // and goes directly to the completeFunction method.
63 * Complete the function using the given tolerance parameter
65 public void completeFunction(int inTolerance)
67 // Convert back from feet into metres again
68 Unit altUnit = Config.getUnitSet().getAltitudeUnit();
69 int configVal = inTolerance * 100;
70 if (!altUnit.isStandard()) {
71 configVal = (int) (inTolerance * 100.0 / altUnit.getMultFactorFromStd());
73 Config.setConfigInt(Config.KEY_ALTITUDE_TOLERANCE, configVal);
74 UpdateMessageBroker.informSubscribers(DataSubscriber.SELECTION_CHANGED);