hudson.gwtmarketplace.client.pages.MainPage.java Source code

Java tutorial

Introduction

Here is the source code for hudson.gwtmarketplace.client.pages.MainPage.java

Source

/*
 * GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007
 */
package hudson.gwtmarketplace.client.pages;

import hudson.gwtmarketplace.client.ajaxfeeds.EntryDiv;
import hudson.gwtmarketplace.client.ajaxfeeds.Feed;
import hudson.gwtmarketplace.client.ajaxfeeds.FeedListener;
import hudson.gwtmarketplace.client.commands.GetTopsCommand;
import hudson.gwtmarketplace.client.components.Section;
import hudson.gwtmarketplace.client.model.Product;
import hudson.gwtmarketplace.client.model.Top10Lists;
import hudson.gwtmarketplace.client.pages.product.ProductSectionEntry;

import java.util.List;

import com.google.gwt.gwtpages.client.PageRequestSession;
import com.google.gwt.gwtpages.client.page.AsyncPageCallback;
import com.google.gwt.gwtpages.client.page.impl.UiBoundPage;
import com.google.gwt.gwtpages.client.page.parameters.PageParameters;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;

public class MainPage extends UiBoundPage<FlowPanel> implements FeedListener {

    private Top10Lists top10Lists;
    private boolean blogfeedLoaded = false;

    @UiField
    Section newAndUpdated;
    @UiField
    Section topRated;
    @UiField
    Section mostActive;
    @UiField
    HorizontalPanel horizPanel;
    @UiField
    Section overview;
    @UiField
    Section blogFeed;

    @Override
    protected void onConstruct(FlowPanel view) {
        horizPanel.setCellWidth(horizPanel.getWidget(0), "33%");
        horizPanel.setCellWidth(horizPanel.getWidget(1), "34%");
        horizPanel.setCellWidth(horizPanel.getWidget(2), "33%");
        blogFeed.addStyleName("mainSectionContainer");
        overview.addStyleName("mainSectionContainer");
    }

    @Override
    public void onEnterPage(PageParameters parameters, PageRequestSession session,
            final AsyncPageCallback callback) {
        callback.waitForAsync();
        new GetTopsCommand() {
            @Override
            public void onSuccess(Top10Lists result) {
                callback.onSuccess();
                refresh(result);
            }

            public void onFailure(Throwable e) {
                super.onFailure(e);
                callback.onFailure(e);
            };
        }.execute();

        if (!blogfeedLoaded) {
            Feed f = new Feed();
            f.getFeed("http://feeds.feedburner.com/blogspot/NWLT?format=xml", this);
        }
    }

    @Override
    public void onExitPage() {
    }

    public void refresh(Top10Lists top10Lists) {
        this.top10Lists = top10Lists;
        newAndUpdated.clear();
        topRated.clear();
        mostActive.clear();

        List<Product> products = top10Lists.getRecentUpdates();
        for (int i = 0; i < products.size(); i++)
            newAndUpdated.add(new ProductSectionEntry(products.get(i), ProductSectionEntry.TYPE_UPDATE_AGE, i));
        products = top10Lists.getHighestRated();
        for (int i = 0; i < products.size(); i++)
            topRated.add(new ProductSectionEntry(products.get(i), ProductSectionEntry.TYPE_RATING, i));
        products = top10Lists.getMostViewed();
        for (int i = 0; i < products.size(); i++)
            mostActive.add(new ProductSectionEntry(products.get(i), ProductSectionEntry.TYPE_ACTIVE_VIEWS, i));
    }

    @Override
    public void onSuccess(Feed feed) {
        blogfeedLoaded = true;
        for (int i = 0; i < feed.getEntries().size(); i++)
            blogFeed.add(new EntryDiv(feed.getEntries().get(i), i));
    }

    @Override
    public void onFailure() {
    }
}