2020-10-23 18:18:06 +02:00
|
|
|
package org.gcube.portlets.user.geoportaldataviewer.client.ui;
|
|
|
|
|
2020-12-02 14:39:52 +01:00
|
|
|
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
2020-10-27 16:04:34 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.client.gis.OpenLayerOSM;
|
2020-11-03 13:09:08 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.shared.products.ConcessioneDV;
|
2020-11-19 15:19:27 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataviewer.shared.products.model.RecordDV;
|
2020-10-26 17:40:38 +01:00
|
|
|
|
|
|
|
import com.github.gwtbootstrap.client.ui.Button;
|
2020-11-02 17:04:31 +01:00
|
|
|
import com.github.gwtbootstrap.client.ui.NavLink;
|
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;
|
2020-10-26 17:40:38 +01:00
|
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
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;
|
2020-11-19 15:19:27 +01:00
|
|
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
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)
|
|
|
|
*
|
|
|
|
* Nov 19, 2020
|
|
|
|
*/
|
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)
|
|
|
|
*
|
|
|
|
* Nov 19, 2020
|
|
|
|
*/
|
2020-10-23 18:18:06 +02:00
|
|
|
interface GeonaDataViewMainPanelUiBinder extends UiBinder<Widget, GeonaDataViewMainPanel> {
|
|
|
|
}
|
2020-11-19 15:19:27 +01:00
|
|
|
|
|
|
|
@UiField
|
|
|
|
HTMLPanel mainContainerPanel;
|
|
|
|
|
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;
|
|
|
|
|
2020-10-28 11:19:12 +01:00
|
|
|
@UiField
|
2020-11-02 17:04:31 +01:00
|
|
|
Button removeQuery;
|
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
|
|
|
|
2020-10-27 10:19:32 +01:00
|
|
|
private MapPanel mapPanel;
|
2020-10-26 17:40:38 +01:00
|
|
|
|
2020-10-27 16:04:34 +01:00
|
|
|
private OpenLayerOSM map;
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
private HandlerManager applicationBus;
|
2020-11-03 13:09:08 +01:00
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Instantiates a new geona data view main panel.
|
|
|
|
*
|
|
|
|
* @param applicationBus the application bus
|
|
|
|
* @param mapHeight the map height
|
|
|
|
*/
|
|
|
|
public GeonaDataViewMainPanel(HandlerManager applicationBus, int mapHeight) {
|
2020-10-23 18:18:06 +02:00
|
|
|
initWidget(uiBinder.createAndBindUi(this));
|
2020-11-19 15:19:27 +01:00
|
|
|
this.applicationBus = applicationBus;
|
|
|
|
mapPanel = new MapPanel(mapHeight+"px");
|
|
|
|
detailsPanel.setHeight(mapHeight+"px");
|
|
|
|
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);
|
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);
|
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
|
|
|
|
*/
|
2020-10-27 16:04:34 +01:00
|
|
|
public void setMap(OpenLayerOSM 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
|
|
|
}
|
|
|
|
});
|
2020-11-02 17:04:31 +01:00
|
|
|
|
|
|
|
removeQuery.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
map.removeQueryInteractions();
|
|
|
|
removeQuery.setVisible(false);
|
|
|
|
}
|
|
|
|
});
|
2020-10-28 11:19:12 +01:00
|
|
|
|
2020-10-26 17:40:38 +01:00
|
|
|
}
|
2020-11-19 15:19:27 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Show as details.
|
|
|
|
*
|
|
|
|
* @param concessioneDV the concessione DV
|
|
|
|
* @param geonaItemRef the geona item ref
|
|
|
|
*/
|
|
|
|
public void showAsDetails(ConcessioneDV concessioneDV, GeoNaItemRef geonaItemRef) {
|
|
|
|
detailsPanel.showDetailsFor(concessioneDV, geonaItemRef);
|
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();
|
2020-11-05 14:05:14 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2020-11-19 15:19:27 +01:00
|
|
|
/**
|
|
|
|
* Gets the displyed record.
|
|
|
|
*
|
|
|
|
* @return the displyed record
|
|
|
|
*/
|
|
|
|
public RecordDV getDisplyedRecord() {
|
|
|
|
return detailsPanel.getDisplayedRecord();
|
2020-11-03 13:09:08 +01:00
|
|
|
}
|
2020-10-23 18:18:06 +02:00
|
|
|
|
|
|
|
}
|