From 2030798e1ccf120711c7c3ae76e22555c744d465 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 15 Oct 2021 17:51:09 +0200 Subject: [PATCH] bug fixed the Layer Switcher #22170#note-10 and improved pop-up --- .classpath | 6 +- .../com.gwtplugins.gdt.eclipse.core.prefs | 2 +- .settings/org.eclipse.wst.common.component | 34 ++++---- .../client/GeoportalDataViewer.java | 9 ++- .../client/LayerManager.java | 79 ++++++++++++++----- .../events/DoActionOnDetailLayersEvent.java | 51 ++++++++++-- .../client/gis/OpenLayerOSM.java | 22 ++++-- .../client/ui/GeonaDataViewMainPanel.java | 7 +- .../client/ui/GeonaDataViewMainPanel.ui.xml | 4 +- .../client/ui/dandd/DragDropLayer.java | 5 +- src/main/webapp/GeoportalDataViewer.css | 1 + 11 files changed, 164 insertions(+), 56 deletions(-) diff --git a/.classpath b/.classpath index 68e48a9..1b3eb3f 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -35,5 +35,5 @@ - + diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs index 64194f3..aaa6c87 100644 --- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs +++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs @@ -1,4 +1,4 @@ eclipse.preferences.version=1 -lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-viewer-app/target/geoportal-data-viewer-app-2.0.0-SNAPSHOT +lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-viewer-app/target/geoportal-data-viewer-app-2.0.0 warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 252448c..66ff2c7 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,15 +1,21 @@ - - - - - - - - - - uses - - - - + + + + + + + + + + + + + + + + + + + + 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 74be1f1..d0ddc0b 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 @@ -16,6 +16,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetai import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEventHandler; import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent; import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.DO_LAYER_ACTION; +import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEvent.SwapLayer; import org.gcube.portlets.user.geoportaldataviewer.client.events.DoActionOnDetailLayersEventHandler; import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEvent; import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEventHandler; @@ -379,10 +380,10 @@ public class GeoportalDataViewer implements EntryPoint { break; case SWAP: - org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem sourceLayerSwap = doLayerActionEvent.getSourceLayerSwap(); - org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem target = doLayerActionEvent.getTargetLayerSwap(); - GWT.log("SWAPPING source "+sourceLayerSwap.getName() +", target: "+target.getName()); - olMap.swapDetailsLayers(sourceLayerSwap.getName(), target.getName()); + SwapLayer swLS = doLayerActionEvent.getSourceLayerSwap(); + SwapLayer swLT = doLayerActionEvent.getTargetLayerSwap(); + GWT.log("SWAPPING source "+swLS.getLayerItem().getName() +", target: "+swLT.getLayerItem().getName()); + olMap.swapDetailsLayers(swLS, swLT); break; case VISIBILITY: diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java index e8796e6..1969da0 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java @@ -27,6 +27,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMini import org.gcube.portlets.user.geoportaldataviewer.client.gis.ExtentWrapped; import org.gcube.portlets.user.geoportaldataviewer.client.gis.MapUtils; import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerOSM; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.ModalWindow; import org.gcube.portlets.user.geoportaldataviewer.client.util.StringUtil; import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaSpatialQueryResult; @@ -41,6 +42,7 @@ import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.Heading; import com.github.gwtbootstrap.client.ui.Label; import com.github.gwtbootstrap.client.ui.constants.ButtonType; +import com.github.gwtbootstrap.client.ui.constants.IconType; import com.github.gwtbootstrap.client.ui.constants.LabelType; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; @@ -286,8 +288,9 @@ public class LayerManager { @Override public void onSuccess(List result) { - GWT.log("Adding layers: " + result); + for (LayerConcessioneDV layer : result) { + GWT.log("Adding layer: " + layer.getLayerName()); addLayer("concessione", layer.getLayerName(), layer.getLayerName(), layer.getWmsLink(), false, false, layer.getLayerUUID(), true, @@ -551,10 +554,62 @@ public class LayerManager { public void showPopupInfoForLayer(List listGeoNaDataObject, ExtentWrapped queryClick) { ScrollPanel scrollPanel = new ScrollPanel(); - FlowPanel flowPanel = new FlowPanel(); - // flowPanel.getElement().getStyle().setProperty("maxHeight", "600px"); + final FlowPanel flowPanel = new FlowPanel(); + flowPanel.getElement().getStyle().setProperty("maxHeight", "600px"); scrollPanel.add(flowPanel); + + final Button expandButton = new Button("Expand"); + expandButton.setType(ButtonType.LINK); + expandButton.setIcon(IconType.EXPAND); + expandButton.getElement().setId("expand-query"); + expandButton.setTitle("Show this view in new Window"); + /*expandButton.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + flowPanel.getElement().getStyle().setProperty("maxHeight", "100%"); + int width = Window.getClientWidth() * 75 / 100; + int height = Window.getClientHeight() * 70 / 100; + ModalWindow mw = new ModalWindow("Query view", width, height); + mw.add(flowPanel); + mw.show(); + + } + });*/ + + flowPanel.add(expandButton); + + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + + @Override + public void execute() { + Element buttonElement = DOM.getElementById("expand-query"); + Event.sinkEvents(buttonElement, Event.ONCLICK); + Event.setEventListener(buttonElement, new EventListener() { + + @Override + public void onBrowserEvent(Event event) { + if (Event.ONCLICK == event.getTypeInt()) { + expandButton.setVisible(false); + flowPanel.getElement().getStyle().setProperty("maxHeight", "100%"); + int width = Window.getClientWidth() * 75 / 100; + int height = Window.getClientHeight() * 70 / 100; + Coordinate center = queryClick.getCenter(); + double x = center.getX(); + double y = center.getY(); + //"with center x: "+x +", y: "+y; + ModalWindow mw = new ModalWindow("Query view", width, height); + mw.add(flowPanel); + mw.show(); + } + } + }); + } + }); + + //fillLayersAndProperties(listGeoNaDataObject, expandButton, flowPanel); + String prevConcessioneName = ""; for (GeoNaSpatialQueryResult geoNaSpatialQueryResult : listGeoNaDataObject) { try { @@ -578,8 +633,9 @@ public class LayerManager { String nomeConcessione = lo.getSourceConcessione().getNome(); if (prevConcessioneName.compareTo(nomeConcessione) != 0) { - String concessioneIntro = StringUtil.ellipsize(lo.getSourceConcessione().getNome(), 40); + String concessioneIntro = nomeConcessione.length()>100? StringUtil.ellipsize(nomeConcessione, 100):nomeConcessione; Heading heading = new Heading(4, concessioneIntro); + heading.setTitle(nomeConcessione); heading.getElement().getStyle().setMarginBottom(10, Unit.PX); flowPanel.add(heading); HTML subText = new HTML( @@ -599,19 +655,6 @@ public class LayerManager { layerLabel.getElement().getStyle().setMarginBottom(5, Unit.PX); flowPanel.add(layerLabel); - - /* - if (features == null || features.isEmpty()) { - FlexTable flex = new FlexTable(); - flex.setCellPadding(1); - flex.setCellSpacing(1); - flex.getElement().addClassName("table-feature"); - flex.setHTML(0, 0, new HTML("No data available").toString()); - flowPanel.add(flex); - continue; - // olMap.showPopup(vpPanel.toString(), onFailureCenterTo); - }*/ - GWT.log("Displaying " + features.size() + " features"); FlexTable intFlex = new FlexTable(); intFlex.setCellPadding(1); @@ -661,7 +704,7 @@ public class LayerManager { olMap.showPopup(scrollPanel.toString(), queryClick.getCenter()); } - + /** * Show popup info for centroid layer. * diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java index 20aa606..6259a65 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java @@ -29,8 +29,49 @@ public class DoActionOnDetailLayersEvent extends GwtEvent(); @@ -822,15 +823,22 @@ public abstract class OpenLayerOSM { * @param layerSource the source index * @param layerTarget the target index */ - public void swapDetailsLayers(String layerSource, String layerTarget) { + public void swapDetailsLayers(SwapLayer swapLSource, SwapLayer swapLTarget) { + + String layerSource = swapLSource.getLayerItem().getName(); + String layerTarget = swapLTarget.getLayerItem().getName(); Image layer1 = wmsDetailsLayerMap.get(layerSource); Image layer2 = wmsDetailsLayerMap.get(layerTarget); - int zIndex1 = layer1.getZIndex(); - int zIndex2 = layer2.getZIndex(); - layer1.setZIndex(zIndex2); - layer2.setZIndex(zIndex1); - + int zIndexS = swapLSource.getPosition()+1; + int zIndexT = swapLTarget.getPosition()+1; + GWT.log("new zindex source: "+zIndexS+", new zTarget: "+zIndexT); + layer1.setZIndex(zIndexT); + layer2.setZIndex(zIndexS); + + GWT.log("layer1 source: "+layerSource+", new zIndex: "+layer1.getZIndex()); + GWT.log("layer1 target: "+layerTarget+", new zIndex: "+layer2.getZIndex()); + } /** 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 4842c41..850052b 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 @@ -21,10 +21,12 @@ import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.Widget; /** @@ -76,7 +78,7 @@ public class GeonaDataViewMainPanel extends Composite { Button layersDDB; @UiField - FlowPanel overlayLayersPanel; + ScrollPanel overlayLayersPanel; private MapPanel mapPanel; @@ -278,6 +280,9 @@ public class GeonaDataViewMainPanel extends Composite { //layersDDB.setVisible(true); overlayLayersPanel.setVisible(true); overlayLayersPanel.clear(); + int height = Window.getClientHeight() * 87 / 100; + panel.getElement().getStyle().setProperty("maxHeight", height+"px"); + //panel.getElement().getStyle().setProperty("maxHeight", height+"px"); overlayLayersPanel.add(panel); //layersDDBClickEvent(); } 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 c26a84d..3052b86 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 @@ -57,8 +57,8 @@ text="Remove Query" visible="false"> - +