Package org.onebusaway.webapp.gwt.arrivals_and_departures_widget

Source Code of org.onebusaway.webapp.gwt.arrivals_and_departures_widget.ArrivalsAndDeparturesWidget

/**
* 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.arrivals_and_departures_widget;

import java.util.Date;

import org.onebusaway.presentation.client.RoutePresenter;
import org.onebusaway.transit_data.model.ArrivalAndDepartureBean;
import org.onebusaway.transit_data.model.RouteBean;
import org.onebusaway.transit_data.model.StopBean;
import org.onebusaway.transit_data.model.StopWithArrivalsAndDeparturesBean;
import org.onebusaway.transit_data.model.trips.TripBean;
import org.onebusaway.webapp.gwt.common.context.ContextManager;
import org.onebusaway.webapp.gwt.common.widgets.DivPanel;
import org.onebusaway.webapp.gwt.common.widgets.DivWidget;
import org.onebusaway.webapp.gwt.common.widgets.SpanWidget;
import org.onebusaway.webapp.gwt.where_library.pages.WhereCommonPage;
import org.onebusaway.webapp.gwt.where_library.view.ArrivalsAndDeparturesPresentaion;

import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Widget;

public class ArrivalsAndDeparturesWidget extends WhereCommonPage {

  private static DateTimeFormat _timeFormat = DateTimeFormat.getFormat("hh:mm");

  private DivPanel _stopPanel = new DivPanel("arrivalsStopInfo");

  private FlexTable _arrivalsAndDeparturesTable = new FlexTable();

  private ArrivalsAndDeparturesPresentaion _methods;

  private DivPanel _widget = new DivPanel();

  public ArrivalsAndDeparturesWidget(ContextManager contextManager) {
    _methods = new ArrivalsAndDeparturesPresentaion(true);
    setup();
  }

  public Widget getWidget() {
    return _widget;
  }

  public void refresh(StopWithArrivalsAndDeparturesBean bean) {
    updateStopPanel(bean.getStop());
    clearArrivalAndDepartureTable();
    for (ArrivalAndDepartureBean dep : bean.getArrivalsAndDepartures()) {
      addArrivalsAndDeparture(dep);
    }
  }

  /****
   * Private Methods
   ****/

  private void setup() {

    prepArrivalsAndDeparturesTable();

    _widget.addStyleName("panel");
    _widget.add(_stopPanel);
    _widget.add(_arrivalsAndDeparturesTable);
  }

  private void prepArrivalsAndDeparturesTable() {

    _arrivalsAndDeparturesTable.addStyleName("arrivalsTable");

    _arrivalsAndDeparturesTable.getRowFormatter().addStyleName(0,
        "arrivalsHeader");
    _arrivalsAndDeparturesTable.getRowFormatter().addStyleName(1, "arrivalsRow");

    _arrivalsAndDeparturesTable.getCellFormatter().addStyleName(0, 0,
        "arrivalsRouteColumn");
    _arrivalsAndDeparturesTable.getCellFormatter().addStyleName(0, 1,
        "arrivalsDestinationColumn");
    _arrivalsAndDeparturesTable.getCellFormatter().addStyleName(0, 2,
        "arrivalsStatusColumn");

    _arrivalsAndDeparturesTable.getCellFormatter().addStyleName(1, 0,
        "arrivalsRouteEntry");
    _arrivalsAndDeparturesTable.getCellFormatter().setStyleName(1, 2,
        "arrivalsStatusEntry");

    _arrivalsAndDeparturesTable.setText(0, 0, "route");
    _arrivalsAndDeparturesTable.setText(0, 1, "destination");
    _arrivalsAndDeparturesTable.setText(0, 2, "minutes");

    _arrivalsAndDeparturesTable.setText(1, 1, "loading arrival data...");
  }

  private void updateStopPanel(StopBean stop) {
    _stopPanel.clear();
    _stopPanel.add(new DivWidget(stop.getName(), "arrivalsStopAddress"));
    _stopPanel.add(new DivWidget("Stop # " + stop.getId() + " - "
        + stop.getDirection() + " bound"));
  }

  private void clearArrivalAndDepartureTable() {
    while (_arrivalsAndDeparturesTable.getRowCount() > 1)
      _arrivalsAndDeparturesTable.removeRow(_arrivalsAndDeparturesTable.getRowCount() - 1);
  }

  private void addArrivalsAndDeparture(ArrivalAndDepartureBean bean) {

    int rowIndex = _arrivalsAndDeparturesTable.getRowCount();

    TripBean trip = bean.getTrip();
    RouteBean route = trip.getRoute();
    String routeName = RoutePresenter.getNameForRoute(route);
   
    _arrivalsAndDeparturesTable.setText(rowIndex, 0, routeName);

    DivPanel divPanel = new DivPanel();

    DivPanel destinationPanel = new DivPanel("arrivalsDestinationEntry");
    divPanel.add(destinationPanel);
    String href = "trip.action?id=" + trip.getId() + "&stop="
        + bean.getStop().getId();
    destinationPanel.add(new Anchor(trip.getTripHeadsign(), href));

    DivPanel timeAndStatusPanel = new DivPanel("arrivalsTimePanel");
    divPanel.add(timeAndStatusPanel);
    String time = _timeFormat.format(new Date(bean.computeBestDepartureTime()));
    timeAndStatusPanel.add(new SpanWidget(time, "arrivalsTimeEntry"));
    timeAndStatusPanel.add(new SpanWidget(" - "));
    String arrivalStatusLabelStyle = _methods.getStatusLabelStyle(bean);
    timeAndStatusPanel.add(new SpanWidget(_methods.getStatusLabel(bean),
        arrivalStatusLabelStyle));
    _arrivalsAndDeparturesTable.setWidget(rowIndex, 1, divPanel);

    _arrivalsAndDeparturesTable.getCellFormatter().setStyleName(rowIndex, 2,
        "arrivalsStatusEntry");
    _arrivalsAndDeparturesTable.getCellFormatter().addStyleName(rowIndex, 2,
        arrivalStatusLabelStyle);
    if (_methods.isNow(bean))
      _arrivalsAndDeparturesTable.getCellFormatter().addStyleName(rowIndex, 2,
          "arrivalStatusNow");

    _arrivalsAndDeparturesTable.setText(1, 2, _methods.getMinutesLabel(bean));
  }
}
TOP

Related Classes of org.onebusaway.webapp.gwt.arrivals_and_departures_widget.ArrivalsAndDeparturesWidget

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.