protected void updateRange(){
  if (m_type == int.class) {
    setRange(m_lo.intValue(),m_hi.intValue() - m_lo.intValue(),m_min.intValue(),m_max.intValue());
  }
 else   if (m_type == long.class) {
    long range=m_max.longValue() - m_min.longValue();
    if (range == 0) {
      setRange(0,0,0,0);
    }
 else {
      long lo=m_lo.longValue() - m_min.longValue();
      long hi=m_hi.longValue() - m_min.longValue();
      int v=(int)(10000 * lo / range);
      int e=(int)(10000 * hi / range) - v;
      setRange(v,e,0,10000);
    }
  }
 else {
    double range=m_max.doubleValue() - m_min.doubleValue();
    if (range == 0) {
      setRange(0,0,0,0);
    }
 else {
      double lo=m_lo.doubleValue() - m_min.doubleValue();
      double hi=m_hi.doubleValue() - m_min.doubleValue();
      int v=(int)(10000.0 * lo / range);
      int e=(int)(10000.0 * hi / range) - v;
      setRange(v,e,0,10000);
    }
  }
}

protected void updateRange ( ) { if ( m_type == int . class ) { setRange ( m_lo . intValue ( ) , m_hi . intValue ( ) - m_lo . intValue ( ) , m_min . intValue ( ) , m_max . intValue ( ) ) ; } else if ( m_type == long . class ) { long range = m_max . longValue ( ) - m_min . longValue ( ) ; if ( range == 0 ) { setRange ( 0 , 0 , 0 , 0 ) ; } else { long lo = m_lo . longValue ( ) - m_min . longValue ( ) ; long hi = m_hi . longValue ( ) - m_min . longValue ( ) ; int v = ( int ) ( 10000 * lo / range ) ; int e = ( int ) ( 10000 * hi / range ) - v ; setRange ( v , e , 0 , 10000 ) ; } } else { double range = m_max . doubleValue ( ) - m_min . doubleValue ( ) ; if ( range == 0 ) { setRange ( 0 , 0 , 0 , 0 ) ; } else { double lo = m_lo . doubleValue ( ) - m_min . doubleValue ( ) ; double hi = m_hi . doubleValue ( ) - m_min . doubleValue ( ) ; int v = ( int ) ( 10000.0 * lo / range ) ; int e = ( int ) ( 10000.0 * hi / range ) - v ; setRange ( v , e , 0 , 10000 ) ; } } }
update the range settings based on current values .
