ro.zg.opengroups.gwt.client.OpenGroupsApp.java Source code

Java tutorial

Introduction

Here is the source code for ro.zg.opengroups.gwt.client.OpenGroupsApp.java

Source

/*******************************************************************************
 * Copyright 2011 Adrian Cristian Ionescu
 * 
 * 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 ro.zg.opengroups.gwt.client;

import ro.zg.opengroups.gwt.client.impl.HistoryManager;
import ro.zg.opengroups.gwt.client.impl.OpenGroupsViewsManager;
import ro.zg.opengroups.gwt.client.impl.events.handlers.AppLoadEventHandler;
import ro.zg.opengroups.gwt.client.impl.events.handlers.EntityActionsTabClickEventHandler;
import ro.zg.opengroups.gwt.client.impl.events.mappers.DynamicCommandSelectedMapper;
import ro.zg.opengroups.gwt.client.impl.events.mappers.StaticUserEventMapper;
import ro.zg.opengroups.gwt.client.views.MainAppView;
import ro.zg.opengroups.gwt.client.views.factories.CreateEntityWithTagsViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.EntitiesListViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.EntityDataSummaryViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.EntityUpdateViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.EntityUserActionTabViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.EntityUserActionsFooterViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.FiltersListViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.ListPageInfoViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.QuickLinksViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.SimpleEntitiesListViewFactory;
import ro.zg.opengroups.gwt.client.views.factories.ViewsFactoryForCommand;
import ro.zg.opengroups.gwt.shared.constants.OpenGroupsCommands;
import ro.zg.opengroups.gwt.shared.constants.ViewsTypes;
import ro.zg.opengroups.gwt.shared.vo.ServerSerializableTypes;
import ro.zg.webapp.core.shared.event.UserEvent;
import ro.zg.webapp.core.shared.views.ViewFactory;
import ro.zg.webapp.core.shared.views.support.BaseAbstractViewFactory;
import ro.zg.webapp.core.shared.views.support.BaseUserEventsManager;
import ro.zg.webapp.core.shared.views.support.BaseViewsManager;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class OpenGroupsApp implements EntryPoint {
    private final TypesLoaderAsync typesLoaderService = GWT.create(TypesLoader.class);
    private final OpenGroupsServiceAsync openGroupsService = GWT.create(OpenGroupsService.class);

    public void onModuleLoad() {
        // typesLoaderService.loadTypes(new ServerSerializableTypes(), new AsyncCallback<ServerSerializableTypes>() {
        //
        // public void onFailure(Throwable caught) {
        // // TODO Auto-generated method stub
        //      
        // }
        //
        // public void onSuccess(ServerSerializableTypes result) {
        // System.out.println("types loaded");
        //      
        // }
        // });

        typesLoaderService.loadTypes(new ServerSerializableTypes(), new AsyncCallback<ServerSerializableTypes>() {

            public void onFailure(Throwable caught) {
                System.out.println("Failed to load types");
            }

            public void onSuccess(ServerSerializableTypes result) {
                System.out.println("Types loaded.");
            }
        });
        final BaseUserEventsManager userEventsManager = new BaseUserEventsManager();
        final BaseViewsManager viewsManager = new OpenGroupsViewsManager();
        viewsManager.setUserEventsManager(userEventsManager);
        userEventsManager.setViewsManager(viewsManager);

        DynamicCommandSelectedMapper dcsm = new DynamicCommandSelectedMapper();
        AppLoadEventHandler appInitEventHandler = new AppLoadEventHandler(openGroupsService,
                new StaticUserEventMapper(OpenGroupsCommands.APP_INIT));
        userEventsManager.addUserEventHandler(UserEvent.LOAD_APP, appInitEventHandler);
        userEventsManager.addUserEventHandler(UserEvent.HISTORY_CHANGED, appInitEventHandler);

        userEventsManager.addUserEventHandler(ViewsTypes.ENTITY_USER_ACTIONS_TAB_VIEW + ".COMMANDS_TAB.CLICK",
                new EntityActionsTabClickEventHandler(openGroupsService, dcsm));

        BaseAbstractViewFactory viewsFactoryForType = new BaseAbstractViewFactory();
        ViewFactory entitiesListViewFactory = new EntitiesListViewFactory();
        viewsFactoryForType.addFactory(ViewsTypes.ENTITES_LIST_VIEW, entitiesListViewFactory);
        ViewFactory createEntityViewFactory = new CreateEntityWithTagsViewFactory();
        viewsFactoryForType.addFactory(ViewsTypes.CREATE_ENTITY_WITH_TAGS_VIEW, createEntityViewFactory);
        viewsFactoryForType.addFactory(ViewsTypes.FILTERS_LIST_VIEW, new FiltersListViewFactory());
        viewsFactoryForType.addFactory(ViewsTypes.SIMPLE_ENTITIES_LIST_VIEW, new SimpleEntitiesListViewFactory());
        viewsFactoryForType.addFactory(ViewsTypes.LIST_PAGE_INFO_VIEW, new ListPageInfoViewFactory());
        viewsFactoryForType.addFactory(ViewsTypes.ENTITY_DATA_SUMMARY_VIEW, new EntityDataSummaryViewFactory());
        viewsFactoryForType.addFactory(ViewsTypes.QUICK_LINKS_VIEW, new QuickLinksViewFactory());
        viewsFactoryForType.addFactory(ViewsTypes.ENTITY_USER_ACTIONS_TAB_VIEW,
                new EntityUserActionTabViewFactory());
        viewsFactoryForType.addFactory(ViewsTypes.ENTITY_USER_ACTIONS_FOOTER_VIEW,
                new EntityUserActionsFooterViewFactory());
        viewsFactoryForType.addFactory(ViewsTypes.ENTITY_UPDATE_VIEW, new EntityUpdateViewFactory());

        ViewsFactoryForCommand viewsFactoryForCommand = new ViewsFactoryForCommand();
        viewsFactoryForCommand.setViewsFactoryForType(viewsFactoryForType);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.ENTITY_LIST_RECENT_ACTIVITY,
                ViewsTypes.ENTITES_LIST_VIEW);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.ENTITY_LIST_BY_GLOBAL_PRIORITY,
                ViewsTypes.ENTITES_LIST_VIEW);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.ENTITY_LIST_BY_MY_PRIORITY,
                ViewsTypes.ENTITES_LIST_VIEW);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.ENTITY_LIST_NEWEST, ViewsTypes.ENTITES_LIST_VIEW);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.ENTITY_LIST_MOST_POPULAR,
                ViewsTypes.ENTITES_LIST_VIEW);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.CREATE_ENTITY_WITH_TAGS,
                ViewsTypes.CREATE_ENTITY_WITH_TAGS_VIEW);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.ENTITY_UPDATE, ViewsTypes.ENTITY_UPDATE_VIEW);
        viewsFactoryForCommand.addMapping(OpenGroupsCommands.ENTITY_CREATE, ViewsTypes.ENTITY_UPDATE_VIEW);

        /* set view factories on viewsManager */
        viewsManager.setViewFactoryForType(viewsFactoryForType);
        viewsManager.setViewFactoryForCommand(viewsFactoryForCommand);

        final MainAppView mainAppView = new MainAppView();
        viewsManager.setMainView(mainAppView);

        /* init history */

        // History.addValueChangeHandler(new ValueChangeHandler<String>() {
        //
        // public void onValueChange(ValueChangeEvent<String> event) {
        // System.out.println("History event: " + event.getValue());
        // UserEvent userEvent = new UserEvent();
        // userEvent.setEventType(UserEvent.HISTORY_CHANGED);
        // }
        // });

        HistoryManager historyManager = new HistoryManager();
        historyManager.setUserEventsManager(userEventsManager);
        viewsManager.addViewStateChangedListener(historyManager);
        History.addValueChangeHandler(historyManager);

        final VerticalPanel vp = new VerticalPanel();
        vp.add(mainAppView.construct());
        vp.setWidth("100%");
        vp.setHeight(Window.getClientHeight() + "px");
        Window.addResizeHandler(new ResizeHandler() {

            public void onResize(ResizeEvent event) {
                int height = event.getHeight();
                vp.setHeight(height + "px");
            }
        });
        RootPanel.get().add(vp);
        // RootLayoutPanel.get().add(vp);

        // RootLayoutPanel.get().add(mainAppView.construct());

        UserEvent loadEvent = new UserEvent();
        loadEvent.setEventType(UserEvent.LOAD_APP);
        viewsManager.handleUserEvent(loadEvent);
    }
}