/**
* 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);
}
}