blob: 05f57027abb1a381db2b3ed65fc56420eb303182 [file] [log] [blame]
package autotest.afe;
import autotest.common.StaticDataRepository;
import autotest.common.Utils;
import autotest.common.table.FieldFilter;
import autotest.common.ui.ExtendedListBox;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
public class JobOwnerFilter extends FieldFilter
implements ValueChangeHandler<Boolean>, ChangeHandler {
private static int nameCounter = 0;
private ExtendedListBox userList = new ExtendedListBox();
private RadioButton allUsersRadio, selectUserRadio;
private Panel parentPanel;
public JobOwnerFilter(String field) {
super(field);
String radioGroupName = getFreshName();
allUsersRadio = new RadioButton(radioGroupName, "All users");
selectUserRadio = new RadioButton(radioGroupName);
allUsersRadio.addValueChangeHandler(this);
selectUserRadio.addValueChangeHandler(this);
populateUserList();
userList.addChangeHandler(this);
Panel selectUserPanel = new HorizontalPanel();
selectUserPanel.add(selectUserRadio);
selectUserPanel.add(userList);
parentPanel = new VerticalPanel();
parentPanel.add(allUsersRadio);
parentPanel.add(selectUserPanel);
selectUserRadio.setValue(true);
}
@Override
// radio button selection changes
public void onValueChange(ValueChangeEvent<Boolean> event) {
userList.setEnabled(event.getSource() == selectUserRadio);
notifyListeners();
}
@Override
// user list changes
public void onChange(ChangeEvent event) {
notifyListeners();
}
private static String getFreshName() {
nameCounter++;
return "JobOwnerFilter" + Integer.toString(nameCounter);
}
private void populateUserList() {
StaticDataRepository staticData = StaticDataRepository.getRepository();
JSONArray userArray = staticData.getData("users").isArray();
for (String user : Utils.JSONObjectsToStrings(userArray, "login")) {
userList.addItem(user);
}
String currentUser = staticData.getCurrentUserLogin();
userList.selectByName(currentUser);
}
@Override
public JSONValue getMatchValue() {
assert selectUserRadio.getValue();
return new JSONString(userList.getSelectedName());
}
@Override
public Widget getWidget() {
return parentPanel;
}
@Override
public boolean isActive() {
return selectUserRadio.getValue();
}
}