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 6349567..f307efe 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 @@ -224,7 +224,7 @@ public class GeoportalDataViewer implements EntryPoint { GWT.log("Loading collections, count " + result.getAvailableCollections().size()); - mainPanel.setAvailableCollections(result.getAvailableCollections().values()); + mainPanel.setAvailableCollections(result.getAvailableCollections().values(), paramGeonaItemType); if (paramGeonaItemID != null) { if (paramGeonaItemType == null) { 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 16853d6..e7aacda 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 @@ -2,6 +2,7 @@ package org.gcube.portlets.user.geoportaldataviewer.client.ui; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import org.gcube.application.geoportalcommon.shared.GeoportalItemReferences; @@ -139,6 +140,8 @@ public class GeonaDataViewMainPanel extends Composite { private HandlerManager applicationBus; + private HashMap> mapCollectionCheckBoxes; + public GeonaDataViewMainPanel(HandlerManager applicationBus, int mapHeight, List itemFieldsReponse) { initWidget(uiBinder.createAndBindUi(this)); @@ -268,6 +271,15 @@ public class GeonaDataViewMainPanel extends Composite { } }, ClickEvent.getType()); + openCollectionDropDown.addDomHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + // event.preventDefault(); + event.stopPropagation(); + + } + }, ClickEvent.getType()); } /** @@ -478,18 +490,20 @@ public class GeonaDataViewMainPanel extends Composite { * @param listBaseLayers the new base layers */ - public void setAvailableCollections(Collection collection) { + public void setAvailableCollections(Collection collection, String openCollectionID) { GWT.log("Init Available collections menu"); if (collection == null || collection.isEmpty()) GWT.log("!!! No Available collections"); + mapCollectionCheckBoxes = new HashMap>(); + for (GCubeCollection coll : collection) { GWT.log("Found available collection " + coll); String label = coll.getUcd().getName(); - String id = coll.getUcd().getId(); + final String collectionID = coll.getUcd().getId(); // collectionID == UCD_Id CheckBox checkbox = new CheckBox(label); - checkbox.setId("gcubeCollectionSelector_" + id); + checkbox.setId("gcubeCollectionSelector_" + collectionID); checkbox.addValueChangeHandler(new ValueChangeHandler() { @@ -497,8 +511,8 @@ public class GeonaDataViewMainPanel extends Composite { public void onValueChange(ValueChangeEvent event) { GWT.log("Collection selector flag changed to value : " + event.toDebugString()); - String collectionID = ((CheckBox) event.getSource()).getId().replace("gcubeCollectionSelector_", - ""); +// String collectionID = ((CheckBox) event.getSource()).getId().replace("gcubeCollectionSelector_", +// ""); GWT.log("Collection ID is : " + collectionID + ", event value: " + event.getValue()); if (event.getValue()) { @@ -512,16 +526,39 @@ public class GeonaDataViewMainPanel extends Composite { }); openCollectionPanel.add(checkbox); + + List listCollections = mapCollectionCheckBoxes.get(collectionID); + if (listCollections == null) + listCollections = new ArrayList(); + + listCollections.add(checkbox); + mapCollectionCheckBoxes.put(collectionID, listCollections); + + // Opening All Collections if openCollectionID is null + if (openCollectionID == null) { + checkbox.setValue(true, true); + // String collectionID = checkbox.getId().replace("gcubeCollectionSelector_", + // ""); + GWT.log("Opening the collection: " + collectionID); + applicationBus.fireEvent(new OpenCollectionEvent(collectionID)); + } + } - // Open the first collection as default - if (collection != null && collection.size() > 0) { - CheckBox checkbox = (CheckBox) openCollectionPanel.getWidget(0); - checkbox.setValue(true, true); - String collectionID = checkbox.getId().replace("gcubeCollectionSelector_", ""); - applicationBus.fireEvent(new OpenCollectionEvent(collectionID)); - } + // Opening All Collections if openCollectionID is null + if (openCollectionID != null) { + List listCheckBoxes = mapCollectionCheckBoxes.get(openCollectionID); + + if (listCheckBoxes != null) { + for (CheckBox checkBox : listCheckBoxes) { + checkBox.setValue(true, true); + String collectionID = checkBox.getId().replace("gcubeCollectionSelector_", ""); + GWT.log("Opening the input collection: " + collectionID); + applicationBus.fireEvent(new OpenCollectionEvent(collectionID)); + } + } + } } public void openCollectionMenu() { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java index 82d602c..535a25a 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/GeoportalDataViewerServiceImpl.java @@ -667,7 +667,7 @@ public class GeoportalDataViewerServiceImpl extends RemoteServiceServlet impleme try { SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true); - + new GeoportalServiceIdentityProxy(this.getThreadLocalRequest()); List listIFResponse = new ArrayList(); List handlersIds = Arrays.asList(GEOPORTAL_DATA_HANDLER.geoportal_basic_data_list.getId());