From 4ae0c399830775fe0065a27902d14a84e2bad13e Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 16 Nov 2021 14:07:59 +0100 Subject: [PATCH] Added new set of icons --- .../client/GeoportalDataViewer.java | 8 +- .../client/gis/LightOpenLayerMap.java | 93 +++++++++++++++--- .../client/resources/GNAIcons.java | 37 +++++++ .../client/resources/GNAImages.java | 41 ++++++++ .../client/resources/Images.java | 25 ----- .../client/resources/baseIcons.css | 25 +++++ .../client/resources/home.png | Bin 0 -> 403 bytes .../client/resources/layers.png | Bin 0 -> 465 bytes .../client/resources/map.png | Bin 0 -> 318 bytes .../client/resources/new_folder.png | Bin 0 -> 581 bytes .../client/resources/preset_location.png | Bin 0 -> 683 bytes .../client/resources/vre_folder.png | Bin 0 -> 1396 bytes .../client/ui/GeonaDataViewMainPanel.java | 31 ++++-- .../client/ui/GeonaDataViewMainPanel.ui.xml | 6 +- .../client/ui/map/MapView.java | 57 +++++++++++ .../client/ui/map/MapView.ui.xml | 26 ++--- .../client/util/LoaderIcon.java | 4 +- .../shared/GeoNaSpatialQueryResult.java | 2 +- src/main/webapp/GeoportalDataViewer.css | 40 +++++++- 19 files changed, 324 insertions(+), 71 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAIcons.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAImages.java delete mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/Images.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/baseIcons.css create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/home.png create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/layers.png create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/map.png create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/new_folder.png create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/preset_location.png create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/vre_folder.png 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 5281264..bf75a85 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 @@ -98,6 +98,8 @@ public class GeoportalDataViewer implements EntryPoint { private LoaderIcon loaderApp = new LoaderIcon("Loading application...."); private HTML attributionDiv = new HTML(); + + private static List listBaseMapLayers = null; /** * This is the entry point method. @@ -137,6 +139,7 @@ public class GeoportalDataViewer implements EntryPoint { @Override public void onSuccess(List listBaseMapLayers) { RootPanel.get(APP_DIV).remove(loaderApp); + GeoportalDataViewer.listBaseMapLayers = listBaseMapLayers; //now the map is loaded and I'm sure that I can load the GeonaDataViewer Profile loadGeonaDataViewerProfile(); mainPanel.setBaseLayers(listBaseMapLayers); @@ -149,7 +152,6 @@ public class GeoportalDataViewer implements EntryPoint { layerManager.setOLMap(olMap); mainPanel.setMap(olMap); - //mainPanel.setMapAttribution(olMapMng.getOLOSMMap().getMapAttribution()); updateSize(); ScriptInjector.fromUrl("//cdnjs.cloudflare.com/ajax/libs/nanogallery2/3.0.5/jquery.nanogallery2.min.js") .setWindow(ScriptInjector.TOP_WINDOW).inject(); @@ -176,6 +178,10 @@ public class GeoportalDataViewer implements EntryPoint { RootPanel.get(APP_DIV).add(attributionDiv); } + public static List getListBaseMapLayers() { + return listBaseMapLayers; + } + private void loadGeonaDataViewerProfile() { Scheduler.get().scheduleDeferred(new ScheduledCommand() { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/LightOpenLayerMap.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/LightOpenLayerMap.java index bb61559..5a54555 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/LightOpenLayerMap.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/LightOpenLayerMap.java @@ -5,9 +5,11 @@ import java.util.HashMap; import java.util.List; import org.gcube.application.geoportalcommon.shared.gis.BoundsMap; +import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewer; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION; -import org.gcube.portlets.user.geoportaldataviewer.client.resources.Images; +import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAImages; +import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery.TYPE; @@ -34,6 +36,7 @@ import ol.interaction.KeyboardPan; import ol.interaction.KeyboardZoom; import ol.layer.Base; import ol.layer.Image; +import ol.layer.Layer; import ol.layer.LayerOptions; import ol.layer.Tile; import ol.layer.VectorLayerOptions; @@ -44,6 +47,7 @@ import ol.source.ImageWmsOptions; import ol.source.ImageWmsParams; import ol.source.Osm; import ol.source.Source; +import ol.source.Xyz; import ol.source.XyzOptions; import ol.style.Icon; import ol.style.IconOptions; @@ -78,8 +82,12 @@ public class LightOpenLayerMap { private ol.layer.Vector geometryLayer; - private String markerURL = Images.ICONS.mapMarkerIcon().getURL(); + private String markerURL = GNAImages.ICONS.mapMarkerIcon().getURL(); + private LayerOrder layerOrder = new LayerOrder(); + + private Layer baseLayerTile; + /** * Instantiates a new light open layer map. * @@ -87,15 +95,6 @@ public class LightOpenLayerMap { */ public LightOpenLayerMap(String divTargetId) { - // create a OSM-layer - XyzOptions osmSourceOptions = OLFactory.createOptions(); - osmSourceOptions.setCrossOrigin("Anonymous"); -// osmSourceOptions.setTileLoadFunction(null); - - Osm osmSource = new Osm(osmSourceOptions); - LayerOptions osmLayerOptions = OLFactory.createOptions(); - osmLayerOptions.setSource(osmSource); - Tile osmLayer = new Tile(osmLayerOptions); // create a projection projectionOptions.setCode(MAP_PROJECTION.EPSG_3857.getName()); projectionOptions.setUnits("m"); @@ -114,7 +113,7 @@ public class LightOpenLayerMap { map = new Map(mapOptions); - map.addLayer(osmLayer); + //map.addLayer(osmLayer); // map.addLayer(tileDebugLayer); Attribution attribution = new Attribution(); @@ -161,6 +160,72 @@ public class LightOpenLayerMap { // add some interactions map.addInteraction(new KeyboardPan()); map.addInteraction(new KeyboardZoom()); + + List listBaseMapLayers = GeoportalDataViewer.getListBaseMapLayers(); + BaseMapLayer bml = null; + if(listBaseMapLayers!=null) + bml = listBaseMapLayers.get(0); + + changeBaseMap(bml); + + } + + /** + * Change base map. + * + * @param baseLayer the base layer + */ + public void changeBaseMap(BaseMapLayer baseLayer) { + + BaseMapLayer.OL_BASE_MAP baseMap = baseLayer.getType() == null ? BaseMapLayer.OL_BASE_MAP.OSM + : baseLayer.getType(); + + try { + if (baseLayerTile != null) + map.removeLayer(baseLayerTile); + } catch (Exception e) { + } + + switch (baseMap) { + case MAPBOX: + case OTHER: + + XyzOptions xyzOptions2 = OLFactory.createOptions(); + xyzOptions2.setCrossOrigin("Anonymous"); + Xyz xyz = new Xyz(xyzOptions2); + //setAttributions is buggy + //xyz.setAttributions(baseLayer.getAttribution()); + xyz.setUrl(baseLayer.getUrl()); + + LayerOptions layerOptions2 = OLFactory.createOptions(); + layerOptions2.setSource(xyz); + int zIndex = layerOrder.getOffset(LayerOrder.LAYER_TYPE.BASE_MAP)+1; + layerOptions2.setZIndex(zIndex); + baseLayerTile = new Tile(layerOptions2); + + break; + case OSM: + default: + XyzOptions osmSourceOptions = OLFactory.createOptions(); + osmSourceOptions.setCrossOrigin("Anonymous"); + Osm osmSource = new Osm(osmSourceOptions); + //osmSource.setUrl(baseLayer.getUrl()); + //setAttributions is buggy + //osmSource.setAttributions(baseLayer.getAttribution()); + LayerOptions layerOptions = OLFactory.createOptions(); + layerOptions.setSource(osmSource); + zIndex = layerOrder.getOffset(LayerOrder.LAYER_TYPE.BASE_MAP)+1; + layerOptions.setZIndex(zIndex); + baseLayerTile = new Tile(layerOptions); + + break; + + } + + // map == null at init time + if (map != null) { + map.addLayer(baseLayerTile); + } } @@ -212,6 +277,8 @@ public class LightOpenLayerMap { layerOptions.setSource(imageWMSSource); ol.layer.Image wmsLayer = new ol.layer.Image(layerOptions); + int zIndex = layerOrder.getOffset(LayerOrder.LAYER_TYPE.WMS_DETAIL)+1; + wmsLayer.setZIndex(zIndex); // visibleLayerItems map.addLayer(wmsLayer); @@ -370,6 +437,8 @@ public class LightOpenLayerMap { VectorLayerOptions vectorLayerOptions = new VectorLayerOptions(); vectorLayerOptions.setSource(vector); geometryLayer = new ol.layer.Vector(vectorLayerOptions); + int zIndex = layerOrder.getOffset(LayerOrder.LAYER_TYPE.VECTOR)+1; + geometryLayer.setZIndex(zIndex); map.addLayer(geometryLayer); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAIcons.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAIcons.java new file mode 100644 index 0000000..32e4c76 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAIcons.java @@ -0,0 +1,37 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.resources; + +import com.github.gwtbootstrap.client.ui.constants.BaseIconType; +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; + +public interface GNAIcons extends ClientBundle { + + /** My custom base icon collection */ + public enum CustomIconType implements BaseIconType { + + MAP("map"), + PRESET_LOCATION("preset_location"), + LAYERS("layers"); + + /** Inject the icon's css once at first usage */ + static { + GNAImages icons = GWT.create(GNAImages.class); + icons.css().ensureInjected(); + } + + private static final String PREFIX = "myBaseIcon_"; + private String className; + + private CustomIconType(String className) { + this.className = className; + } + + /** + * {@inheritDoc} + */ + @Override + public String get() { + return PREFIX + className; + } + } +} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAImages.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAImages.java new file mode 100644 index 0000000..e327a65 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/GNAImages.java @@ -0,0 +1,41 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.resources; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.resources.client.ImageResource; + +public interface GNAImages extends ClientBundle { + + /** Get access to the css resource during gwt compilation */ + @Source("baseIcons.css") + CssResource css(); + + public static final GNAImages ICONS = GWT.create(GNAImages.class); + + /** Our sample image icon. Makes the image resource for the gwt-compiler's css composer accessible */ + @Source("map.png") + ImageResource map(); + + @Source("preset_location.png") + ImageResource preset_location(); + + @Source("layers.png") + ImageResource layers(); + + @Source("loading.gif") + ImageResource loading(); + + @Source("map-marker-icon.png") + ImageResource mapMarkerIcon(); + + @Source("icon_share.png") + ImageResource shareIcon(); + + @Source("italy.png") + ImageResource italyIcon(); + + @Source("world.png") + ImageResource worldIcon(); + +} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/Images.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/Images.java deleted file mode 100644 index c097d2a..0000000 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/Images.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.gcube.portlets.user.geoportaldataviewer.client.resources; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.resources.client.ClientBundle; -import com.google.gwt.resources.client.ImageResource; - -public interface Images extends ClientBundle { - - public static final Images ICONS = GWT.create(Images.class); - - @Source("loading.gif") - ImageResource loading(); - - @Source("map-marker-icon.png") - ImageResource mapMarkerIcon(); - - @Source("icon_share.png") - ImageResource shareIcon(); - - @Source("italy.png") - ImageResource italyIcon(); - - @Source("world.png") - ImageResource worldIcon(); -} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/baseIcons.css b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/baseIcons.css new file mode 100644 index 0000000..8630120 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/baseIcons.css @@ -0,0 +1,25 @@ +/* Prevent our icons from css obfuscation */ +@external .myBaseIcon_*; /* Do some css stuff */ +@sprite .myBaseIcon_map { + gwt-image: "map"; + display: inline-block; + vertical-align: middle; + margin-bottom: 3px; + margin-right: 2px; +} + +@sprite .myBaseIcon_preset_location { + gwt-image: "preset_location"; + display: inline-block; + vertical-align: middle; + margin-bottom: 3px; + margin-right: 2px; +} + +@sprite .myBaseIcon_layers { + gwt-image: "layers"; + display: inline-block; + vertical-align: middle; + margin-bottom: 3px; + margin-right: 2px; +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/home.png b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/home.png new file mode 100644 index 0000000000000000000000000000000000000000..d19e34de44fda4eabdcb6e85fd060e5d39100df4 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8@Bp6>S6^RWKR>^?xVWgOsOaeEl$4a@p;*x1;> zz(5}#pYZVTkdTnX#KfSWps=v8fPjFAh=|b8(4?fK`1p8#fB(qH$l&1MgoK2cn3(_n z{{zhqo-{`kNXeE2`2_<-Z~}(Nw&z(ug)2Q>978H@+4M#79Z}$Mj$QDYA+_D%ef>F4 z_shSOz2@m0-;ot=%bk6B)0x-X9IvmsqNiaTIn&{FK()A%@KTfW(sM35YMHw2vpwDQ zB8H=MgHhzS14mwbk00^R8{ivXh_l-Yq!A;^SrcV|r(!wRg<{!#TxLdJ?OSu$tX{@_gm>@CHVP4SqtC U*M`r#0dzEjr>mdKI;Vst08CJ>g#Z8m literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/layers.png b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..41fc600fc69f83969e0755321c9fc3d4d15c2486 GIT binary patch literal 465 zcmV;?0WSWDP)Ez6#xJL8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10ZvIoK~yM_ozpRER8bJc@!vcpO=6*78iimZ7Ft-C!cMU81K4S0 zlS(kF8wCZQ5{TigyEb-KVwcv!La?#b51042!8vhoA#*o`K$f_{6urHn2t+u00000NkvXX Hu0mjfZC%U! literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/map.png b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/map.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9aef5bb0708e23b4d0b4f696c074a094e544d4 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!3HGX7W?Z1DVAa<&kznEsNqQI0P;BtJR*x3 z7`TptFyj`j1OuR;WQl7;NpOBzNqJ&XDnogBxn5>oc5!lIL8@MUQTpt6Hc~)EyFFbT zLo_D7J+siOxlp9-Y6MA?keteIypRV z)MjQ{i~W^x{&8s5k0r$w_rG)QmGKl#Ot?JPZ_n>%TC>IamQ4Gg;ajjs;>9uUmbf%i z4&&nEW^cS|P5u-p_O|?9U$1dT?DP`dME6_qlK+o2mc(Xxl};&T{l{AGwjmCb+PfvS$dvS4bYHo5~US67- znrv)rpP!$bo10!gxah{C<9ZU0q#mZEbsdd+6ok>*(e_K0fK^<>=(%Wo2b>aBzKnef0G7{P_0p z>E-tG@pW}|baZrUYis}a@^W%=^6%~P^78fZ@8jd+goK28dV1{U;_K_{fPjGZ?&uzptX=!P1Z*N;$Tl?|rhK7cNgM;<(?e_Nee0+TO@azBj^lWTwczAfXx3^SORB>@} zd3kwbV`G7VfoN!GZpyBA0000WbW%=J08Rl9@bF6~@cLx@@DTikc=Ygy@bGE)_3-ud z`TX_t#57ug0002MNklAs^&Thh+nTn!x33UwjvwaFzu^-7t^TI#Qpy~{@a}$Ew!M=3 z+G-gW2!--UZ+^N4L-814{m1sc8l7vlEWX-8ID5i*X%x9yRY+@ZY)b%!ou2Iv`2(W*}J@?jn!^cQ%e; zi+F=J4&+$02+L_maTf{UJ4p-)E(|0|7~I$@XbQBCRf~cI^CQg26xujSW5fLar^UQY z^Um1D1DAWxea`c6&&Lf*?O+b*^NO@hv0HJ=oL8|0r&K=iPTX8fDP02NIjqkmyf0i- z8&H|T5n+=sp~uhK`Ql<)ES%c8AMbU%)UaOVIGz!9;&Ex;0v>kR8z28CGM*2cbz85O zupLF%Bb`S`XN1@Ag>Y8wl-iVDO>f1y@IkIryNqd^kiOLKdvjL!%Q|6&+O)B_C^L+E z4ug0ZmCE{}GJ>_(fOm!O+_u$>gTgVitnRrf*%f3NQH0 z9kuO>DdBXFS;zF*hda`z_)6^?GtPLxgKGC{xTzJDcHSq}K%8aS(XUF{^kR!j;%ddMxUsQ&-&6pyKVC~U(pHsb9?DZgPfCg!`-UGZHQ zN56Db!-U!iwL!%>tj4sk-`@D>Us|^a9LhC{5ot&G;wC{0I9bxu)mV R-9!KY002ovPDHLkV1i3eKiU8Q literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/vre_folder.png b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/resources/vre_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..68ae4d3fb1c5942ce67f355c0e0be06dc16072e3 GIT binary patch literal 1396 zcmV-)1&jKLP)dQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+NG6klH?`~hW~Sl907eHaU9G?Rc?^u=LLIudv>Na zyA`N5v@C?sBjhyy`Fo|m&?rkzY96JQlF_tk<%UV*yI~~Glq=@+$exkfXL-_R5nT{j z{?a(|-tdPZz6T*l_Iy5u$}wjQkP2Tc18*yHI|<9(1y@ABjSS=5exdRwsfI#K-Y zD0x$O3+{&)?j3ph^5UbFWBqfW%lE`Ku=FDK(~B3e`jyx@)?1*tXG)L4rx!zBOHNyB z#9H$xXw!mxE9Vcr4s#oV;srnCq+mgJ{0wtHy`l$V+L0O~_k5vu#GVnd4s+muEnl~Z%jl-M z^GOa{fu3Q!6PbM6>$f4r-UerIr<8IbF)FwY%ua+r1^_k6!J>SD0GaWCldK{IY=ZaJ z32U5=E*sx+)FhBFDdJ#Lr2&?zA%9#0In+!{&8(PPShZH9Xew4p@v@6sb8&TZ6aWve z-avOAYP8B#Q2VTw>NRSutzpjw%dMma{RYX!mt1<;RW85cs#ohspRV0{>E5H) z-UbgDI&75TBSsx<(nKmvot9>qK4aF|7IJOL(q*eGU$N?HFKYB$;h*~-P@{($A5vS- zU(_IVzsGd)1x7YA5Mw0}_e}r^&6`;cQsqrZ2DEwK=HBYiZYbp z7QQ?^P-FYzJY5D#{wUIM8Kl`*qtCizdji*e;RJeO+avXr9oHzt8qGWwkcH2V@_>&h zO5R0d8ZMb#J;LEqIQAqsVKh-iZhaKCjHFnXmdXl@xew_vN95TNrmPEg0w-Bxe{%i> zPN~@_|DpNP00004b3#c}2nYxWd(+1kQx-X&RHDn%%rdn zEgV)xdeYA9dow#Ts{r8T{{D+6TU+k{C;%|Vd~dZ{hX4c*n;;SFHX84ZQXilc0KoTs z3d8V+0+7TOfqp6CX@LbPp9Qn4M)6cLE!(6XYT zo5pdTiQani+5C~&@KOZN^H3}n0RY3{5Z2lh$CBOfL`1Kv&}=r5&*uREqtOWMc00up z5v|uHFvcL4%PoBOyplj^7D-Kth%lK<7XElVekg&~5YZxnRdhO?goJLlo4UV;(#))w z87>}gZlY8wLFDcq6$%A}VF)H#2D9>*Ns}|-=X-moR;y6XAE?*ssMTud^?K-@oGju@ zq%{#MYb~s`AZt-BmzTuuU@Mgh60WrtOr&)3f&}MhXSj``RKK@Tg!9u=xLjgZo-ix7 zg|A0P_<3=G%FYh5*(?Cy@68SR{XTwOT`g~cS$Weqo*Ql4-QaRCz~x}Dc6F|P8pl=z zLC|=*z5T`*<7=&() { + linkLayers.fireEvent(new GwtEvent() { @Override public com.google.gwt.event.shared.GwtEvent.Type getAssociatedType() { return ClickEvent.getType(); @@ -358,7 +369,7 @@ public class GeonaDataViewMainPanel extends Composite { RadioButton radio = new RadioButton("base-layer"); radio.setText(baseMapLayer.getName()); if(i==0) { - radio.setValue(true, true); + radio.setValue(true, false); } radio.addValueChangeHandler(new ValueChangeHandler() { 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 38a57f5..c996e06 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 @@ -35,12 +35,12 @@ - + + title="Center Map to Location" text="Preset Location" ui:field="linkPresetLocation"> @@ -62,7 +62,7 @@ - + diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.java index 61c5958..ced856c 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.java @@ -1,23 +1,33 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui.map; +import java.util.List; + import org.gcube.application.geoportalcommon.shared.gis.BoundsMap; +import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewer; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION; import org.gcube.portlets.user.geoportaldataviewer.client.gis.ExtentWrapped; import org.gcube.portlets.user.geoportaldataviewer.client.gis.LightOpenLayerMap; import org.gcube.portlets.user.geoportaldataviewer.client.gis.MapUtils; +import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAIcons; import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil.Location; import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil.PLACE; +import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer; +import com.github.gwtbootstrap.client.ui.DropdownButton; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Random; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.RadioButton; +import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import ol.Coordinate; @@ -44,8 +54,14 @@ public class MapView extends Composite { interface MapViewUiBinder extends UiBinder { } + @UiField + HTMLPanel panelBaseLayers; + @UiField HTMLPanel theMap; + + @UiField + DropdownButton linkMap; @UiField HorizontalPanel coordinatePanel; @@ -66,12 +82,15 @@ public class MapView extends Composite { theMap.getElement().setId(theMapId); theMap.setWidth(internalMapWidth); theMap.setHeight(internalMapHeight); + + linkMap.setCustomIconStyle(GNAIcons.CustomIconType.MAP.get()); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { lightOLSM = new LightOpenLayerMap(theMapId); + setBaseLayers(); // EPSG_3857 LOCATION TO ITALY Location italyLocation = ExtentMapUtil.getLocation(PLACE.ITALY); @@ -81,6 +100,44 @@ public class MapView extends Composite { } }); } + + public void setBaseLayers() { + List listBaseLayers = GeoportalDataViewer.getListBaseMapLayers(); + + if(listBaseLayers==null) + return; + + int i = 0; + + String radioId = "base_layer_" + Random.nextInt()+Random.nextInt(); + + for (BaseMapLayer baseMapLayer : listBaseLayers) { + + RadioButton radio = new RadioButton(radioId); + radio.setText(baseMapLayer.getName()); + if(i==0) { + radio.setValue(true, false); + } + + radio.addValueChangeHandler(new ValueChangeHandler() { + + @Override + public void onValueChange(ValueChangeEvent event) { + //applicationBus.fireEvent(new ChangeMapLayerEvent(baseMapLayer)); + lightOLSM.changeBaseMap(baseMapLayer); + + } + }); + + SimplePanel sp = new SimplePanel(radio); + sp.getElement().addClassName("form-inline"); + sp.getElement().addClassName("map-layers-radio"); + panelBaseLayers.add(sp); + i++; + } + + } + private void setMapSize() { Scheduler.get().scheduleDeferred(new ScheduledCommand() { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.ui.xml index 27b1dbe..bec7a40 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.ui.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/map/MapView.ui.xml @@ -1,23 +1,17 @@ + xmlns:g="urn:import:com.google.gwt.user.client.ui" + xmlns:b="urn:import:com.github.gwtbootstrap.client.ui"> - .internalMap { - height: 280px; - display: inline-block; - margin: 0 auto; - /*float: right;*/ - } - .map-style { - width: 100%; - text-align:center; - margin-top: 10px; - margin-bottom: 20px; - } + - - + + + + + + diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/LoaderIcon.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/LoaderIcon.java index 4ba03f1..39359b9 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/LoaderIcon.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/LoaderIcon.java @@ -3,7 +3,7 @@ */ package org.gcube.portlets.user.geoportaldataviewer.client.util; -import org.gcube.portlets.user.geoportaldataviewer.client.resources.Images; +import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAImages; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; @@ -18,7 +18,7 @@ import com.google.gwt.user.client.ui.Image; public class LoaderIcon extends HorizontalPanel{ - private Image imgLoading = new Image(Images.ICONS.loading()); + private Image imgLoading = new Image(GNAImages.ICONS.loading()); private HTML txtLoading = new HTML(""); /** diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/shared/GeoNaSpatialQueryResult.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/shared/GeoNaSpatialQueryResult.java index 6c80e33..d6a315b 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/shared/GeoNaSpatialQueryResult.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/shared/GeoNaSpatialQueryResult.java @@ -24,7 +24,7 @@ public class GeoNaSpatialQueryResult implements Serializable { private static final long serialVersionUID = 3513120677727206958L; private List features; private LayerObject sourceLayerObject; - // Map with couple (mongoId concessione, list of uploaded Images for the concessione) + // Map with couple (mongoId concessione, list of uploaded GNAImages for the concessione) private Map> mapImages = null; /** diff --git a/src/main/webapp/GeoportalDataViewer.css b/src/main/webapp/GeoportalDataViewer.css index 2ca51d9..eadce10 100644 --- a/src/main/webapp/GeoportalDataViewer.css +++ b/src/main/webapp/GeoportalDataViewer.css @@ -386,4 +386,42 @@ body { .map-layers-radio label { margin-left: 5px; padding-top: 5px; -} \ No newline at end of file +} + + +/************ INTERNAL MAP***************/ + +.internalMap { + height: 280px; + display: inline-block; + margin: 0 auto; + + /*float: right;*/ +} + +.map-style { + width: 100%; + margin-top: 10px; + margin-bottom: 20px; + text-align: center; +} + +.baseLayersMapLink { + width: 100%; + text-align: left; + left: 40px; + top: 40px; + z-index: 10; +} + +.baseLayersMapLink .btn-link { + border: 1px solid #eee; + background-color: #fcfcfc; + margin: 1px; +} + +.baseLayersMapLink .btn-link:hover, .inner-toolbar .btn-link:focus { + background-color: #f3f3f3 !important; + text-decoration: none; +} + \ No newline at end of file