private void bindEvents() { searchPresenter .getStore() .addStoreListener( new StoreListener<LocationDTO>() { @Override public void storeDataChanged(StoreEvent<LocationDTO> event) { updateSearchMarkers(); } }); searchPresenter.addListener( Events.Select, new Listener<LocationEvent>() { @Override public void handleEvent(LocationEvent event) { if (event.getSource() != LocationMap.this) { onLocationSelected(event.getLocation()); } } }); newLocationPresenter.addListener( NewLocationPresenter.ACTIVE_STATE_CHANGED, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { onModeChanged(); } }); newLocationPresenter.addListener( NewLocationPresenter.POSITION_CHANGED, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { onNewLocationPosChanged(); } }); newLocationPresenter.addListener( NewLocationPresenter.BOUNDS_CHANGED, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { if (newLocationPresenter.isActive()) { LatLngBounds newBounds = LeafletUtil.newLatLngBounds(newLocationPresenter.getBounds()); map.fitBounds(newBounds); } } }); }
private void onModeChanged() { if (newLocationPresenter.isActive()) { if (newLocationMarker == null) { createNewLocationMarker(); } newLocationMarker.setOpacity(1); panToNewLocation(); } else if (newLocationMarker != null) { newLocationMarker.setOpacity(0); } }
private void createNewLocationMarker() { DivIcon icon = createIcon(""); Options markerOptions = new Options(); markerOptions.setProperty("icon", icon); markerOptions.setProperty("draggable", true); newLocationMarker = new Marker(newLatLng(newLocationPresenter.getLatLng()), markerOptions); EventHandlerManager.addEventHandler( newLocationMarker, org.discotools.gwt.leaflet.client.events.handler.EventHandler.Events.dragend, new EventHandler<Event>() { @Override public void handle(Event event) { newLocationPresenter.setLatLng( new AiLatLng( newLocationMarker.getLatLng().lat(), newLocationMarker.getLatLng().lng())); } }); map.addLayer(newLocationMarker); }
private void onNewLocationPosChanged() { if (newLocationMarker != null) { Log.debug("New marker pos: " + newLocationPresenter.getLatLng()); newLocationMarker.setLatLng(newLatLng(newLocationPresenter.getLatLng())); } }