/*******************************************************************************
* Copyright (c) 2013 EclipseSource and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package com.eclipsesource.tabris.demos.entrypoints;
import static com.eclipsesource.tabris.demos.ui.Constants.IMAGE_ACTION_SEARCH;
import static com.eclipsesource.tabris.demos.ui.Constants.IMAGE_ACTION_SETTINGS;
import static com.eclipsesource.tabris.demos.ui.Constants.IMAGE_ACTION_SHARE;
import static com.eclipsesource.tabris.demos.ui.Constants.IMAGE_ACTION_THEME;
import static com.eclipsesource.tabris.demos.ui.Constants.IMAGE_PAGE_ALL_BOOKS;
import static com.eclipsesource.tabris.demos.ui.Constants.IMAGE_PAGE_FAVORITE_BOOKS;
import static com.eclipsesource.tabris.demos.ui.Constants.IMAGE_PAGE_POPULAR_BOOKS;
import java.io.InputStream;
import org.eclipse.rap.rwt.application.EntryPoint;
import org.eclipse.rap.rwt.application.EntryPointFactory;
import com.eclipsesource.tabris.demos.ui.AllBooksPage;
import com.eclipsesource.tabris.demos.ui.BookDetailsPage;
import com.eclipsesource.tabris.demos.ui.BookSearchAction;
import com.eclipsesource.tabris.demos.ui.ChangeThemeAction;
import com.eclipsesource.tabris.demos.ui.FavoriteBooksPage;
import com.eclipsesource.tabris.demos.ui.PopularBooksPage;
import com.eclipsesource.tabris.demos.ui.ReadBookPage;
import com.eclipsesource.tabris.demos.ui.SearchResultsPage;
import com.eclipsesource.tabris.demos.ui.SettingsAction;
import com.eclipsesource.tabris.demos.ui.SettingsPage;
import com.eclipsesource.tabris.demos.ui.ShareAction;
import com.eclipsesource.tabris.ui.ActionConfiguration;
import com.eclipsesource.tabris.ui.PageConfiguration;
import com.eclipsesource.tabris.ui.PlacementPriority;
import com.eclipsesource.tabris.ui.TabrisUIEntryPoint;
import com.eclipsesource.tabris.ui.UIConfiguration;
public class UiDemo implements EntryPointFactory {
@Override
public EntryPoint create() {
return new TabrisUIEntryPoint( createConfiguration() );
}
private UIConfiguration createConfiguration() {
UIConfiguration configuration = new UIConfiguration();
// configuration.setImage( getImage( IMAGE_BOOK_STORE_UI ) );
createPages( configuration );
createPageSettings( configuration );
createGlobalActions( configuration );
return configuration;
}
private void createPages( UIConfiguration configuration ) {
createAllBooksPage( configuration );
createPopularBooksPage( configuration );
createFavoriteBooksPage( configuration );
createBookDetailsPage( configuration );
createReadBookPage( configuration );
createSearchResultsPage( configuration );
}
private void createAllBooksPage( UIConfiguration configuration ) {
PageConfiguration page = new PageConfiguration( AllBooksPage.class.getName(),
AllBooksPage.class );
page.setTitle( "All Books" );
page.setImage( getImage( IMAGE_PAGE_ALL_BOOKS ) );
page.setTopLevel( true );
configuration.addPageConfiguration( page );
}
private void createPopularBooksPage( UIConfiguration configuration ) {
PageConfiguration page = new PageConfiguration( PopularBooksPage.class.getName(),
PopularBooksPage.class );
page.setTitle( "Popular" );
page.setImage( getImage( IMAGE_PAGE_POPULAR_BOOKS ) );
page.setTopLevel( true );
configuration.addPageConfiguration( page );
}
private void createFavoriteBooksPage( UIConfiguration configuration ) {
PageConfiguration page = new PageConfiguration( FavoriteBooksPage.class.getName(),
FavoriteBooksPage.class );
page.setTitle( "Favorite" );
page.setImage( getImage( IMAGE_PAGE_FAVORITE_BOOKS ) );
page.setTopLevel( true );
configuration.addPageConfiguration( page );
}
private void createBookDetailsPage( UIConfiguration configuration ) {
PageConfiguration page = new PageConfiguration( BookDetailsPage.class.getName(),
BookDetailsPage.class );
page.setTitle( "Book" );
ActionConfiguration action = new ActionConfiguration( ShareAction.class.getName(),
ShareAction.class );
action.setImage( getImage( IMAGE_ACTION_SHARE ) );
action.setTitle( "Share" );
page.addActionConfiguration( action );
configuration.addPageConfiguration( page );
}
private void createReadBookPage( UIConfiguration configuration ) {
PageConfiguration page = new PageConfiguration( ReadBookPage.class.getName(),
ReadBookPage.class );
page.setTitle( "Book" );
ActionConfiguration action = new ActionConfiguration( ChangeThemeAction.class.getName(),
ChangeThemeAction.class );
action.setImage( getImage( IMAGE_ACTION_THEME ) );
action.setTitle( "Change Theme" );
page.addActionConfiguration( action );
configuration.addPageConfiguration( page );
}
private void createPageSettings( UIConfiguration configuration ) {
PageConfiguration page = new PageConfiguration( SettingsPage.class.getName(),
SettingsPage.class );
page.setTitle( "Settings" );
configuration.addPageConfiguration( page );
}
private void createSearchResultsPage( UIConfiguration configuration ) {
PageConfiguration page = new PageConfiguration( SearchResultsPage.class.getName(),
SearchResultsPage.class );
configuration.addPageConfiguration( page );
}
private void createGlobalActions( UIConfiguration configuration ) {
ActionConfiguration action = new ActionConfiguration( BookSearchAction.class.getName(),
BookSearchAction.class );
action.setImage( getImage( IMAGE_ACTION_SEARCH ) );
action.setTitle( "Search" );
action.setPlacementPriority( PlacementPriority.HIGH );
configuration.addActionConfiguration( action );
action = new ActionConfiguration( SettingsAction.class.getName(), SettingsAction.class );
action.setPlacementPriority( PlacementPriority.LOW );
action.setImage( getImage( IMAGE_ACTION_SETTINGS ) );
action.setTitle( "Settings" );
configuration.addActionConfiguration( action );
}
private InputStream getImage( String path ) {
return UiDemo.class.getResourceAsStream( path );
}
}