package com.giftoftheembalmer.gotefarm.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class GoteFarm implements EntryPoint, ValueChangeHandler<String>, SelectionHandler<Integer> {
static GoteFarmRPCAsync goteService = null;
TabPanel tabpanel;
Guilds guilds;
Events events;
Characters chars;
Admin admin;
/**
* This is the entry point method.
*/
public void onModuleLoad() {
goteService = (GoteFarmRPCAsync)GWT.create(GoteFarmRPC.class);
ServiceDefTarget endpoint = (ServiceDefTarget)goteService;
String moduleRelativeURL = GWT.getModuleBaseURL() + "rpc/goteService";
endpoint.setServiceEntryPoint(moduleRelativeURL);
tabpanel = new TabPanel();
guilds = new Guilds();
events = new Events();
chars = new Characters();
admin = new Admin();
// Events wants to know when there are changes to the user's characters
chars.addValueChangeHandler(events);
// it also wants to know about some AdminChange events
admin.addValueChangeHandler(events.adminChange);
// Characters wants to know when the current guild changes
guilds.addValueChangeHandler(chars);
// So does Admin
guilds.addValueChangeHandler(admin);
// and Events
guilds.addValueChangeHandler(events.guildChange);
final VerticalPanel vpanel = new VerticalPanel();
vpanel.setWidth("100%");
tabpanel.setWidth("98%");
tabpanel.addStyleName(tabpanel.getStylePrimaryName() + "-main");
tabpanel.addSelectionHandler(this);
tabpanel.add(guilds, "Guilds");
tabpanel.add(events, "Events");
tabpanel.add(chars, "Characters");
tabpanel.add(admin, "Admin");
vpanel.add(tabpanel);
RootPanel.get().add(vpanel);
String initToken = History.getToken();
if (initToken.length() == 0) {
History.newItem("events");
}
History.addValueChangeHandler(this);
History.fireCurrentHistoryState();
}
public void onValueChange(ValueChangeEvent<String> event) {
final String historyToken = event.getValue();
if (historyToken.equals("guilds")) {
tabpanel.selectTab(0);
events.resizeRows();
}
else if (historyToken.equals("events")) {
tabpanel.selectTab(1);
events.resizeRows();
}
else if (historyToken.equals("characters")) {
tabpanel.selectTab(2);
}
else if (historyToken.equals("admin")) {
tabpanel.selectTab(3);
}
}
public void onSelection(SelectionEvent<Integer> event) {
switch (event.getSelectedItem()) {
case 0:
History.newItem("guilds");
break;
case 1:
History.newItem("events");
break;
case 2:
History.newItem("characters");
break;
case 3:
History.newItem("admin");
break;
default:
}
}
}