package com.iambookmaster.client.common; import com.google.gwt.user.client.ui.ChangeListener; import com.google.gwt.user.client.ui.ChangeListenerCollection; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; public class NumberTextBox extends TextBox { private int min = Integer.MIN_VALUE; private int max = Integer.MAX_VALUE; private ChangeListenerCollection changeListenerCollection; public NumberTextBox() { super.addChangeListener(new ChangeListener() { public void onChange(Widget sender) { getIntegerValue(); if (changeListenerCollection != null) { changeListenerCollection.fireChange(NumberTextBox.this); } } }); } @Override public void addChangeListener(ChangeListener listener) { if (changeListenerCollection==null) { changeListenerCollection = new ChangeListenerCollection(); } changeListenerCollection.add(listener); } @Override public void removeChangeListener(ChangeListener listener) { if (changeListenerCollection!=null) { changeListenerCollection.remove(listener); } } public void setRange(int min, int max) { this.min = min; this.max = max; } public int getIntegerValue() { int val; try { val = Integer.parseInt(getText()); } catch (NumberFormatException e) { setText("0"); val = 0; } if (val<min) { val = min; setText(String.valueOf(min)); } if (val>max) { val = max; setText(String.valueOf(max)); } return val; } public void setValue(int value) { setText(String.valueOf(value)); } }