diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java index 2d1fc9f2dc190ddbe55ad5e23dce3f913b4a5b9c..fa00757a20b5eac38a4093752667f9765b04b76a 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java @@ -1,6 +1,5 @@ package org.geuz.onelab; -import java.text.DecimalFormat; import java.util.ArrayList; import android.content.Context; @@ -46,42 +45,40 @@ public class ParameterNumber extends Parameter{ _readOnly = readOnly; } + public static String formatDouble(double x) + { + return String.format("%.6g", x).replaceFirst("\\.?0+(e|$)", "$1"); + } + protected void update() { super.update(); - int nDecimal = String.valueOf(_min).length() - String.valueOf(_min).lastIndexOf('.') - 1; // hack for double round if(_bar != null) { - DecimalFormat df = new DecimalFormat ( ) ; - df.setMaximumFractionDigits(nDecimal) ; - _title.setText(getShortName() + " (" + df.format(_value)+ ")"); + _title.setText(getShortName() + " (" + formatDouble(_value)+ ")"); _bar.setMax(100); _bar.setProgress((int)(100*(_value-_min)/(_max-_min))); _bar.setEnabled(!this.isReadOnly()); } - else if(_spinner != null) - { - for(int i=0;i<_choices.size();i++) - if(_values.get(i) == _value) - _spinner.setSelection(i, true); - } - else if(_checkbox != null) - { - _checkbox.setText(getShortName()); - _checkbox.setChecked((_value == 0)? false : true); - } - else if(_edittext != null) - { - _edittext.setText(""+Math.round(_value*Math.pow(10, nDecimal))/Math.pow(10, nDecimal)); - } - else if(_stepper != null) - { - _stepper.setMaximum((int)Math.round(_max)); - _stepper.setMinimum((int)Math.round(_min)); - _stepper.setValue((int)Math.round(_value)); - } + else if(_spinner != null) { + for(int i=0;i<_choices.size();i++) + if(_values.get(i) == _value) + _spinner.setSelection(i, true); + } + else if(_checkbox != null) { + _checkbox.setText(getShortName()); + _checkbox.setChecked((_value == 0)? false : true); + } + else if(_edittext != null) { + _edittext.setText(""+formatDouble(_value)); + } + else if(_stepper != null) { + _stepper.setMaximum((int)Math.round(_max)); + _stepper.setMinimum((int)Math.round(_min)); + _stepper.setValue((int)Math.round(_value)); + } } - - public void setValue(double value) { + public void setValue(double value) + { if(value < _min || value > _max) { //Log.w("ParameterNumber", "Incorect value "+value+" (max="+_max+" min="+_min+")"); return;