Package com.jeck.microblogging.client

Source Code of com.jeck.microblogging.client.Main

package com.jeck.microblogging.client;

import java.util.List;

import com.google.gwt.cell.client.ImageResourceCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.view.client.Range;
import com.google.gwt.view.client.RangeChangeEvent;
import com.jeck.microblogging.shared.Blog;
import com.jeck.microblogging.shared.BlogFeature;
import com.jeck.microblogging.shared.Page;

public class Main implements EntryPoint {

  private final WeiboListServiceAsync listService = GWT
      .create(WeiboListService.class);

  private Label countLabel = new Label();
  private Label infoLabel = new Label();
  private FlowPanel flowPanel = new FlowPanel();
  private static final int PAGE_COUNT=50;
  private long start = 1;
  private long max_id=0;
  private int currentPage = 0;

  private CellTable<Blog> table;
 
  private void createText(Blog blog,StringBuffer buffer){
    buffer.append(blog.getText());
    if (blog.getSrcBlog()!=null){
      buffer.append("{");
      createText(blog.getSrcBlog(), buffer);
      buffer.append("}");
    }
  }

  public void onModuleLoad() {
    RootPanel rootPanel = RootPanel.get();
    rootPanel.add(flowPanel);
    Label topLabel = new Label("My Microblogging");
    flowPanel.add(topLabel);

    table = new CellTable<Blog>();

    TextColumn<Blog> textColum = new TextColumn<Blog>() {

      @Override
      public String getValue(Blog object) {
        StringBuffer buffer=new StringBuffer();
        createText(object, buffer);
        return buffer.toString();
      }
    };

    TextColumn<Blog> authorColum = new TextColumn<Blog>() {

      @Override
      public String getValue(Blog object) {
        return object.getAuthor();
      }
    };

    TextColumn<Blog> createDateColum = new TextColumn<Blog>() {

      @Override
      public String getValue(Blog object) {
        return object.getDate().toString();
      }
    };
   
    Column<Blog,ImageResource> imageColum =new  Column<Blog, ImageResource>(new ImageResourceCell()){
      @Override
      public ImageResource getValue(final Blog object) {
        return new ImageResource(){

          @Override
          public String getName() {
            // TODO Auto-generated method stub
            return null;
          }

          @Override
          public int getHeight() {
            // TODO Auto-generated method stub
            return 100;
          }

          @Override
          public int getLeft() {
            // TODO Auto-generated method stub
            return 0;
          }

          @Override
          public SafeUri getSafeUri() {
            return new SafeUri() {
             
              @Override
              public String asString() {
                // TODO Auto-generated method stub
                return object.getThumbnailPic();
              }
            };
          }

          @Override
          public int getTop() {
            // TODO Auto-generated method stub
            return 0;
          }

          @Override
          public String getURL() {
            // TODO Auto-generated method stub
            return object.getThumbnailPic();
          }

          @Override
          public int getWidth() {
            // TODO Auto-generated method stub
            return 100;
          }

          @Override
          public boolean isAnimated() {
            // TODO Auto-generated method stub
            return false;
          }
         
        };
      }
     
    };   
    table.addRangeChangeHandler(new RangeChangeEvent.Handler() {
     
      @Override
      public void onRangeChange(RangeChangeEvent event) {
        getNextPage();
      }

    });

    table.addColumn(authorColum, "Author");
    table.addColumn(textColum, "Text");
    table.addColumn(imageColum,"Image");
    table.addColumn(createDateColum,"Date");
    getNextPage();
    getBlogCount();
    flowPanel.add(table);
   
  }
 
  private void getNextPage() {
    currentPage++;
    Page page=new Page();
    page.setCount(PAGE_COUNT);
    if (max_id==0){
      page.setSinceId(start);
    }else{
      page.setMaxId(max_id);
    }
    page.setPage(currentPage);
    getBlogList(page);
  }

  private void getBlogCount() {
    listService.getBlogCount(new AsyncCallback<Long>() {

      @Override
      public void onSuccess(Long result) {
        // TODO Auto-generated method stub
        countLabel.setText("Count:" + result);
        flowPanel.add(countLabel);
      }

      @Override
      public void onFailure(Throwable caught) {
        // TODO Auto-generated method stub
        countLabel.setText("ERROR");
        flowPanel.add(countLabel);
      }
    });
  }
 
  private void getBlogList(BlogFeature feature){
    Page page=new Page();
    page.setCount(PAGE_COUNT);
    page.setSinceId(start);
    page.setPage(currentPage);
    getBlogList(feature, page);
  }
 
  private void getBlogList(Page page){
    getBlogList(BlogFeature.ALL, page);
  }
 
  private void getBlogList(){
    getBlogList(BlogFeature.ALL);
  }

  private void getBlogList(BlogFeature feature,Page page) {
    listService.listMyBlogs(page,feature,new AsyncCallback<List<Blog>>() {
      @Override
      public void onFailure(Throwable caught) {
        // TODO Auto-generated method stub
        infoLabel.setText("get data error!");
        flowPanel.add(infoLabel);
      }

      @Override
      public void onSuccess(List<Blog> result) {
        if (result.size()!=0){
          max_id=result.get(result.size()-1).getId();
          infoLabel.setText("get data OK! Data size:" + result.size());
          flowPanel.add(infoLabel);
          SimplePager pager = new SimplePager();
          pager.setDisplay(table);
          table.setRowCount(result.size(), true);
          table.setRowData(result);
          table.redraw();
        }
       
      }
    });
  }
}
TOP

Related Classes of com.jeck.microblogging.client.Main

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.