package org.dashbuilder.client.widgets.dataset.editor.attributes;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import org.dashbuilder.common.client.editor.ValueBoxEditor;
import org.gwtbootstrap3.client.ui.Container;
import org.gwtbootstrap3.client.ui.IntegerBox;
import org.gwtbootstrap3.extras.slider.client.ui.Slider;
import org.gwtbootstrap3.extras.slider.client.ui.base.event.SlideStopEvent;
import org.gwtbootstrap3.extras.slider.client.ui.base.event.SlideStopHandler;
import javax.enterprise.context.Dependent;
/**
* <p>The Data Set cache attributes editor view.</p>
*
* @since 0.4.0
*/
@Dependent
public class DataSetDefCacheAttributesEditorViewImpl extends Composite implements DataSetDefCacheAttributesEditorView {
interface Binder extends UiBinder<Widget, DataSetDefCacheAttributesEditorViewImpl> {
Binder BINDER = GWT.create(Binder.class);
}
ViewCallback callback;
@UiField
Container mainContainer;
@UiField(provided = true)
IsWidget enabledView;
@UiField
HTML title;
@UiField(provided = true)
ValueBoxEditor.View valueView;
@UiField
IntegerBox valueBox;
@UiField
HTML units;
@UiField
Slider slider;
@Override
public void init(final ViewCallback callback) {
this.callback = callback;
}
@Override
public void init(final String title, final String units, final IsWidget enabledView, final ValueBoxEditor.View valueView) {
this.enabledView = enabledView;
this.valueView = valueView;
initWidget(Binder.BINDER.createAndBindUi(this));
this.units.setText(units);
this.units.setTitle(units);
this.title.setText(title);
slider.addSlideStopHandler(new SlideStopHandler<Double>() {
@Override
public void onSlideStop(final SlideStopEvent<Double> event) {
// NOTE: Parse double from string value to avoid https://github.com/gwtbootstrap3/gwtbootstrap3-extras/issues/169
final Object value = event.getValue();
final Double _v = Double.parseDouble(value.toString());
callback.onValueChange(_v);
}
});
}
public void setEnabled(final boolean isEnabled) {
valueBox.setEnabled(isEnabled);
slider.setEnabled(isEnabled);
}
public void setValue(final Double value) {
mainContainer.setVisible(true);
slider.setValue(value);
}
@Override
public void setRange(final Double min, final Double max) {
slider.setMin(min);
slider.setMax(max);
}
}