2020-10-23 18:18:06 +02:00
|
|
|
package org.gcube.portlets.user.geoportaldataviewer.client;
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
import java.util.Iterator;
|
2021-11-12 12:37:15 +01:00
|
|
|
import java.util.List;
|
2020-11-03 13:09:08 +01:00
|
|
|
|
2020-12-02 14:39:52 +01:00
|
|
|
import org.gcube.application.geoportalcommon.shared.GeoNaDataViewerProfile;
|
|
|
|
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
2020-12-02 14:43:08 +01:00
|
|
|
import org.gcube.application.geoportalcommon.shared.LayerItem;
|
2021-08-02 15:20:01 +02:00
|
|
|
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
|
|
|
import org.gcube.application.geoportalcommon.shared.products.model.RecordDV;
|
2021-09-01 12:51:06 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION;
|
2021-08-31 18:21:17 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MapEventType;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEvent;
|
2021-10-14 11:34:04 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEvent.LAYER_TYPE;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEventHandler;
|
2021-11-12 12:37:15 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ChangeMapLayerEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ChangeMapLayerEventHandler;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEventHandler;
|
2021-10-14 11:34:04 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.DO_LAYER_ACTION;
|
2021-10-15 17:51:09 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.SwapLayer;
|
2021-10-14 11:34:04 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEventHandler;
|
2021-09-01 16:26:07 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEventHandler;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEvent;
|
2020-11-03 13:09:08 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEventHandler;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEventHandler;
|
2021-09-08 14:40:36 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.gis.ExtentWrapped;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.gis.MapUtils;
|
2021-11-12 14:54:54 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerMap;
|
2020-10-23 18:18:06 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.ui.GeonaDataViewMainPanel;
|
2021-09-07 17:29:56 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil;
|
2021-11-12 12:37:15 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery;
|
2020-10-23 18:18:06 +02:00
|
|
|
|
|
|
|
import com.google.gwt.core.client.EntryPoint;
|
|
|
|
import com.google.gwt.core.client.GWT;
|
|
|
|
import com.google.gwt.core.client.Scheduler;
|
|
|
|
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
2021-07-19 18:04:14 +02:00
|
|
|
import com.google.gwt.core.client.ScriptInjector;
|
2020-10-26 11:01:07 +01:00
|
|
|
import com.google.gwt.event.logical.shared.ResizeEvent;
|
|
|
|
import com.google.gwt.event.logical.shared.ResizeHandler;
|
2020-11-03 13:09:08 +01:00
|
|
|
import com.google.gwt.event.shared.HandlerManager;
|
2020-12-02 18:48:12 +01:00
|
|
|
import com.google.gwt.user.client.Timer;
|
2020-10-26 11:01:07 +01:00
|
|
|
import com.google.gwt.user.client.Window;
|
2020-11-03 13:09:08 +01:00
|
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
2021-11-11 16:32:49 +01:00
|
|
|
import com.google.gwt.user.client.ui.HTML;
|
2020-10-23 18:18:06 +02:00
|
|
|
import com.google.gwt.user.client.ui.RootPanel;
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
import ol.Coordinate;
|
|
|
|
|
2020-10-23 18:18:06 +02:00
|
|
|
/**
|
|
|
|
* Entry point classes define <code>onModuleLoad()</code>.
|
2020-10-27 16:04:34 +01:00
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
|
|
|
*
|
2021-09-02 12:54:39 +02:00
|
|
|
* Oct 27, 2020
|
2020-10-23 18:18:06 +02:00
|
|
|
*/
|
|
|
|
public class GeoportalDataViewer implements EntryPoint {
|
2020-10-27 16:04:34 +01:00
|
|
|
|
|
|
|
/** The Constant APP_DIV. */
|
|
|
|
public final static String APP_DIV = "geoportal-data-viewer";
|
|
|
|
|
|
|
|
/** The ol map. */
|
2021-11-12 14:54:54 +01:00
|
|
|
// private OpenLayerMap olMap = null;
|
2020-10-27 16:04:34 +01:00
|
|
|
|
|
|
|
/** The main panel. */
|
|
|
|
private GeonaDataViewMainPanel mainPanel;
|
|
|
|
|
|
|
|
/** The param wms request. */
|
|
|
|
private String paramWmsRequest;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-10-27 16:04:34 +01:00
|
|
|
/** The param UUID. */
|
2021-09-02 12:54:39 +02:00
|
|
|
// private String paramUUID;
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
private String paramGeonaItemType;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-10-27 16:04:34 +01:00
|
|
|
/** The param layer title. */
|
|
|
|
private String paramLayerTitle;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
private HandlerManager applicationBus = new HandlerManager("");
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-10-27 16:04:34 +01:00
|
|
|
/** The layer manager. */
|
2020-11-19 15:19:27 +01:00
|
|
|
private LayerManager layerManager = new LayerManager(applicationBus);
|
|
|
|
|
|
|
|
private String paramGeonaItemID;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
private GeoNaDataViewerProfile geonaDataViewerProfile;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
private OLMapManager olMapMng = null;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-12-02 18:48:12 +01:00
|
|
|
int attempt = 0;
|
2021-11-12 12:37:15 +01:00
|
|
|
|
2021-11-18 15:55:05 +01:00
|
|
|
//private LoaderIcon loaderApp = new LoaderIcon("Loading application....");
|
2021-11-12 12:37:15 +01:00
|
|
|
|
|
|
|
private HTML attributionDiv = new HTML();
|
2021-11-16 14:07:59 +01:00
|
|
|
|
|
|
|
private static List<BaseMapLayer> listBaseMapLayers = null;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-10-27 16:04:34 +01:00
|
|
|
/**
|
|
|
|
* This is the entry point method.
|
|
|
|
*/
|
|
|
|
public void onModuleLoad() {
|
2021-11-12 12:37:15 +01:00
|
|
|
|
2021-11-18 15:55:05 +01:00
|
|
|
// Style style = loaderApp.getElement().getStyle();
|
|
|
|
// style.setZIndex(300);
|
|
|
|
// style.setMarginTop(50,Unit.PX);
|
|
|
|
// style.setMarginLeft(50, Unit.PX);
|
2021-11-12 12:37:15 +01:00
|
|
|
|
|
|
|
paramWmsRequest = Window.Location.getParameter(GeoportalDataViewerConstants.GET_WMS_PARAMETER);
|
|
|
|
paramGeonaItemType = Window.Location.getParameter(GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE);
|
|
|
|
paramGeonaItemID = Window.Location.getParameter(GeoportalDataViewerConstants.GET_GEONA_ITEM_ID);
|
|
|
|
paramLayerTitle = Window.Location.getParameter(GeoportalDataViewerConstants.GET_LAYER_TITLE);
|
|
|
|
GWT.log(GeoportalDataViewerConstants.GET_WMS_PARAMETER + " = " + paramWmsRequest);
|
|
|
|
GWT.log(GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE + " = " + paramGeonaItemType);
|
|
|
|
GWT.log(GeoportalDataViewerConstants.GET_GEONA_ITEM_ID + " = " + paramGeonaItemID);
|
|
|
|
GWT.log(GeoportalDataViewerConstants.GET_LAYER_TITLE + " = " + paramLayerTitle);
|
|
|
|
|
2021-11-18 15:55:05 +01:00
|
|
|
//RootPanel.get(APP_DIV).add(loaderApp);
|
2021-11-12 12:37:15 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
mainPanel = new GeonaDataViewMainPanel(applicationBus, getClientHeight());
|
2020-10-27 16:04:34 +01:00
|
|
|
RootPanel.get(APP_DIV).add(mainPanel);
|
2021-07-21 17:08:45 +02:00
|
|
|
|
|
|
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
@Override
|
2021-07-21 17:08:45 +02:00
|
|
|
public void execute() {
|
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
//LOADING THE BASE MAP LAYERS
|
|
|
|
GeoportalDataViewerServiceAsync.Util.getInstance().getListBaseLayers(new AsyncCallback<List<BaseMapLayer>>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
2021-11-18 15:55:05 +01:00
|
|
|
//RootPanel.get(APP_DIV).remove(loaderApp);
|
2021-11-12 12:37:15 +01:00
|
|
|
Window.alert("Error occurred on instancing the GeoPortale Viewer. Please, contact the support");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSuccess(List<BaseMapLayer> listBaseMapLayers) {
|
2021-11-18 15:55:05 +01:00
|
|
|
//RootPanel.get(APP_DIV).remove(loaderApp);
|
2021-11-16 14:07:59 +01:00
|
|
|
GeoportalDataViewer.listBaseMapLayers = listBaseMapLayers;
|
2021-11-12 14:54:54 +01:00
|
|
|
//now the map is loaded and I'm sure that I can load the GeonaDataViewer Profile
|
2021-11-12 12:37:15 +01:00
|
|
|
loadGeonaDataViewerProfile();
|
|
|
|
mainPanel.setBaseLayers(listBaseMapLayers);
|
|
|
|
|
|
|
|
BaseMapLayer firstBaseLayer = listBaseMapLayers.get(0);
|
|
|
|
//Passing the first base map layer that will be applied as first base layer
|
|
|
|
olMapMng = new OLMapManager(mainPanel.getMapPanel().getElement().getId(),
|
|
|
|
layerManager.getLayerManagerBus(), firstBaseLayer);
|
2021-11-12 14:54:54 +01:00
|
|
|
OpenLayerMap olMap = olMapMng.getOLMap();
|
2021-11-12 16:57:57 +01:00
|
|
|
layerManager.setOLMap(olMap);
|
2021-11-12 14:54:54 +01:00
|
|
|
mainPanel.setMap(olMap);
|
2021-11-12 12:37:15 +01:00
|
|
|
|
|
|
|
updateSize();
|
|
|
|
ScriptInjector.fromUrl("//cdnjs.cloudflare.com/ajax/libs/nanogallery2/3.0.5/jquery.nanogallery2.min.js")
|
|
|
|
.setWindow(ScriptInjector.TOP_WINDOW).inject();
|
|
|
|
|
|
|
|
}
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
|
|
|
|
});
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-07-21 17:08:45 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
Window.addResizeHandler(new ResizeHandler() {
|
|
|
|
@Override
|
|
|
|
public void onResize(ResizeEvent event) {
|
|
|
|
updateSize();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
|
2021-07-21 17:08:45 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
bindEvents();
|
|
|
|
|
|
|
|
RootPanel.get(APP_DIV).add(attributionDiv);
|
|
|
|
}
|
|
|
|
|
2021-11-16 14:07:59 +01:00
|
|
|
public static List<BaseMapLayer> getListBaseMapLayers() {
|
|
|
|
return listBaseMapLayers;
|
|
|
|
}
|
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
private void loadGeonaDataViewerProfile() {
|
|
|
|
|
2021-07-21 17:08:45 +02:00
|
|
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void execute() {
|
|
|
|
GeoportalDataViewerServiceAsync.Util.getInstance()
|
|
|
|
.getGeoNaDataViewProfile(new AsyncCallback<GeoNaDataViewerProfile>() {
|
2021-07-19 18:04:14 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
Window.alert(caught.getMessage());
|
2021-07-21 17:08:45 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
2021-07-19 18:04:14 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSuccess(GeoNaDataViewerProfile profile) {
|
|
|
|
geonaDataViewerProfile = profile;
|
2021-07-21 17:08:45 +02:00
|
|
|
GWT.log("Profile: " + geonaDataViewerProfile);
|
2021-07-19 18:04:14 +02:00
|
|
|
Iterator<String> it;
|
|
|
|
String theItemType = paramGeonaItemType;
|
2021-07-21 17:08:45 +02:00
|
|
|
if (theItemType == null) {
|
2021-07-19 18:04:14 +02:00
|
|
|
it = geonaDataViewerProfile.getMapLayers().keySet().iterator();
|
|
|
|
it.hasNext();
|
2021-07-21 17:08:45 +02:00
|
|
|
theItemType = it.next();
|
2021-07-19 18:04:14 +02:00
|
|
|
}
|
2021-07-21 17:08:45 +02:00
|
|
|
|
2021-07-19 18:04:14 +02:00
|
|
|
LayerItem layerItem = geonaDataViewerProfile.getMapLayers().get(theItemType);
|
2021-07-21 17:08:45 +02:00
|
|
|
|
|
|
|
if (layerItem == null) {
|
|
|
|
Window.alert("Not detected any layer with type: " + theItemType);
|
2021-07-19 18:04:14 +02:00
|
|
|
return;
|
|
|
|
}
|
2021-07-21 17:08:45 +02:00
|
|
|
|
2021-09-07 17:29:56 +02:00
|
|
|
GWT.log("ON module load The layerItem is: " + layerItem);
|
|
|
|
String layerName = URLUtil.getValueOfParameter("layers", layerItem.getWmsLink());
|
|
|
|
layerItem.setName(layerName);
|
|
|
|
layerManager.setBaseLayerFromIsProfile(layerItem);
|
2021-07-21 17:08:45 +02:00
|
|
|
layerManager.addLayer(theItemType, null, null, layerItem.getWmsLink(), false, false,
|
2021-10-14 11:34:04 +02:00
|
|
|
null, false, null, null, null);
|
2021-07-21 17:08:45 +02:00
|
|
|
|
|
|
|
if (paramGeonaItemID != null) {
|
|
|
|
if (paramGeonaItemType == null) {
|
|
|
|
Window.alert(
|
|
|
|
"Missing parameter " + GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE
|
|
|
|
+ " (GeoNa Data Type) where to search the item id: "
|
|
|
|
+ paramGeonaItemID);
|
2021-07-19 18:04:14 +02:00
|
|
|
return;
|
|
|
|
}
|
2021-07-30 14:57:08 +02:00
|
|
|
GeoNaItemRef gir = new GeoNaItemRef(paramGeonaItemID, paramGeonaItemType);
|
2021-07-19 18:04:14 +02:00
|
|
|
applicationBus.fireEvent(new ShowDetailsEvent(gir, null, null));
|
|
|
|
}
|
2021-07-21 17:08:45 +02:00
|
|
|
|
2021-07-19 18:04:14 +02:00
|
|
|
}
|
|
|
|
});
|
2020-10-27 16:04:34 +01:00
|
|
|
}
|
2021-07-21 17:08:45 +02:00
|
|
|
});
|
2021-11-12 12:37:15 +01:00
|
|
|
|
2020-11-03 13:09:08 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* Update window size.
|
|
|
|
*/
|
|
|
|
public void updateSize() {
|
2020-11-03 13:09:08 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
int rootHeight = getClientHeight();
|
|
|
|
int height = rootHeight;
|
|
|
|
mainPanel.setPanelsHeight(height);
|
2021-09-02 12:54:39 +02:00
|
|
|
GWT.log("Set height: " + height);
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
public int getClientHeight() {
|
|
|
|
RootPanel principalDiv = RootPanel.get(APP_DIV);
|
|
|
|
int topBorder = principalDiv.getAbsoluteTop();
|
|
|
|
int rootHeight = Window.getClientHeight() - topBorder;
|
|
|
|
return rootHeight;
|
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* Bind events.
|
|
|
|
*/
|
2020-11-03 13:09:08 +01:00
|
|
|
private void bindEvents() {
|
2020-11-19 15:19:27 +01:00
|
|
|
|
|
|
|
applicationBus.addHandler(ShowDetailsEvent.TYPE, new ShowDetailsEventHandler() {
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-03 13:09:08 +01:00
|
|
|
@Override
|
|
|
|
public void onShowDetails(ShowDetailsEvent showDetailsEvent) {
|
2021-09-02 12:54:39 +02:00
|
|
|
GWT.log("Fired event: " + showDetailsEvent);
|
|
|
|
|
2021-07-30 14:57:08 +02:00
|
|
|
String geonaMongoId = showDetailsEvent.getGeonaMongoID();
|
2020-11-19 15:19:27 +01:00
|
|
|
|
2021-09-02 12:54:39 +02:00
|
|
|
if (geonaMongoId == null) {
|
2020-11-19 15:19:27 +01:00
|
|
|
Window.alert("Item Id not found");
|
|
|
|
return;
|
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
|
|
|
// TODO
|
2020-11-19 15:19:27 +01:00
|
|
|
boolean found = false;
|
2021-09-02 12:54:39 +02:00
|
|
|
GWT.log("Product with id: " + geonaMongoId + " found? " + found);
|
|
|
|
|
|
|
|
if (!found) {
|
|
|
|
|
|
|
|
if (showDetailsEvent.getGeonaItemType().equalsIgnoreCase("Concessione")) {
|
|
|
|
|
|
|
|
GeoportalDataViewerServiceAsync.Util.getInstance().getConcessioneForId(geonaMongoId,
|
|
|
|
new AsyncCallback<ConcessioneDV>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
Window.alert(caught.getMessage());
|
|
|
|
mainPanel.hidePanelDetails();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSuccess(ConcessioneDV concessioneDV) {
|
|
|
|
GWT.log("Showing: " + concessioneDV);
|
|
|
|
mainPanel.showAsDetails(concessioneDV, showDetailsEvent.getGeonaItemRef());
|
|
|
|
}
|
|
|
|
});
|
2020-11-03 13:09:08 +01:00
|
|
|
}
|
|
|
|
}
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
});
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
applicationBus.addHandler(AddedLayerToMapEvent.TYPE, new AddedLayerToMapEventHandler() {
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
@Override
|
|
|
|
public void onLayerRendered(AddedLayerToMapEvent addedLayerToMapEvent) {
|
2021-10-14 11:34:04 +02:00
|
|
|
GWT.log("Fired AddedLayerToMapEvent " + addedLayerToMapEvent.getLayerItem() + "layer type: "+addedLayerToMapEvent.getLayerType());
|
2021-11-12 16:57:57 +01:00
|
|
|
|
2020-12-02 18:48:12 +01:00
|
|
|
try {
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-12-02 18:48:12 +01:00
|
|
|
attempt = 0;
|
2021-09-02 12:54:39 +02:00
|
|
|
|
|
|
|
if (paramGeonaItemID != null) {
|
|
|
|
// waiting for record retrieved by service before calling the WFS
|
2021-10-06 16:03:41 +02:00
|
|
|
final int MAX_RETRY = 15;
|
2020-12-02 18:48:12 +01:00
|
|
|
Timer timer = new com.google.gwt.user.client.Timer() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
attempt++;
|
2021-09-08 17:13:59 +02:00
|
|
|
GWT.log("waiting get record: " + attempt);
|
2020-12-02 18:48:12 +01:00
|
|
|
RecordDV record = mainPanel.getDisplyedRecord();
|
2021-09-02 12:54:39 +02:00
|
|
|
if (record != null) {
|
2020-12-02 18:48:12 +01:00
|
|
|
this.cancel();
|
|
|
|
GWT.log("cancelled timer");
|
2020-12-04 15:06:32 +01:00
|
|
|
performWFSQueryOnCentroid(record);
|
2020-12-02 18:48:12 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
|
|
|
if (attempt > MAX_RETRY) {
|
2020-12-11 09:51:20 +01:00
|
|
|
GWT.log("MAX_RETRY reached, cancelled timer");
|
2020-12-02 18:48:12 +01:00
|
|
|
this.cancel();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|
|
|
|
timer.scheduleRepeating(1000);
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
} catch (Exception e) {
|
2020-12-02 18:48:12 +01:00
|
|
|
// TODO: handle exception
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
LAYER_TYPE layerType = addedLayerToMapEvent.getLayerType();
|
|
|
|
|
|
|
|
if (layerType != null) {
|
|
|
|
|
|
|
|
switch (layerType) {
|
|
|
|
case BASE:
|
|
|
|
|
|
|
|
break;
|
|
|
|
case OVERLAY:
|
|
|
|
mainPanel.showOverlayLayers(layerManager.getOverlayLayerManager().getPanel());
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
|
|
|
});
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
applicationBus.addHandler(ZoomOutOverMinimumEvent.TYPE, new ZoomOutOverMinimumEventHandler() {
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
@Override
|
|
|
|
public void onZoomOut(ZoomOutOverMinimumEvent zoomOutEvent) {
|
2021-09-02 12:54:39 +02:00
|
|
|
|
|
|
|
if (mainPanel.getDisplyedRecord() == null && !olMapMng.isQueryPointActive()) {
|
2020-11-19 15:19:27 +01:00
|
|
|
olMapMng.hidePopInfo();
|
2021-09-08 14:40:36 +02:00
|
|
|
layerManager.removeAllDetailLayers();
|
2021-10-14 11:34:04 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
mainPanel.hideOverlayLayers();
|
|
|
|
// layerManager.getOverlayLayerManager().hide();
|
|
|
|
// hidePopupLayers();
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
}
|
|
|
|
});
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
applicationBus.addHandler(ClosedViewDetailsEvent.TYPE, new ClosedViewDetailsEventHandler() {
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
@Override
|
|
|
|
public void onClosed(ClosedViewDetailsEvent closedViewDetailsEvent) {
|
|
|
|
olMapMng.hidePopInfo();
|
2020-11-03 13:09:08 +01:00
|
|
|
}
|
|
|
|
});
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2021-09-01 16:26:07 +02:00
|
|
|
applicationBus.addHandler(MapExtentToEvent.TYPE, new MapExtentToEventHandler() {
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2021-09-01 16:26:07 +02:00
|
|
|
@Override
|
|
|
|
public void onExtentEvent(MapExtentToEvent mapExtentToEvent) {
|
|
|
|
// TODO Auto-generated method stub
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2021-09-01 16:26:07 +02:00
|
|
|
}
|
|
|
|
});
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
applicationBus.addHandler(DoActionOnDetailLayersEvent.TYPE, new DoActionOnDetailLayersEventHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDoActionOnDetailLayers(DoActionOnDetailLayersEvent doLayerActionEvent) {
|
|
|
|
|
|
|
|
DO_LAYER_ACTION doAction = doLayerActionEvent.getDoAction();
|
|
|
|
GWT.log("event: "+doAction);
|
|
|
|
GWT.log("layer source: "+doLayerActionEvent.getLayerItem().getName());
|
2021-11-12 14:54:54 +01:00
|
|
|
OpenLayerMap olMap = olMapMng.getOLMap();
|
2021-10-14 11:34:04 +02:00
|
|
|
|
|
|
|
switch (doAction) {
|
|
|
|
case OPACITY:
|
|
|
|
GWT.log("opacity: "+doLayerActionEvent.getOpacity());
|
|
|
|
olMap.setWMSDetailLayerOpacity(doLayerActionEvent.getLayerItem(),
|
|
|
|
doLayerActionEvent.getOpacity());
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SWAP:
|
2021-10-15 17:51:09 +02:00
|
|
|
SwapLayer swLS = doLayerActionEvent.getSourceLayerSwap();
|
|
|
|
SwapLayer swLT = doLayerActionEvent.getTargetLayerSwap();
|
|
|
|
GWT.log("SWAPPING source "+swLS.getLayerItem().getName() +", target: "+swLT.getLayerItem().getName());
|
|
|
|
olMap.swapDetailsLayers(swLS, swLT);
|
2021-10-14 11:34:04 +02:00
|
|
|
break;
|
|
|
|
|
|
|
|
case VISIBILITY:
|
|
|
|
GWT.log("visibility: "+doLayerActionEvent.getVisibility());
|
|
|
|
olMap.setWMSDetailLayerVisible(doLayerActionEvent.getLayerItem(),
|
|
|
|
doLayerActionEvent.getVisibility());
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
2021-11-12 12:37:15 +01:00
|
|
|
|
|
|
|
|
|
|
|
applicationBus.addHandler(ChangeMapLayerEvent.TYPE, new ChangeMapLayerEventHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onChangeBaseMapLayer(ChangeMapLayerEvent changeMapLayerEvent) {
|
|
|
|
|
|
|
|
BaseMapLayer baseLayer = changeMapLayerEvent.getBaseMapLayer();
|
|
|
|
|
|
|
|
if (baseLayer == null)
|
|
|
|
return;
|
|
|
|
|
|
|
|
String attributionHTML = "<div class='map-credits'><div class='map-credits-container'>"
|
|
|
|
+ baseLayer.getAttribution() + "</div></div>";
|
2021-11-12 14:54:54 +01:00
|
|
|
olMapMng.getOLMap().changeBaseMap(baseLayer);
|
2021-11-12 16:57:57 +01:00
|
|
|
|
|
|
|
// THE OSM Contributors are automatically added by gwt-ol, others ones not.
|
|
|
|
if (!baseLayer.getType().equals(BaseMapLayer.OL_BASE_MAP.OSM)) {
|
2021-11-12 12:37:15 +01:00
|
|
|
attributionDiv.setHTML(attributionHTML);
|
2021-11-12 16:57:57 +01:00
|
|
|
} else
|
2021-11-12 12:37:15 +01:00
|
|
|
attributionDiv.setHTML("");
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
2021-10-14 11:34:04 +02:00
|
|
|
|
2020-10-27 16:04:34 +01:00
|
|
|
}
|
2021-09-02 12:54:39 +02:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
// /**
|
|
|
|
// * Handler popu closer.
|
|
|
|
// *
|
|
|
|
// * @param divId the div id
|
|
|
|
// * @param overlayId the overlay id
|
|
|
|
// */
|
|
|
|
// public static native void handlerPopuCloser(String divId, String overlayId) /*-{
|
|
|
|
// var closer = $doc.getElementById(divId);
|
|
|
|
// var overlay = $doc.getElementById(overlayId);
|
|
|
|
// closer.onclick = function() {
|
|
|
|
// overlay.setPosition(undefined);
|
|
|
|
// closer.blur();
|
|
|
|
// return false;
|
|
|
|
// };
|
|
|
|
//
|
|
|
|
// }-*/;
|
|
|
|
|
2020-12-04 15:06:32 +01:00
|
|
|
private void performWFSQueryOnCentroid(RecordDV record) {
|
2021-09-02 12:54:39 +02:00
|
|
|
if (record != null) {
|
|
|
|
GWT.log("record instanceof ConcessioneDV: " + (record instanceof ConcessioneDV) + " with mongo item id: "
|
|
|
|
+ record.getItemId());
|
|
|
|
// GeoportalDataViewerConstants.print("record instanceof ConcessioneDV: "
|
|
|
|
// +(record instanceof ConcessioneDV));
|
|
|
|
if (record instanceof ConcessioneDV) {
|
2020-12-02 18:48:12 +01:00
|
|
|
ConcessioneDV concessioneDV = (ConcessioneDV) record;
|
|
|
|
Double x = concessioneDV.getCentroidLong();
|
|
|
|
Double y = concessioneDV.getCentroidLat();
|
2021-09-02 12:54:39 +02:00
|
|
|
GWT.log("X: " + x + ", Y:" + y);
|
|
|
|
if (x != null && y != null) {
|
|
|
|
Coordinate transfCoord = MapUtils.transformCoordiante(new Coordinate(x, y),
|
|
|
|
MAP_PROJECTION.EPSG_4326.getName(), MAP_PROJECTION.EPSG_3857.getName());
|
|
|
|
GeoQuery select = olMapMng.toDataPointQuery(transfCoord, false);
|
|
|
|
GWT.log("GeoQuery: " + select);
|
|
|
|
// GeoportalDataViewerConstants.print("fireEvent QueryDataEvent");
|
2021-10-14 11:34:04 +02:00
|
|
|
ExtentWrapped toExt = new ExtentWrapped(transfCoord.getX(), transfCoord.getY(), transfCoord.getX(),
|
|
|
|
transfCoord.getY());
|
|
|
|
layerManager.getLayerManagerBus().fireEvent(new QueryDataEvent(select, toExt, record.getItemId(),
|
|
|
|
true, MapEventType.ADDED_CENTROID_LAYER_TO_MAP));
|
2021-09-02 12:54:39 +02:00
|
|
|
} else {
|
|
|
|
GeoportalDataViewerConstants.printJs(
|
|
|
|
"I cannot select the point one or both coordiantes are null. X: " + x + ", Y:" + y);
|
2020-12-11 09:51:20 +01:00
|
|
|
}
|
2020-12-02 18:48:12 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-10-26 11:01:07 +01:00
|
|
|
|
2020-10-23 18:18:06 +02:00
|
|
|
}
|