package org.dashbuilder.common.client.editor;
import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiConstructor;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
import org.gwtbootstrap3.client.ui.Tooltip;
import org.gwtbootstrap3.extras.toggleswitch.client.ui.ToggleSwitch;
import javax.enterprise.context.Dependent;
/**
* <p>The ValueBoxEditor view.</p>
*
* @since 0.4.0
*/
@Dependent
public class ToggleSwitchEditorView extends Composite implements ToggleSwitchEditor.View {
private static final String STYLE_ERROR = " control-group has-error ";
interface Binder extends UiBinder<Widget, ToggleSwitchEditorView> {
Binder BINDER = GWT.create(Binder.class);
}
@UiField
@Editor.Ignore
HTMLPanel contents;
@UiField
@Editor.Ignore
ToggleSwitch toggleSwitch;
@UiField
@Editor.Ignore
Tooltip errorTooltip;
ToggleSwitchEditor presenter;
@Override
public void init(final ToggleSwitchEditor presenter) {
this.presenter = presenter;
}
@UiConstructor
public ToggleSwitchEditorView() {
initWidget(Binder.BINDER.createAndBindUi(this));
toggleSwitch.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(final ValueChangeEvent<Boolean> event) {
presenter.onValueChanged(event.getValue());
}
});
}
@Override
public ToggleSwitchEditor.View setValue(final Boolean value) {
toggleSwitch.setValue(value);
return this;
}
@Override
public ToggleSwitchEditor.View setEnabled(final Boolean isEnabled) {
// Only set the boolean value is it's different from the current one, if not, the ToggleSwitch remains always disabled, probably due to a gwtboostrap bug.
if (toggleSwitch.isEnabled() != isEnabled) {
toggleSwitch.setEnabled(isEnabled);
}
return this;
}
@Override
public ToggleSwitchEditor.View showError(final SafeHtml message) {
contents.addStyleName(STYLE_ERROR);
errorTooltip.setTitle(message.asString());
errorTooltip.reconfigure();
return this;
}
@Override
public ToggleSwitchEditor.View clearError() {
contents.removeStyleName(STYLE_ERROR);
errorTooltip.setTitle("");
errorTooltip.reconfigure();
return this;
}
}