package com.giftoftheembalmer.gotefarm.client;
import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.StackPanel;
import com.google.gwt.user.client.ui.Widget;
import java.util.ArrayList;
import java.util.List;
public class Admin extends Composite
implements ValueChangeHandler<JSGuild>,
HasValueChangeHandlers<AdminChange> {
Widget centerWidget = null;
DockPanel dpanel = new DockPanel();
List<JSEventTemplate> event_templates;
JSGuild current_guild;
EventTemplates events;
Schedules schedules;
public Admin() {
events = new EventTemplates(this);
schedules = new Schedules(this);
dpanel.setWidth("100%");
StackPanel sp = new StackPanel();
sp.add(events, "Events");
sp.add(schedules, "Schedules");
sp.add(new Label("Accounts"), "Accounts");
sp.add(new Label("Instances"), "Instances");
sp.add(new Label("Bosses"), "Bosses");
sp.add(new Label("Roles"), "Roles");
sp.add(new Label("Badges"), "Badges");
dpanel.add(sp, DockPanel.WEST);
initWidget(dpanel);
setStyleName("Admin");
getEventTemplates();
}
public void setCenterWidget(Widget widget) {
if (centerWidget != null) {
dpanel.remove(centerWidget);
}
if (widget != null) {
dpanel.add(widget, DockPanel.CENTER);
}
centerWidget = widget;
}
// called from GoteFarm after user logs in
public void refresh() {
getEventTemplates();
}
public void eventAdded() {
// reload event templates
getEventTemplates();
}
void getEventTemplates() {
if (current_guild == null) {
return;
}
GoteFarm.goteService.getEventTemplates(
current_guild.key,
new AsyncCallback<List<JSEventTemplate>>() {
public void onSuccess(List<JSEventTemplate> results) {
event_templates = results;
// notify sub-widgets of new list
events.setEventTemplates(event_templates);
schedules.setEventTemplates(event_templates);
}
public void onFailure(Throwable caught) {
List<JSEventTemplate> l = new ArrayList<JSEventTemplate>();
events.setEventTemplates(l);
schedules.setEventTemplates(l);
}
});
}
public void onValueChange(ValueChangeEvent<JSGuild> event) {
current_guild = event.getValue();
// discard any current activity
setCenterWidget(null);
refresh();
}
public HandlerRegistration addValueChangeHandler(
ValueChangeHandler<AdminChange> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}
public void fireAdminChange(AdminChange adminChange) {
ValueChangeEvent.fire(this, adminChange);
}
}