package tv.dyndns.kishibe.qmaclone.client.setting;
import java.util.Set;
import tv.dyndns.kishibe.qmaclone.client.packet.RestrictionType;
import com.google.common.base.Preconditions;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
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.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
public class PanelSettingRestrictedUserView extends Composite implements
PanelSettingRestrictedUser.View {
private static PanelSettingRestrictedUserViewUiBinder uiBinder = GWT
.create(PanelSettingRestrictedUserViewUiBinder.class);
interface PanelSettingRestrictedUserViewUiBinder extends
UiBinder<Widget, PanelSettingRestrictedUserView> {
}
private final PanelSettingRestrictedUser presenter;
@UiField
ListBox listBoxType;
@UiField
FlowPanel panelUserCodes;
@UiField
TextBox textBoxUserCode;
@UiField
Button buttonAddUserCode;
@UiField
Button buttonRemoveUserCode;
@UiField
Button buttonClearUserCode;
@UiField
FlowPanel panelRemoteAddresses;
@UiField
TextBox textBoxRemoteAddress;
@UiField
Button buttonAddRemoteAddress;
@UiField
Button buttonRemoveRemoteAddress;
@UiField
Button buttonClearRemoteAddress;
public PanelSettingRestrictedUserView(PanelSettingRestrictedUser presenter) {
this.presenter = Preconditions.checkNotNull(presenter);
initWidget(uiBinder.createAndBindUi(this));
for (RestrictionType restrictionType : RestrictionType.values()) {
listBoxType.addItem(restrictionType.name());
}
}
@Override
public RestrictionType getType() {
return RestrictionType.valueOf(listBoxType.getItemText(listBoxType.getSelectedIndex()));
}
@Override
public int getUserCode() {
return Integer.valueOf(textBoxUserCode.getValue());
}
@Override
public String getRemoteAddress() {
return textBoxRemoteAddress.getValue();
}
@Override
public void setUserCodes(Set<Integer> userCodes) {
panelUserCodes.clear();
for (final int userCode : userCodes) {
panelUserCodes.add(new Button(String.valueOf(userCode), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
textBoxUserCode.setValue(String.valueOf(userCode));
}
}));
}
}
@Override
public void setRemoteAddresses(Set<String> remoteAddresses) {
panelRemoteAddresses.clear();
for (final String remoteAddress : remoteAddresses) {
panelRemoteAddresses.add(new Button(remoteAddress, new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
textBoxRemoteAddress.setValue(remoteAddress);
}
}));
}
}
@UiHandler("buttonAddUserCode")
void onButtonAddUserCode(ClickEvent e) {
presenter.onAddUserCodeButton();
}
@UiHandler("buttonRemoveUserCode")
void onButtonRemoveUserCode(ClickEvent e) {
presenter.onRemoveUserCodeButton();
}
@UiHandler("buttonClearUserCode")
void onButtonClearUserCode(ClickEvent e) {
presenter.onClearUserCodesButton();
}
@UiHandler("buttonAddRemoteAddress")
void onButtonAddRemoteAddress(ClickEvent e) {
presenter.onAddRemoteAddressButton();
}
@UiHandler("buttonRemoveRemoteAddress")
void onButtonRemoveRemoteAddress(ClickEvent e) {
presenter.onRemoveRemoteAddressButton();
}
@UiHandler("buttonClearRemoteAddress")
void onButtonClearRemoteAddress(ClickEvent e) {
presenter.onClearRemoteAddressesButton();
}
@UiHandler("listBoxType")
void onListBoxType(ChangeEvent e) {
presenter.onTypeChanged();
}
}