From 0914769dcaed0b4ac8d0d2b4e240f57b8520d075 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 8 Oct 2021 15:09:35 +0200 Subject: [PATCH 01/12] mock of layer switcher GUI --- .../client/GeoportalDataViewer.java | 18 ++- .../client/ui/dandd/DragDropLayer.java | 130 ++++++++++++++++++ .../client/ui/dandd/LayerContainer.java | 25 ++++ .../client/ui/dandd/RangeSlider.java | 30 ++++ .../client/ui/dandd/RangeSlider.ui.xml | 16 +++ src/main/webapp/GeoportalDataViewer.css | 57 ++++++++ 6 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml 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 ba5ee1a..0f7ec96 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 @@ -23,6 +23,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.ui.GeonaDataViewMainPanel; +import org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd.DragDropLayer; import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery; @@ -37,6 +38,7 @@ import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.RootPanel; import ol.Coordinate; @@ -87,10 +89,24 @@ public class GeoportalDataViewer implements EntryPoint { * This is the entry point method. */ public void onModuleLoad() { + + + + + FlowPanel fp = new FlowPanel(); + + for (int i = 0; i < 10; i++) { + DragDropLayer dandd = new DragDropLayer("Layer: "+i, true, true); + fp.add(dandd); + } + + + + RootPanel.get(APP_DIV).add(fp); mainPanel = new GeonaDataViewMainPanel(applicationBus, getClientHeight()); - RootPanel.get(APP_DIV).add(mainPanel); + //RootPanel.get(APP_DIV).add(mainPanel); Scheduler.get().scheduleDeferred(new ScheduledCommand() { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java new file mode 100644 index 0000000..36e8c7e --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -0,0 +1,130 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; + +import com.github.gwtbootstrap.client.ui.Button; +import com.github.gwtbootstrap.client.ui.CheckBox; +import com.github.gwtbootstrap.client.ui.constants.IconType; +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.DragLeaveEvent; +import com.google.gwt.event.dom.client.DragLeaveHandler; +import com.google.gwt.event.dom.client.DragOverEvent; +import com.google.gwt.event.dom.client.DragOverHandler; +import com.google.gwt.event.dom.client.DragStartEvent; +import com.google.gwt.event.dom.client.DragStartHandler; +import com.google.gwt.event.dom.client.DropEvent; +import com.google.gwt.event.dom.client.DropHandler; +import com.google.gwt.user.client.ui.FlexTable; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.Widget; + +public class DragDropLayer extends FlowPanel { + + private static DragDropLayer dragging = null; + private static DragDropLayer draggingTarget = null; + final boolean droppable; + private Label label; + private CheckBox checkBoxVisibility = new CheckBox(); + private Button button = new Button(); + + public DragDropLayer(String text, boolean draggable, boolean droppable) { + this.label = new Label(text); + + getElement().getStyle().setMarginTop(5, Unit.PX); + getElement().getStyle().setMarginBottom(10, Unit.PX); + + if (draggable) { + initDrag(); + } + if (droppable) { + initDrop(); + } + this.droppable = droppable; + + if (droppable) { + button.addStyleName("droppable"); + } else if (draggable) { + button.addStyleName("draggable"); + } + + RangeSlider rs = new RangeSlider(); + FlexTable ft = new FlexTable(); + ft.setWidget(0, 0, button); + checkBoxVisibility.getElement().getStyle().setMarginLeft(10, Unit.PX); + ft.setWidget(0, 1, checkBoxVisibility); + ft.setWidget(0, 2, label); + ft.setWidget(1, 2, new SimplePanel(rs)); + add(ft); + button.setIcon(IconType.MOVE); + } + + private void initDrag() { + button.getElement().setDraggable(Element.DRAGGABLE_TRUE); + + addDomHandler(new DragStartHandler() { + + @Override + public void onDragStart(DragStartEvent event) { + dragging = DragDropLayer.this; + event.setData("ID", "UniqueIdentifier"); + event.getDataTransfer().setDragImage(getElement(), 10, 10); + + } + }, DragStartEvent.getType()); + } + + private void initDrop() { + + addDomHandler(new DragOverHandler() { + @Override + public void onDragOver(DragOverEvent event) { + button.addStyleName("dropping-over"); + GWT.log("drag over"); + draggingTarget = (DragDropLayer) event.getSource(); + } + }, DragOverEvent.getType()); + + addDomHandler(new DragLeaveHandler() { + @Override + public void onDragLeave(DragLeaveEvent event) { + button.removeStyleName("dropping-over"); + GWT.log("drag leave"); + // draggingTarget = (DragDropLayer) event.getSource(); + } + }, DragLeaveEvent.getType()); + + addDomHandler(new DropHandler() { + @Override + public void onDrop(DropEvent event) { + event.preventDefault(); + Object dropTarget = event.getSource(); + GWT.log("on drop"); + button.removeStyleName("dropping-over"); + if (dragging != null) { + Widget target = null; + Widget source = null; + FlowPanel tree = (FlowPanel) DragDropLayer.this.getParent(); + + source = dragging; + int sourceIndex = tree.getWidgetIndex(source); + int targetIndex = tree.getWidgetIndex(draggingTarget); + GWT.log("sourceIndex: " + sourceIndex); + GWT.log("targetIndex: " + targetIndex); + if (sourceIndex != targetIndex && targetIndex > 0) { + tree.remove(source); + target = tree; + + if (source != null && target != null) { + tree.insert(source, targetIndex); + // target.setState(true); + } + dragging = null; + } + } + } + }, DropEvent.getType()); + } + +} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java new file mode 100644 index 0000000..8748578 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java @@ -0,0 +1,25 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; + +import com.github.gwtbootstrap.client.ui.CheckBox; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Label; + +public class LayerContainer extends FlowPanel{ + + private CheckBox checkBoxVisibility = new CheckBox(); + private Label label; + private RangeSlider rs = new RangeSlider(); + private HorizontalPanel hp = new HorizontalPanel(); + private DragDropLayer dd = new DragDropLayer(DEBUG_ID_PREFIX, true, true); + + public LayerContainer(String layerName) { + add(dd); + hp.add(checkBoxVisibility); + label = new Label(layerName); + hp.add(label); + add(hp); + add(rs); + } + +} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java new file mode 100644 index 0000000..7e1c70d --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java @@ -0,0 +1,30 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Element; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; + +public class RangeSlider extends Composite { + + private static RangeSliderUiBinder uiBinder = GWT.create(RangeSliderUiBinder.class); + + interface RangeSliderUiBinder extends UiBinder { + } + + public RangeSlider() { + initWidget(uiBinder.createAndBindUi(this)); + } + + @UiField + Element theSlider; + + public RangeSlider(String firstName) { + initWidget(uiBinder.createAndBindUi(this)); + + theSlider.addClassName("slider"); + + } +} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml new file mode 100644 index 0000000..574b54e --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml @@ -0,0 +1,16 @@ + + + + .important { + font-weight: bold; + } + + .slidecontainer { + width: 100%; + } + + + + + \ No newline at end of file diff --git a/src/main/webapp/GeoportalDataViewer.css b/src/main/webapp/GeoportalDataViewer.css index c471d94..d5964c2 100644 --- a/src/main/webapp/GeoportalDataViewer.css +++ b/src/main/webapp/GeoportalDataViewer.css @@ -276,4 +276,61 @@ body { .table-feature tr:first-child { font-weight: bold; +} + +.dropping-over { + background-color: #fcfcfc; + opacity: 0.4; +} + +.droppable:not(:hover), .droppable:not(:active) { + border: 0px !important; + box-shadow: none !important; +} + +.dropping-leave { + border: 0px !important; + box-shadow: 0px !important; +} + +.droppable:hover, .droppable:active { + padding-left: 15px; + cursor: move; /* fallback if grab cursor is unsupported */ + cursor: grab; + cursor: -moz-grab; + cursor: -webkit-grab; +} + +.slider { + -webkit-appearance: none; + width: 100%; + height: 8px; + border-radius: 5px; + background: #d3d3d3; + outline: none; + opacity: 0.7; + -webkit-transition: .2s; + transition: opacity .2s; +} + +.slider:hover { + opacity: 1; +} + +.slider::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 12px; + height: 12px; + border-radius: 50%; + background: #04AA6D; + cursor: pointer; +} + +.slider::-moz-range-thumb { + width: 12px; + height: 12px; + border-radius: 50%; + background: #04AA6D; + cursor: pointer; } \ No newline at end of file -- 2.17.1 From 56f23d9accf9ebe7072e942e6353b1f622eaebe1 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 8 Oct 2021 18:06:32 +0200 Subject: [PATCH 02/12] in progress #21991 --- .settings/org.eclipse.wst.common.component | 35 ++++--- .../GeoportalDataViewer.gwt.xml | 2 +- .../client/GeoportalDataViewer.java | 52 ++++++---- .../client/LayerManager.java | 7 ++ .../client/OverlayLayerManager.java | 40 ++++++++ .../events/DoActionOnDetailLayersEvent.java | 96 +++++++++++++++++++ .../DoActionOnDetailLayersEventHandler.java | 21 ++++ .../client/gis/OpenLayerOSM.java | 42 ++++++-- .../client/ui/dandd/DragDropLayer.java | 27 +++++- .../client/ui/dandd/LayerContainer.java | 25 ----- .../GeoportalDataViewer.gwt.xml | 2 +- src/main/webapp/GeoportalDataViewer.css | 4 + 12 files changed, 282 insertions(+), 71 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java create mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEventHandler.java delete mode 100644 src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 3463b99..eff1bce 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,6 @@ - + + @@ -19,7 +20,8 @@ - + + @@ -39,7 +41,8 @@ - + + @@ -59,7 +62,8 @@ - + + @@ -79,7 +83,8 @@ - + + @@ -95,7 +100,8 @@ - + + @@ -111,13 +117,11 @@ - - - + uses - - + + @@ -137,7 +141,8 @@ - + + @@ -155,7 +160,8 @@ - + + @@ -175,7 +181,8 @@ - + + diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml index a673605..71a67d1 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml @@ -6,7 +6,7 @@ - + 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 0f7ec96..4bf23e0 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 @@ -13,6 +13,9 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMap import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEventHandler; import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEvent; 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.DoActionOnDetailLayersEventHandler; import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEvent; import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEventHandler; import org.gcube.portlets.user.geoportaldataviewer.client.events.QueryDataEvent; @@ -23,7 +26,6 @@ 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.ui.GeonaDataViewMainPanel; -import org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd.DragDropLayer; import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery; @@ -38,7 +40,6 @@ import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.RootPanel; import ol.Coordinate; @@ -89,24 +90,8 @@ public class GeoportalDataViewer implements EntryPoint { * This is the entry point method. */ public void onModuleLoad() { - - - - - FlowPanel fp = new FlowPanel(); - - for (int i = 0; i < 10; i++) { - DragDropLayer dandd = new DragDropLayer("Layer: "+i, true, true); - fp.add(dandd); - } - - - - RootPanel.get(APP_DIV).add(fp); - mainPanel = new GeonaDataViewMainPanel(applicationBus, getClientHeight()); - - //RootPanel.get(APP_DIV).add(mainPanel); + RootPanel.get(APP_DIV).add(mainPanel); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @@ -209,7 +194,6 @@ public class GeoportalDataViewer implements EntryPoint { }); bindEvents(); - } /** @@ -352,6 +336,34 @@ public class GeoportalDataViewer implements EntryPoint { } }); + + applicationBus.addHandler(DoActionOnDetailLayersEvent.TYPE, new DoActionOnDetailLayersEventHandler() { + + @Override + public void onDoActionOnDetailLayers(DoActionOnDetailLayersEvent doActionOnDetailLayersEvent) { + + DO_LAYER_ACTION doAction = doActionOnDetailLayersEvent.getDoAction(); + switch (doAction) { + case OPACITY: + olMapMng.getOLOSMMap().setWMSDetailLayerOpacity(doActionOnDetailLayersEvent.getLayerSource(), + doActionOnDetailLayersEvent.getOpacity()); + break; + + case SWAP: + + break; + + case VISIBILITY: + olMapMng.getOLOSMMap().setWMSDetailLayerVisible(doActionOnDetailLayersEvent.getLayerSource(), + doActionOnDetailLayersEvent.getVisibility()); + break; + + default: + break; + } + + } + }); } 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 96c4b48..7ea071e 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 @@ -88,6 +88,8 @@ public class LayerManager { private HandlerManager applicationBus; private org.gcube.application.geoportalcommon.shared.LayerItem baseLayerFromISProfile; + + private OverlayLayerManager overlayLayerManager; /** * Instantiates a new layer manager. @@ -96,6 +98,7 @@ public class LayerManager { */ public LayerManager(HandlerManager applicationBus) { this.applicationBus = applicationBus; + overlayLayerManager = new OverlayLayerManager(applicationBus); bindEvents(); } @@ -312,6 +315,8 @@ public class LayerManager { public void removeAllDetailLayers() { mapDetailLayerObjects.clear(); olMap.removeAllDetailLayers(); + overlayLayerManager.resetLayers(); + overlayLayerManager.hide(); } /** @@ -422,6 +427,8 @@ public class LayerManager { if (dlo == null) { mapDetailLayerObjects.put(key, lo); olMap.addWMSDetailLayer(layerItem); + overlayLayerManager.addLayerItem(layerItem); + overlayLayerManager.show(); } else { GWT.log("Skipping detail layer " + key + " already added to Map"); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java new file mode 100644 index 0000000..26023ad --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java @@ -0,0 +1,40 @@ +package org.gcube.portlets.user.geoportaldataviewer.client; + +import java.util.ArrayList; + +import org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd.DragDropLayer; +import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; + +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.ui.DialogBox; +import com.google.gwt.user.client.ui.FlowPanel; + +public class OverlayLayerManager extends DialogBox { + + ArrayList layers = new ArrayList(); + FlowPanel fp = new FlowPanel(); + private HandlerManager applicationBus; + + public OverlayLayerManager(HandlerManager applicationBus) { + this.applicationBus = applicationBus; + setText("Layers"); + getElement().addClassName("myOverlayLayerManager"); + fp.getElement().getStyle().setMarginTop(10, Unit.PX); + fp.getElement().getStyle().setMarginBottom(10, Unit.PX); + add(fp); + //getElement().getStyle().setZIndex(100); + } + + void addLayerItem(LayerItem layer) { + DragDropLayer dandd = new DragDropLayer(applicationBus, layer, true, true); + layers.add(layer); + fp.add(dandd); + } + + public void resetLayers() { + layers.clear(); + fp.clear(); + + } +} 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 new file mode 100644 index 0000000..ff8aa21 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEvent.java @@ -0,0 +1,96 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.events; + +import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * The Class DoActionOnDetailLayersEvent. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Oct 8, 2021 + */ +public class DoActionOnDetailLayersEvent extends GwtEvent { + public static Type TYPE = new Type(); + + /** + * The Enum DO_LAYER_ACTION. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Oct 8, 2021 + */ + public static enum DO_LAYER_ACTION { + VISIBILITY, SWAP, OPACITY + } + + private DO_LAYER_ACTION doAction; + private LayerItem layerSource; + private LayerItem layerTarget; + private int opacity; + private boolean visibility; + + /** + * Instantiates a new added layer to map event. + * + * @param action the action + * @param layerSource the layer source + * @param layerTarget the layer target + */ + public DoActionOnDetailLayersEvent(DO_LAYER_ACTION action, LayerItem layerSource, LayerItem layerTarget) { + this.layerSource = layerSource; + this.layerTarget = layerTarget; + this.doAction = action; + } + + public void setOpacity(int opacity) { + this.opacity = opacity; + } + + public void setVisibility(boolean visibility) { + this.visibility = visibility; + } + + /** + * Gets the associated type. + * + * @return the associated type + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /** + * Dispatch. + * + * @param handler the handler + */ + @Override + protected void dispatch(DoActionOnDetailLayersEventHandler handler) { + handler.onDoActionOnDetailLayers(this); + + } + + public DO_LAYER_ACTION getDoAction() { + return doAction; + } + + public LayerItem getLayerSource() { + return layerSource; + } + + public LayerItem getLayerTarget() { + return layerTarget; + } + + public int getOpacity() { + return opacity; + } + + public boolean getVisibility() { + return visibility; + } + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEventHandler.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEventHandler.java new file mode 100644 index 0000000..b11bac8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/DoActionOnDetailLayersEventHandler.java @@ -0,0 +1,21 @@ +package org.gcube.portlets.user.geoportaldataviewer.client.events; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * The Interface DoActionOnDetailLayersEventHandler. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Oct 8, 2021 + */ +public interface DoActionOnDetailLayersEventHandler extends EventHandler { + + /** + * On do action on detail layers. + * + * @param doActionOnDetailLayersEvent the do action on detail layers event + */ + void onDoActionOnDetailLayers(DoActionOnDetailLayersEvent doActionOnDetailLayersEvent); +} diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java index b0e1a2c..e7e0743 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java @@ -58,7 +58,6 @@ import ol.source.Source; import ol.source.Vector; import ol.source.XyzOptions; -// TODO: Auto-generated Javadoc /** * The Class OpenLayerOSM. * @@ -131,7 +130,9 @@ public abstract class OpenLayerOSM { private boolean isQueryPointActive; - private java.util.Map wmsDetailsLayerMap; + private HashMap wmsDetailsLayerMap; + + private Integer[] wmsDetailsLayerZIndex = new Integer[100]; private HashMap wmsLayerMap; @@ -149,6 +150,10 @@ public abstract class OpenLayerOSM { public OpenLayerOSM(String divTargetId, HandlerManager eventBus) { this.eventBus = eventBus; + for (int i = 0; i < 100; i++) { + wmsDetailsLayerZIndex[i] = 1000 + i; + } + // create a OSM-layer XyzOptions xyzOptions = OLFactory.createOptions(); // osmSourceOptions.setCrossOrigin("Anonymous"); @@ -157,7 +162,7 @@ public abstract class OpenLayerOSM { Osm osmSource = new Osm(xyzOptions); LayerOptions osmLayerOptions = OLFactory.createOptions(); osmLayerOptions.setSource(osmSource); - + Tile osmLayer = new Tile(osmLayerOptions); // create a projection projectionOptions.setCode(MAP_PROJECTION.EPSG_3857.getName()); @@ -387,7 +392,7 @@ public abstract class OpenLayerOSM { if (wmsDetailsLayerMap == null) wmsDetailsLayerMap = new HashMap(); - String key = layerItem.getName(); + String key = layerItem.getName(); Image layer = wmsDetailsLayerMap.get(key); @@ -414,9 +419,6 @@ public abstract class OpenLayerOSM { } Image wmsLayer = new Image(layerOptions); - - // visibleLayerItems - map.addLayer(wmsLayer); wmsDetailsLayerMap.put(key, wmsLayer); @@ -716,7 +718,6 @@ public abstract class OpenLayerOSM { return this.map != null; } - /** * Gets the layers from map. * @@ -769,5 +770,30 @@ public abstract class OpenLayerOSM { public HashMap getWmsLayerMap() { return wmsLayerMap; } + + public void setWMSDetailLayerVisible(LayerItem layerItem, boolean visible) { + String key = layerItem.getName(); + Image layer = wmsDetailsLayerMap.get(key); + layer.setVisible(visible); + } + + public void setWMSDetailLayerOpacity(LayerItem layerItem, int opacity) { + String key = layerItem.getName(); + Image layer = wmsDetailsLayerMap.get(key); + layer.setOpacity(opacity); + } + + public void swapLayers(LayerItem layerItem, LayerItem layerItem2) { + String key1 = layerItem.getName(); + Image layer1 = wmsDetailsLayerMap.get(key1); + + String key2 = layerItem.getName(); + Image layer2 = wmsDetailsLayerMap.get(key2); + + int zIndex1 = layer1.getZIndex(); + int zIndex2 = layer2.getZIndex(); + layer1.setZIndex(zIndex2); + layer2.setZIndex(zIndex1); + } } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java index 36e8c7e..b7daff3 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -1,11 +1,17 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; +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.shared.gis.LayerItem; + import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.CheckBox; import com.github.gwtbootstrap.client.ui.constants.IconType; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.DragLeaveEvent; import com.google.gwt.event.dom.client.DragLeaveHandler; import com.google.gwt.event.dom.client.DragOverEvent; @@ -14,6 +20,9 @@ import com.google.gwt.event.dom.client.DragStartEvent; import com.google.gwt.event.dom.client.DragStartHandler; import com.google.gwt.event.dom.client.DropEvent; import com.google.gwt.event.dom.client.DropHandler; +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; @@ -28,9 +37,11 @@ public class DragDropLayer extends FlowPanel { private Label label; private CheckBox checkBoxVisibility = new CheckBox(); private Button button = new Button(); + private HandlerManager applicationBus; - public DragDropLayer(String text, boolean draggable, boolean droppable) { - this.label = new Label(text); + public DragDropLayer(HandlerManager applicationBus, LayerItem layer, boolean draggable, boolean droppable) { + this.applicationBus = applicationBus; + this.label = new Label(layer.getName()); getElement().getStyle().setMarginTop(5, Unit.PX); getElement().getStyle().setMarginBottom(10, Unit.PX); @@ -53,11 +64,23 @@ public class DragDropLayer extends FlowPanel { FlexTable ft = new FlexTable(); ft.setWidget(0, 0, button); checkBoxVisibility.getElement().getStyle().setMarginLeft(10, Unit.PX); + checkBoxVisibility.setValue(true); ft.setWidget(0, 1, checkBoxVisibility); ft.setWidget(0, 2, label); ft.setWidget(1, 2, new SimplePanel(rs)); add(ft); button.setIcon(IconType.MOVE); + + checkBoxVisibility.addValueChangeHandler(new ValueChangeHandler() { + + @Override + public void onValueChange(ValueChangeEvent event) { + DoActionOnDetailLayersEvent dae = new DoActionOnDetailLayersEvent(DO_LAYER_ACTION.VISIBILITY, layer, null); + dae.setVisibility(checkBoxVisibility.getValue()); + applicationBus.fireEvent(dae); + + } + }); } private void initDrag() { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java deleted file mode 100644 index 8748578..0000000 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/LayerContainer.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; - -import com.github.gwtbootstrap.client.ui.CheckBox; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.Label; - -public class LayerContainer extends FlowPanel{ - - private CheckBox checkBoxVisibility = new CheckBox(); - private Label label; - private RangeSlider rs = new RangeSlider(); - private HorizontalPanel hp = new HorizontalPanel(); - private DragDropLayer dd = new DragDropLayer(DEBUG_ID_PREFIX, true, true); - - public LayerContainer(String layerName) { - add(dd); - hp.add(checkBoxVisibility); - label = new Label(layerName); - hp.add(label); - add(hp); - add(rs); - } - -} diff --git a/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml b/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml index a673605..71a67d1 100644 --- a/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/geoportaldataviewer/GeoportalDataViewer.gwt.xml @@ -6,7 +6,7 @@ - + diff --git a/src/main/webapp/GeoportalDataViewer.css b/src/main/webapp/GeoportalDataViewer.css index d5964c2..deec93c 100644 --- a/src/main/webapp/GeoportalDataViewer.css +++ b/src/main/webapp/GeoportalDataViewer.css @@ -333,4 +333,8 @@ body { border-radius: 50%; background: #04AA6D; cursor: pointer; +} + +.myOverlayLayerManager{ + border-radius: 20px; } \ No newline at end of file -- 2.17.1 From c8998392205a3f857aa6aa00e1ab7e945972c21c Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 8 Oct 2021 18:15:54 +0200 Subject: [PATCH 03/12] in progress #21991 --- .../client/OverlayLayerManager.java | 14 +++++++++----- .../client/ui/GeonaDataViewMainPanel.java | 8 ++++++++ .../client/ui/GeonaDataViewMainPanel.ui.xml | 6 ++++-- .../client/ui/dandd/DragDropLayer.java | 2 -- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java index 26023ad..43e7fdd 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java @@ -10,7 +10,7 @@ import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.FlowPanel; -public class OverlayLayerManager extends DialogBox { +public class OverlayLayerManager { ArrayList layers = new ArrayList(); FlowPanel fp = new FlowPanel(); @@ -18,12 +18,12 @@ public class OverlayLayerManager extends DialogBox { public OverlayLayerManager(HandlerManager applicationBus) { this.applicationBus = applicationBus; - setText("Layers"); - getElement().addClassName("myOverlayLayerManager"); + //setText("Layers"); + //getElement().addClassName("myOverlayLayerManager"); fp.getElement().getStyle().setMarginTop(10, Unit.PX); fp.getElement().getStyle().setMarginBottom(10, Unit.PX); - add(fp); - //getElement().getStyle().setZIndex(100); + //add(fp); + // getElement().getStyle().setZIndex(100); } void addLayerItem(LayerItem layer) { @@ -37,4 +37,8 @@ public class OverlayLayerManager extends DialogBox { fp.clear(); } + + FlowPanel getPanel() { + return fp; + } } 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 54e264d..b394d43 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 @@ -11,6 +11,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil; import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil.Location; import com.github.gwtbootstrap.client.ui.Button; +import com.github.gwtbootstrap.client.ui.DropdownButton; import com.github.gwtbootstrap.client.ui.NavLink; import com.github.gwtbootstrap.client.ui.constants.IconType; import com.google.gwt.core.client.GWT; @@ -69,6 +70,9 @@ public class GeonaDataViewMainPanel extends Composite { @UiField Button extentToEarth; + + @UiField + DropdownButton detailLayers; private MapPanel mapPanel; @@ -228,5 +232,9 @@ public class GeonaDataViewMainPanel extends Composite { public RecordDV getDisplyedRecord() { return detailsPanel.getDisplayedRecord(); } + + public DropdownButton getDetailLayers() { + return detailLayers; + } } 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 3a2b810..0b1d204 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 @@ -32,8 +32,8 @@ - + @@ -55,6 +55,8 @@ + + Date: Mon, 11 Oct 2021 18:01:09 +0200 Subject: [PATCH 04/12] Built layer switcher panel --- .../client/GeoportalDataViewer.java | 53 ++++++- .../client/LayerManager.java | 146 ++++-------------- .../client/OverlayLayerManager.java | 15 +- .../client/events/AddedLayerToMapEvent.java | 32 +++- .../client/gis/OpenLayerOSM.java | 13 +- .../client/ui/GeonaDataViewMainPanel.java | 87 +++++++++-- .../client/ui/GeonaDataViewMainPanel.ui.xml | 6 +- .../client/ui/MapPanel.ui.xml | 1 - .../client/ui/dandd/DragDropLayer.java | 16 +- src/main/webapp/GeoportalDataViewer.css | 7 + 10 files changed, 220 insertions(+), 156 deletions(-) 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 4bf23e0..3fb7fe2 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 @@ -10,6 +10,7 @@ import org.gcube.application.geoportalcommon.shared.products.model.RecordDV; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MapEventType; import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEvent; +import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEvent.LAYER_TYPE; import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEventHandler; import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEvent; import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEventHandler; @@ -174,7 +175,7 @@ public class GeoportalDataViewer implements EntryPoint { layerItem.setName(layerName); layerManager.setBaseLayerFromIsProfile(layerItem); layerManager.addLayer(theItemType, null, null, layerItem.getWmsLink(), false, false, - null, false, null, null,null); + null, false, null, null, null); if (paramGeonaItemID != null) { if (paramGeonaItemType == null) { @@ -267,7 +268,7 @@ public class GeoportalDataViewer implements EntryPoint { @Override public void onLayerRendered(AddedLayerToMapEvent addedLayerToMapEvent) { - GWT.log("Fired AddedLayerToMapEvent " + addedLayerToMapEvent.getLayerItem()); + GWT.log("Fired AddedLayerToMapEvent " + addedLayerToMapEvent.getLayerItem() + "layer type: "+addedLayerToMapEvent.getLayerType()); // GeoportalDataViewerConstants.print("Fired AddedLayerToMapEvent // "+addedLayerToMapEvent.getLayerItem()); @@ -304,6 +305,23 @@ public class GeoportalDataViewer implements EntryPoint { // TODO: handle exception } + LAYER_TYPE layerType = addedLayerToMapEvent.getLayerType(); + + if (layerType != null) { + + switch (layerType) { + case BASE: + + break; + case OVERLAY: + mainPanel.showOverlayLayers(layerManager.getOverlayLayerManager().getPanel()); + break; + + default: + break; + } + } + } }); @@ -315,8 +333,13 @@ public class GeoportalDataViewer implements EntryPoint { if (mainPanel.getDisplyedRecord() == null && !olMapMng.isQueryPointActive()) { olMapMng.hidePopInfo(); layerManager.removeAllDetailLayers(); + } + mainPanel.hideOverlayLayers(); + // layerManager.getOverlayLayerManager().hide(); + // hidePopupLayers(); + } }); @@ -336,7 +359,7 @@ public class GeoportalDataViewer implements EntryPoint { } }); - + applicationBus.addHandler(DoActionOnDetailLayersEvent.TYPE, new DoActionOnDetailLayersEventHandler() { @Override @@ -367,6 +390,23 @@ public class GeoportalDataViewer implements EntryPoint { } +// /** +// * 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; +// }; +// +// }-*/; + private void performWFSQueryOnCentroid(RecordDV record) { if (record != null) { GWT.log("record instanceof ConcessioneDV: " + (record instanceof ConcessioneDV) + " with mongo item id: " @@ -384,9 +424,10 @@ public class GeoportalDataViewer implements EntryPoint { GeoQuery select = olMapMng.toDataPointQuery(transfCoord, false); GWT.log("GeoQuery: " + select); // GeoportalDataViewerConstants.print("fireEvent QueryDataEvent"); - 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)); + 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)); } else { GeoportalDataViewerConstants.printJs( "I cannot select the point one or both coordiantes are null. X: " + x + ", Y:" + y); 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 7ea071e..d2fac8f 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 @@ -88,7 +88,7 @@ public class LayerManager { private HandlerManager applicationBus; private org.gcube.application.geoportalcommon.shared.LayerItem baseLayerFromISProfile; - + private OverlayLayerManager overlayLayerManager; /** @@ -312,11 +312,13 @@ public class LayerManager { }); } + /** + * Removes the all detail layers. + */ public void removeAllDetailLayers() { mapDetailLayerObjects.clear(); olMap.removeAllDetailLayers(); overlayLayerManager.resetLayers(); - overlayLayerManager.hide(); } /** @@ -428,7 +430,7 @@ public class LayerManager { mapDetailLayerObjects.put(key, lo); olMap.addWMSDetailLayer(layerItem); overlayLayerManager.addLayerItem(layerItem); - overlayLayerManager.show(); + //overlayLayerManager.show(); } else { GWT.log("Skipping detail layer " + key + " already added to Map"); } @@ -524,15 +526,14 @@ public class LayerManager { /** * Show popup info for layer. * - * @param geoNaDataObject the geo na data object - * @param feature the feature - * @param onFailureCenterTo the on failure center to + * @param listGeoNaDataObject the list geo na data object + * @param queryClick the query click */ public void showPopupInfoForLayer(List listGeoNaDataObject, ExtentWrapped queryClick) { ScrollPanel scrollPanel = new ScrollPanel(); FlowPanel flowPanel = new FlowPanel(); - //flowPanel.getElement().getStyle().setProperty("maxHeight", "600px"); + // flowPanel.getElement().getStyle().setProperty("maxHeight", "600px"); scrollPanel.add(flowPanel); String prevConcessioneName = ""; @@ -572,7 +573,7 @@ public class LayerManager { flowPanel.add(layerLabel); List features = geoNaSpatialQueryResult.getFeatures(); - + if (features == null || features.isEmpty()) { FlexTable flex = new FlexTable(); flex.setCellPadding(1); @@ -583,8 +584,8 @@ public class LayerManager { continue; // olMap.showPopup(vpPanel.toString(), onFailureCenterTo); } - - GWT.log("Displaying "+features.size() + " features"); + + GWT.log("Displaying " + features.size() + " features"); FlexTable intFlex = new FlexTable(); intFlex.setCellPadding(1); intFlex.setCellSpacing(1); @@ -600,8 +601,8 @@ public class LayerManager { Map> entries = feature.getMapProperties(); if (entries.size() == 0) { - //Adding this row to show "no property" for feature - //intFlex.setHTML(i + 1, 1, new HTML("No property").toString()); + // Adding this row to show "no property" for feature + // intFlex.setHTML(i + 1, 1, new HTML("No property").toString()); } int j = 0; for (String key : entries.keySet()) { @@ -626,113 +627,13 @@ public class LayerManager { } flowPanel.add(intFlex); } catch (Exception e) { - GeoportalDataViewerConstants.printJs("Error: "+e.getMessage()); + GeoportalDataViewerConstants.printJs("Error: " + e.getMessage()); } } olMap.showPopup(scrollPanel.toString(), queryClick.getCenter()); } - -// /** -// * Show popup info for layer. -// * -// * @param geoNaDataObject the geo na data object -// * @param feature the feature -// * @param onFailureCenterTo the on failure center to -// */ -// public void showPopupInfoForLayer(List listGeoNaDataObject, -// ExtentWrapped queryClick) { -// -// ScrollPanel scrollPanel = new ScrollPanel(); -// VerticalPanel vpPanel = new VerticalPanel(); -// scrollPanel.add(vpPanel); -// -// String prevConcessioneName = ""; -// for (GeoNaSpatialQueryResult geoNaSpatialQueryResult : listGeoNaDataObject) { -// -// GWT.log("baseLayerFromISProfile.getName() :"+baseLayerFromISProfile.getName()); -// LayerObject lo = geoNaSpatialQueryResult.getSourceLayerObject(); -// LayerItem sourceLI = lo.getLayerItem(); -// -// String layerSourceName = sourceLI.getName(); -// -// //skipping centroid layer -// if(layerSourceName==null || layerSourceName.compareToIgnoreCase(baseLayerFromISProfile.getName())==0) { -// continue; -// } -// -// String nomeConcessione = lo.getSourceConcessione().getNome(); -// if(prevConcessioneName.compareTo(nomeConcessione)!=0) { -// String concessioneIntro = StringUtil.ellipsize(lo.getSourceConcessione().getNome(), 40); -// Heading heading = new Heading(4, concessioneIntro); -// heading.getElement().getStyle().setMarginBottom(10, Unit.PX); -// vpPanel.add(heading); -// HTML subText = new HTML("

Layers and Properties

"); -// vpPanel.add(subText); -// } -// -// prevConcessioneName = nomeConcessione; -// -// Label layerLabel = new Label(); -// layerLabel.setType(LabelType.INFO); -// -// layerLabel.setText(layerSourceName); -// layerLabel.getElement().getStyle().setMarginTop(10, Unit.PX); -// layerLabel.getElement().getStyle().setMarginBottom(5, Unit.PX); -// vpPanel.add(layerLabel); -// -// List features = geoNaSpatialQueryResult.getFeatures(); -// -// 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()); -// vpPanel.add(flex); -// continue; -// //olMap.showPopup(vpPanel.toString(), onFailureCenterTo); -// } -// -// for (FeatureRow feature : features) { -// -// FlexTable intFlex = new FlexTable(); -// intFlex.setCellPadding(1); -// intFlex.setCellSpacing(1); -// intFlex.getElement().addClassName("table-feature"); -// -// intFlex.setHTML(0, 0, new HTML("Feature Id").toString()); -// intFlex.setHTML(1, 0, new HTML(feature.getId()).toString()); -// -// // Showing properties belonging to concessioni centroid layer -// Map> entries = feature.getMapProperties(); -// -// if (entries.size() == 0) { -// intFlex.setHTML(1, 1, new HTML("No property available").toString()); -// } -// int j = 1; -// for (String key : entries.keySet()) { -// List theValues = entries.get(key); -// String valueToDisplay = ""; -// for (String value : theValues) { -// valueToDisplay+=value+", "; -// -// } -// valueToDisplay = valueToDisplay.substring(0,valueToDisplay.length()-2); -// intFlex.setHTML(0, j, new HTML(key).toString()); -// intFlex.setHTML(1, j, new HTML(valueToDisplay).toString()); -// j++; -// -// } -// -// vpPanel.add(intFlex); -// } -// } -// -// olMap.showPopup(scrollPanel.toString(), queryClick.getCenter()); -// -// } /** * Show popup info for centroid layer. @@ -935,12 +836,31 @@ public class LayerManager { return layerManagerBus; } + /** + * Sets the base layer from is profile. + * + * @param layerItem the new base layer from is profile + */ public void setBaseLayerFromIsProfile(org.gcube.application.geoportalcommon.shared.LayerItem layerItem) { this.baseLayerFromISProfile = layerItem; } + /** + * Gets the base layer from IS proile. + * + * @return the base layer from IS proile + */ public org.gcube.application.geoportalcommon.shared.LayerItem getBaseLayerFromISProile() { return baseLayerFromISProfile; } + /** + * Gets the overlay layer manager. + * + * @return the overlay layer manager + */ + public OverlayLayerManager getOverlayLayerManager() { + return overlayLayerManager; + } + } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java index 43e7fdd..823cecd 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java @@ -5,25 +5,18 @@ import java.util.ArrayList; import org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd.DragDropLayer; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; -import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.shared.HandlerManager; -import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.FlowPanel; public class OverlayLayerManager { - ArrayList layers = new ArrayList(); - FlowPanel fp = new FlowPanel(); + private ArrayList layers = new ArrayList(); + private FlowPanel fp = new FlowPanel(); private HandlerManager applicationBus; public OverlayLayerManager(HandlerManager applicationBus) { this.applicationBus = applicationBus; - //setText("Layers"); - //getElement().addClassName("myOverlayLayerManager"); - fp.getElement().getStyle().setMarginTop(10, Unit.PX); - fp.getElement().getStyle().setMarginBottom(10, Unit.PX); - //add(fp); - // getElement().getStyle().setZIndex(100); + //fp.addStyleName("layers-panel"); } void addLayerItem(LayerItem layer) { @@ -38,7 +31,7 @@ public class OverlayLayerManager { } - FlowPanel getPanel() { + public FlowPanel getPanel() { return fp; } } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/AddedLayerToMapEvent.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/AddedLayerToMapEvent.java index 42f3fd9..cb94887 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/AddedLayerToMapEvent.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/events/AddedLayerToMapEvent.java @@ -4,26 +4,38 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; import com.google.gwt.event.shared.GwtEvent; - - /** * The Class AddedLayerToMapEvent. * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * - * Nov 18, 2020 + * Nov 18, 2020 */ public class AddedLayerToMapEvent extends GwtEvent { public static Type TYPE = new Type(); private LayerItem layerItem; + private LAYER_TYPE layerType; + + /** + * The Enum LAYER_TYPE. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Oct 11, 2021 + */ + public enum LAYER_TYPE { + BASE, OVERLAY + } /** * Instantiates a new added layer to map event. * * @param layerItem the layer item + * @param layerType the layer type */ - public AddedLayerToMapEvent(LayerItem layerItem) { + public AddedLayerToMapEvent(LayerItem layerItem, LAYER_TYPE layerType) { this.layerItem = layerItem; + this.layerType = layerType; } /** @@ -46,7 +58,7 @@ public class AddedLayerToMapEvent extends GwtEvent handler.onLayerRendered(this); } - + /** * Gets the layer item. * @@ -55,6 +67,14 @@ public class AddedLayerToMapEvent extends GwtEvent public LayerItem getLayerItem() { return layerItem; } - + + /** + * Gets the layer type. + * + * @return the layer type + */ + public LAYER_TYPE getLayerType() { + return layerType; + } } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java index e7e0743..83412f2 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java @@ -7,6 +7,7 @@ import java.util.List; 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.events.AddedLayerToMapEvent; +import org.gcube.portlets.user.geoportaldataviewer.client.events.AddedLayerToMapEvent.LAYER_TYPE; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; import com.google.gwt.core.client.GWT; @@ -375,7 +376,7 @@ public abstract class OpenLayerOSM { wmsLayerMap.put(key, wmsLayer); GWT.log("Added WMSLayer for layer: " + layerItem.getName()); - eventBus.fireEvent(new AddedLayerToMapEvent(layerItem)); + eventBus.fireEvent(new AddedLayerToMapEvent(layerItem, LAYER_TYPE.BASE)); } else { GWT.log("The WMS layer with key: " + key + " already exists, skipping"); } @@ -423,7 +424,7 @@ public abstract class OpenLayerOSM { wmsDetailsLayerMap.put(key, wmsLayer); GWT.log("Added WMSDetailLayer for layer name: " + layerItem.getName()); - eventBus.fireEvent(new AddedLayerToMapEvent(layerItem)); + eventBus.fireEvent(new AddedLayerToMapEvent(layerItem, LAYER_TYPE.OVERLAY)); } else { GWT.log("The WMS detail layer with key: " + key + " already exists, skipping"); } @@ -564,7 +565,7 @@ public abstract class OpenLayerOSM { * @param element the element * @return the overlay */ - private Overlay addOverlay(Element element) { + public Overlay addOverlay(Element element) { /** * Create an overlay to anchor the popup to the map. */ @@ -770,7 +771,7 @@ public abstract class OpenLayerOSM { public HashMap getWmsLayerMap() { return wmsLayerMap; } - + public void setWMSDetailLayerVisible(LayerItem layerItem, boolean visible) { String key = layerItem.getName(); Image layer = wmsDetailsLayerMap.get(key); @@ -786,10 +787,10 @@ public abstract class OpenLayerOSM { public void swapLayers(LayerItem layerItem, LayerItem layerItem2) { String key1 = layerItem.getName(); Image layer1 = wmsDetailsLayerMap.get(key1); - + String key2 = layerItem.getName(); Image layer2 = wmsDetailsLayerMap.get(key2); - + int zIndex1 = layer1.getZIndex(); int zIndex2 = layer2.getZIndex(); layer1.setZIndex(zIndex2); 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 b394d43..8096d71 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 @@ -11,17 +11,18 @@ import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil; import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil.Location; import com.github.gwtbootstrap.client.ui.Button; -import com.github.gwtbootstrap.client.ui.DropdownButton; import com.github.gwtbootstrap.client.ui.NavLink; import com.github.gwtbootstrap.client.ui.constants.IconType; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +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.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.Widget; @@ -67,12 +68,15 @@ public class GeonaDataViewMainPanel extends Composite { @UiField Button extentToItaly; - + @UiField Button extentToEarth; - + @UiField - DropdownButton detailLayers; + Button layersDDB; + + @UiField + FlowPanel overlayLayersPanel; private MapPanel mapPanel; @@ -97,17 +101,39 @@ public class GeonaDataViewMainPanel extends Composite { dataPointSelection.setIcon(IconType.SCREENSHOT); dataBoxSelection.setIcon(IconType.BOOKMARK); removeQuery.setIcon(IconType.REMOVE); - + Image italyImg = new Image(Images.ICONS.italyIcon()); italyImg.getElement().getStyle().setPaddingLeft(20, Unit.PX); extentToItaly.getElement().appendChild(italyImg.getElement()); extentToItaly.setWidth("140px"); - + Image worldImg = new Image(Images.ICONS.worldIcon()); worldImg.getElement().getStyle().setPaddingLeft(20, Unit.PX); extentToEarth.getElement().appendChild(worldImg.getElement()); extentToEarth.setWidth("140px"); + //layersDDB.setToggle(true); + bindEvents(); + + } + + private void bindEvents() { + + layersDDB.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + GWT.log("layersDDB clicked"); + + if(overlayLayersPanel.isVisible()) { + overlayLayersPanel.setVisible(false); + }else { + overlayLayersPanel.setVisible(true); + } + } + }); + } /** @@ -190,7 +216,7 @@ public class GeonaDataViewMainPanel extends Composite { } }); - + extentToEarth.addClickHandler(new ClickHandler() { @Override @@ -232,9 +258,52 @@ public class GeonaDataViewMainPanel extends Composite { public RecordDV getDisplyedRecord() { return detailsPanel.getDisplayedRecord(); } + + /** + * Gets the layers DDB. + * + * @return the layers DDB + */ + public Button getLayersDDB() { + return layersDDB; + } + + /** + * Show overlay layers. + * + * @param panel the panel + */ + public void showOverlayLayers(FlowPanel panel) { + GWT.log("showOverlayLayers"); + //layersDDB.setVisible(true); + overlayLayersPanel.setVisible(true); + overlayLayersPanel.clear(); + overlayLayersPanel.add(panel); + //layersDDBClickEvent(); + } - public DropdownButton getDetailLayers() { - return detailLayers; + private void layersDDBClickEvent() { + layersDDB.fireEvent( new GwtEvent() { + @Override + public com.google.gwt.event.shared.GwtEvent.Type getAssociatedType() { + return ClickEvent.getType(); + } + @Override + protected void dispatch(ClickHandler handler) { + handler.onClick(null); + } + }); + } + + /** + * Hide overlay layers. + */ + public void hideOverlayLayers() { + GWT.log("hideOverlayLayers"); + overlayLayersPanel.clear(); + //layersDDB.setVisible(false); + overlayLayersPanel.setVisible(false); + //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 0b1d204..c26a84d 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 @@ -55,8 +55,10 @@
- - + + + - .map-style { width: 100%; } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java index 44622b1..a371124 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -39,10 +39,18 @@ public class DragDropLayer extends FlowPanel { public DragDropLayer(HandlerManager applicationBus, LayerItem layer, boolean draggable, boolean droppable) { this.applicationBus = applicationBus; - this.label = new Label(layer.getName()); + + int layerSep = layer.getName().lastIndexOf(":"); + String layerName = layerSep > 0 && (layerSep + 1) < layer.getName().length() + ? layer.getName().substring(layerSep + 1, layer.getName().length()) + : layer.getName(); + + this.label = new Label(layerName); + this.label.setTitle(layer.getName()); getElement().getStyle().setMarginTop(5, Unit.PX); getElement().getStyle().setMarginBottom(10, Unit.PX); + setWidth("350px"); if (draggable) { initDrag(); @@ -59,10 +67,13 @@ public class DragDropLayer extends FlowPanel { } RangeSlider rs = new RangeSlider(); + rs.setWidth("250px"); FlexTable ft = new FlexTable(); ft.setWidget(0, 0, button); checkBoxVisibility.getElement().getStyle().setMarginLeft(10, Unit.PX); checkBoxVisibility.setValue(true); + + label.getElement().getStyle().setMarginLeft(10, Unit.PX); ft.setWidget(0, 1, checkBoxVisibility); ft.setWidget(0, 2, label); ft.setWidget(1, 2, new SimplePanel(rs)); @@ -73,7 +84,8 @@ public class DragDropLayer extends FlowPanel { @Override public void onValueChange(ValueChangeEvent event) { - DoActionOnDetailLayersEvent dae = new DoActionOnDetailLayersEvent(DO_LAYER_ACTION.VISIBILITY, layer, null); + DoActionOnDetailLayersEvent dae = new DoActionOnDetailLayersEvent(DO_LAYER_ACTION.VISIBILITY, layer, + null); dae.setVisibility(checkBoxVisibility.getValue()); applicationBus.fireEvent(dae); diff --git a/src/main/webapp/GeoportalDataViewer.css b/src/main/webapp/GeoportalDataViewer.css index deec93c..c207132 100644 --- a/src/main/webapp/GeoportalDataViewer.css +++ b/src/main/webapp/GeoportalDataViewer.css @@ -337,4 +337,11 @@ body { .myOverlayLayerManager{ border-radius: 20px; +} + +.layers-panel { + margin-top: 10px; + background-color: white; + opacity: 80%; + padding: 10px; } \ No newline at end of file -- 2.17.1 From f693ca0e52df2173436d56bfba6dd5f3ba103e96 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 11 Oct 2021 18:39:59 +0200 Subject: [PATCH 05/12] implementing slider --- .../client/GeoportalDataViewer.java | 18 ++++++---- .../events/DoActionOnDetailLayersEvent.java | 19 ++++++++++ .../client/gis/OpenLayerOSM.java | 3 +- .../client/ui/dandd/RangeSlider.java | 36 ++++++++++++++----- 4 files changed, 61 insertions(+), 15 deletions(-) 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 3fb7fe2..0ea872f 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 @@ -363,13 +363,18 @@ public class GeoportalDataViewer implements EntryPoint { applicationBus.addHandler(DoActionOnDetailLayersEvent.TYPE, new DoActionOnDetailLayersEventHandler() { @Override - public void onDoActionOnDetailLayers(DoActionOnDetailLayersEvent doActionOnDetailLayersEvent) { + public void onDoActionOnDetailLayers(DoActionOnDetailLayersEvent doLayerActionEvent) { - DO_LAYER_ACTION doAction = doActionOnDetailLayersEvent.getDoAction(); + DO_LAYER_ACTION doAction = doLayerActionEvent.getDoAction(); + GWT.log("event: "+doAction); + GWT.log("layer source: "+doLayerActionEvent.getLayerSource().getName()); + GWT.log("layer target: "+doLayerActionEvent.getLayerTarget()); + switch (doAction) { case OPACITY: - olMapMng.getOLOSMMap().setWMSDetailLayerOpacity(doActionOnDetailLayersEvent.getLayerSource(), - doActionOnDetailLayersEvent.getOpacity()); + GWT.log("opacity: "+doLayerActionEvent.getOpacity()); + olMapMng.getOLOSMMap().setWMSDetailLayerOpacity(doLayerActionEvent.getLayerSource(), + doLayerActionEvent.getOpacity()); break; case SWAP: @@ -377,8 +382,9 @@ public class GeoportalDataViewer implements EntryPoint { break; case VISIBILITY: - olMapMng.getOLOSMMap().setWMSDetailLayerVisible(doActionOnDetailLayersEvent.getLayerSource(), - doActionOnDetailLayersEvent.getVisibility()); + GWT.log("visibility: "+doLayerActionEvent.getVisibility()); + olMapMng.getOLOSMMap().setWMSDetailLayerVisible(doLayerActionEvent.getLayerSource(), + doLayerActionEvent.getVisibility()); break; default: 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 ff8aa21..b74e257 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 @@ -93,4 +93,23 @@ public class DoActionOnDetailLayersEvent extends GwtEvent { } + + @UiField + Element theSlider; + + private String sliderId; public RangeSlider() { initWidget(uiBinder.createAndBindUi(this)); - } - - @UiField - Element theSlider; - - public RangeSlider(String firstName) { - initWidget(uiBinder.createAndBindUi(this)); - + String sliderId = "slider-" +Random.nextInt(); theSlider.addClassName("slider"); + theSlider.setId(sliderId); + + Event.sinkEvents(theSlider, Event.ONMOUSEUP); + Event.setEventListener(theSlider, new EventListener() { + @Override + public void onBrowserEvent(Event event) { + System.out.println("ok"); + if(Event.ONMOUSEUP == event.getTypeInt()) { + GWT.log("Event.ONMOUSEUP"); + GWT.log("obj"+theSlider.getPropertyObject("value")); + GWT.log("attr"+theSlider.getAttribute("value")); + } + + } + }); + } + } -- 2.17.1 From 79948ad6bd0142a645cf2b7dbaa9f6e1f528d8c2 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 12 Oct 2021 12:42:25 +0200 Subject: [PATCH 06/12] #21991 first version of Layer Switcher has been implemented --- CHANGELOG.md | 1 + .../client/GeoportalDataViewer.java | 15 ++- .../client/LayerManager.java | 10 -- .../client/OLMapManager.java | 2 +- .../events/DoActionOnDetailLayersEvent.java | 108 +++++++++++++---- .../client/gis/OpenLayerOSM.java | 112 +++++++----------- .../client/ui/dandd/DragDropLayer.java | 41 ++++--- .../client/ui/dandd/RangeSlider.java | 64 ++++++---- .../client/ui/dandd/RangeSlider.ui.xml | 2 +- 9 files changed, 210 insertions(+), 145 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb933d1..7912a35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - [#22042] Implemented the public access - [#22040] Revisited the "Abstract and Relazione di Scavo" - [#22041] Files have been ported to FileSet model +- [#21991] Implement the Layer Switcher ## [v1.2.0-SNAPSHOT] - 2021-07-19 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 0ea872f..74be1f1 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 @@ -26,6 +26,7 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMini 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.MapUtils; +import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerOSM; import org.gcube.portlets.user.geoportaldataviewer.client.ui.GeonaDataViewMainPanel; import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery; @@ -367,24 +368,28 @@ public class GeoportalDataViewer implements EntryPoint { DO_LAYER_ACTION doAction = doLayerActionEvent.getDoAction(); GWT.log("event: "+doAction); - GWT.log("layer source: "+doLayerActionEvent.getLayerSource().getName()); - GWT.log("layer target: "+doLayerActionEvent.getLayerTarget()); + GWT.log("layer source: "+doLayerActionEvent.getLayerItem().getName()); + OpenLayerOSM olMap = olMapMng.getOLOSMMap(); switch (doAction) { case OPACITY: GWT.log("opacity: "+doLayerActionEvent.getOpacity()); - olMapMng.getOLOSMMap().setWMSDetailLayerOpacity(doLayerActionEvent.getLayerSource(), + olMap.setWMSDetailLayerOpacity(doLayerActionEvent.getLayerItem(), doLayerActionEvent.getOpacity()); 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()); break; case VISIBILITY: GWT.log("visibility: "+doLayerActionEvent.getVisibility()); - olMapMng.getOLOSMMap().setWMSDetailLayerVisible(doLayerActionEvent.getLayerSource(), + olMap.setWMSDetailLayerVisible(doLayerActionEvent.getLayerItem(), doLayerActionEvent.getVisibility()); + break; default: 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 d2fac8f..bafc06c 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 @@ -808,16 +808,6 @@ public class LayerManager { } - /** - * Checks if is layer visible. - * - * @param layerItem the layer item - * @return true, if is layer visible - */ - public boolean isLayerVisible(LayerItem layerItem) { - return olMap.isLayerVisible(layerItem.getName()); - } - /** * Sets the ol map. * diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java index 6914a0a..150922f 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java @@ -38,7 +38,7 @@ public class OLMapManager { private ol.Extent dragEndExtent = null; public static final int QUERY_MIN_ZOOM_LEVEL = 13; public static final Double LAYER_DETAIL_MIN_RESOLUTION = 0.01; - public static final Double LAYER_DETAIL_MAX_RESOLUTION = 13.0; + public static final Double LAYER_DETAIL_MAX_RESOLUTION = 13.2; /** 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 b74e257..20aa606 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 @@ -9,7 +9,7 @@ import com.google.gwt.event.shared.GwtEvent; * * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it * - * Oct 8, 2021 + * Oct 12, 2021 */ public class DoActionOnDetailLayersEvent extends GwtEvent { public static Type TYPE = new Type(); @@ -19,35 +19,56 @@ public class DoActionOnDetailLayersEvent extends GwtEvent wmsDetailsLayerMap; + private LinkedHashMap wmsDetailsLayerMap; private Integer[] wmsDetailsLayerZIndex = new Integer[100]; - private HashMap wmsLayerMap; + private LinkedHashMap wmsLayerMap; /** * Instantiates a new open layer OSM. @@ -341,7 +340,7 @@ public abstract class OpenLayerOSM { public void addWMSLayer(LayerItem layerItem) { if (wmsLayerMap == null) - wmsLayerMap = new HashMap(); + wmsLayerMap = new LinkedHashMap(); String key = layerItem.getName(); @@ -391,7 +390,7 @@ public abstract class OpenLayerOSM { public void addWMSDetailLayer(LayerItem layerItem) { if (wmsDetailsLayerMap == null) - wmsDetailsLayerMap = new HashMap(); + wmsDetailsLayerMap = new LinkedHashMap(); String key = layerItem.getName(); @@ -422,7 +421,7 @@ public abstract class OpenLayerOSM { Image wmsLayer = new Image(layerOptions); map.addLayer(wmsLayer); wmsDetailsLayerMap.put(key, wmsLayer); - + GWT.log("Added WMSDetailLayer for layer name: " + layerItem.getName()); eventBus.fireEvent(new AddedLayerToMapEvent(layerItem, LAYER_TYPE.OVERLAY)); } else { @@ -577,55 +576,6 @@ public abstract class OpenLayerOSM { return overlay; } - /** - * Checks if is layer visible. - * - * @param layerName the layer name - * @return true, if is layer visible - */ - public boolean isLayerVisible(String layerName) { - - Collection layers = map.getLayers(); - - if (layers != null) { - Base[] layersArr = layers.getArray(); - for (int i = 0; i < layersArr.length; i++) { - Base layer = layersArr[i]; - String theLayerName = (String) layer.get("name"); - GWT.log("The Layer name is: " + theLayerName); - if (theLayerName != null && theLayerName.equals(layerName)) - return true; - } - } - - return false; - } - - /** - * Gets the layer property. - * - * @param layerName the layer name - * @param property the property - * @return the layer property - */ - public String getLayerProperty(String layerName, String property) { - - Collection layers = map.getLayers(); - - if (layers != null) { - Base[] layersArr = layers.getArray(); - for (int i = 0; i < layersArr.length; i++) { - Base layer = layersArr[i]; - String theLayerName = (String) layer.get("name"); - GWT.log("The Layer name is: " + layerName); - if (theLayerName != null && theLayerName.equals(layerName)) - return layer.get(property); - } - } - - return null; - } - /** * Gets the projection code. * @@ -724,9 +674,9 @@ public abstract class OpenLayerOSM { * * @return the layers from map */ - public List getLayersFromMap() { + public ArrayList getLayersFromMap() { Collection layers = map.getLayers(); - List layerNames = null; + ArrayList layerNames = null; if (layers != null) { Base[] layersArr = layers.getArray(); layerNames = new ArrayList(layersArr.length); @@ -759,7 +709,7 @@ public abstract class OpenLayerOSM { * * @return the wms details layer map */ - public java.util.Map getWmsDetailsLayerMap() { + public LinkedHashMap getWmsDetailsLayerMap() { return wmsDetailsLayerMap; } @@ -768,34 +718,60 @@ public abstract class OpenLayerOSM { * * @return the wms layer map */ - public HashMap getWmsLayerMap() { + public LinkedHashMap getWmsLayerMap() { return wmsLayerMap; } + /** + * Sets the WMS detail layer visible. + * + * @param layerItem the layer item + * @param visible the visible + */ public void setWMSDetailLayerVisible(LayerItem layerItem, boolean visible) { String key = layerItem.getName(); - GWT.log("current layers: "+wmsDetailsLayerMap.keySet()); Image layer = wmsDetailsLayerMap.get(key); layer.setVisible(visible); } - public void setWMSDetailLayerOpacity(LayerItem layerItem, int opacity) { + /** + * Sets the WMS detail layer opacity. + * + * @param layerItem the layer item + * @param opacity the opacity + */ + public void setWMSDetailLayerOpacity(LayerItem layerItem, double opacity) { String key = layerItem.getName(); Image layer = wmsDetailsLayerMap.get(key); layer.setOpacity(opacity); } - public void swapLayers(LayerItem layerItem, LayerItem layerItem2) { - String key1 = layerItem.getName(); - Image layer1 = wmsDetailsLayerMap.get(key1); - - String key2 = layerItem.getName(); - Image layer2 = wmsDetailsLayerMap.get(key2); + /** + * Swap details layers. + * + * @param layerSource the source index + * @param layerTarget the target index + */ + public void swapDetailsLayers(String layerSource, String layerTarget) { + Image layer1 = wmsDetailsLayerMap.get(layerSource); + Image layer2 = wmsDetailsLayerMap.get(layerTarget); int zIndex1 = layer1.getZIndex(); int zIndex2 = layer2.getZIndex(); layer1.setZIndex(zIndex2); layer2.setZIndex(zIndex1); + + } + + /** + * Gets the layer by index. + * + * @param map the map + * @param index the index + * @return the layer by index + */ + private Image getLayerByIndex(LinkedHashMap map, int index) { + return map.get((map.keySet().toArray())[index]); } } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java index a371124..9301ee3 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -34,11 +34,13 @@ public class DragDropLayer extends FlowPanel { final boolean droppable; private Label label; private CheckBox checkBoxVisibility = new CheckBox(); - private Button button = new Button(); + private Button draggableButton = new Button(); private HandlerManager applicationBus; + private LayerItem layerItem; public DragDropLayer(HandlerManager applicationBus, LayerItem layer, boolean draggable, boolean droppable) { this.applicationBus = applicationBus; + this.layerItem = layer; int layerSep = layer.getName().lastIndexOf(":"); String layerName = layerSep > 0 && (layerSep + 1) < layer.getName().length() @@ -61,15 +63,16 @@ public class DragDropLayer extends FlowPanel { this.droppable = droppable; if (droppable) { - button.addStyleName("droppable"); + draggableButton.addStyleName("droppable"); } else if (draggable) { - button.addStyleName("draggable"); + draggableButton.addStyleName("draggable"); } - RangeSlider rs = new RangeSlider(); + RangeSlider rs = new RangeSlider(applicationBus, layer); rs.setWidth("250px"); FlexTable ft = new FlexTable(); - ft.setWidget(0, 0, button); + ft.setWidget(0, 0, draggableButton); + draggableButton.setTitle("Drag me to change my position"); checkBoxVisibility.getElement().getStyle().setMarginLeft(10, Unit.PX); checkBoxVisibility.setValue(true); @@ -78,14 +81,13 @@ public class DragDropLayer extends FlowPanel { ft.setWidget(0, 2, label); ft.setWidget(1, 2, new SimplePanel(rs)); add(ft); - button.setIcon(IconType.MOVE); + draggableButton.setIcon(IconType.MOVE); checkBoxVisibility.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange(ValueChangeEvent event) { - DoActionOnDetailLayersEvent dae = new DoActionOnDetailLayersEvent(DO_LAYER_ACTION.VISIBILITY, layer, - null); + DoActionOnDetailLayersEvent dae = new DoActionOnDetailLayersEvent(DO_LAYER_ACTION.VISIBILITY, layer); dae.setVisibility(checkBoxVisibility.getValue()); applicationBus.fireEvent(dae); @@ -94,7 +96,7 @@ public class DragDropLayer extends FlowPanel { } private void initDrag() { - button.getElement().setDraggable(Element.DRAGGABLE_TRUE); + draggableButton.getElement().setDraggable(Element.DRAGGABLE_TRUE); addDomHandler(new DragStartHandler() { @@ -113,7 +115,7 @@ public class DragDropLayer extends FlowPanel { addDomHandler(new DragOverHandler() { @Override public void onDragOver(DragOverEvent event) { - button.addStyleName("dropping-over"); + draggableButton.addStyleName("dropping-over"); GWT.log("drag over"); draggingTarget = (DragDropLayer) event.getSource(); } @@ -122,7 +124,7 @@ public class DragDropLayer extends FlowPanel { addDomHandler(new DragLeaveHandler() { @Override public void onDragLeave(DragLeaveEvent event) { - button.removeStyleName("dropping-over"); + draggableButton.removeStyleName("dropping-over"); GWT.log("drag leave"); // draggingTarget = (DragDropLayer) event.getSource(); } @@ -134,17 +136,18 @@ public class DragDropLayer extends FlowPanel { event.preventDefault(); Object dropTarget = event.getSource(); GWT.log("on drop"); - button.removeStyleName("dropping-over"); + draggableButton.removeStyleName("dropping-over"); if (dragging != null) { - Widget target = null; Widget source = null; + Widget target = null; FlowPanel tree = (FlowPanel) DragDropLayer.this.getParent(); source = dragging; int sourceIndex = tree.getWidgetIndex(source); int targetIndex = tree.getWidgetIndex(draggingTarget); - GWT.log("sourceIndex: " + sourceIndex); - GWT.log("targetIndex: " + targetIndex); + + GWT.log("sourceIndex: " + sourceIndex+", sourceItem: "+dragging.getLayerItem().getName()); + GWT.log("targetIndex: " + targetIndex+", targetItem: "+draggingTarget.getLayerItem().getName()); if (sourceIndex != targetIndex && targetIndex > 0) { tree.remove(source); target = tree; @@ -152,6 +155,10 @@ public class DragDropLayer extends FlowPanel { if (source != null && target != null) { tree.insert(source, targetIndex); // target.setState(true); + DoActionOnDetailLayersEvent actionSwapLayers = new DoActionOnDetailLayersEvent( + DO_LAYER_ACTION.SWAP, layerItem); + actionSwapLayers.setSwapLayers(dragging.getLayerItem(), draggingTarget.getLayerItem()); + applicationBus.fireEvent(actionSwapLayers); } dragging = null; } @@ -159,5 +166,9 @@ public class DragDropLayer extends FlowPanel { } }, DropEvent.getType()); } + + public LayerItem getLayerItem() { + return layerItem; + } } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java index ed5a97e..b012a2e 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java @@ -1,9 +1,12 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; +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.shared.gis.LayerItem; + import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; -import com.google.gwt.event.dom.client.DragStartEvent; -import com.google.gwt.event.dom.client.DragStartHandler; +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.Event; @@ -18,33 +21,52 @@ public class RangeSlider extends Composite { interface RangeSliderUiBinder extends UiBinder { } - + @UiField Element theSlider; - + private String sliderId; - public RangeSlider() { + private HandlerManager applicationBus; + + private LayerItem layer; + + public RangeSlider(HandlerManager applicationBus, LayerItem layer) { + this.applicationBus = applicationBus; + this.layer = layer; initWidget(uiBinder.createAndBindUi(this)); - String sliderId = "slider-" +Random.nextInt(); + sliderId = "slider-" + Random.nextInt(); theSlider.addClassName("slider"); theSlider.setId(sliderId); - Event.sinkEvents(theSlider, Event.ONMOUSEUP); - Event.setEventListener(theSlider, new EventListener() { + theSlider.setTitle("Set opacity of "+layer.getName()); - @Override - public void onBrowserEvent(Event event) { - System.out.println("ok"); - if(Event.ONMOUSEUP == event.getTypeInt()) { - GWT.log("Event.ONMOUSEUP"); - GWT.log("obj"+theSlider.getPropertyObject("value")); - GWT.log("attr"+theSlider.getAttribute("value")); - } - - } - }); - + bindEvents(); } - + + private void bindEvents() { + + Event.sinkEvents(theSlider, Event.ONMOUSEUP); + Event.setEventListener(theSlider, new EventListener() { + + @Override + public void onBrowserEvent(Event event) { + System.out.println("ok"); + if (Event.ONMOUSEUP == event.getTypeInt()) { + GWT.log("Event.ONMOUSEUP"); + DoActionOnDetailLayersEvent actionChangeOpacity = new DoActionOnDetailLayersEvent( + DO_LAYER_ACTION.OPACITY, layer); + int value = Integer.parseInt((String) theSlider.getPropertyObject("value")); + GWT.log("opacity int value: "+value); + double opacity = (double) ((double) value/100); + GWT.log("opacity double value: "+opacity); + actionChangeOpacity.setOpacity(opacity); + applicationBus.fireEvent(actionChangeOpacity); + } + + } + }); + + } + } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml index 574b54e..f9cfa64 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.ui.xml @@ -11,6 +11,6 @@ } - + \ No newline at end of file -- 2.17.1 From decdb3258e97b5dd9ea383f1558843a54ed6845e Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 12 Oct 2021 16:02:37 +0200 Subject: [PATCH 07/12] the layer switcher has been implemented #21991 --- .../client/LayerManager.java | 24 ++++--- .../client/OLMapManager.java | 9 +-- .../client/gis/OpenLayerOSM.java | 25 +++++++- .../client/ui/dandd/DragDropLayer.java | 12 ++-- .../client/util/StringUtil.java | 62 ++++++++++++------- 5 files changed, 88 insertions(+), 44 deletions(-) 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 bafc06c..412f68c 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 @@ -4,6 +4,7 @@ package org.gcube.portlets.user.geoportaldataviewer.client; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -121,11 +122,6 @@ public class LayerManager { GWT.log("(" + selectDataInfo.getX1() + "," + selectDataInfo.getY1() + ")(" + selectDataInfo.getX2() + "," + selectDataInfo.getY2() + ")"); -// for (LayerObject layerObj : layerObjects.values()) { -// // TODO -// isLayerVisible(layerObj.getLayerItem()); -// } - BoundsMap mapBBOX = new BoundsMap(); double minX = queryEvent.getGeoQuery().getX1(); double minY = queryEvent.getGeoQuery().getY1(); @@ -157,7 +153,19 @@ public class LayerManager { // for querying detail layers only in this case if (olMap.getCurrentResolution() < OLMapManager.LAYER_DETAIL_MAX_RESOLUTION) { - listLO.addAll(mapDetailLayerObjects.values()); + Collection collLO = mapDetailLayerObjects.values(); + listLO.addAll(collLO); + + ArrayList layerVisibility = new ArrayList(collLO.size()); + layerVisibility.addAll(collLO); + //Managing layer visibility + for (LayerObject layerObject : layerVisibility) { + boolean isLayerVisible = olMap.isLayerVisible(layerObject.getLayerItem().getName()); + if(!isLayerVisible) { + GWT.log("From querying removing layername: "+layerObject.getLayerItem().getName() + ", it is not visible"); + listLO.remove(layerObject); + } + } } GeoportalDataViewerServiceAsync.Util.getInstance().getDataResult(listLO, olMap.getProjectionCode(), @@ -567,7 +575,9 @@ public class LayerManager { Label layerLabel = new Label(); layerLabel.setType(LabelType.INFO); - layerLabel.setText(layerSourceName); + String layerName = StringUtil.fullNameToLayerName(layerSourceName, ":"); + layerLabel.setText(layerName); + layerLabel.setTitle(layerSourceName); layerLabel.getElement().getStyle().setMarginTop(10, Unit.PX); layerLabel.getElement().getStyle().setMarginBottom(5, Unit.PX); flowPanel.add(layerLabel); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java index 150922f..ed15837 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OLMapManager.java @@ -38,7 +38,7 @@ public class OLMapManager { private ol.Extent dragEndExtent = null; public static final int QUERY_MIN_ZOOM_LEVEL = 13; public static final Double LAYER_DETAIL_MIN_RESOLUTION = 0.01; - public static final Double LAYER_DETAIL_MAX_RESOLUTION = 13.2; + public static final Double LAYER_DETAIL_MAX_RESOLUTION = 18.5; /** @@ -255,11 +255,4 @@ public class OLMapManager { olMap.hidePopup(); } -// /** -// * Removes the detail layers. -// */ -// public void removeDetailLayers() { -// olMap.removeAllDetailLayers(); -// } - } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java index e001d6b..ff48d86 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java @@ -344,7 +344,7 @@ public abstract class OpenLayerOSM { String key = layerItem.getName(); - Image layer = wmsLayerMap.get(key); + Image layer = wmsLayerMap.get(layerItem.getName()); if (layer == null) { ImageWmsParams imageWMSParams = OLFactory.createOptions(); imageWMSParams.setLayers(layerItem.getName()); @@ -722,6 +722,27 @@ public abstract class OpenLayerOSM { return wmsLayerMap; } + + /** + * Checks if is layer visible. + * + * @param layerName the layer name + * @return true, if is layer visible + */ + public boolean isLayerVisible(String layerName) { + + String key = layerName; + Image layer = wmsLayerMap.get(key); + if (layer != null) + return layer.getVisible(); + + layer = wmsDetailsLayerMap.get(key); + if (layer != null) + return layer.getVisible(); + + return false; + } + /** * Sets the WMS detail layer visible. * @@ -760,7 +781,7 @@ public abstract class OpenLayerOSM { int zIndex2 = layer2.getZIndex(); layer1.setZIndex(zIndex2); layer2.setZIndex(zIndex1); - + } /** diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java index 9301ee3..68677d1 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -2,11 +2,14 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; 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.util.StringUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.CheckBox; +import com.github.gwtbootstrap.client.ui.Label; 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.dom.client.Element; import com.google.gwt.dom.client.Style.Unit; @@ -23,7 +26,6 @@ import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; @@ -42,13 +44,11 @@ public class DragDropLayer extends FlowPanel { this.applicationBus = applicationBus; this.layerItem = layer; - int layerSep = layer.getName().lastIndexOf(":"); - String layerName = layerSep > 0 && (layerSep + 1) < layer.getName().length() - ? layer.getName().substring(layerSep + 1, layer.getName().length()) - : layer.getName(); + String layerName = StringUtil.fullNameToLayerName(layer.getName(), ":"); this.label = new Label(layerName); this.label.setTitle(layer.getName()); + this.label.setType(LabelType.INFO); getElement().getStyle().setMarginTop(5, Unit.PX); getElement().getStyle().setMarginBottom(10, Unit.PX); @@ -72,7 +72,7 @@ public class DragDropLayer extends FlowPanel { rs.setWidth("250px"); FlexTable ft = new FlexTable(); ft.setWidget(0, 0, draggableButton); - draggableButton.setTitle("Drag me to change my position"); + draggableButton.setTitle("Drag me up or down to change my position on the Map"); checkBoxVisibility.getElement().getStyle().setMarginLeft(10, Unit.PX); checkBoxVisibility.setValue(true); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/StringUtil.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/StringUtil.java index 8ed3a77..471887d 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/StringUtil.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/util/StringUtil.java @@ -12,51 +12,71 @@ import com.google.gwt.i18n.client.DateTimeFormat; * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * - * Nov 16, 2020 + * Nov 16, 2020 */ public class StringUtil { - + private static final String NO_TIME = "_00-00-00"; /** * Ellipsize. * - * @param input the input string that may be subjected to shortening - * @param maxCharacters the maximum characters that must be returned for the input string + * @param input the input string that may be subjected to shortening + * @param maxCharacters the maximum characters that must be returned for the + * input string * @return the string * @throws Exception the exception */ public static String ellipsize(String input, int maxCharacters) { - - if(input==null) - return ""; - if (input.length() < maxCharacters) - return input; - - return input.substring(0, maxCharacters)+"..."; + if (input == null) + return ""; + + if (input.length() < maxCharacters) + return input; + + return input.substring(0, maxCharacters) + "..."; } - + public static String formatDate(String date) { - if(date==null) + if (date == null) return date; - + Date theDate = null; try { - if(date.endsWith(NO_TIME)) { + if (date.endsWith(NO_TIME)) { date = date.replaceAll(NO_TIME, ""); theDate = DateTimeFormat.getFormat("yyyyMMdd").parse(date); - }else { + } else { theDate = DateTimeFormat.getFormat("yyyyMMdd_HH-mm-ss").parse(date); } - }catch (Exception e) { - //Window.alert(e.toString()); + } catch (Exception e) { + // Window.alert(e.toString()); } - - if(theDate!=null) { + + if (theDate != null) { return DateTimeFormat.getFormat("dd-MM-yyyy").format(theDate); } - + return date; } + + + /** + * Full name to layer name. + * + * @param layerFullName the layer full name + * @param splitChar the split char + * @return the string + */ + public static String fullNameToLayerName(String layerFullName, String splitChar) { + + if (layerFullName == null || layerFullName.isEmpty()) + return layerFullName; + + int layerSep = layerFullName.lastIndexOf(splitChar); + return layerSep > 0 && (layerSep + 1) < layerFullName.length() + ? layerFullName.substring(layerSep + 1, layerFullName.length()) + : layerFullName; + } } -- 2.17.1 From b236cc3ebb51c3d74de990bc78156ee64aac33ad Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Wed, 13 Oct 2021 18:01:54 +0200 Subject: [PATCH 08/12] fixes: #21946#note-5, #21991#note-3 --- .../client/LayerManager.java | 31 ++++++++--- .../client/OverlayLayerManager.java | 10 ++-- .../client/gis/OpenLayerOSM.java | 53 ++++++++++++++++++- .../client/ui/dandd/DragDropLayer.java | 46 +++++++++------- 4 files changed, 108 insertions(+), 32 deletions(-) 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 412f68c..e8796e6 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 @@ -158,13 +158,24 @@ public class LayerManager { ArrayList layerVisibility = new ArrayList(collLO.size()); layerVisibility.addAll(collLO); - //Managing layer visibility + //Managing layer visibility. If a layer is not visible has to be not queryable for (LayerObject layerObject : layerVisibility) { - boolean isLayerVisible = olMap.isLayerVisible(layerObject.getLayerItem().getName()); + String layerName = layerObject.getLayerItem().getName(); + boolean isLayerVisible = olMap.isLayerVisible(layerName); if(!isLayerVisible) { - GWT.log("From querying removing layername: "+layerObject.getLayerItem().getName() + ", it is not visible"); + GWT.log("From querying removing layername: "+layerName + ", it is not visible"); listLO.remove(layerObject); } +// else { +// ExtentWrapped layerExtent = olMap.getSourceExtentForLayer(layerName); +// if(layerExtent!=null) { +// ExtentWrapped centerQueryPoint = new ExtentWrapped(minX, minY, maxX,maxY); +// +// boolean contains = layerExtent.containsExtent(centerQueryPoint); +// GWT.log("layer: "+layerName + " contains the queried BBOX: "+contains); +// } +// } +// } } @@ -437,7 +448,7 @@ public class LayerManager { if (dlo == null) { mapDetailLayerObjects.put(key, lo); olMap.addWMSDetailLayer(layerItem); - overlayLayerManager.addLayerItem(layerItem); + overlayLayerManager.addLayerItem(lo); //overlayLayerManager.show(); } else { GWT.log("Skipping detail layer " + key + " already added to Map"); @@ -558,7 +569,13 @@ public class LayerManager { || layerSourceName.compareToIgnoreCase(baseLayerFromISProfile.getName()) == 0) { continue; } - + + List features = geoNaSpatialQueryResult.getFeatures(); + + if (features == null || features.isEmpty()) { + continue; + } + String nomeConcessione = lo.getSourceConcessione().getNome(); if (prevConcessioneName.compareTo(nomeConcessione) != 0) { String concessioneIntro = StringUtil.ellipsize(lo.getSourceConcessione().getNome(), 40); @@ -582,8 +599,8 @@ public class LayerManager { layerLabel.getElement().getStyle().setMarginBottom(5, Unit.PX); flowPanel.add(layerLabel); - List features = geoNaSpatialQueryResult.getFeatures(); + /* if (features == null || features.isEmpty()) { FlexTable flex = new FlexTable(); flex.setCellPadding(1); @@ -593,7 +610,7 @@ public class LayerManager { flowPanel.add(flex); continue; // olMap.showPopup(vpPanel.toString(), onFailureCenterTo); - } + }*/ GWT.log("Displaying " + features.size() + " features"); FlexTable intFlex = new FlexTable(); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java index 823cecd..05affaa 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/OverlayLayerManager.java @@ -3,14 +3,14 @@ package org.gcube.portlets.user.geoportaldataviewer.client; import java.util.ArrayList; import org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd.DragDropLayer; -import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; +import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.ui.FlowPanel; public class OverlayLayerManager { - private ArrayList layers = new ArrayList(); + private ArrayList layers = new ArrayList(); private FlowPanel fp = new FlowPanel(); private HandlerManager applicationBus; @@ -19,9 +19,9 @@ public class OverlayLayerManager { //fp.addStyleName("layers-panel"); } - void addLayerItem(LayerItem layer) { - DragDropLayer dandd = new DragDropLayer(applicationBus, layer, true, true); - layers.add(layer); + void addLayerItem(LayerObject lo) { + DragDropLayer dandd = new DragDropLayer(applicationBus, lo, true, true); + layers.add(lo); fp.add(dandd); } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java index ff48d86..c88c9d1 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java @@ -12,6 +12,7 @@ import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; import com.google.gwt.json.client.JSONValue; @@ -419,6 +420,7 @@ public abstract class OpenLayerOSM { } Image wmsLayer = new Image(layerOptions); + wmsLayer.setZIndex(wmsDetailsLayerMap.size() + 1); map.addLayer(wmsLayer); wmsDetailsLayerMap.put(key, wmsLayer); @@ -686,24 +688,72 @@ public abstract class OpenLayerOSM { Image layerImage = (Image) layer; Source source = layerImage.getSource(); -// GWT.log("source: "+source.toString()); // GeoportalDataViewerConstants.printJsObj(source); String sorceRootObj = GeoportalDataViewerConstants.toJsonObj(source); JSONValue jsonObj = JSONParser.parseStrict(sorceRootObj); // GWT.log("jsonObj: " + jsonObj.toString()); JSONObject jsonSourceObj = (JSONObject) jsonObj; + GeoportalDataViewerConstants.printJsObj(jsonSourceObj); JSONObject jsonParamsObj = (JSONObject) jsonSourceObj.get("params_"); // GWT.log("jsonParamsObj is: "+jsonParamsObj); JSONValue jsonLayers = jsonParamsObj.get("LAYERS"); GWT.log("theLayerName name is: " + jsonLayers); layerNames.add(jsonLayers.toString()); + + JSONObject imagesParamsObj = (JSONObject) jsonSourceObj.get("image_"); + JSONArray extent = (JSONArray) imagesParamsObj.get("extent"); + GWT.log("extentLayer: " + extent.toString()); } } } return layerNames; } + /** + * Gets the source extent for layer. + * + * @param layerName the layer name + * @return the source extent for layer + */ + public ExtentWrapped getSourceExtentForLayer(String layerName) { + Collection layers = map.getLayers(); + if (layers != null) { + Base[] layersArr = layers.getArray(); + for (int i = 0; i < layersArr.length; i++) { + Base layer = layersArr[i]; + if (layer instanceof Image) { + Image layerImage = (Image) layer; + + Source source = layerImage.getSource(); + // GeoportalDataViewerConstants.printJsObj(source); + String sorceRootObj = GeoportalDataViewerConstants.toJsonObj(source); + JSONValue jsonObj = JSONParser.parseStrict(sorceRootObj); + // GWT.log("jsonObj: " + jsonObj.toString()); + JSONObject jsonSourceObj = (JSONObject) jsonObj; + // GeoportalDataViewerConstants.printJsObj(jsonSourceObj); + + JSONObject jsonParamsObj = (JSONObject) jsonSourceObj.get("params_"); + // GWT.log("jsonParamsObj is: "+jsonParamsObj); + JSONValue jsonLayers = jsonParamsObj.get("LAYERS"); + + String layerNameIntoMap = jsonLayers.toString().replaceAll("\"", ""); + if (layerName.compareTo(layerNameIntoMap) == 0) { + JSONObject imagesParamsObj = (JSONObject) jsonSourceObj.get("image_"); + JSONArray extent = (JSONArray) imagesParamsObj.get("extent"); + // GWT.log("extentLayer: "+extent.toString()); + double minX = Double.parseDouble(extent.get(0).toString()); + double minY = Double.parseDouble(extent.get(1).toString()); + double maxX = Double.parseDouble(extent.get(2).toString()); + double maxY = Double.parseDouble(extent.get(3).toString()); + return new ExtentWrapped(minX, minY, maxX, maxY); + } + } + } + } + return null; + } + /** * Gets the wms details layer map. * @@ -722,7 +772,6 @@ public abstract class OpenLayerOSM { return wmsLayerMap; } - /** * Checks if is layer visible. * diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java index 68677d1..c0c874c 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -1,9 +1,11 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui.dandd; +import org.gcube.application.geoportalcommon.shared.products.BaseConcessioneDV; 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.util.StringUtil; import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerItem; +import org.gcube.portlets.user.geoportaldataviewer.shared.gis.LayerObject; import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.CheckBox; @@ -34,25 +36,32 @@ public class DragDropLayer extends FlowPanel { private static DragDropLayer dragging = null; private static DragDropLayer draggingTarget = null; final boolean droppable; - private Label label; + private Label labelLayerName; private CheckBox checkBoxVisibility = new CheckBox(); private Button draggableButton = new Button(); private HandlerManager applicationBus; + private LayerObject layerObject; private LayerItem layerItem; - public DragDropLayer(HandlerManager applicationBus, LayerItem layer, boolean draggable, boolean droppable) { + public DragDropLayer(HandlerManager applicationBus, LayerObject layerObject, boolean draggable, boolean droppable) { this.applicationBus = applicationBus; - this.layerItem = layer; - - String layerName = StringUtil.fullNameToLayerName(layer.getName(), ":"); - - this.label = new Label(layerName); - this.label.setTitle(layer.getName()); - this.label.setType(LabelType.INFO); + this.layerObject = layerObject; + this.layerItem = layerObject.getLayerItem(); + + String layerName = StringUtil.fullNameToLayerName(layerItem.getName(), ":"); + + this.labelLayerName = new Label(layerName); + this.labelLayerName.setTitle(layerItem.getName()); + this.labelLayerName.setType(LabelType.INFO); + + BaseConcessioneDV refConcessione = layerObject.getSourceConcessione(); + String nameConcessione = StringUtil.ellipsize(refConcessione.getNome(),40); + com.google.gwt.user.client.ui.Label labelConcessione = new com.google.gwt.user.client.ui.Label(nameConcessione); + labelConcessione.setTitle(refConcessione.getNome()); getElement().getStyle().setMarginTop(5, Unit.PX); getElement().getStyle().setMarginBottom(10, Unit.PX); - setWidth("350px"); + setWidth("400px"); if (draggable) { initDrag(); @@ -68,18 +77,19 @@ public class DragDropLayer extends FlowPanel { draggableButton.addStyleName("draggable"); } - RangeSlider rs = new RangeSlider(applicationBus, layer); - rs.setWidth("250px"); + RangeSlider rs = new RangeSlider(applicationBus, layerItem); + rs.setWidth("300px"); FlexTable ft = new FlexTable(); ft.setWidget(0, 0, draggableButton); - draggableButton.setTitle("Drag me up or down to change my position on the Map"); + draggableButton.setTitle("Drag and Drop me up or down to change my position on the Map"); checkBoxVisibility.getElement().getStyle().setMarginLeft(10, Unit.PX); checkBoxVisibility.setValue(true); - label.getElement().getStyle().setMarginLeft(10, Unit.PX); + //labelLayerName.getElement().getStyle().setMarginLeft(10, Unit.PX); ft.setWidget(0, 1, checkBoxVisibility); - ft.setWidget(0, 2, label); - ft.setWidget(1, 2, new SimplePanel(rs)); + ft.setWidget(0, 2, labelConcessione); + ft.setWidget(1, 2, labelLayerName); + ft.setWidget(2, 2, new SimplePanel(rs)); add(ft); draggableButton.setIcon(IconType.MOVE); @@ -87,7 +97,7 @@ public class DragDropLayer extends FlowPanel { @Override public void onValueChange(ValueChangeEvent event) { - DoActionOnDetailLayersEvent dae = new DoActionOnDetailLayersEvent(DO_LAYER_ACTION.VISIBILITY, layer); + DoActionOnDetailLayersEvent dae = new DoActionOnDetailLayersEvent(DO_LAYER_ACTION.VISIBILITY, layerItem); dae.setVisibility(checkBoxVisibility.getValue()); applicationBus.fireEvent(dae); @@ -148,7 +158,7 @@ public class DragDropLayer extends FlowPanel { GWT.log("sourceIndex: " + sourceIndex+", sourceItem: "+dragging.getLayerItem().getName()); GWT.log("targetIndex: " + targetIndex+", targetItem: "+draggingTarget.getLayerItem().getName()); - if (sourceIndex != targetIndex && targetIndex > 0) { + if (sourceIndex != targetIndex && targetIndex >= 0) { tree.remove(source); target = tree; -- 2.17.1 From 2186bb40fcaefb59a9ab4eed1db18f004c3e6f6f Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Wed, 13 Oct 2021 18:29:50 +0200 Subject: [PATCH 09/12] fixed css --- .../client/ui/dandd/DragDropLayer.java | 4 ++-- .../client/ui/dandd/RangeSlider.java | 3 +-- src/main/webapp/GeoportalDataViewer.css | 12 ++++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java index c0c874c..e7a06a9 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/DragDropLayer.java @@ -61,7 +61,7 @@ public class DragDropLayer extends FlowPanel { getElement().getStyle().setMarginTop(5, Unit.PX); getElement().getStyle().setMarginBottom(10, Unit.PX); - setWidth("400px"); + this.getElement().addClassName("dand-layer"); if (draggable) { initDrag(); @@ -78,7 +78,7 @@ public class DragDropLayer extends FlowPanel { } RangeSlider rs = new RangeSlider(applicationBus, layerItem); - rs.setWidth("300px"); + rs.getElement().addClassName("range-slider "); FlexTable ft = new FlexTable(); ft.setWidget(0, 0, draggableButton); draggableButton.setTitle("Drag and Drop me up or down to change my position on the Map"); diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java index b012a2e..55ee827 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/ui/dandd/RangeSlider.java @@ -51,13 +51,12 @@ public class RangeSlider extends Composite { @Override public void onBrowserEvent(Event event) { - System.out.println("ok"); if (Event.ONMOUSEUP == event.getTypeInt()) { GWT.log("Event.ONMOUSEUP"); DoActionOnDetailLayersEvent actionChangeOpacity = new DoActionOnDetailLayersEvent( DO_LAYER_ACTION.OPACITY, layer); int value = Integer.parseInt((String) theSlider.getPropertyObject("value")); - GWT.log("opacity int value: "+value); + //GWT.log("opacity int value: "+value); double opacity = (double) ((double) value/100); GWT.log("opacity double value: "+opacity); actionChangeOpacity.setOpacity(opacity); diff --git a/src/main/webapp/GeoportalDataViewer.css b/src/main/webapp/GeoportalDataViewer.css index c207132..665fe96 100644 --- a/src/main/webapp/GeoportalDataViewer.css +++ b/src/main/webapp/GeoportalDataViewer.css @@ -344,4 +344,16 @@ body { background-color: white; opacity: 80%; padding: 10px; +} + +.dand-layer { + width: 400px; +} + +.range-slider { + width: 300px; +} + +.range-slider input { + width: 280px; } \ No newline at end of file -- 2.17.1 From f9a966b6e33c20f5b2192acca8ea2d8cebe0e46b Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Thu, 14 Oct 2021 10:29:46 +0200 Subject: [PATCH 10/12] code beautified --- .settings/org.eclipse.wst.common.component | 217 ++------------------- 1 file changed, 14 insertions(+), 203 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index eff1bce..252448c 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,204 +1,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uses - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + uses + + + + -- 2.17.1 From cba13c365f86bbdbf570045fbb2e0c8eb8fa4727 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Thu, 14 Oct 2021 10:52:38 +0200 Subject: [PATCH 11/12] added .gitignore for resolving conflict --- .settings/.gitignore | 1 + CHANGELOG.md | 2 +- pom.xml | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 .settings/.gitignore diff --git a/.settings/.gitignore b/.settings/.gitignore new file mode 100644 index 0000000..5a6a423 --- /dev/null +++ b/.settings/.gitignore @@ -0,0 +1 @@ +/org.eclipse.wst.common.component diff --git a/CHANGELOG.md b/CHANGELOG.md index 7912a35..4575e84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v2.0.0-SNAPSHOT] - 2021-07-30 +## [v2.0.0] - 2021-07-30 #### Enhancements diff --git a/pom.xml b/pom.xml index aefd6e0..acc10fe 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.gcube.portlets.user geoportal-data-viewer-app war - 2.0.0-SNAPSHOT + 2.0.0 GeoPortal Data Viewer App The GeoPortal Data Viewer App is an application to access, discovery and navigate the GeoNa products by a Web-Map Interface @@ -54,7 +54,7 @@ org.gcube.distribution maven-portal-bom - 3.6.3-SNAPSHOT + 3.6.3 pom import -- 2.17.1 From 754f92b8955a465aa8ffe5a86a29bd9cfb9129c4 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Thu, 14 Oct 2021 10:54:53 +0200 Subject: [PATCH 12/12] removed --- .settings/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .settings/.gitignore diff --git a/.settings/.gitignore b/.settings/.gitignore deleted file mode 100644 index 5a6a423..0000000 --- a/.settings/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/org.eclipse.wst.common.component -- 2.17.1