Todo.java

As used in gwt_example_part2.


package myapp.client;

import java.util.List;

import myapp.client.generated.TodoBean;
import myapp.client.generated.TodoService;
import myapp.client.generated.TodoServiceAsync;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Random;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class Todo implements EntryPoint {
	private HTML statusBar = new HTML();
    private FlexTable todoFlexTable = new FlexTable();
    private Button addButton = new Button("Add");
    private TodoServiceAsync todoServiceAsync=null;
    
    public void onModuleLoad() 
    {
        todoFlexTable.setStyleName("theTable");
        todoFlexTable.setText(0,0,"ID");
        todoFlexTable.setText(0,1,"Description");
        todoFlexTable.setText(0,2,"Rank");

        VerticalPanel vPanel = new VerticalPanel();
        vPanel.setWidth("100%");
        vPanel.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
        vPanel.add(todoFlexTable);
        vPanel.add(addButton);
        vPanel.add(statusBar);
        
        RootPanel.get().add(vPanel);
        setStatusBarMessage("Here's your Todo list");
        
        refreshTodolist();
        
        addButton.addClickHandler(new ClickHandler(){
			@Override
			public void onClick(ClickEvent event)
			{
				addRandomNewTask(); 
			}});
    }
    
    private void refreshTodolist() 
    {
           // lazy initialization of service proxy
        if (todoServiceAsync == null) 
        {
            todoServiceAsync = GWT.create(TodoService.class);
        }
        
        setStatusBarMessage("getTodoList");
        AsyncCallback<List<TodoBean>> callback = new AsyncCallback<List<TodoBean>>() 
        {  
            public void onFailure(Throwable caught) 
            {
                String details = caught.getMessage();
                setStatusBarErrorMessage(details);
            }

            public void onSuccess(List<TodoBean> rv) 
            {
                setStatusBarMessage("ok");
                populateFlexTable(rv);
            }
        };
        todoServiceAsync.getTodoList( callback);
    }
    
    public void populateFlexTable(List<TodoBean> tbl)
    {
        for (int r=0;r<tbl.size();r++)
        {
            TodoBean b=tbl.get(r);
            todoFlexTable.setText(r+1,0,Integer.toString(b.getTodoId()));
            todoFlexTable.setText(r+1,1,b.getDescription());
            todoFlexTable.setText(r+1,2,Integer.toString(b.getRank()));
        }
    }
    
    public void setStatusBarMessage(String msg) 
    {
        statusBar.setHTML(msg);
        statusBar.removeStyleName("statusbarError");
    }
    
    public void setStatusBarErrorMessage(String msg) 
    {
        statusBar.setHTML(msg);
        statusBar.addStyleName("statusbarError");
    }
    
    private void addRandomNewTask()
    {
        String newTask=getRandomTask();

        setStatusBarMessage("addNewTask");
        AsyncCallback<Integer> callback = new AsyncCallback<Integer>() 
        {  
            public void onFailure(Throwable caught) 
            {
                String details = caught.getMessage();
                setStatusBarErrorMessage(details);
            }

            public void onSuccess(Integer rv) 
            {
                setStatusBarMessage("added task " + rv);
                refreshTodolist();
            }
        };
        todoServiceAsync.addNewTask(newTask, callback);
    }

    
    private String getRandomTask( )
    {
        String[] actions= {
                 "Check the expiration date of the milk"
                ,"Wash the dishes"
                ,"Shave the dog"
                ,"Unplug all electrical appliances"
                ,"Turn down the temperature"
                ,"Memorize route"
                ,"Check out what's cooking in the pot"
                ,"Get proper insurance"
                ,"Change money"
                ,"Install security device"
                ,"Recharge batteries"
                ,"Get maps"
                ,"Read instructions"
                ,"Ask directions"
        };
        int i=Random.nextInt(actions.length);
        return actions[i];
    }
}

© Willem Moors, 2009 - 2013