2020-10-23 18:18:06 +02:00
|
|
|
package org.gcube.portlets.user.geoportaldataviewer.client.ui;
|
|
|
|
|
2022-10-12 17:12:09 +02:00
|
|
|
import java.util.ArrayList;
|
2022-10-13 16:53:33 +02:00
|
|
|
import java.util.Collection;
|
2021-11-12 12:37:15 +01:00
|
|
|
import java.util.List;
|
|
|
|
|
2020-12-02 14:39:52 +01:00
|
|
|
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
2021-12-07 17:13:20 +01:00
|
|
|
import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
2022-10-12 17:12:09 +02:00
|
|
|
import org.gcube.application.geoportalcommon.shared.SearchingFilter.ORDER;
|
2022-10-11 15:00:39 +02:00
|
|
|
import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV;
|
2022-10-17 16:52:22 +02:00
|
|
|
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
2022-10-11 15:00:39 +02:00
|
|
|
import org.gcube.application.geoportalcommon.shared.geoportal.view.ProjectView;
|
2021-09-01 16:26:07 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerConstants.MAP_PROJECTION;
|
2021-11-12 12:37:15 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.ChangeMapLayerEvent;
|
2021-09-01 12:51:06 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.MapExtentToEvent;
|
2022-10-13 16:53:33 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.CloseCollectionEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.events.collections.OpenCollectionEvent;
|
2021-11-12 14:54:54 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerMap;
|
2021-12-15 15:44:31 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAIcons;
|
2021-11-16 14:07:59 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.resources.GNAImages;
|
2022-10-12 17:12:09 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.search.SearchFacilityUI;
|
2021-09-01 12:51:06 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil;
|
2021-09-01 16:26:07 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.ui.map.ExtentMapUtil.Location;
|
2022-10-13 16:53:33 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.shared.GCubeCollection;
|
2022-10-17 16:52:22 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.shared.ItemFieldsResponse;
|
2021-11-12 12:37:15 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.shared.gis.BaseMapLayer;
|
2020-10-26 17:40:38 +01:00
|
|
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.Button;
|
2022-10-13 16:53:33 +02:00
|
|
|
import com.github.gwtbootstrap.client.ui.CheckBox;
|
2021-11-16 14:07:59 +01:00
|
|
|
import com.github.gwtbootstrap.client.ui.DropdownButton;
|
2020-11-02 17:04:31 +01:00
|
|
|
import com.github.gwtbootstrap.client.ui.NavLink;
|
2022-10-12 17:12:09 +02:00
|
|
|
import com.github.gwtbootstrap.client.ui.NavList;
|
2021-11-11 16:32:49 +01:00
|
|
|
import com.github.gwtbootstrap.client.ui.Paragraph;
|
2020-10-28 11:19:12 +01:00
|
|
|
import com.github.gwtbootstrap.client.ui.constants.IconType;
|
2020-10-23 18:18:06 +02:00
|
|
|
import com.google.gwt.core.client.GWT;
|
2021-12-10 16:19:33 +01:00
|
|
|
import com.google.gwt.core.client.Scheduler;
|
|
|
|
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
2021-09-01 16:26:07 +02:00
|
|
|
import com.google.gwt.dom.client.Style.Unit;
|
2020-10-26 17:40:38 +01:00
|
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
2021-11-12 12:37:15 +01:00
|
|
|
import com.google.gwt.event.logical.shared.ValueChangeEvent;
|
|
|
|
import com.google.gwt.event.logical.shared.ValueChangeHandler;
|
2021-10-14 11:34:04 +02:00
|
|
|
import com.google.gwt.event.shared.GwtEvent;
|
2020-11-03 13:09:08 +01:00
|
|
|
import com.google.gwt.event.shared.HandlerManager;
|
2020-10-23 18:18:06 +02:00
|
|
|
import com.google.gwt.uibinder.client.UiBinder;
|
|
|
|
import com.google.gwt.uibinder.client.UiField;
|
|
|
|
import com.google.gwt.user.client.ui.Composite;
|
2021-10-14 11:34:04 +02:00
|
|
|
import com.google.gwt.user.client.ui.FlowPanel;
|
2020-11-19 15:19:27 +01:00
|
|
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
2021-09-01 16:26:07 +02:00
|
|
|
import com.google.gwt.user.client.ui.Image;
|
2021-11-11 16:32:49 +01:00
|
|
|
import com.google.gwt.user.client.ui.Label;
|
2021-11-12 12:37:15 +01:00
|
|
|
import com.google.gwt.user.client.ui.RadioButton;
|
2021-10-15 17:51:09 +02:00
|
|
|
import com.google.gwt.user.client.ui.ScrollPanel;
|
2021-11-12 12:37:15 +01:00
|
|
|
import com.google.gwt.user.client.ui.SimplePanel;
|
2020-10-23 18:18:06 +02:00
|
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* The Class GeonaDataViewMainPanel.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
|
|
|
*
|
2021-09-01 12:51:06 +02:00
|
|
|
* Nov 19, 2020
|
2020-11-19 15:19:27 +01:00
|
|
|
*/
|
2020-10-23 18:18:06 +02:00
|
|
|
public class GeonaDataViewMainPanel extends Composite {
|
|
|
|
|
|
|
|
private static GeonaDataViewMainPanelUiBinder uiBinder = GWT.create(GeonaDataViewMainPanelUiBinder.class);
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* The Interface GeonaDataViewMainPanelUiBinder.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
|
|
|
*
|
2021-09-01 12:51:06 +02:00
|
|
|
* Nov 19, 2020
|
2020-11-19 15:19:27 +01:00
|
|
|
*/
|
2020-10-23 18:18:06 +02:00
|
|
|
interface GeonaDataViewMainPanelUiBinder extends UiBinder<Widget, GeonaDataViewMainPanel> {
|
|
|
|
}
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
@UiField
|
|
|
|
HTMLPanel mainContainerPanel;
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-10-23 18:18:06 +02:00
|
|
|
@UiField
|
2020-11-19 15:19:27 +01:00
|
|
|
HTMLPanel mainToolBar;
|
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
@UiField
|
2020-11-02 17:04:31 +01:00
|
|
|
NavLink dataPointSelection;
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
@UiField
|
2020-11-02 17:04:31 +01:00
|
|
|
NavLink dataBoxSelection;
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-10-28 11:19:12 +01:00
|
|
|
@UiField
|
2020-11-02 17:04:31 +01:00
|
|
|
Button removeQuery;
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-03 13:09:08 +01:00
|
|
|
@UiField
|
2020-11-19 15:19:27 +01:00
|
|
|
DetailsPanel detailsPanel;
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2021-09-01 12:51:06 +02:00
|
|
|
@UiField
|
|
|
|
Button extentToItaly;
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-09-01 16:26:07 +02:00
|
|
|
@UiField
|
|
|
|
Button extentToEarth;
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
@UiField
|
2021-11-16 14:07:59 +01:00
|
|
|
Button linkLayers;
|
2022-10-13 16:53:33 +02:00
|
|
|
|
|
|
|
@UiField
|
|
|
|
DropdownButton openCollectionDropDown;
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2022-10-13 16:53:33 +02:00
|
|
|
@UiField
|
|
|
|
HTMLPanel openCollectionPanel;
|
|
|
|
|
2021-12-07 17:13:20 +01:00
|
|
|
@UiField
|
|
|
|
DropdownButton searchFacilityButton;
|
2022-10-12 17:12:09 +02:00
|
|
|
|
|
|
|
@UiField
|
|
|
|
NavList navListSearch;
|
2021-10-14 11:34:04 +02:00
|
|
|
|
|
|
|
@UiField
|
2021-10-15 17:51:09 +02:00
|
|
|
ScrollPanel overlayLayersPanel;
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-12-07 17:13:20 +01:00
|
|
|
@UiField
|
|
|
|
ScrollPanel searchFacilityPanel;
|
2021-10-14 11:34:04 +02:00
|
|
|
|
2021-11-11 16:32:49 +01:00
|
|
|
@UiField
|
|
|
|
HTMLPanel panelAttribution;
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
@UiField
|
|
|
|
HTMLPanel panelBaseLayers;
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-16 14:07:59 +01:00
|
|
|
@UiField
|
|
|
|
DropdownButton linkMap;
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-16 14:07:59 +01:00
|
|
|
@UiField
|
|
|
|
DropdownButton linkPresetLocation;
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2020-10-27 10:19:32 +01:00
|
|
|
private MapPanel mapPanel;
|
2020-10-26 17:40:38 +01:00
|
|
|
|
2021-11-12 14:54:54 +01:00
|
|
|
private OpenLayerMap map;
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
private HandlerManager applicationBus;
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2022-10-12 17:12:09 +02:00
|
|
|
|
|
|
|
public GeonaDataViewMainPanel(HandlerManager applicationBus, int mapHeight,
|
2022-10-17 16:52:22 +02:00
|
|
|
List<ItemFieldsResponse> itemFieldsReponse) {
|
2020-10-23 18:18:06 +02:00
|
|
|
initWidget(uiBinder.createAndBindUi(this));
|
2020-11-19 15:19:27 +01:00
|
|
|
this.applicationBus = applicationBus;
|
2021-09-01 12:51:06 +02:00
|
|
|
mapPanel = new MapPanel(mapHeight + "px");
|
|
|
|
detailsPanel.setHeight(mapHeight + "px");
|
2020-11-19 15:19:27 +01:00
|
|
|
detailsPanel.setApplicationBus(applicationBus);
|
|
|
|
mainContainerPanel.add(mapPanel);
|
2020-10-26 17:40:38 +01:00
|
|
|
bindHandlers();
|
2020-10-28 11:19:12 +01:00
|
|
|
dataPointSelection.setIcon(IconType.SCREENSHOT);
|
|
|
|
dataBoxSelection.setIcon(IconType.BOOKMARK);
|
2020-11-02 17:04:31 +01:00
|
|
|
removeQuery.setIcon(IconType.REMOVE);
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-11-16 14:07:59 +01:00
|
|
|
Image italyImg = new Image(GNAImages.ICONS.italyIcon());
|
2021-09-01 16:26:07 +02:00
|
|
|
italyImg.getElement().getStyle().setPaddingLeft(20, Unit.PX);
|
|
|
|
extentToItaly.getElement().appendChild(italyImg.getElement());
|
|
|
|
extentToItaly.setWidth("140px");
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-11-16 14:07:59 +01:00
|
|
|
Image worldImg = new Image(GNAImages.ICONS.worldIcon());
|
2021-09-01 16:26:07 +02:00
|
|
|
worldImg.getElement().getStyle().setPaddingLeft(20, Unit.PX);
|
|
|
|
extentToEarth.getElement().appendChild(worldImg.getElement());
|
|
|
|
extentToEarth.setWidth("140px");
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-12-15 15:44:31 +01:00
|
|
|
linkMap.setCustomIconStyle(GNAIcons.CustomIconType.MAP.get());
|
|
|
|
linkPresetLocation.setCustomIconStyle(GNAIcons.CustomIconType.PRESET_LOCATION.get());
|
|
|
|
linkLayers.setCustomIconStyle(GNAIcons.CustomIconType.LAYERS.get());
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2022-10-17 16:52:22 +02:00
|
|
|
openCollectionDropDown.setIcon(IconType.COMPASS);
|
2022-10-13 16:53:33 +02:00
|
|
|
|
2022-10-12 17:12:09 +02:00
|
|
|
SearchingFilter initialSortFilter = new SearchingFilter();
|
|
|
|
initialSortFilter.setOrder(ORDER.ASC);
|
|
|
|
|
2022-10-17 16:52:22 +02:00
|
|
|
for (final ItemFieldsResponse ifResponse : itemFieldsReponse) {
|
2022-10-12 17:12:09 +02:00
|
|
|
|
2022-10-17 16:52:22 +02:00
|
|
|
List<ItemFieldDV> result = ifResponse.getListItemFields();
|
2022-10-12 17:12:09 +02:00
|
|
|
List<ItemFieldDV> displayFields = new ArrayList<ItemFieldDV>();
|
|
|
|
List<ItemFieldDV> searchByFields = new ArrayList<ItemFieldDV>();
|
|
|
|
List<ItemFieldDV> sortByFields = new ArrayList<ItemFieldDV>();
|
|
|
|
for (ItemFieldDV itemField : result) {
|
|
|
|
if (itemField.isDisplayAsResult()) {
|
|
|
|
displayFields.add(itemField);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (itemField.isSearchable()) {
|
|
|
|
searchByFields.add(itemField);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (itemField.isSortable()) {
|
|
|
|
sortByFields.add(itemField);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-10-17 16:52:22 +02:00
|
|
|
final UseCaseDescriptorDV ucd = ifResponse.getUseCaseDescriptorDV();
|
|
|
|
NavLink navLink = new NavLink(ifResponse.getUseCaseDescriptorDV().getName());
|
|
|
|
//navLink.setText(ucd.getName());
|
2022-10-12 17:12:09 +02:00
|
|
|
navLink.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
searchFacilityPanel.clear();
|
2022-10-17 16:52:22 +02:00
|
|
|
SearchFacilityUI searchFacility = new SearchFacilityUI(ucd.getProfileID(), applicationBus, sortByFields, searchByFields,
|
2022-10-12 17:12:09 +02:00
|
|
|
initialSortFilter);
|
|
|
|
searchFacilityPanel.add(searchFacility);
|
|
|
|
searchFacility.setSearchButton(searchFacilityButton);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2022-10-17 16:52:22 +02:00
|
|
|
GWT.log("Added navLink for: " + ucd.getName());
|
2022-10-12 17:12:09 +02:00
|
|
|
navListSearch.add(navLink);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2021-12-10 16:19:33 +01:00
|
|
|
searchFacilityButton.setIcon(IconType.SEARCH);
|
2022-10-12 17:12:09 +02:00
|
|
|
|
2022-10-17 16:52:22 +02:00
|
|
|
if (itemFieldsReponse.size() == 0) {
|
2022-10-12 17:12:09 +02:00
|
|
|
searchFacilityPanel.setVisible(false);
|
|
|
|
searchFacilityButton.setVisible(false);
|
|
|
|
}
|
|
|
|
|
2021-12-10 16:19:33 +01:00
|
|
|
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void execute() {
|
|
|
|
searchFacilityPanel.getElement().getParentElement().getStyle().setOpacity(0.9);
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-12-10 16:19:33 +01:00
|
|
|
}
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-12-10 16:19:33 +01:00
|
|
|
});
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-11 16:32:49 +01:00
|
|
|
// layersDDB.setToggle(true);
|
2021-10-14 11:34:04 +02:00
|
|
|
bindEvents();
|
|
|
|
|
|
|
|
}
|
2022-10-11 15:00:39 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Bind events.
|
|
|
|
*/
|
2021-10-14 11:34:04 +02:00
|
|
|
private void bindEvents() {
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-11-16 14:07:59 +01:00
|
|
|
linkLayers.addClickHandler(new ClickHandler() {
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
GWT.log("layersDDB clicked");
|
2021-11-11 16:32:49 +01:00
|
|
|
|
|
|
|
if (overlayLayersPanel.isVisible()) {
|
2021-10-14 11:34:04 +02:00
|
|
|
overlayLayersPanel.setVisible(false);
|
2021-11-11 16:32:49 +01:00
|
|
|
} else {
|
2021-10-14 11:34:04 +02:00
|
|
|
overlayLayersPanel.setVisible(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-12-07 17:13:20 +01:00
|
|
|
searchFacilityButton.addDomHandler(new ClickHandler() {
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-12-07 17:13:20 +01:00
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2022-10-11 15:00:39 +02:00
|
|
|
// event.preventDefault();
|
2021-12-07 17:13:20 +01:00
|
|
|
event.stopPropagation();
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-12-07 17:13:20 +01:00
|
|
|
}
|
|
|
|
}, ClickEvent.getType());
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2020-10-23 18:18:06 +02:00
|
|
|
}
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* Sets the panels height.
|
|
|
|
*
|
|
|
|
* @param height the new panels height
|
|
|
|
*/
|
|
|
|
public void setPanelsHeight(int height) {
|
|
|
|
String toH = height + "px";
|
|
|
|
mapPanel.setMapHeight(height);
|
|
|
|
detailsPanel.setHeight(toH);
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-10-18 17:35:00 +02:00
|
|
|
setOverlayPanelMaxHeight();
|
|
|
|
|
|
|
|
}
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2022-10-11 15:00:39 +02:00
|
|
|
/**
|
|
|
|
* Sets the overlay panel max height.
|
|
|
|
*/
|
2021-10-18 17:35:00 +02:00
|
|
|
private void setOverlayPanelMaxHeight() {
|
2021-11-11 16:32:49 +01:00
|
|
|
|
|
|
|
String overlMH = mapPanel.getOffsetHeight() - 130 + "px";
|
|
|
|
GWT.log("overlayLayersPanel maxHeight: " + overlMH);
|
2021-10-18 17:35:00 +02:00
|
|
|
overlayLayersPanel.getElement().getStyle().setProperty("maxHeight", overlMH);
|
2020-10-26 11:01:07 +01:00
|
|
|
}
|
2020-10-23 18:18:06 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* Gets the map panel.
|
|
|
|
*
|
|
|
|
* @return the map panel
|
|
|
|
*/
|
2020-10-27 10:19:32 +01:00
|
|
|
public MapPanel getMapPanel() {
|
|
|
|
return mapPanel;
|
2020-10-23 18:18:06 +02:00
|
|
|
}
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* Sets the map.
|
|
|
|
*
|
|
|
|
* @param map the new map
|
|
|
|
*/
|
2021-11-12 14:54:54 +01:00
|
|
|
public void setMap(OpenLayerMap map) {
|
2020-10-26 17:40:38 +01:00
|
|
|
this.map = map;
|
|
|
|
}
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* Bind handlers.
|
|
|
|
*/
|
2020-10-28 11:19:12 +01:00
|
|
|
public void bindHandlers() {
|
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
dataPointSelection.addClickHandler(new ClickHandler() {
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2020-10-28 11:19:12 +01:00
|
|
|
map.removeQueryInteractions();
|
|
|
|
GWT.log("dataPointSelection.isActive() " + dataPointSelection.isActive());
|
|
|
|
if (!dataPointSelection.isActive()) {
|
|
|
|
map.addPointVectorSource();
|
|
|
|
}
|
2020-11-02 17:04:31 +01:00
|
|
|
removeQuery.setVisible(true);
|
2020-10-26 17:40:38 +01:00
|
|
|
}
|
|
|
|
});
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
dataBoxSelection.addClickHandler(new ClickHandler() {
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2020-10-28 11:19:12 +01:00
|
|
|
map.removeQueryInteractions();
|
2020-10-30 17:32:05 +01:00
|
|
|
GWT.log("dataBoxSelection.isActive() " + dataBoxSelection.isActive());
|
2020-10-28 11:19:12 +01:00
|
|
|
if (!dataBoxSelection.isActive()) {
|
|
|
|
map.addExtentInteraction();
|
|
|
|
}
|
2020-11-02 17:04:31 +01:00
|
|
|
removeQuery.setVisible(true);
|
2020-10-26 17:40:38 +01:00
|
|
|
}
|
|
|
|
});
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-02 17:04:31 +01:00
|
|
|
removeQuery.addClickHandler(new ClickHandler() {
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-02 17:04:31 +01:00
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
map.removeQueryInteractions();
|
|
|
|
removeQuery.setVisible(false);
|
|
|
|
}
|
|
|
|
});
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2021-09-01 12:51:06 +02:00
|
|
|
extentToItaly.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2021-09-01 16:26:07 +02:00
|
|
|
Location italyLocation = ExtentMapUtil.getLocation(ExtentMapUtil.PLACE.ITALY);
|
|
|
|
applicationBus.fireEvent(new MapExtentToEvent(italyLocation));
|
|
|
|
map.setCenter(italyLocation.getCoordinate(MAP_PROJECTION.EPSG_3857));
|
|
|
|
map.setZoom(italyLocation.getZoomLevel());
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-09-01 16:26:07 +02:00
|
|
|
extentToEarth.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2021-09-06 17:15:38 +02:00
|
|
|
Location earthLocation = ExtentMapUtil.getLocation(ExtentMapUtil.PLACE.WORLD);
|
2021-09-01 16:26:07 +02:00
|
|
|
applicationBus.fireEvent(new MapExtentToEvent(earthLocation));
|
|
|
|
map.setCenter(earthLocation.getCoordinate(MAP_PROJECTION.EPSG_3857));
|
|
|
|
map.setZoom(earthLocation.getZoomLevel());
|
2021-09-01 12:51:06 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
}
|
2020-11-19 15:19:27 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Show as details.
|
|
|
|
*
|
2022-10-11 15:00:39 +02:00
|
|
|
* @param result the result
|
|
|
|
* @param geonaItemRef the geona item ref
|
2020-11-19 15:19:27 +01:00
|
|
|
*/
|
2022-10-11 15:00:39 +02:00
|
|
|
public void showAsDetails(ProjectView result, GeoNaItemRef geonaItemRef) {
|
|
|
|
detailsPanel.showDetailsFor(result, geonaItemRef);
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-05 14:05:14 +01:00
|
|
|
}
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-05 14:05:14 +01:00
|
|
|
/**
|
2020-11-19 15:19:27 +01:00
|
|
|
* Hide panel details.
|
2020-11-05 14:05:14 +01:00
|
|
|
*/
|
2020-11-19 15:19:27 +01:00
|
|
|
public void hidePanelDetails() {
|
|
|
|
detailsPanel.hidePanelDetails();
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-05 14:05:14 +01:00
|
|
|
}
|
2021-09-01 12:51:06 +02:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
2022-10-11 15:00:39 +02:00
|
|
|
* Gets the displayed record.
|
2020-11-19 15:19:27 +01:00
|
|
|
*
|
2022-10-11 15:00:39 +02:00
|
|
|
* @return the displayed record
|
2020-11-19 15:19:27 +01:00
|
|
|
*/
|
2022-10-11 15:00:39 +02:00
|
|
|
public ProjectView getDisplayedRecord() {
|
|
|
|
return detailsPanel.getDisplayedProject();
|
2020-11-03 13:09:08 +01:00
|
|
|
}
|
2020-10-23 18:18:06 +02:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
/**
|
|
|
|
* Gets the layers DDB.
|
|
|
|
*
|
|
|
|
* @return the layers DDB
|
|
|
|
*/
|
|
|
|
public Button getLayersDDB() {
|
2021-11-16 14:07:59 +01:00
|
|
|
return linkLayers;
|
2021-10-14 11:34:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Show overlay layers.
|
|
|
|
*
|
|
|
|
* @param panel the panel
|
|
|
|
*/
|
|
|
|
public void showOverlayLayers(FlowPanel panel) {
|
|
|
|
GWT.log("showOverlayLayers");
|
2021-11-11 16:32:49 +01:00
|
|
|
// layersDDB.setVisible(true);
|
2021-10-14 11:34:04 +02:00
|
|
|
overlayLayersPanel.setVisible(true);
|
|
|
|
overlayLayersPanel.clear();
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-10-18 17:35:00 +02:00
|
|
|
setOverlayPanelMaxHeight();
|
2021-10-14 11:34:04 +02:00
|
|
|
overlayLayersPanel.add(panel);
|
2021-11-11 16:32:49 +01:00
|
|
|
// layersDDBClickEvent();
|
2021-10-14 11:34:04 +02:00
|
|
|
}
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2022-10-11 15:00:39 +02:00
|
|
|
/**
|
|
|
|
* Layers DDB click event.
|
|
|
|
*/
|
2021-10-14 11:34:04 +02:00
|
|
|
private void layersDDBClickEvent() {
|
2021-11-16 14:07:59 +01:00
|
|
|
linkLayers.fireEvent(new GwtEvent<ClickHandler>() {
|
2021-11-11 16:32:49 +01:00
|
|
|
@Override
|
|
|
|
public com.google.gwt.event.shared.GwtEvent.Type<ClickHandler> getAssociatedType() {
|
|
|
|
return ClickEvent.getType();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void dispatch(ClickHandler handler) {
|
|
|
|
handler.onClick(null);
|
|
|
|
}
|
|
|
|
});
|
2021-10-14 11:34:04 +02:00
|
|
|
}
|
2021-11-11 16:32:49 +01:00
|
|
|
|
2021-10-14 11:34:04 +02:00
|
|
|
/**
|
|
|
|
* Hide overlay layers.
|
|
|
|
*/
|
|
|
|
public void hideOverlayLayers() {
|
|
|
|
GWT.log("hideOverlayLayers");
|
|
|
|
overlayLayersPanel.clear();
|
2021-11-11 16:32:49 +01:00
|
|
|
// layersDDB.setVisible(false);
|
2021-10-14 11:34:04 +02:00
|
|
|
overlayLayersPanel.setVisible(false);
|
2021-11-11 16:32:49 +01:00
|
|
|
// layersDDBClickEvent();
|
|
|
|
}
|
|
|
|
|
2022-10-11 15:00:39 +02:00
|
|
|
/**
|
|
|
|
* Sets the map attribution.
|
|
|
|
*
|
|
|
|
* @param attribution the new map attribution
|
|
|
|
*/
|
2021-11-11 16:32:49 +01:00
|
|
|
public void setMapAttribution(String attribution) {
|
|
|
|
panelAttribution.clear();
|
|
|
|
Label label = new Label("Base Map Credits");
|
|
|
|
Paragraph p = new Paragraph(attribution);
|
|
|
|
panelAttribution.add(label);
|
|
|
|
panelAttribution.add(p);
|
2021-10-14 11:34:04 +02:00
|
|
|
}
|
2022-10-11 15:00:39 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the base layers.
|
|
|
|
*
|
|
|
|
* @param listBaseLayers the new base layers
|
|
|
|
*/
|
2022-10-13 16:53:33 +02:00
|
|
|
|
|
|
|
public void setAvailableCollections(Collection<GCubeCollection> collection) {
|
|
|
|
GWT.log("Init Available collections menu");
|
|
|
|
if(collection == null || collection.isEmpty())
|
|
|
|
GWT.log("!!! No Available collections");
|
|
|
|
|
|
|
|
|
|
|
|
for(GCubeCollection coll : collection) {
|
|
|
|
GWT.log("Found available collection "+coll);
|
|
|
|
String label = coll.getUcd().getName();
|
|
|
|
String id=coll.getUcd().getId();
|
|
|
|
|
|
|
|
CheckBox checkbox = new CheckBox(label);
|
|
|
|
checkbox.setId("gcubeCollectionSelector_"+id);
|
|
|
|
|
|
|
|
checkbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
|
|
|
GWT.log("Collection selector flag changed to value : "+event.toDebugString());
|
|
|
|
|
|
|
|
String collectionID = ((CheckBox)event.getSource()).getId().replace("gcubeCollectionSelector_", "");
|
|
|
|
|
|
|
|
GWT.log("Collection ID is : "+collectionID + ", event value: "+event.getValue());
|
|
|
|
if(event.getValue()) {
|
|
|
|
// OPEN COLLECTION
|
|
|
|
applicationBus.fireEvent(new OpenCollectionEvent(collectionID));
|
|
|
|
}else {
|
|
|
|
// CLOSE COLLECTION
|
|
|
|
applicationBus.fireEvent(new CloseCollectionEvent(collectionID));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
openCollectionPanel.add(checkbox);
|
|
|
|
}
|
|
|
|
|
2022-10-17 16:52:22 +02:00
|
|
|
if(collection!=null && collection.size()==1) {
|
|
|
|
CheckBox checkbox = (CheckBox) openCollectionPanel.getWidget(0);
|
|
|
|
checkbox.setValue(true, true);
|
|
|
|
String collectionID = checkbox.getId().replace("gcubeCollectionSelector_", "");
|
|
|
|
applicationBus.fireEvent(new OpenCollectionEvent(collectionID));
|
|
|
|
}
|
|
|
|
|
2022-10-13 16:53:33 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
public void setBaseLayers(List<BaseMapLayer> listBaseLayers) {
|
2022-10-11 15:00:39 +02:00
|
|
|
|
|
|
|
if (listBaseLayers == null)
|
2021-11-12 12:37:15 +01:00
|
|
|
return;
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
for (BaseMapLayer baseMapLayer : listBaseLayers) {
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
RadioButton radio = new RadioButton("base-layer");
|
|
|
|
radio.setText(baseMapLayer.getName());
|
2022-10-11 15:00:39 +02:00
|
|
|
if (i == 0) {
|
2021-11-16 14:07:59 +01:00
|
|
|
radio.setValue(true, false);
|
2021-11-12 12:37:15 +01:00
|
|
|
}
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
radio.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
@Override
|
|
|
|
public void onValueChange(ValueChangeEvent<Boolean> event) {
|
|
|
|
applicationBus.fireEvent(new ChangeMapLayerEvent(baseMapLayer));
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
}
|
|
|
|
});
|
2022-10-11 15:00:39 +02:00
|
|
|
|
2021-11-12 12:37:15 +01:00
|
|
|
SimplePanel sp = new SimplePanel(radio);
|
|
|
|
sp.getElement().addClassName("form-inline");
|
|
|
|
sp.getElement().addClassName("map-layers-radio");
|
|
|
|
panelBaseLayers.add(sp);
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
|
2022-10-11 15:00:39 +02:00
|
|
|
}
|
2021-10-14 11:34:04 +02:00
|
|
|
|
2020-10-23 18:18:06 +02:00
|
|
|
}
|