It's not really "Loading While GWT Application Loads", because when
that code executes it means that GWT and your application have
finished loading. Your example is about showing a progress bar while
your already loaded application is adding widgets to a table at a rate
of 1 every 25 milliseconds (the data is already loaded).

Before your GWT application loads, there's not much you can do to show
the progress of the loading. One good trick is to have your host HTML
(the file called YourModuleName.html) display a circular progress icon
in a div occupying the whole browser window and then remove that div
as the first call in your GWT code after you've instantiated all of
your UI components.

Cheers,

Salvador

On Apr 18, 10:17 pm, Vagner Araujo <araujo...@gmail.com> wrote:
> this is a small sample of Loading While GWT Application Loads,
> perhaps this example can help someone.
>
> package com.javaneses.example.loading.client;
>
> import java.util.List;
>
> import com.google.gwt.core.client.EntryPoint;
> import com.google.gwt.core.client.GWT;
> import com.google.gwt.user.client.Timer;
> import com.google.gwt.user.client.Window;
> import com.google.gwt.user.client.rpc.AsyncCallback;
> import com.google.gwt.user.client.ui.FlexTable;
> import com.google.gwt.user.client.ui.PopupPanel;
> import com.google.gwt.user.client.ui.RootPanel;
> import com.google.gwt.widgetideas.client.ProgressBar;
> import com.google.gwt.widgetideas.client.ProgressBar.TextFormatter;
> import com.javaneses.example.loading.client.rpc.service.MyService;
> import
> com.javaneses.example.loading.client.rpc.service.MyServiceAsync;
>
> public class MainTest implements EntryPoint {
>
>         private final PopupPanel loading = new PopupPanel();
>
>         //ProgressBar gwt incubator
>         private final ProgressBar bar = new ProgressBar();
>
>         private final FlexTable flexTable = new FlexTable();
>
>         private Timer timer;
>
>         private final MyServiceAsync myServiceAsync = GWT.create
> (MyService.class);
>
>         private int index;
>
>         public void onModuleLoad() {
>
>                 flexTable.setText(0, 0, "Row");
>                 flexTable.setText(0, 1, "First Name");
>                 flexTable.setText(0, 2, "Last Name");
>                 flexTable.setCellSpacing(5);
>                 flexTable.setVisible(false);
>
>                 RootPanel.get().add(flexTable);
>
>                 bar.setTextVisible(false);
>                 loading.add(bar);
>                 loading.center();
>
>                 AsyncCallback<List<MyBean>> asyncCallback = new
> AsyncCallback<List<MyBean>>() {
>                         public void onSuccess(final List<MyBean> result) {
>                                 bar.setTextVisible(true);
>                                 final int count = result.size();
>                                 bar.setMaxProgress(count);
>                                 bar.setProgress(0);
>                                 TextFormatter formatter = new TextFormatter() 
> {
>                                         protected String getText(ProgressBar 
> bar, double curProgress) {
>                                                 return "Loading Data ";
>                                         }//end getText(ProgressBar bar, 
> double curProgress)
>                                 };
>                                 bar.setTextFormatter(formatter);
>                                 timer = new Timer() {
>                                         public void run() {
>                                                 if(count == index){
>                                                         loading.hide();
>                                                         
> flexTable.setVisible(true);
>                                                         timer.cancel();
>                                                 }else{
>                                                         MyBean bean = 
> result.get(index);
>                                                         
> flexTable.setText(index + 1, 0, ""+index);
>                                                         
> flexTable.setText(index + 1, 1, bean.getName());
>                                                         
> flexTable.setText(index + 1, 2, bean.getLastName());
>                                                         index++;
>                                                         
> bar.setProgress(index);
>                                                 }//end else
>                                         }//end run
>                                 };//end timer = new Timer()
>
>                                 timer.scheduleRepeating(25);
>
>                         }//end onSuccess(List<MyBean> result)
>                         public void onFailure(Throwable caught) {
>                                 Window.alert(caught.toString());
>                         }//end onFailure(Throwable caught)
>                 };
>
>                 myServiceAsync.listMyBean(asyncCallback);
>
>         }//end onModuleLoad
>
> }//end class
>
> //SERVICE CLASS
>
> package com.javaneses.example.loading.client.rpc.service;
>
> import java.util.List;
>
> import com.google.gwt.user.client.rpc.RemoteService;
> import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
> import com.javaneses.example.loading.client.MyBean;
>
> @RemoteServiceRelativePath("/myService")
> public interface MyService extends RemoteService{
>
>         List<MyBean> listMyBean();
>
> }//end interface
>
> package com.javaneses.example.loading.client.rpc.service;
>
> import java.util.List;
>
> import com.google.gwt.user.client.rpc.AsyncCallback;
> import com.javaneses.example.loading.client.MyBean;
>
> public interface MyServiceAsync {
>
>         void listMyBean(AsyncCallback<List<MyBean>> asyncCallback);
>
> }//end interface
>
> package com.javaneses.example.loading.server.rpc.service;
>
> import java.util.ArrayList;
> import java.util.List;
>
> import com.google.gwt.user.server.rpc.RemoteServiceServlet;
> import com.javaneses.example.loading.client.MyBean;
> import com.javaneses.example.loading.client.rpc.service.MyService;
>
> public class MyServiceImpl extends RemoteServiceServlet implements
> MyService{
>
>         private static final long serialVersionUID = -6260441209521818053L;
>
>         @Override
>         public List<MyBean> listMyBean() {
>
>                 List<MyBean> list = new ArrayList<MyBean>();
>
>                 for(int i = 0; i < 1000; i++){
>                         MyBean bean = new MyBean();
>                         bean.setName("Vagner");
>                         bean.setLastName("Araujo");
>                         list.add(bean);
>                 }//end for(int i = 0; i < 1000; i++)
>                 return list;
>         }//end listMyBean
>
> }//end class
>
> //BEAN
>
> package com.javaneses.example.loading.client;
>
> import java.io.Serializable;
>
> public final class MyBean implements Serializable{
>
>         private static final long serialVersionUID = 2264295145291728318L;
>
>         private String name;
>
>         private String lastName;
>
>         public void setName(String name) {
>                 this.name = name;
>         }//end setName
>
>         public String getName() {
>                 return name;
>         }//end getName
>
>         public void setLastName(String lastName) {
>                 this.lastName = lastName;
>         }//end setLastName
>
>         public String getLastName() {
>                 return lastName;
>         }//end getLastName
>
> }//end class
>
> //MY MODULE
>
> <module>
>
>         <!-- Inherit the core Web Toolkit stuff.                        -->
>         <inherits name='com.google.gwt.user.User' />
>
>         <inherits name='com.google.gwt.widgetideas.WidgetIdeas' />
>         <inherits name='com.google.gwt.libideas.LibIdeas' />
>
>         <!-- Inherit the default GWT style sheet.  You can change       -->
>         <!-- the theme of your GWT application by uncommenting          -->
>         <!-- any one of the following lines.                            -->
>         <inherits name='com.google.gwt.user.theme.standard.Standard' />
>         <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
>         <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->
>
>         <!-- Other module inherits                                      -->
>
>         <!-- Specify the app entry point class.                         -->
>         <entry-point class='com.javaneses.example.loading.client.MainTest' />
>
>         <!-- Specify the application specific style sheet.              -->
>         <stylesheet src='MainTest.css' />
>
>         <servlet path="/myService"
>
> class="com.javaneses.example.loading.server.rpc.service.MyServiceImpl" /
>
>
>
> </module>
>
> //MY CSS
>
> .gwt-ProgressBar-shell {
> width: 150px;
> height: 15px;
> border: double;
>
> }
>
> .gwt-ProgressBar-shell .gwt-ProgressBar-bar {
>         background: #4188FA;
>
> }
>
> .gwt-ProgressBar-shell .gwt-ProgressBar-text {
>         font-size: 12px;
>
> }
>
> .gwt-ProgressBar-shell .gwt-ProgressBar-text-firstHalf {
>         color: green;
>
> }
>
> .gwt-ProgressBar-shell .gwt-ProgressBar-text-secondHalf {
>
> color: black;
>
> }
>
> --
> Vagner Araujo
> Java + Vagner = Javagner
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to