Improved UI experience adding several animations on interaction with the
map
This commit is contained in:
parent
78e939c787
commit
67b93db8af
|
@ -31,6 +31,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.SearchPerformedEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.SearchPerformedEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.SearchPerformedEventHandler;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.SearchPerformedEventHandler;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
||||||
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent.EVENT_SOURCE;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEventHandler;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEventHandler;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEventHandler;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEventHandler;
|
||||||
|
@ -246,7 +247,7 @@ public class GeoportalDataViewer implements EntryPoint {
|
||||||
}
|
}
|
||||||
GeoportalItemReferences gir = new GeoportalItemReferences(paramGeonaItemID,
|
GeoportalItemReferences gir = new GeoportalItemReferences(paramGeonaItemID,
|
||||||
paramGeonaItemType);
|
paramGeonaItemType);
|
||||||
applicationBus.fireEvent(new ShowDetailsEvent(gir, null, true));
|
applicationBus.fireEvent(new ShowDetailsEvent(gir, null, true, true, EVENT_SOURCE.LOCATE_ON_INIT));
|
||||||
}
|
}
|
||||||
|
|
||||||
mainPanel.openCollectionMenu();
|
mainPanel.openCollectionMenu();
|
||||||
|
@ -388,8 +389,15 @@ public class GeoportalDataViewer implements EntryPoint {
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
GWT.log("Product with id: " + projectID + " found? " + found);
|
GWT.log("Product with id: " + projectID + " found? " + found);
|
||||||
|
|
||||||
if (!showDetailsEvent.isEventFromTimeline())
|
final EVENT_SOURCE sourceEvent = showDetailsEvent.getSourceEvent();
|
||||||
|
|
||||||
|
if(!sourceEvent.equals(EVENT_SOURCE.LOCATE_FROM_TIMELINE)) {
|
||||||
timelineMS.hideTimelineProjectRelations();
|
timelineMS.hideTimelineProjectRelations();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sourceEvent.equals(EVENT_SOURCE.LOCATE_SEARCHED)) {
|
||||||
|
layerManager.removeAllDetailLayers();
|
||||||
|
}
|
||||||
|
|
||||||
GeoportalDataViewerServiceAsync.Util.getInstance().getProjectViewForId(profileID, projectID,
|
GeoportalDataViewerServiceAsync.Util.getInstance().getProjectViewForId(profileID, projectID,
|
||||||
new AsyncCallback<ProjectView>() {
|
new AsyncCallback<ProjectView>() {
|
||||||
|
@ -412,6 +420,10 @@ public class GeoportalDataViewer implements EntryPoint {
|
||||||
GWT.log("LoadTimelineRelationships is true and the project has Relationships");
|
GWT.log("LoadTimelineRelationships is true and the project has Relationships");
|
||||||
timelineMS.showTimelineProjectRelations(result.getTheProjectDV(), false);
|
timelineMS.showTimelineProjectRelations(result.getTheProjectDV(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(sourceEvent.equals(EVENT_SOURCE.LOCATE_ON_INIT)) {
|
||||||
|
layerManager.fireGoToLayers();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -73,10 +73,6 @@ public class GeoportalDataViewerConstants {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum RECORD_TYPE {
|
|
||||||
CONCESSIONE
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final double ITALY_CENTER_LONG = 12.45;
|
public static final double ITALY_CENTER_LONG = 12.45;
|
||||||
|
|
||||||
public static final double ITALY_CENTER_LAT = 42.98;
|
public static final double ITALY_CENTER_LAT = 42.98;
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMap
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEventHandler;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEventHandler;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
||||||
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent.EVENT_SOURCE;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEventHandler;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEventHandler;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.gis.ExtentWrapped;
|
import org.gcube.portlets.user.geoportaldataviewer.client.gis.ExtentWrapped;
|
||||||
|
@ -62,6 +63,7 @@ import com.google.gwt.user.client.Element;
|
||||||
import com.google.gwt.user.client.Event;
|
import com.google.gwt.user.client.Event;
|
||||||
import com.google.gwt.user.client.EventListener;
|
import com.google.gwt.user.client.EventListener;
|
||||||
import com.google.gwt.user.client.Random;
|
import com.google.gwt.user.client.Random;
|
||||||
|
import com.google.gwt.user.client.Timer;
|
||||||
import com.google.gwt.user.client.Window;
|
import com.google.gwt.user.client.Window;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.FlexTable;
|
import com.google.gwt.user.client.ui.FlexTable;
|
||||||
|
@ -190,14 +192,24 @@ public class LayerManager {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<GeoNaSpatialQueryResult> listGeonaDataObjects) {
|
public void onSuccess(List<GeoNaSpatialQueryResult> listGeonaDataObjects) {
|
||||||
|
|
||||||
GWT.log("GeoNaDataObject's is/are " + listGeonaDataObjects.size());
|
if (listGeonaDataObjects == null)
|
||||||
|
|
||||||
if (listGeonaDataObjects == null || listGeonaDataObjects.isEmpty())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
List<FeatureRow> theFeatures = null;
|
GWT.log("GeoNaDataObject's is/are " + listGeonaDataObjects.size());
|
||||||
|
|
||||||
MapEventType sourceEvent = queryEvent.getSourceMapEventType();
|
MapEventType sourceEvent = queryEvent.getSourceMapEventType();
|
||||||
|
GWT.log("sourceEvent is: " + sourceEvent);
|
||||||
|
if (sourceEvent.equals(MapEventType.ADDED_CENTROID_LAYER_TO_MAP)
|
||||||
|
&& (listGeonaDataObjects.size() == 0)) {
|
||||||
|
// here the centroid is not available
|
||||||
|
// GeoportalDataViewer.showPopover(RootPanel.get(GeoportalDataViewer.APP_NOTIFIER),
|
||||||
|
// "No centroid available for the selected project",
|
||||||
|
// "Project without a centroid");
|
||||||
|
olMap.setCenter(queryEvent.getQueryClickExtent().getCenter());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<FeatureRow> theFeatures = null;
|
||||||
|
|
||||||
// TODO SWTCH FOR EARCH ITEM TYPE
|
// TODO SWTCH FOR EARCH ITEM TYPE
|
||||||
for (final GeoNaSpatialQueryResult geoNaDataObject : listGeonaDataObjects) {
|
for (final GeoNaSpatialQueryResult geoNaDataObject : listGeonaDataObjects) {
|
||||||
|
@ -407,7 +419,7 @@ public class LayerManager {
|
||||||
String productId = productIds.get(0);
|
String productId = productIds.get(0);
|
||||||
LayerObjectType layerObjectType = layerObject.getType();
|
LayerObjectType layerObjectType = layerObject.getType();
|
||||||
return new ShowDetailsEvent(layerObjectType != null ? layerObjectType.name() : null,
|
return new ShowDetailsEvent(layerObjectType != null ? layerObjectType.name() : null,
|
||||||
layerObject.getProfileID(), productId, fRow, true);
|
layerObject.getProfileID(), productId, fRow, true, EVENT_SOURCE.OPEN_DETAILS);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -498,9 +510,9 @@ public class LayerManager {
|
||||||
lo.setProfileID(profileID);
|
lo.setProfileID(profileID);
|
||||||
lo.setProjectDV(projectDV);
|
lo.setProjectDV(projectDV);
|
||||||
|
|
||||||
GWT.log("LayerObject ID is: "+lo.getProjectID());
|
GWT.log("LayerObject ID is: " + lo.getProjectID());
|
||||||
if(lo.getProjectDV()!=null)
|
if (lo.getProjectDV() != null)
|
||||||
GWT.log("LayerObject into ProjectDV is: "+lo.getProjectDV().getId());
|
GWT.log("LayerObject into ProjectDV is: " + lo.getProjectDV().getId());
|
||||||
|
|
||||||
String layerNameKey = layerItem.getName();
|
String layerNameKey = layerItem.getName();
|
||||||
|
|
||||||
|
@ -546,8 +558,8 @@ public class LayerManager {
|
||||||
|
|
||||||
public void setCQLForLayerToIndexLayer(String layerName, String cqlFilter) {
|
public void setCQLForLayerToIndexLayer(String layerName, String cqlFilter) {
|
||||||
LayerObject theLo = mapIndexLayerObjects.get(layerName);
|
LayerObject theLo = mapIndexLayerObjects.get(layerName);
|
||||||
if(theLo!=null) {
|
if (theLo != null) {
|
||||||
boolean isCQLFilter = cqlFilter!=null;
|
boolean isCQLFilter = cqlFilter != null;
|
||||||
theLo.getLayerItem().setCqlFilter(cqlFilter);
|
theLo.getLayerItem().setCqlFilter(cqlFilter);
|
||||||
theLo.getLayerItem().setCqlFilterAvailable(isCQLFilter);
|
theLo.getLayerItem().setCqlFilterAvailable(isCQLFilter);
|
||||||
|
|
||||||
|
@ -795,7 +807,7 @@ public class LayerManager {
|
||||||
public void onBrowserEvent(Event event) {
|
public void onBrowserEvent(Event event) {
|
||||||
if (Event.ONCLICK == event.getTypeInt()) {
|
if (Event.ONCLICK == event.getTypeInt()) {
|
||||||
applicationBus.fireEvent(new ShowDetailsEvent(lo.getType().name(),
|
applicationBus.fireEvent(new ShowDetailsEvent(lo.getType().name(),
|
||||||
lo.getProfileID(), newProjectID, null, true));
|
lo.getProfileID(), newProjectID, null, true, EVENT_SOURCE.OPEN_PROJECTS));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -956,25 +968,43 @@ public class LayerManager {
|
||||||
GWT.log("The selected Feature is: " + feature);
|
GWT.log("The selected Feature is: " + feature);
|
||||||
// GeoportalDataViewerConstants.print("The selected Feature is: "+feature);
|
// GeoportalDataViewerConstants.print("The selected Feature is: "+feature);
|
||||||
FeatureRow theFeature = feature;
|
FeatureRow theFeature = feature;
|
||||||
Button button = new Button("Open Details");
|
Button buttonOpenDtl = new Button("Open Details");
|
||||||
button.getElement().setId("open-details");
|
buttonOpenDtl.getElement().setId("open-details");
|
||||||
button.setType(ButtonType.LINK);
|
buttonOpenDtl.setType(ButtonType.LINK);
|
||||||
|
|
||||||
if (button != null) {
|
buttonOpenDtl.addClickHandler(new ClickHandler() {
|
||||||
vpPanel.add(button);
|
|
||||||
button.setType(ButtonType.LINK);
|
|
||||||
button.addClickHandler(new ClickHandler() {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
ShowDetailsEvent toEvent = parseGeonaReferences(geoNaDataObject.getSourceLayerObject(), theFeature);
|
GWT.log("Open Details clicked");
|
||||||
applicationBus.fireEvent(toEvent);
|
// ShowDetailsEvent toEvent = parseGeonaReferences(geoNaDataObject.getSourceLayerObject(), theFeature);
|
||||||
|
// applicationBus.fireEvent(toEvent);
|
||||||
|
fireOpenDetails(geoNaDataObject.getSourceLayerObject(), theFeature);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
Coordinate centerTo = null;
|
Button buttonViewLayers = new Button("Go to Layers");
|
||||||
|
buttonViewLayers.getElement().setId("go-to-layers");
|
||||||
|
buttonViewLayers.getElement().setTitle("Zoom to Layers");
|
||||||
|
buttonViewLayers.setType(ButtonType.LINK);
|
||||||
|
|
||||||
|
buttonViewLayers.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
GWT.log("View Layers clicked");
|
||||||
|
fireGoToLayers();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
FlowPanel flow = new FlowPanel();
|
||||||
|
flow.add(buttonOpenDtl);
|
||||||
|
flow.add(buttonViewLayers);
|
||||||
|
vpPanel.add(flow);
|
||||||
|
|
||||||
|
Coordinate positionTo = null;
|
||||||
GWT.log("geometry is: " + feature.getGeometry());
|
GWT.log("geometry is: " + feature.getGeometry());
|
||||||
if (feature.getGeometry() != null) {
|
if (feature.getGeometry() != null) {
|
||||||
GWT.log("trasforming geometry: " + feature.getGeometry().getToJSONObject());
|
GWT.log("trasforming geometry: " + feature.getGeometry().getToJSONObject());
|
||||||
|
@ -998,7 +1028,7 @@ public class LayerManager {
|
||||||
center = MapUtils.transformCoordiante(center, MAP_PROJECTION.EPSG_4326.getName(),
|
center = MapUtils.transformCoordiante(center, MAP_PROJECTION.EPSG_4326.getName(),
|
||||||
MAP_PROJECTION.EPSG_3857.getName());
|
MAP_PROJECTION.EPSG_3857.getName());
|
||||||
}
|
}
|
||||||
centerTo = center;
|
positionTo = center;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
Extent geomExtent = geom.getExtent();
|
Extent geomExtent = geom.getExtent();
|
||||||
|
@ -1018,39 +1048,81 @@ public class LayerManager {
|
||||||
ExtentWrapped ew = new ExtentWrapped(lowerCoord.getX(), lowerCoord.getY(), upperCoord.getX(),
|
ExtentWrapped ew = new ExtentWrapped(lowerCoord.getX(), lowerCoord.getY(), upperCoord.getX(),
|
||||||
upperCoord.getY());
|
upperCoord.getY());
|
||||||
|
|
||||||
centerTo = new Coordinate(ew.getCenter().getX(), ew.getCenter().getY());
|
positionTo = new Coordinate(ew.getCenter().getX(), ew.getCenter().getY());
|
||||||
|
|
||||||
}
|
}
|
||||||
GWT.log("center is: " + centerTo);
|
GWT.log("positionTo is: " + positionTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fallback
|
// fallback
|
||||||
if (centerTo == null)
|
if (positionTo == null)
|
||||||
centerTo = onFailureCenterTo;
|
positionTo = onFailureCenterTo;
|
||||||
|
|
||||||
olMap.showPopup(vpPanel.toString(), centerTo);
|
final Coordinate centerTo = positionTo;
|
||||||
|
new Timer() {
|
||||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void run() {
|
||||||
Element buttonElement = DOM.getElementById("open-details");
|
olMap.showPopup(vpPanel.toString(), centerTo);
|
||||||
Event.sinkEvents(buttonElement, Event.ONCLICK);
|
|
||||||
Event.setEventListener(buttonElement, new EventListener() {
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBrowserEvent(Event event) {
|
public void execute() {
|
||||||
if (Event.ONCLICK == event.getTypeInt()) {
|
Element buttonElement = DOM.getElementById("open-details");
|
||||||
ShowDetailsEvent toEvent = parseGeonaReferences(geoNaDataObject.getSourceLayerObject(),
|
Event.sinkEvents(buttonElement, Event.ONCLICK);
|
||||||
theFeature);
|
Event.setEventListener(buttonElement, new EventListener() {
|
||||||
applicationBus.fireEvent(toEvent);
|
|
||||||
}
|
@Override
|
||||||
|
public void onBrowserEvent(Event event) {
|
||||||
|
if (Event.ONCLICK == event.getTypeInt()) {
|
||||||
|
// ShowDetailsEvent toEvent = parseGeonaReferences(
|
||||||
|
// geoNaDataObject.getSourceLayerObject(), theFeature);
|
||||||
|
// applicationBus.fireEvent(toEvent);
|
||||||
|
|
||||||
|
fireOpenDetails(geoNaDataObject.getSourceLayerObject(), theFeature);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
Element buttonElement = DOM.getElementById("go-to-layers");
|
||||||
|
Event.sinkEvents(buttonElement, Event.ONCLICK);
|
||||||
|
Event.setEventListener(buttonElement, new EventListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBrowserEvent(Event event) {
|
||||||
|
if (Event.ONCLICK == event.getTypeInt()) {
|
||||||
|
fireGoToLayers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
}.schedule(OpenLayerMap.SET_CENTER_ANIMATION_DURATION + 100);
|
||||||
|
|
||||||
|
olMap.setCenter(centerTo);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void fireGoToLayers() {
|
||||||
|
int zoomValue = (int) (OLMapManager.LAYER_DETAIL_MAX_RESOLUTION + 1);
|
||||||
|
olMap.setZoom(zoomValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void fireOpenDetails(LayerObject layerObject, FeatureRow theFeature) {
|
||||||
|
ShowDetailsEvent toEvent = parseGeonaReferences(layerObject, theFeature);
|
||||||
|
applicationBus.fireEvent(toEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,83 +1,83 @@
|
||||||
package org.gcube.portlets.user.geoportaldataviewer.client.events;
|
//package org.gcube.portlets.user.geoportaldataviewer.client.events;
|
||||||
|
//
|
||||||
import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
//import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.RECORD_TYPE;
|
//import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.RECORD_TYPE;
|
||||||
|
//
|
||||||
import com.google.gwt.event.shared.GwtEvent;
|
//import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* The Class GetListOfRecordsEvent.
|
// * The Class GetListOfRecordsEvent.
|
||||||
*
|
// *
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
// * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
*
|
// *
|
||||||
* Dec 7, 2021
|
// * Dec 7, 2021
|
||||||
*/
|
// */
|
||||||
public class GetListOfRecordsEvent extends GwtEvent<GetListOfRecordsEventHandler> {
|
//public class GetListOfRecordsEvent extends GwtEvent<GetListOfRecordsEventHandler> {
|
||||||
|
//
|
||||||
/** The type. */
|
// /** The type. */
|
||||||
public static Type<GetListOfRecordsEventHandler> TYPE = new Type<GetListOfRecordsEventHandler>();
|
// public static Type<GetListOfRecordsEventHandler> TYPE = new Type<GetListOfRecordsEventHandler>();
|
||||||
private RECORD_TYPE recordType;
|
// private RECORD_TYPE recordType;
|
||||||
private SearchingFilter sortFilter;
|
// private SearchingFilter sortFilter;
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* Instantiates a new cancel upload event.
|
// * Instantiates a new cancel upload event.
|
||||||
*
|
// *
|
||||||
* @param recordType the record type
|
// * @param recordType the record type
|
||||||
* @param sortFilter the sort filter
|
// * @param sortFilter the sort filter
|
||||||
*/
|
// */
|
||||||
public GetListOfRecordsEvent(RECORD_TYPE recordType, SearchingFilter sortFilter) {
|
// public GetListOfRecordsEvent(RECORD_TYPE recordType, SearchingFilter sortFilter) {
|
||||||
this.recordType = recordType;
|
// this.recordType = recordType;
|
||||||
this.sortFilter = sortFilter;
|
// this.sortFilter = sortFilter;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* Gets the associated type.
|
// * Gets the associated type.
|
||||||
*
|
// *
|
||||||
* @return the associated type
|
// * @return the associated type
|
||||||
*/
|
// */
|
||||||
/*
|
// /*
|
||||||
* (non-Javadoc)
|
// * (non-Javadoc)
|
||||||
*
|
// *
|
||||||
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
// * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
public Type<GetListOfRecordsEventHandler> getAssociatedType() {
|
// public Type<GetListOfRecordsEventHandler> getAssociatedType() {
|
||||||
return TYPE;
|
// return TYPE;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* Dispatch.
|
// * Dispatch.
|
||||||
*
|
// *
|
||||||
* @param handler the handler
|
// * @param handler the handler
|
||||||
*/
|
// */
|
||||||
/*
|
// /*
|
||||||
* (non-Javadoc)
|
// * (non-Javadoc)
|
||||||
*
|
// *
|
||||||
* @see
|
// * @see
|
||||||
* com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.
|
// * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.
|
||||||
* EventHandler)
|
// * EventHandler)
|
||||||
*/
|
// */
|
||||||
@Override
|
// @Override
|
||||||
protected void dispatch(GetListOfRecordsEventHandler handler) {
|
// protected void dispatch(GetListOfRecordsEventHandler handler) {
|
||||||
handler.onGetList(this);
|
// handler.onGetList(this);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* Gets the record type.
|
// * Gets the record type.
|
||||||
*
|
// *
|
||||||
* @return the record type
|
// * @return the record type
|
||||||
*/
|
// */
|
||||||
public RECORD_TYPE getRecordType() {
|
// public RECORD_TYPE getRecordType() {
|
||||||
return recordType;
|
// return recordType;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* Gets the sort filter.
|
// * Gets the sort filter.
|
||||||
*
|
// *
|
||||||
* @return the sort filter
|
// * @return the sort filter
|
||||||
*/
|
// */
|
||||||
public SearchingFilter getSortFilter() {
|
// public SearchingFilter getSortFilter() {
|
||||||
return sortFilter;
|
// return sortFilter;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
//}
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
package org.gcube.portlets.user.geoportaldataviewer.client.events;
|
//package org.gcube.portlets.user.geoportaldataviewer.client.events;
|
||||||
|
//
|
||||||
import com.google.gwt.event.shared.EventHandler;
|
//import com.google.gwt.event.shared.EventHandler;
|
||||||
|
//
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* The Interface GetListOfRecordsEventHandler.
|
// * The Interface GetListOfRecordsEventHandler.
|
||||||
*
|
// *
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
// * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
*
|
// *
|
||||||
* Aug 4, 2021
|
// * Aug 4, 2021
|
||||||
*/
|
// */
|
||||||
public interface GetListOfRecordsEventHandler extends EventHandler {
|
//public interface GetListOfRecordsEventHandler extends EventHandler {
|
||||||
|
//
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* On get list.
|
// * On get list.
|
||||||
*
|
// *
|
||||||
* @param getListOfRecordsEvent the get list of records event
|
// * @param getListOfRecordsEvent the get list of records event
|
||||||
*/
|
// */
|
||||||
void onGetList(GetListOfRecordsEvent getListOfRecordsEvent);
|
// void onGetList(GetListOfRecordsEvent getListOfRecordsEvent);
|
||||||
}
|
//}
|
|
@ -21,6 +21,18 @@ public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
||||||
private String projectID;
|
private String projectID;
|
||||||
private boolean loadTimelineRelationships;
|
private boolean loadTimelineRelationships;
|
||||||
private boolean isEventFromTimeline;
|
private boolean isEventFromTimeline;
|
||||||
|
private EVENT_SOURCE sourceEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Enum EVENT_SOURCE.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Dec 22, 2022
|
||||||
|
*/
|
||||||
|
public static enum EVENT_SOURCE {
|
||||||
|
LOCATE_ON_INIT, OPEN_DETAILS, OPEN_PROJECTS, LOCATE_SEARCHED, LOCATE_FROM_TIMELINE, GO_TO_LAYERS
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new show details event.
|
* Instantiates a new show details event.
|
||||||
|
@ -30,14 +42,16 @@ public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
||||||
* @param projectID the project ID
|
* @param projectID the project ID
|
||||||
* @param featureRow the feature row
|
* @param featureRow the feature row
|
||||||
* @param loadTimelineRelationships the load timeline relationships
|
* @param loadTimelineRelationships the load timeline relationships
|
||||||
|
* @param sourceEvent the source event
|
||||||
*/
|
*/
|
||||||
public ShowDetailsEvent(String layerObjectType, String profileID, String projectID, FeatureRow featureRow,
|
public ShowDetailsEvent(String layerObjectType, String profileID, String projectID, FeatureRow featureRow,
|
||||||
boolean loadTimelineRelationships) {
|
boolean loadTimelineRelationships, EVENT_SOURCE sourceEvent) {
|
||||||
this.layerObjectType = layerObjectType;
|
this.layerObjectType = layerObjectType;
|
||||||
this.profileID = profileID;
|
this.profileID = profileID;
|
||||||
this.projectID = projectID;
|
this.projectID = projectID;
|
||||||
this.featureRow = featureRow;
|
this.featureRow = featureRow;
|
||||||
this.loadTimelineRelationships = loadTimelineRelationships;
|
this.loadTimelineRelationships = loadTimelineRelationships;
|
||||||
|
this.sourceEvent = sourceEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,13 +60,16 @@ public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
||||||
* @param gir the gir
|
* @param gir the gir
|
||||||
* @param featureRow the feature row
|
* @param featureRow the feature row
|
||||||
* @param loadTimelineRelationships the load timeline relationships
|
* @param loadTimelineRelationships the load timeline relationships
|
||||||
|
* @param sourceEvent the source event
|
||||||
*/
|
*/
|
||||||
public ShowDetailsEvent(GeoportalItemReferences gir, FeatureRow featureRow, boolean loadTimelineRelationships) {
|
public ShowDetailsEvent(GeoportalItemReferences gir, FeatureRow featureRow, boolean loadTimelineRelationships,
|
||||||
|
boolean goToLayers, EVENT_SOURCE sourceEvent) {
|
||||||
this.layerObjectType = gir.getLayerObjectType();
|
this.layerObjectType = gir.getLayerObjectType();
|
||||||
this.profileID = gir.getProfileID();
|
this.profileID = gir.getProfileID();
|
||||||
this.projectID = gir.getProjectID();
|
this.projectID = gir.getProjectID();
|
||||||
this.featureRow = featureRow;
|
this.featureRow = featureRow;
|
||||||
this.loadTimelineRelationships = loadTimelineRelationships;
|
this.loadTimelineRelationships = loadTimelineRelationships;
|
||||||
|
this.sourceEvent = sourceEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -73,6 +90,15 @@ public class ShowDetailsEvent extends GwtEvent<ShowDetailsEventHandler> {
|
||||||
return isEventFromTimeline;
|
return isEventFromTimeline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the source event.
|
||||||
|
*
|
||||||
|
* @return the source event
|
||||||
|
*/
|
||||||
|
public EVENT_SOURCE getSourceEvent() {
|
||||||
|
return sourceEvent;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the type.
|
* Gets the type.
|
||||||
*
|
*
|
||||||
|
|
|
@ -36,6 +36,7 @@ import ol.OverlayOptions;
|
||||||
import ol.Size;
|
import ol.Size;
|
||||||
import ol.View;
|
import ol.View;
|
||||||
import ol.ViewOptions;
|
import ol.ViewOptions;
|
||||||
|
import ol.animation.AnimationOptions;
|
||||||
import ol.event.EventListener;
|
import ol.event.EventListener;
|
||||||
import ol.geom.Geometry;
|
import ol.geom.Geometry;
|
||||||
import ol.interaction.Draw;
|
import ol.interaction.Draw;
|
||||||
|
@ -71,6 +72,10 @@ import ol.source.XyzOptions;
|
||||||
*/
|
*/
|
||||||
public abstract class OpenLayerMap {
|
public abstract class OpenLayerMap {
|
||||||
|
|
||||||
|
public static final int SET_CENTER_ANIMATION_DURATION = 500;
|
||||||
|
|
||||||
|
public static final int ZOOM_ANIMATE_DURATION = 3000;
|
||||||
|
|
||||||
public static final int MAX_ZOOM = 21;
|
public static final int MAX_ZOOM = 21;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -297,7 +302,13 @@ public abstract class OpenLayerMap {
|
||||||
* @param centerCoordinate the new center
|
* @param centerCoordinate the new center
|
||||||
*/
|
*/
|
||||||
public void setCenter(Coordinate centerCoordinate) {
|
public void setCenter(Coordinate centerCoordinate) {
|
||||||
view.setCenter(centerCoordinate);
|
|
||||||
|
AnimationOptions animations = new AnimationOptions();
|
||||||
|
animations.setCenter(centerCoordinate);
|
||||||
|
animations.setDuration(SET_CENTER_ANIMATION_DURATION);
|
||||||
|
view.animate(animations);
|
||||||
|
|
||||||
|
//view.setCenter(centerCoordinate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -306,7 +317,11 @@ public abstract class OpenLayerMap {
|
||||||
* @param zoom the new zoom
|
* @param zoom the new zoom
|
||||||
*/
|
*/
|
||||||
public void setZoom(int zoom) {
|
public void setZoom(int zoom) {
|
||||||
view.setZoom(zoom);
|
AnimationOptions animations = new AnimationOptions();
|
||||||
|
animations.setDuration(ZOOM_ANIMATE_DURATION);
|
||||||
|
animations.setZoom(zoom);
|
||||||
|
view.animate(animations);
|
||||||
|
//view.setZoom(zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -952,4 +967,6 @@ public abstract class OpenLayerMap {
|
||||||
return map.get((map.keySet().toArray())[index]);
|
return map.get((map.keySet().toArray())[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.gcube.application.geoportalcommon.shared.geoportal.geojson.GeoJSON;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.project.ProjectDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.project.ProjectDV;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerServiceAsync;
|
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerServiceAsync;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
||||||
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent.EVENT_SOURCE;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAImages;
|
import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAImages;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.project.ProjectUtil;
|
import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.project.ProjectUtil;
|
||||||
|
@ -143,7 +144,7 @@ public class TimelineRelationPanel extends Composite {
|
||||||
final String thePofileID = references[0];
|
final String thePofileID = references[0];
|
||||||
final String theProjectID = references[1];
|
final String theProjectID = references[1];
|
||||||
GeoportalItemReferences gir = new GeoportalItemReferences(theProjectID, thePofileID);
|
GeoportalItemReferences gir = new GeoportalItemReferences(theProjectID, thePofileID);
|
||||||
ShowDetailsEvent showDetailsEvent = new ShowDetailsEvent(gir, null, false);
|
ShowDetailsEvent showDetailsEvent = new ShowDetailsEvent(gir, null, false, false, EVENT_SOURCE.LOCATE_FROM_TIMELINE);
|
||||||
showDetailsEvent.setEventFromTimeline(true);
|
showDetailsEvent.setEventFromTimeline(true);
|
||||||
GWT.log("fireEvent: " + showDetailsEvent);
|
GWT.log("fireEvent: " + showDetailsEvent);
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerSer
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.SearchPerformedEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.SearchPerformedEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent;
|
||||||
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowDetailsEvent.EVENT_SOURCE;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEvent;
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.util.LoaderIcon;
|
import org.gcube.portlets.user.geoportaldataviewer.client.util.LoaderIcon;
|
||||||
import org.gcube.portlets.user.geoportaldataviewer.client.util.StringUtil;
|
import org.gcube.portlets.user.geoportaldataviewer.client.util.StringUtil;
|
||||||
|
@ -356,7 +357,7 @@ public class SearchFacilityUI extends Composite {
|
||||||
profileID);
|
profileID);
|
||||||
// here
|
// here
|
||||||
appManagerBus.fireEvent(new ClosedViewDetailsEvent());
|
appManagerBus.fireEvent(new ClosedViewDetailsEvent());
|
||||||
appManagerBus.fireEvent(new ShowDetailsEvent(gir, null, true));
|
appManagerBus.fireEvent(new ShowDetailsEvent(gir, null, true, true, EVENT_SOURCE.LOCATE_SEARCHED));
|
||||||
appManagerBus.fireEvent(new ShowPopupOnCentroiEvent(profileID,
|
appManagerBus.fireEvent(new ShowPopupOnCentroiEvent(profileID,
|
||||||
resultDoc.getProjectID(), resultDoc.getSpatialReference()));
|
resultDoc.getProjectID(), resultDoc.getSpatialReference()));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue