blob: 3b17927f076d14e3ab4aba419f50e876df1392ac [file] [log] [blame]
/*
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.sample.dynatablerf.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.sample.dynatablerf.client.widgets.DayFilterWidget;
import com.google.gwt.sample.dynatablerf.client.widgets.FavoritesWidget;
import com.google.gwt.sample.dynatablerf.client.widgets.SummaryWidget;
import com.google.gwt.sample.dynatablerf.shared.DynaTableRequestFactory;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.requestfactory.gwt.client.RequestFactoryLogHandler;
import com.google.web.bindery.requestfactory.shared.LoggingRequest;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* The entry point class which performs the initial loading of the DynaTableRf
* application.
*/
public class DynaTableRf implements EntryPoint {
interface Binder extends UiBinder<Widget, DynaTableRf> {
}
private static final Logger log = Logger.getLogger(DynaTableRf.class.getName());
@UiField(provided = true)
SummaryWidget calendar;
EventBus eventBus = new SimpleEventBus();
@UiField(provided = true)
FavoritesWidget favorites;
@UiField(provided = true)
DayFilterWidget filter;
/**
* This method sets up the top-level services used by the application.
*/
public void onModuleLoad() {
GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
public void onUncaughtException(Throwable e) {
log.log(Level.SEVERE, e.getMessage(), e);
}
});
final DynaTableRequestFactory requests = GWT.create(DynaTableRequestFactory.class);
requests.initialize(eventBus);
// Add remote logging handler
RequestFactoryLogHandler.LoggingRequestProvider provider = new RequestFactoryLogHandler.LoggingRequestProvider() {
public LoggingRequest getLoggingRequest() {
return requests.loggingRequest();
}
};
Logger.getLogger("").addHandler(new ErrorDialog().getHandler());
Logger.getLogger("").addHandler(
new RequestFactoryLogHandler(provider, Level.WARNING,
new ArrayList<String>()));
FavoritesManager manager = new FavoritesManager(requests);
PersonEditorWorkflow.register(eventBus, requests, manager);
calendar = new SummaryWidget(eventBus, requests, 15);
favorites = new FavoritesWidget(eventBus, requests, manager);
filter = new DayFilterWidget(eventBus);
RootLayoutPanel.get().add(
GWT.<Binder> create(Binder.class).createAndBindUi(this));
// Fast test to see if the sample is not being run from devmode
if (GWT.getHostPageBaseURL().startsWith("file:")) {
log.log(Level.SEVERE, "The DynaTableRf sample cannot be run without its"
+ " server component. If you are running the sample from a"
+ " GWT distribution, use the 'ant devmode' target to launch"
+ " the DTRF server.");
}
}
}