package klik.client.mvp.unitelement;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.ButtonGroup;
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
import com.github.gwtbootstrap.client.ui.constants.IconType;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
public class UnitElementView extends ViewWithUiHandlers<UnitElementUiHandlers> implements
UnitElementPresenter.MyView {
private final Widget widget;
@UiField Button extendButton;
@UiField Label nameLabel;
@UiField ButtonGroup plusMinusButtons;
@UiField Button minusButton;
@UiField Button plusButton;
@UiField Button onButton;
@UiField Button offButton;
@UiField HTMLPanel invisiblePanel;
public interface Binder extends UiBinder<Widget, UnitElementView> {
}
@Inject
public UnitElementView(final Binder binder) {
widget = binder.createAndBindUi(this);
}
@Override
public Widget asWidget() {
return widget;
}
@Override
public void set(String address, String name, boolean isOn, boolean isDimmable) {
// set address label
nameLabel.setText(name);
setOn(isOn);
plusMinusButtons.setVisible(isDimmable);
}
@UiHandler("extendButton")
void onExtendClick(ClickEvent e) {
invisiblePanel.setVisible(!invisiblePanel.isVisible());
extendButton.setIcon(invisiblePanel.isVisible() ? IconType.CHEVRON_UP : IconType.CHEVRON_DOWN);
}
@UiHandler("minusButton")
void minusClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().dim();
}
}
@UiHandler("plusButton")
void plusClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().bright();
}
}
@UiHandler("onButton")
void onClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().setOn(true);
}
}
@UiHandler("offButton")
void offClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().setOn(false);
}
}
@UiHandler("editBtn")
void editClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().edit();
}
}
@Override
public void setOn(boolean isOn) {
if (isOn) {
onButton.setType(ButtonType.SUCCESS);
offButton.removeStyle(ButtonType.DANGER);
} else {
onButton.removeStyle(ButtonType.SUCCESS);
offButton.setType(ButtonType.DANGER);
}
}
}