package com.uc.irp.client;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* A UI Widget that allows a user to filter the days being displayed in the
* dynamic table.
*/
public class EventFilterWidget extends Composite {
private class EventCheckBox extends CheckBox {
public final int event;
public EventCheckBox(String caption, int event) {
super(caption);
// Remember custom data for this widget.
this.event = event;
// Use a shared handler to save memory.
addClickHandler(eventCheckBoxHandler);
// Initialize based on the reports's current value.
setValue(reports.getEventIncluded(event));
}
}
private class EventCheckBoxHandler implements ClickHandler {
public void onClick(ClickEvent event) {
onClick((EventCheckBox) event.getSource());
}
public void onClick(EventCheckBox eventCheckBox) {
reports.setEventIncluded(eventCheckBox.event, eventCheckBox.getValue());
}
}
private final IncidentReportsWidget reports;
private final VerticalPanel outer = new VerticalPanel();
private final EventCheckBoxHandler eventCheckBoxHandler = new EventCheckBoxHandler();
public EventFilterWidget(IncidentReportsWidget reports) {
this.reports = reports;
initWidget(outer);
setStyleName("DynaTable-EventFilterWidget");
outer.add(new EventCheckBox("Service State", 0));
outer.add(new EventCheckBox("Call State", 1));
outer.add(new EventCheckBox("Signal State", 2));
outer.add(new EventCheckBox("DataConnection State", 3));
Button buttonAll = new Button("All", new ClickHandler() {
public void onClick(ClickEvent event) {
setAllCheckBoxes(true);
}
});
Button buttonNone = new Button("None", new ClickHandler() {
public void onClick(ClickEvent event) {
setAllCheckBoxes(false);
}
});
HorizontalPanel hp = new HorizontalPanel();
hp.setHorizontalAlignment(HasAlignment.ALIGN_CENTER);
hp.add(buttonAll);
hp.add(buttonNone);
outer.add(hp);
outer.setCellVerticalAlignment(hp, HasAlignment.ALIGN_BOTTOM);
outer.setCellHorizontalAlignment(hp, HasAlignment.ALIGN_CENTER);
}
private void setAllCheckBoxes(boolean checked) {
for (int i = 0, n = outer.getWidgetCount(); i < n; ++i) {
Widget w = outer.getWidget(i);
if (w instanceof EventCheckBox) {
((EventCheckBox) w).setValue(checked);
eventCheckBoxHandler.onClick((EventCheckBox) w);
}
}
}
}