package org.geogebra.web.html5.gui.util; import org.geogebra.common.util.debug.Log; import org.geogebra.web.html5.awt.GDimensionW; import com.google.gwt.dom.client.Document; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.DomEvent; import com.google.gwt.event.dom.client.HasChangeHandlers; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.Label; public class SliderPanel extends FlowPanel implements HasChangeHandlers, HasValue<Integer>, SliderInputHandler { private Slider slider; //private Label minLabel; //private Label maxLabel; public Label sliderLabel; public SliderPanel() { this(0, 100); } public SliderPanel(int min, int max) { //minLabel = new Label(String.valueOf(min)); // add(minLabel); slider = new Slider(min, max); add(slider); //maxLabel = new Label(String.valueOf(max)); // add(maxLabel); sliderLabel = new Label(); sliderLabel.setText(this.getValue() + ""); add(sliderLabel); sliderLabel.addStyleName("popupSliderLabel"); setStyleName("optionsSlider"); Slider.addInputHandler(slider.getElement(), this); } @Override public Integer getValue() { return slider.getValue(); } public void setMinimum(int min) { slider.setMinimum(min); // minLabel.setText(String.valueOf(min)); } public void setMaximum(int max) { slider.setMaximum(max); // maxLabel.setText(String.valueOf(max)); } public void setMajorTickSpacing(int step) { slider.setMajorTickSpacing(step); } public void setMinorTickSpacing(int step) { slider.setMinorTickSpacing(step); } public void setPaintTicks(boolean b) { Log.debug("not applicable for range"); } public void setPaintLabels(boolean b) { Log.debug("not applicable for range"); } public GDimensionW getPreferredSize() { return new GDimensionW(180, 10); } @Override public HandlerRegistration addValueChangeHandler( ValueChangeHandler<Integer> handler) { return slider.addValueChangeHandler(handler); } @Override public void onSliderInput() { DomEvent.fireNativeEvent(Document.get().createChangeEvent(), this.slider); sliderLabel.setText(this.getValue() + ""); } @Override public void setValue(Integer value) { slider.setValue(value, false); sliderLabel.setText(this.getValue() + ""); } @Override public void setValue(Integer value, boolean fireEvents) { slider.setValue(value, fireEvents); sliderLabel.setText(this.getValue() + ""); } @Override public HandlerRegistration addChangeHandler(ChangeHandler handler) { return slider.addChangeHandler(handler); } }