Package org.worldbank.transport.tamt.client.tag

Source Code of org.worldbank.transport.tamt.client.tag.TagInformation

package org.worldbank.transport.tamt.client.tag;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

import org.worldbank.transport.tamt.client.event.ClearRoadOverlaysEvent;
import org.worldbank.transport.tamt.client.event.ClearZoneOverlaysEvent;
import org.worldbank.transport.tamt.client.event.ClearZoneOverlaysEventHandler;
import org.worldbank.transport.tamt.client.event.CreatePolyLineEvent;
import org.worldbank.transport.tamt.client.event.CreatePolyLineEventHandler;
import org.worldbank.transport.tamt.client.event.CreatePolygonEvent;
import org.worldbank.transport.tamt.client.event.CreatePolygonEventHandler;
import org.worldbank.transport.tamt.client.event.CurrentStudyRegionUpdatedEvent;
import org.worldbank.transport.tamt.client.event.CurrentStudyRegionUpdatedEventHandler;
import org.worldbank.transport.tamt.client.event.EditRoadDetailsBySegmentEvent;
import org.worldbank.transport.tamt.client.event.EditRoadDetailsBySegmentEventHandler;
import org.worldbank.transport.tamt.client.event.GetRoadsEvent;
import org.worldbank.transport.tamt.client.event.GetTagsEvent;
import org.worldbank.transport.tamt.client.event.GetTagsEventHandler;
import org.worldbank.transport.tamt.client.event.GetZonesEvent;
import org.worldbank.transport.tamt.client.event.LoadCurrentStudyRegionEvent;
import org.worldbank.transport.tamt.client.event.ReceivedTagsEvent;
import org.worldbank.transport.tamt.client.event.ReceivedTagsEventHandler;
import org.worldbank.transport.tamt.client.event.RenderRoadsEvent;
import org.worldbank.transport.tamt.client.event.RenderRoadsEventHandler;
import org.worldbank.transport.tamt.client.event.ShowRoadsEvent;
import org.worldbank.transport.tamt.client.event.ShowTagsEvent;
import org.worldbank.transport.tamt.client.event.ShowZonesEvent;
import org.worldbank.transport.tamt.client.event.SwitchModuleEvent;
import org.worldbank.transport.tamt.shared.RoadDetails;
import org.worldbank.transport.tamt.shared.StudyRegion;
import org.worldbank.transport.tamt.shared.TagDetails;
import org.worldbank.transport.tamt.shared.Vertex;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.maps.client.event.MapDragEndHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TabBar;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class TagInformation extends Composite {

  private final HandlerManager eventBus;
 
  private VerticalPanel vPanel;
  private HorizontalPanel hPanel;
  private TabPanel panel;
 
  private TagListing tagListing;
  private ZoneListing zoneListing;
  private RoadListing roadListing;
 
  private HTML title;
  private HTML studyRegion;
 
  private TabBar tabBar;

  protected StudyRegion currentStudyRegion;
 
  public TagInformation(HandlerManager _eventBus)
  {
    eventBus = _eventBus;
   
   
    tagListing = new TagListing(eventBus);
    zoneListing = new ZoneListing(eventBus);
    roadListing = new RoadListing(eventBus);
   
    title = new HTML("Current study region:");
    title.setStyleName("studyRegionLabel");
    studyRegion = new HTML("< Not Set >");
    studyRegion.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        eventBus.fireEvent(new SwitchModuleEvent(SwitchModuleEvent.REGION, true));
        eventBus.fireEvent(new LoadCurrentStudyRegionEvent());
      }
    });
   
    studyRegion.setStyleName("studyRegionTitle");
   
    hPanel = new HorizontalPanel();
    hPanel.add(title);
    hPanel.add(studyRegion);
   
    vPanel = new VerticalPanel();
    vPanel.add(hPanel);
   
    panel = new TabPanel();
   
    panel.add(tagListing , "Tags");
    panel.add(roadListing, "Roads");
    panel.add(zoneListing, "Zones");
   
    panel.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() {
     
      @Override
      public void onBeforeSelection(BeforeSelectionEvent<Integer> event) {
       
        try {
          // 0 = Tags, 1 = Roads, 2 = Zones
          // TODO: place before Tab select
                GWT.log("TAG get tags, roads and zones");
                int almostSelected = event.getItem();
          switch (almostSelected) {
          case 0:
            eventBus.fireEvent(new GetTagsEvent());
                if( !tagListing.isVisible())
            {
              showTags();
            }
            break;
          case 1:
            eventBus.fireEvent(new GetRoadsEvent());
            if( !roadListing.isVisible())
            {
              showRoads();
            }
            break;
          case 2:
            eventBus.fireEvent(new GetZonesEvent());
            if( !zoneListing.isVisible())
            {
              showZones();
            }
            break;
          default:
            // do nothing
            break;
          }
        } catch (Exception e)
        {
          e.printStackTrace();
          GWT.log("An unknown exception occured:" + e.getMessage());
        }
      }
    });
   
    panel.addSelectionHandler(new SelectionHandler<Integer>() {
     
      @Override
      public void onSelection(SelectionEvent<Integer> event) {
       
      }
    });
   
    panel.setWidth("400px");
   
    vPanel.add(panel);
   
    initWidget(vPanel);
   
    bind();
   
    // select the Tags tab (and trigger tag loading)
    // once the DOM is ready
    DeferredCommand.addCommand(new Command() {
     
      @Override
      public void execute() {
        // TODO Auto-generated method stub
        panel.selectTab(0);
      }
    });
    //
   
  }
 
  public void bind()
  {
   
    eventBus.addHandler(CurrentStudyRegionUpdatedEvent.TYPE, new CurrentStudyRegionUpdatedEventHandler() {
     
      @Override
      public void onUpdate(CurrentStudyRegionUpdatedEvent event) {
        currentStudyRegion = event.studyRegion;
        if (currentStudyRegion != null){
          studyRegion.setText(currentStudyRegion.getName());
        } else {
          studyRegion.setText("<Not Set>");
        }
        panel.selectTab(0);
 
      }
    })
   
    /*
    eventBus.addHandler(ReceivedTagsEvent.TYPE,
      new ReceivedTagsEventHandler() {
        @Override
        public void onReceivedTags(ReceivedTagsEvent event) {
          // transfer tagDetailsList from TagListing to RoadListing
          ArrayList<TagDetails> tagDetailsList = tagListing.getTagDetailsList();
          roadListing.setTagDetails(tagDetailsList);
        }
    });
    */
   
    eventBus.addHandler(CreatePolyLineEvent.TYPE,
      new CreatePolyLineEventHandler() {
          public void onCreatePolyLine(CreatePolyLineEvent event) {
                // switch tab to roads
            panel.selectTab(1);
            roadListing.clearRoadEditView();
        }
    });
    eventBus.addHandler(CreatePolygonEvent.TYPE,
      new CreatePolygonEventHandler() {
          public void onCreatePolygon(CreatePolygonEvent event) {
                // switch tab to zones
            panel.selectTab(2);
        }
    });   
    eventBus.addHandler(EditRoadDetailsBySegmentEvent.TYPE,
      new EditRoadDetailsBySegmentEventHandler() {
        public void onEditRoadDetailsBySegment(EditRoadDetailsBySegmentEvent event) {
          panel.selectTab(1); // switch to roads
        }
    });
  }
 
  public void showTags()
  {
    eventBus.fireEvent(new ShowTagsEvent());
  }
 
  public void showRoads()
  {
    eventBus.fireEvent(new ShowRoadsEvent());
  }
 
  public void showZones()
  {
    eventBus.fireEvent(new ShowZonesEvent());
  }
 
  public HashMap<String, ArrayList<Vertex>> getRoadListingVertexHash() {
    return roadListing.getVertexHash();
  }
 
  public void setCurrentTagPolyline(TagPolyline polyline)
  {
    roadListing.currentPolyline = polyline;
  }
}
TOP

Related Classes of org.worldbank.transport.tamt.client.tag.TagInformation

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.