Java tutorial
/* * Copyright 2010 Daniel Kurka * * 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.beyobe.client; import java.util.logging.Logger; import com.beyobe.client.activities.LoginPlace; import com.beyobe.client.css.AppBundle; import com.google.gwt.activity.shared.ActivityMapper; 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.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.dom.client.StyleInjector; import com.google.gwt.place.shared.PlaceHistoryHandler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.googlecode.mgwt.dom.client.event.orientation.OrientationChangeEvent; import com.googlecode.mgwt.dom.client.event.orientation.OrientationChangeHandler; import com.googlecode.mgwt.mvp.client.AnimatableDisplay; import com.googlecode.mgwt.mvp.client.AnimatingActivityManager; import com.googlecode.mgwt.mvp.client.AnimationMapper; import com.googlecode.mgwt.ui.client.MGWT; import com.googlecode.mgwt.ui.client.MGWTSettings; import com.googlecode.mgwt.ui.client.MGWTStyle; import com.googlecode.mgwt.ui.client.dialog.TabletPortraitOverlay; import com.googlecode.mgwt.ui.client.layout.MasterRegionHandler; import com.googlecode.mgwt.ui.client.layout.OrientationRegionHandler; /** * @author Daniel Kurka * */ public class MgwtAppEntryPoint implements EntryPoint { Logger log = Logger.getLogger(this.getClass().getName()); private void start() { //set viewport and other settings for mobile MGWT.applySettings(MGWTSettings.getAppSetting()); App.registerEvents(); AppPlaceHistoryMapper historyMapper = GWT.create(AppPlaceHistoryMapper.class); final PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper); historyHandler.register(App.placeController, App.eventBus, new LoginPlace()); //this will create a link element at the end of head MGWTStyle.getTheme().getMGWTClientBundle().getMainCss().ensureInjected(); //append your own css as last thing in the head // MGWTStyle.injectStyleSheet("tagtheday.css"); if ((MGWT.getOsDetection().isTablet())) { // very nasty workaround because GWT does not corretly support // @media StyleInjector.inject(AppBundle.INSTANCE.css().getText()); createTabletDisplay(); } else { createPhoneDisplay(); } historyHandler.handleCurrentHistory(); } private void createPhoneDisplay() { AnimatableDisplay display = GWT.create(AnimatableDisplay.class); PhoneActivityMapper appActivityMapper = new PhoneActivityMapper(); PhoneAnimationMapper appAnimationMapper = new PhoneAnimationMapper(); AnimatingActivityManager activityManager = new AnimatingActivityManager(appActivityMapper, appAnimationMapper, App.eventBus); activityManager.setDisplay(display); RootPanel.get().add(display); } private void createTabletDisplay() { SimplePanel navContainer = new SimplePanel(); navContainer.getElement().setId("nav"); navContainer.getElement().addClassName("landscapeonly"); AnimatableDisplay navDisplay = GWT.create(AnimatableDisplay.class); final TabletPortraitOverlay tabletPortraitOverlay = new TabletPortraitOverlay(); new OrientationRegionHandler(navContainer, tabletPortraitOverlay, navDisplay); new MasterRegionHandler(App.eventBus, "nav", tabletPortraitOverlay); ActivityMapper navActivityMapper = new TabletNavActivityMapper(); AnimationMapper navAnimationMapper = new TabletNavAnimationMapper(); AnimatingActivityManager navActivityManager = new AnimatingActivityManager(navActivityMapper, navAnimationMapper, App.eventBus); navActivityManager.setDisplay(navDisplay); RootPanel.get().add(navContainer); SimplePanel mainContainer = new SimplePanel(); mainContainer.getElement().setId("main"); AnimatableDisplay mainDisplay = GWT.create(AnimatableDisplay.class); TabletMainActivityMapper tabletMainActivityMapper = new TabletMainActivityMapper(); AnimationMapper tabletMainAnimationMapper = new TabletMainAnimationMapper(); AnimatingActivityManager mainActivityManager = new AnimatingActivityManager(tabletMainActivityMapper, tabletMainAnimationMapper, App.eventBus); mainActivityManager.setDisplay(mainDisplay); mainContainer.setWidget(mainDisplay); RootPanel.get().add(mainContainer); } @Override public void onModuleLoad() { GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void onUncaughtException(Throwable e) { //TODO put in your own meaninful handler Window.alert("Sorry! Unexpected error: " + e.getMessage()); e.printStackTrace(); } }); new Timer() { @Override public void run() { start(); } }.schedule(1); } }