package org.ovirt.engine.ui.common.widget.uicommon.users; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.core.searchbackend.VdcUserConditionFieldAutoCompleter.UserOrGroup; import com.google.gwt.core.client.GWT; 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.Composite; import com.google.gwt.user.client.ui.RadioButton; import com.google.gwt.user.client.ui.Widget; public class UsersTypeRadioGroup extends Composite { interface WidgetUiBinder extends UiBinder<Widget, UsersTypeRadioGroup> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); } private final List<UserTypeChangeHandler> changeHandlers = new ArrayList<>(); @UiField RadioButton users; @UiField RadioButton groups; public UsersTypeRadioGroup() { initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); users.setValue(true, true); } @UiHandler("users") void handleUsersClick(ClickEvent event) { fireTypeChangedHandlers(UserOrGroup.User); } @UiHandler("groups") void handleGroupsClick(ClickEvent event) { fireTypeChangedHandlers(UserOrGroup.Group); } public void addChangeHandler(UserTypeChangeHandler handler) { if (!changeHandlers.contains(handler)) { changeHandlers.add(handler); } } public void updateSelectedValue(UserOrGroup newType, boolean fireEvents) { switch (newType) { case User: users.setValue(true, fireEvents); break; case Group: groups.setValue(true, fireEvents); } } private void fireTypeChangedHandlers(UserOrGroup newType) { for (UserTypeChangeHandler handler: changeHandlers) { handler.userTypeChanged(newType); } } }