/*
* Copyright 2008 Jeff Dwyer
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.apress.progwt.client.college.gui;
import java.util.Iterator;
import com.apress.progwt.client.college.ServiceCache;
import com.apress.progwt.client.college.ToCollegeApp;
import com.apress.progwt.client.domain.User;
import com.apress.progwt.client.map.MyCollegeMap;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.HistoryListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DecoratedTabPanel;
import com.google.gwt.user.client.ui.SourcesTabEvents;
import com.google.gwt.user.client.ui.TabListener;
import com.google.gwt.user.client.ui.Widget;
public class MyPage extends Composite implements TabListener,
HistoryListener {
private ServiceCache serviceCache;
private User thisUser;
private DecoratedTabPanel mainPanel;
private MyRankings myRankings;
private MyApplicationTimeline myApplications;
private MyDecision myPriorities;
private MyCollegeMap myCollegeMap;
public MyPage(ToCollegeApp collegeBoundApp) {
serviceCache = collegeBoundApp.getServiceCache();
mainPanel = new DecoratedTabPanel();
mainPanel.setStylePrimaryName("MainTabs");
mainPanel.getDeckPanel().setAnimationEnabled(true);
myRankings = new MyRankings(serviceCache);
mainPanel.add(myRankings, "My Rankings");
myApplications = new MyApplicationTimeline(serviceCache);
mainPanel.add(myApplications, "My Applications");
myPriorities = new MyDecision(serviceCache);
mainPanel.add(myPriorities, "My Decision");
myCollegeMap = new MyCollegeMap(serviceCache);
mainPanel.add(myCollegeMap, "College Map");
mainPanel.addTabListener(this);
initWidget(mainPanel);
String initToken = History.getToken();
if (initToken.length() == 0) {
initToken = myRankings.getHistoryName();
}
// onHistoryChanged() is not called when the application first
// runs. Call
// it now in order to reflect the initial state.
onHistoryChanged(initToken);
History.addHistoryListener(this);
}
/**
* intercept the event and give us a chance to refresh
*/
public boolean onBeforeTabSelected(SourcesTabEvents sender,
int tabIndex) {
MyPageTab w = (MyPageTab) mainPanel.getWidget(tabIndex);
w.refresh();
return true;
}
public void onTabSelected(SourcesTabEvents sender, int tabIndex) {
MyPageTab w = (MyPageTab) mainPanel.getWidget(tabIndex);
History.newItem("" + w.getHistoryName());
}
public void load(User user) {
this.thisUser = user;
myRankings.load(user);
myApplications.load(user);
myPriorities.load(user);
myCollegeMap.load(user);
}
public void onHistoryChanged(String historyToken) {
int i = 0;
for (Iterator<Widget> iterator = mainPanel.iterator(); iterator
.hasNext();) {
MyPageTab tab = (MyPageTab) iterator.next();
if (tab.getHistoryName().equals(historyToken)) {
mainPanel.selectTab(i);
}
i++;
}
}
}