package de.uni_luebeck.inb.krabbenhoeft.eQTL.client;
import java.util.HashSet;
import java.util.Set;
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.logical.shared.HasSelectionHandlers;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.event.shared.HandlerRegistration;
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.ListBox;
import com.google.gwt.user.client.ui.Widget;
public class FilterByCategoryPopup extends Composite implements HasSelectionHandlers<String> {
private static FilterByCategoryPopupUiBinder uiBinder = GWT.create(FilterByCategoryPopupUiBinder.class);
interface FilterByCategoryPopupUiBinder extends UiBinder<Widget, FilterByCategoryPopup> {
}
private String[] configurationOptions;
@UiField
ListBox category, value;
public FilterByCategoryPopup(String configurationOptions) {
this.configurationOptions = configurationOptions.split(",");
initWidget(uiBinder.createAndBindUi(this));
Set<String> cats = new HashSet<String>();
for (String part : this.configurationOptions) {
final String[] split = part.split("=");
cats.add(split[0]);
}
for (String cat : cats) {
category.addItem(cat);
}
onChange(null);
}
@UiHandler("category")
void onChange(ChangeEvent e) {
final String cat = category.getValue(category.getSelectedIndex());
value.clear();
for (String part : configurationOptions) {
final String[] split = part.split("=");
if (split[0].equals(cat))
value.addItem(split[1]);
}
}
@UiHandler("OK")
void onClick(ClickEvent e) {
final String cat = category.getValue(category.getSelectedIndex());
final String val = value.getValue(value.getSelectedIndex());
SelectionEvent.fire(this, cat + "=" + val);
}
private HandlerManager handlers = new HandlerManager(null);
public HandlerRegistration addSelectionHandler(SelectionHandler<String> handler) {
return handlers.addHandler(SelectionEvent.getType(), handler);
}
public void fireEvent(GwtEvent<?> event) {
handlers.fireEvent(event);
}
}