diff --git a/pom.xml b/pom.xml
index 89c084c..b7cb944 100644
--- a/pom.xml
+++ b/pom.xml
@@ -234,6 +234,7 @@
4.11
test
+
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 b3d5446..68dcea9 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
@@ -1,14 +1,13 @@
package org.gcube.portlets.user.geoportaldataviewer.client;
-import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.gcube.application.geoportalcommon.shared.GNADataViewerConfigProfile;
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
-import org.gcube.application.geoportalcommon.shared.LayerItem;
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV;
import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
@@ -38,14 +37,19 @@ import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCent
import org.gcube.portlets.user.geoportaldataviewer.client.events.ShowPopupOnCentroiEventHandler;
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEvent;
import org.gcube.portlets.user.geoportaldataviewer.client.events.ZoomOutOverMinimumEventHandler;
+import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.OpenCollectionEvent;
+import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.OpenCollectionEventHandler;
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.OpenLayerMap;
import org.gcube.portlets.user.geoportaldataviewer.client.ui.GeonaDataViewMainPanel;
+import org.gcube.portlets.user.geoportaldataviewer.client.util.ControlledCallBack;
import org.gcube.portlets.user.geoportaldataviewer.client.util.LoaderIcon;
-import org.gcube.portlets.user.geoportaldataviewer.client.util.URLUtil;
+import org.gcube.portlets.user.geoportaldataviewer.shared.GCubeCollection;
+import org.gcube.portlets.user.geoportaldataviewer.shared.ViewerConfiguration;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.GeoQuery;
+import org.gcube.portlets.user.geoportaldataviewer.shared.gis.IndexLayer;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
@@ -104,16 +108,14 @@ public class GeoportalDataViewer implements EntryPoint {
private OLMapManager olMapMng = null;
int attempt = 0;
-
+
private LoaderIcon loaderApp = new LoaderIcon("Loading application... please wait");
-
+
private HTML attributionDiv = new HTML();
-
+
private static List listBaseMapLayers = null;
-
- private List displayFields = new ArrayList();
- private List sortByFields = new ArrayList();
- private List searchByFields = new ArrayList();
+
+ private static ViewerStatus viewerStatus = new ViewerStatus();
/**
* This is the entry point method.
@@ -122,7 +124,7 @@ public class GeoportalDataViewer implements EntryPoint {
loaderApp.getElement().addClassName("loader-gna-app");
RootPanel.get(APP_DIV).add(loaderApp);
-
+
paramWmsRequest = Window.Location.getParameter(GeoportalDataViewerConstants.GET_WMS_PARAMETER);
paramGeonaItemType = Window.Location.getParameter(GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE);
paramGeonaItemID = Window.Location.getParameter(GeoportalDataViewerConstants.GET_GEONA_ITEM_ID);
@@ -131,162 +133,81 @@ public class GeoportalDataViewer implements EntryPoint {
GWT.log(GeoportalDataViewerConstants.GET_GEONA_ITEM_TYPE + " = " + paramGeonaItemType);
GWT.log(GeoportalDataViewerConstants.GET_GEONA_ITEM_ID + " = " + paramGeonaItemID);
GWT.log(GeoportalDataViewerConstants.GET_LAYER_TITLE + " = " + paramLayerTitle);
-
+
RootPanel.get(APP_DIV).add(loaderApp);
-
- GeoportalDataViewerServiceAsync.Util.getInstance().listOfFieldsForSearching(new AsyncCallback