From 44dc4c32cad8dec8f0198cb085ccbbb907bb7417 Mon Sep 17 00:00:00 2001 From: francesco Date: Mon, 26 Oct 2020 17:40:38 +0100 Subject: [PATCH] continue testing --- pom.xml | 28 ++++++ .../client/GeoportalDataViewer.java | 8 +- .../client/gis/OsmExample.java | 86 +++++++++++++++++++ .../client/ui/BasePanel.java | 46 +++++----- .../client/ui/BasePanel.ui.xml | 4 +- .../client/ui/GeonaDataViewMainPanel.java | 45 ++++++++++ .../client/ui/GeonaDataViewMainPanel.ui.xml | 8 +- .../GeoPortalDataViewerAppPortlet_view.jsp | 22 +++-- src/main/webapp/WEB-INF/portlet.xml | 4 +- 9 files changed, 210 insertions(+), 41 deletions(-) diff --git a/pom.xml b/pom.xml index f612bed..66c741a 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,20 @@ + + + + + + + + + + + + + + @@ -82,6 +96,20 @@ com.github.tdesjardins gwt-ol3 8.0.0-gwt2_9 + + + + + + + + + + + + + + com.github.gwtbootstrap diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java index e377350..d7d84c4 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/GeoportalDataViewer.java @@ -42,11 +42,6 @@ public class GeoportalDataViewer implements EntryPoint { */ public void onModuleLoad() { -// HTMLPanel htmlPanel = new HTMLPanel(""); -// htmlPanel.setWidth("500px"); -// htmlPanel.setHeight("500px"); -// htmlPanel.getElement().setId("map"); -// mainPanel = new GeonaDataViewMainPanel(); RootPanel.get(APP_DIV).add(mainPanel); @@ -56,7 +51,7 @@ public class GeoportalDataViewer implements EntryPoint { @Override public void execute() { osmExample = new OsmExample(mainPanel.getMapPanel().getElement().getId()); - //new OsmExample(htmlPanel.getElement().getId()); + mainPanel.setMap(osmExample); } }); @@ -73,7 +68,6 @@ public class GeoportalDataViewer implements EntryPoint { @Override public void onSuccess(String result) { - Window.alert(result); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OsmExample.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OsmExample.java index c59ca27..5929e71 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OsmExample.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OsmExample.java @@ -2,13 +2,24 @@ package org.gcube.portlets.user.geoportaldataviewer.client.gis; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; +import ol.Collection; import ol.Coordinate; import ol.Map; +import ol.MapBrowserEvent; import ol.MapOptions; import ol.OLFactory; +import ol.OLUtil; +import ol.Overlay; +import ol.OverlayOptions; import ol.View; import ol.ViewOptions; import ol.control.Attribution; +import ol.event.EventListener; +import ol.interaction.Draw; +import ol.interaction.DrawOptions; +import ol.interaction.Extent; +import ol.interaction.ExtentOptions; +import ol.interaction.Interaction; import ol.interaction.KeyboardPan; import ol.interaction.KeyboardZoom; import ol.layer.Image; @@ -20,6 +31,7 @@ import ol.source.ImageWms; import ol.source.ImageWmsOptions; import ol.source.ImageWmsParams; import ol.source.Osm; +import ol.source.Vector; import ol.source.XyzOptions; /** @@ -34,6 +46,8 @@ public class OsmExample { private View view; private ViewOptions viewOptions = OLFactory.createOptions(); private ProjectionOptions projectionOptions = OLFactory.createOptions(); + + private Draw pointDraw; /* (non-Javadoc) * @see de.desjardins.ol3.demo.client.example.Example#show() @@ -99,6 +113,17 @@ public class OsmExample { Attribution attribution = new Attribution(); attribution.setCollapsed(true); + + map.addClickListener(new EventListener() { + + @Override + public void onEvent(MapBrowserEvent event) { + // TODO Auto-generated method stub + event.getCoordinate(); + addOverlay(); + + } + }); map.addControl(attribution); @@ -131,6 +156,67 @@ public class OsmExample { //https://data.d4science.org/gis-viewer-app/?wmsrequest=https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https://data.d4science.org/gis-viewer-app/?wmsrequest=https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98https%3A%2F%2Fgeona-proto.d4science.org%2Fgeoserver%2Fconcessioni_conf%2Fwms%3Fservice%3DWMS%26version%3D1.1.0%26request%3DGetMap%26layers%3Dconcessioni_conf%3Acentroids_concessioni%26styles%3D%26bbox%3D8.476%2C39.179%2C17.391%2C45.772%26width%3D768%26height%3D567%26srs%3DEPSG%3A4326%26format%3Dapplication%2Fopenlayers&zoom=6¢ermap=12.45%2C42.98 } + + + public Draw addPointVectorSource() { + if(pointDraw==null) + initPointInteraction(); + + map.addInteraction(pointDraw); + return pointDraw; + } + + private void initPointInteraction() { + Vector vectorSource = new Vector(); + DrawOptions drawOptions = new DrawOptions(); + drawOptions.setSource(vectorSource); + drawOptions.setType("Point"); + drawOptions.setMaxPoints(1); + drawOptions.setMinPoints(1); + drawOptions.setWrapX(false); + pointDraw = new Draw(drawOptions); + } + + public void removeInteraction(Interaction interaction) { + map.removeInteraction(interaction); + } + + public void removeInteractions() { + Collection interactions = map.getInteractions(); + if(interactions!=null) { + Interaction[] inters = map.getInteractions().getArray(); + for (int i = 0; i < inters.length; i++) { + Interaction inter = inters[i]; + map.removeInteraction(inter); + } + } + } + + public Extent addExtentInteraction() { + ExtentOptions extentOptions = new ExtentOptions(); + extentOptions.setWrapX(false); + //StyleOptions styleOptions = new StyleOptions(); + //styleOptions.setStroke(stroke); + //styleOptions.set + //extentOptions.setBoxStyle(new ol.style.Style(styleOptions)); + Extent extent = new Extent(extentOptions); + map.addInteraction(extent); + return extent; + } + + + private void addOverlay() { + /** + * Create an overlay to anchor the popup to the map. + */ + OverlayOptions overlayOptions = new OverlayOptions(); + overlayOptions.setAutoPan(true); + Overlay overlay = new Overlay(overlayOptions); + map.addOverlay(overlay); + } + + + } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.java index 15f455b..04eb21d 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.java @@ -1,23 +1,23 @@ -package org.gcube.portlets.user.geoportaldataviewer.client.ui; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; - -public class BasePanel extends Composite { - - private static BasePanelUiBinder uiBinder = GWT.create(BasePanelUiBinder.class); - - interface BasePanelUiBinder extends UiBinder { - } - - public BasePanel() { - initWidget(uiBinder.createAndBindUi(this)); - } - - public BasePanel(String firstName) { - initWidget(uiBinder.createAndBindUi(this)); - } - -} +//package org.gcube.portlets.user.geoportaldataviewer.client.ui; +// +//import com.google.gwt.core.client.GWT; +//import com.google.gwt.uibinder.client.UiBinder; +//import com.google.gwt.user.client.ui.Composite; +//import com.google.gwt.user.client.ui.Widget; +// +//public class BasePanel extends Composite { +// +// private static BasePanelUiBinder uiBinder = GWT.create(BasePanelUiBinder.class); +// +// interface BasePanelUiBinder extends UiBinder { +// } +// +// public BasePanel() { +// initWidget(uiBinder.createAndBindUi(this)); +// } +// +// public BasePanel(String firstName) { +// initWidget(uiBinder.createAndBindUi(this)); +// } +// +//} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.ui.xml index 3eac0ec..0b8562b 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.ui.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/BasePanel.ui.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java index 22264ec..831439f 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.java @@ -1,7 +1,12 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui; +import org.gcube.portlets.user.geoportaldataviewer.client.gis.OsmExample; + +import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.Tab; import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; @@ -18,7 +23,16 @@ public class GeonaDataViewMainPanel extends Composite { @UiField Tab mapPanel; + @UiField + Button dataPointSelection; + + @UiField + Button dataBoxSelection; + + private HTMLPanel htmlPanel; + + private OsmExample map; public GeonaDataViewMainPanel() { initWidget(uiBinder.createAndBindUi(this)); @@ -26,6 +40,11 @@ public class GeonaDataViewMainPanel extends Composite { htmlPanel.getElement().setId("map"); htmlPanel.setHeight("600px"); mapPanel.add(htmlPanel); + + dataPointSelection.setToggle(true); + dataBoxSelection.setToggle(true); + + bindHandlers(); } public void setHeight(int height) { @@ -35,5 +54,31 @@ public class GeonaDataViewMainPanel extends Composite { public HTMLPanel getMapPanel() { return htmlPanel; } + + public void setMap(OsmExample map) { + this.map = map; + } + + public void bindHandlers(){ + dataPointSelection.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + map.removeInteractions(); + map.addPointVectorSource(); + } + }); + + dataBoxSelection.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + map.removeInteractions(); + map.addExtentInteraction(); + + } + }); + + } } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml index d81e8b0..aa80f09 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/GeonaDataViewMainPanel.ui.xml @@ -7,7 +7,13 @@ - + + + + Data Point Selection + Data Box Selection + + diff --git a/src/main/webapp/WEB-INF/jsp/GeoPortalDataViewerAppPortlet_view.jsp b/src/main/webapp/WEB-INF/jsp/GeoPortalDataViewerAppPortlet_view.jsp index 3e6036d..c2eb463 100644 --- a/src/main/webapp/WEB-INF/jsp/GeoPortalDataViewerAppPortlet_view.jsp +++ b/src/main/webapp/WEB-INF/jsp/GeoPortalDataViewerAppPortlet_view.jsp @@ -1,4 +1,4 @@ -ac<%@page contentType="text/html"%> +<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%-- Uncomment below lines to add portlet taglibs to jsp @@ -8,15 +8,25 @@ ac<%@page contentType="text/html"%> --%> + + + + + + + + - - -
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/portlet.xml b/src/main/webapp/WEB-INF/portlet.xml index 91b75f5..f30c015 100644 --- a/src/main/webapp/WEB-INF/portlet.xml +++ b/src/main/webapp/WEB-INF/portlet.xml @@ -12,8 +12,8 @@ VIEW - GeoPortal DataViewerApp Portlet - GeoPortal DataViewerApp Portlet + GeoPortal-DataViewerApp-Portlet + GeoPortal-DataViewerApp-Portlet