org.onebusaway.webapp.gwt.oba_application.view.MainPage.java Source code

Java tutorial

Introduction

Here is the source code for org.onebusaway.webapp.gwt.oba_application.view.MainPage.java

Source

/**
 * Copyright (C) 2011 Brian Ferris <bdferris@onebusaway.org>
 *
 * 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 org.onebusaway.webapp.gwt.oba_application.view;

import java.util.ArrayList;
import java.util.List;

import org.onebusaway.webapp.gwt.common.context.Context;
import org.onebusaway.webapp.gwt.common.context.ContextListener;
import org.onebusaway.webapp.gwt.oba_application.control.CommonControl;
import org.onebusaway.webapp.gwt.where_library.view.MapWidgetComposite;

import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.control.LargeMapControl;
import com.google.gwt.maps.client.control.MapTypeControl;
import com.google.gwt.maps.client.control.ScaleControl;
import com.google.gwt.uibinder.client.UiFactory;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.ResizableDockLayoutPanel;
import com.google.gwt.user.client.ui.Widget;

public class MainPage extends Composite implements ContextListener {

    /*****************************************************************************
     * Private Members
     ****************************************************************************/

    private CommonControl _control;

    /*****************************************************************************
     * Widgets
     ****************************************************************************/

    private MapWidget _map;

    @UiField
    ResizableDockLayoutPanel _dockLayoutPanel;

    @UiField(provided = true)
    SearchWidget _searchWidget;

    @UiField
    FlowPanel _resultsPanel;

    @UiField
    MapWidgetComposite _mapPanel;

    private List<Widget> _resultPanelWidgets = new ArrayList<Widget>();

    /*
     * private Widget _welcomeWidget;
     * 
     * private Widget _addressLookupWidget;
     * 
     * private Widget _resultsTableWidget;
     * 
     * private Widget _activeResultWidget;
     * 
     * private Widget _plansWidget;
     */

    /*****************************************************************************
     * Public Methods
     ****************************************************************************/

    public MainPage() {

    }

    public void setControl(CommonControl control) {
        _control = control;
    }

    public void setMapWidget(MapWidget map) {
        _map = map;
    }

    public void setSearchWidget(SearchWidget searchWidget) {
        _searchWidget = searchWidget;
    }

    public void addResultsPanelWidget(Widget widget) {
        _resultPanelWidgets.add(widget);
    }

    public void initialize() {

        System.out.println("=================== creating results page...");

        // initWidget(_uiBinder.createAndBindUi(this));

        _dockLayoutPanel = new ResizableDockLayoutPanel(Unit.EM);
        _resultsPanel = new FlowPanel();
        _mapPanel = makeMapPanel();

        _dockLayoutPanel.addNorth(_searchWidget, 4);
        _dockLayoutPanel.addWest(_resultsPanel, 18);
        _dockLayoutPanel.add(_mapPanel);

        initWidget(_dockLayoutPanel);

        _searchWidget.setDockLayoutPanelParent(_dockLayoutPanel);

        for (Widget widget : _resultPanelWidgets)
            _resultsPanel.add(widget);

        _map.addControl(new LargeMapControl());
        _map.addControl(new MapTypeControl());
        _map.addControl(new ScaleControl());
        _map.setScrollWheelZoomEnabled(true);

        // We delay initialization of the map
        DeferredCommand.addCommand(new Command() {
            public void execute() {
                _map.checkResizeAndCenter();
            }
        });
    }

    @Override
    public void onContextChanged(Context context) {
        _control.handleContext(context);
    }

    @UiFactory
    MapWidgetComposite makeMapPanel() {
        return new MapWidgetComposite(_map);
    }
}