2021-08-05 16:49:04 +02:00
|
|
|
package org.gcube.portlets.user.geoportaldataentry.client.ui;
|
|
|
|
|
2021-09-15 16:14:27 +02:00
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
2021-08-06 16:23:17 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_FIELD;
|
2021-08-05 16:49:04 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
2021-09-15 16:14:27 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEvent;
|
2021-08-05 16:49:04 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEvent;
|
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
2021-11-26 16:05:05 +01:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.shared.ACTION_ON_ITEM;
|
2021-08-06 16:23:17 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
|
2021-09-02 18:14:49 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter.ORDER;
|
2021-08-05 16:49:04 +02:00
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
import com.github.gwtbootstrap.client.ui.Dropdown;
|
2021-08-05 16:49:04 +02:00
|
|
|
import com.github.gwtbootstrap.client.ui.NavLink;
|
|
|
|
import com.github.gwtbootstrap.client.ui.Tab;
|
2021-11-26 16:05:05 +01:00
|
|
|
import com.github.gwtbootstrap.client.ui.TabPanel;
|
2021-08-06 16:23:17 +02:00
|
|
|
import com.github.gwtbootstrap.client.ui.TextBox;
|
2021-08-05 16:49:04 +02:00
|
|
|
import com.google.gwt.core.client.GWT;
|
|
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
|
|
|
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.HTMLPanel;
|
|
|
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
|
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The Class GeonaMainTabPanel.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
|
|
*
|
|
|
|
* Aug 5, 2021
|
|
|
|
*/
|
|
|
|
public class GeonaMainTabPanel extends Composite {
|
|
|
|
|
2021-09-15 16:14:27 +02:00
|
|
|
private static final String YOU_MUST_TO_SELECT_A_PROJECT_IN_THE_TABLE = "You must to select a Project in the table";
|
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
private static final String LABEL_FILTER_SEPARATOR = " - ";
|
|
|
|
|
2021-08-05 16:49:04 +02:00
|
|
|
private static GeonaMainTabPanelUiBinder uiBinder = GWT.create(GeonaMainTabPanelUiBinder.class);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The Interface GeonaMainTabPanelUiBinder.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
|
|
*
|
|
|
|
* Aug 5, 2021
|
|
|
|
*/
|
|
|
|
interface GeonaMainTabPanelUiBinder extends UiBinder<Widget, GeonaMainTabPanel> {
|
|
|
|
}
|
|
|
|
|
|
|
|
/** The geona main form panel. */
|
|
|
|
@UiField
|
|
|
|
HTMLPanel geonaMainFormPanel;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
HTMLPanel geonaListOfConcessioniPanel;
|
|
|
|
|
2021-09-15 16:14:27 +02:00
|
|
|
/** The geona main form panel. */
|
|
|
|
@UiField
|
|
|
|
HTMLPanel contTabNewProject;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
HTMLPanel contTabGetListOfProjects;
|
|
|
|
|
2021-08-05 16:49:04 +02:00
|
|
|
/** The loader. */
|
|
|
|
@UiField
|
|
|
|
LoaderIcon loader;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
NavLink buttCreateNewProject;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
NavLink buttonReloadConcessioni;
|
|
|
|
|
2021-11-26 16:05:05 +01:00
|
|
|
@UiField
|
|
|
|
TabPanel tabPanel;
|
|
|
|
|
2021-08-05 16:49:04 +02:00
|
|
|
@UiField
|
|
|
|
Tab tabNewProject;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
Tab tabGetListOfProjects;
|
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
@UiField
|
|
|
|
Dropdown dropdownSortBy;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
TextBox textBoxSortBy;
|
|
|
|
|
2021-09-15 16:14:27 +02:00
|
|
|
@UiField
|
|
|
|
NavLink navShowOnMap;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
NavLink navShowReport;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
NavLink navEditMode;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
NavLink navDelete;
|
|
|
|
|
2021-08-05 16:49:04 +02:00
|
|
|
private HandlerManager appManagerBus;
|
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
private RECORD_FIELD[] sortByFields;
|
|
|
|
|
|
|
|
private SortFilter currentSortFilter;
|
|
|
|
|
2021-09-15 16:14:27 +02:00
|
|
|
private GeonaRecordsPaginatedView grpw = null;
|
|
|
|
|
2021-08-05 16:49:04 +02:00
|
|
|
/**
|
|
|
|
* Instantiates a new geona main tab panel.
|
|
|
|
*
|
2021-08-06 16:23:17 +02:00
|
|
|
* @param appManagerBus the first name
|
|
|
|
* @param sortByFields the sort by fields
|
|
|
|
* @param initialSortFilter
|
2021-08-05 16:49:04 +02:00
|
|
|
*/
|
2021-08-06 16:23:17 +02:00
|
|
|
public GeonaMainTabPanel(HandlerManager appManagerBus, RECORD_FIELD[] sortByFields, SortFilter initialSortFilter) {
|
2021-08-05 16:49:04 +02:00
|
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
|
|
this.appManagerBus = appManagerBus;
|
2021-08-06 16:23:17 +02:00
|
|
|
this.sortByFields = sortByFields;
|
|
|
|
setCurrentSortFilter(initialSortFilter);
|
2021-08-05 16:49:04 +02:00
|
|
|
bindEvents();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2021-09-15 16:14:27 +02:00
|
|
|
public void setInternalHeight(int height) {
|
|
|
|
contTabNewProject.asWidget().setHeight(height + "px");
|
|
|
|
contTabGetListOfProjects.asWidget().setHeight(height + "px");
|
|
|
|
}
|
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
/**
|
|
|
|
* Bind events.
|
|
|
|
*/
|
2021-08-05 16:49:04 +02:00
|
|
|
private void bindEvents() {
|
|
|
|
|
|
|
|
buttCreateNewProject.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
appManagerBus.fireEvent(new CreateNewProjectEvent());
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
buttonReloadConcessioni.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2021-11-26 16:05:05 +01:00
|
|
|
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE, currentSortFilter));
|
2021-08-05 16:49:04 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
tabGetListOfProjects.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
2021-11-26 16:05:05 +01:00
|
|
|
|
|
|
|
instanceAndShowListOfConcessioni();
|
2021-08-05 16:49:04 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
for (RECORD_FIELD record_FIELD : sortByFields) {
|
|
|
|
|
|
|
|
// ASC
|
|
|
|
SortFilter sortFilter = new SortFilter(record_FIELD, ORDER.ASC);
|
|
|
|
String labelASC = toLabelFilter(sortFilter);
|
|
|
|
NavLink nav = new NavLink(labelASC);
|
|
|
|
dropdownSortBy.add(nav);
|
|
|
|
|
|
|
|
nav.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
GWT.log("Sort by: " + sortFilter);
|
|
|
|
setCurrentSortFilter(sortFilter);
|
|
|
|
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE, getCurrentSortFilter()));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// //DESC
|
|
|
|
SortFilter sortFilter2 = new SortFilter(record_FIELD, ORDER.DESC);
|
|
|
|
String labelASC2 = toLabelFilter(sortFilter2);
|
|
|
|
NavLink nav2 = new NavLink(labelASC2);
|
|
|
|
dropdownSortBy.add(nav2);
|
|
|
|
|
|
|
|
nav2.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
GWT.log("Sort by: " + sortFilter2);
|
|
|
|
setCurrentSortFilter(sortFilter2);
|
|
|
|
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE, getCurrentSortFilter()));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2021-09-15 16:14:27 +02:00
|
|
|
navShowOnMap.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
List<ConcessioneDV> listConcessioni = null;
|
|
|
|
if (grpw != null && grpw.getSelectItems() != null) {
|
|
|
|
listConcessioni = grpw.getSelectItems();
|
|
|
|
}
|
|
|
|
appManagerBus
|
2021-11-26 16:05:05 +01:00
|
|
|
.fireEvent(new ActionOnItemEvent<ConcessioneDV>(listConcessioni, ACTION_ON_ITEM.VIEW_ON_MAP));
|
2021-09-15 16:14:27 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
navShowReport.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
List<ConcessioneDV> listConcessioni = null;
|
|
|
|
if (grpw != null && grpw.getSelectItems() != null) {
|
|
|
|
listConcessioni = grpw.getSelectItems();
|
|
|
|
}
|
|
|
|
appManagerBus
|
2021-11-26 16:05:05 +01:00
|
|
|
.fireEvent(new ActionOnItemEvent<ConcessioneDV>(listConcessioni, ACTION_ON_ITEM.VIEW_REPORT));
|
2021-09-15 16:14:27 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
navEditMode.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
|
|
|
|
List<ConcessioneDV> listConcessioni = null;
|
|
|
|
if (grpw != null && grpw.getSelectItems() != null) {
|
|
|
|
listConcessioni = grpw.getSelectItems();
|
|
|
|
}
|
2021-11-26 16:05:05 +01:00
|
|
|
appManagerBus.fireEvent(
|
|
|
|
new ActionOnItemEvent<ConcessioneDV>(listConcessioni, ACTION_ON_ITEM.EDIT_PROJECT));
|
2021-09-15 16:14:27 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
navDelete.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
List<ConcessioneDV> listConcessioni = null;
|
|
|
|
if (grpw != null && grpw.getSelectItems() != null) {
|
|
|
|
listConcessioni = grpw.getSelectItems();
|
|
|
|
}
|
|
|
|
appManagerBus
|
2021-11-26 16:05:05 +01:00
|
|
|
.fireEvent(new ActionOnItemEvent<ConcessioneDV>(listConcessioni, ACTION_ON_ITEM.DELETE_PROJECT));
|
2021-09-15 16:14:27 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2021-08-05 16:49:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds the form panel.
|
|
|
|
*
|
|
|
|
* @param formPanel the form panel
|
|
|
|
*/
|
|
|
|
public void addFormPanel(GeonaDataEntryMainForm formPanel) {
|
|
|
|
geonaMainFormPanel.add(formPanel);
|
|
|
|
}
|
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
/**
|
|
|
|
* Show list of concessioni view.
|
|
|
|
*
|
|
|
|
* @param grpw the grpw
|
|
|
|
*/
|
2021-08-05 16:49:04 +02:00
|
|
|
public void showListOfConcessioniView(GeonaRecordsPaginatedView grpw) {
|
2021-09-15 16:14:27 +02:00
|
|
|
this.grpw = grpw;
|
2021-08-05 16:49:04 +02:00
|
|
|
geonaListOfConcessioniPanel.clear();
|
|
|
|
VerticalPanel htmllPanel = new VerticalPanel();
|
|
|
|
htmllPanel.add(grpw.getCellPanel());
|
|
|
|
htmllPanel.add(grpw.getPagerPanel());
|
|
|
|
geonaListOfConcessioniPanel.add(htmllPanel);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the loader visible.
|
|
|
|
*
|
|
|
|
* @param txtHTML the txt HTML
|
|
|
|
* @param visible the visible
|
|
|
|
*/
|
|
|
|
public void setLoaderVisible(String txtHTML, boolean visible) {
|
|
|
|
loader.setText(txtHTML);
|
|
|
|
loader.setVisible(visible);
|
|
|
|
}
|
|
|
|
|
2021-08-06 16:23:17 +02:00
|
|
|
private void setCurrentSortFilter(SortFilter sortFilter) {
|
|
|
|
this.currentSortFilter = sortFilter;
|
|
|
|
this.textBoxSortBy.setText(toLabelFilter(sortFilter));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* To label filter.
|
|
|
|
*
|
|
|
|
* @param sortFilter the sort filter
|
|
|
|
* @return the string
|
|
|
|
*/
|
|
|
|
public String toLabelFilter(SortFilter sortFilter) {
|
|
|
|
|
2021-09-02 18:14:49 +02:00
|
|
|
String labelFilter = sortFilter.getOrderByField().getDisplayName() + LABEL_FILTER_SEPARATOR
|
2021-08-06 16:23:17 +02:00
|
|
|
+ sortFilter.getOrder().name();
|
|
|
|
GWT.log("Got " + sortFilter);
|
|
|
|
return labelFilter;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* To sort filter.
|
|
|
|
*
|
|
|
|
* @param labelFilter the label filter
|
|
|
|
* @return the sort filter
|
|
|
|
*/
|
2021-09-15 16:14:27 +02:00
|
|
|
/*
|
|
|
|
* public SortFilter toSortFilter(String labelFilter) {
|
|
|
|
*
|
|
|
|
* String[] array = labelFilter.split(LABEL_FILTER_SEPARATOR);
|
|
|
|
*
|
|
|
|
* SortFilter sortFilter = null; try { RECORD_FIELD recordField =
|
|
|
|
* RECORD_FIELD.valueOf(array[0]); ORDER orderField = ORDER.valueOf(array[1]);
|
|
|
|
* sortFilter = new SortFilter(recordField, orderField); } catch (Exception e) {
|
|
|
|
*
|
|
|
|
* }
|
|
|
|
*
|
|
|
|
* GWT.log("Got " + sortFilter); return sortFilter;
|
|
|
|
*
|
|
|
|
* }
|
|
|
|
*/
|
2021-08-06 16:23:17 +02:00
|
|
|
|
|
|
|
public SortFilter getCurrentSortFilter() {
|
|
|
|
return currentSortFilter;
|
|
|
|
}
|
|
|
|
|
2021-11-26 16:05:05 +01:00
|
|
|
public void removeTab(int index) {
|
|
|
|
tabPanel.remove(index);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setTabActive(int index) {
|
|
|
|
tabPanel.selectTab(index);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dirty solution.
|
|
|
|
* I created this one because I had problem on firing click event for Tab element
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public void instanceAndShowListOfConcessioni(){
|
|
|
|
grpw = new GeonaRecordsPaginatedView(appManagerBus, RECORD_TYPE.CONCESSIONE, null, currentSortFilter);
|
|
|
|
showListOfConcessioniView(grpw);
|
|
|
|
}
|
|
|
|
|
2021-08-05 16:49:04 +02:00
|
|
|
}
|