package hudson.gwtmarketplace.client;
import hudson.gwtmarketplace.client.pages.MainPage;
import hudson.gwtmarketplace.client.pages.product.EditProductPage;
import hudson.gwtmarketplace.client.pages.product.NewProductPage;
import hudson.gwtmarketplace.client.pages.product.ProductSearchPage;
import hudson.gwtmarketplace.client.pages.product.ViewProductPage;
import com.google.gwt.core.client.GWT;
import com.google.gwt.gwtpages.client.Pages;
import com.google.gwt.gwtpages.client.page.LoadedPageContainer;
import com.google.gwt.gwtpages.client.page.loader.PageLoadCallback;
import com.google.gwt.gwtpages.client.page.loader.StandardPageLoader;
public class PageLoader extends StandardPageLoader {
public static final String PAGE_DEFAULT = "";
public static final String PAGE_VIEW_PRODUCT = "_view";
public static final String PAGE_SEARCH = "_search";
public static final String PAGE_NEW_PRODUCT = "_new";
public static final String PAGE_EDIT_PRODUCT = "_edit";
public static final String SEARCH_CATEGORY = "cat";
private ViewProductPage viewProductPage;
public PageLoader() {
}
@Override
public boolean isValidPageToken(String token) {
return super.isValidPageToken(token) || !token.startsWith("_");
}
/**
* Allow a wildcard for the product alias as the page token because all
* registered pages start with '_'
*/
@Override
public void getPage(String pageToken, PageLoadCallback pageHandler) {
if (null == pageToken || pageToken.equals(PAGE_DEFAULT)
|| pageToken.startsWith("_")) {
super.getPage(pageToken, pageHandler);
} else {
if (null == viewProductPage) viewProductPage = GWT.create(ViewProductPage.class);
pageHandler.onPageFound(new LoadedPageContainer(pageToken, viewProductPage,
null, this));
}
}
@Override
public void registerPages() {
registerPage(PAGE_DEFAULT, MainPage.class);
registerPage(PAGE_NEW_PRODUCT, NewProductPage.class,
AuthenticationPageEventHandler.createPageAttributes());
registerPage(PAGE_VIEW_PRODUCT, ViewProductPage.class);
registerPage(PAGE_EDIT_PRODUCT, EditProductPage.class,
AuthenticationPageEventHandler.createPageAttributes());
registerPage(PAGE_SEARCH, ProductSearchPage.class);
}
}