/** * Creates integer or float number selector depending on precision, see {@link #setPrecision(int)} * * @param name may be null */ public NumberSelector( NumberSelectorStyle style, final Sizes sizes, String name, float initialValue, float min, float max, float step, int precision) { this.current = initialValue; this.max = max; this.min = min; this.step = step; valueText = new VisValidatableTextField() { @Override public float getPrefWidth() { return sizes.numberSelectorFieldSize; } }; valueText.setProgrammaticChangeEvents(false); setPrecision(precision); valueText.setText(valueOf(current)); VisTable buttonsTable = new VisTable(); VisImageButton upButton = new VisImageButton(style.up); VisImageButton downButton = new VisImageButton(style.down); buttonsTable.add(upButton).height(sizes.numberSelectorButtonSize).row(); buttonsTable.add(downButton).height(sizes.numberSelectorButtonSize); labelCell = add(new VisLabel("")); setSelectorName(name); add(valueText).fillX().expandX().height(sizes.numberSelectorButtonSize * 2).padRight(1); add(buttonsTable).width(sizes.numberSelectorButtonsWidth); addButtonsListeners(upButton, downButton); addTextFieldListeners(); }