geoportal-data-entry-app/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/GeonaDataEntryMainForm.java

105 lines
2.9 KiB
Java
Raw Normal View History

2020-10-08 16:06:58 +02:00
package org.gcube.portlets.user.geoportaldataentry.client.ui;
2020-10-09 16:34:23 +02:00
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
2020-10-12 13:04:01 +02:00
import org.gcube.portlets.user.geoportaldataentry.client.ui.card.GeoNaFormCardModel;
import org.gcube.portlets.user.geoportaldataentry.client.ui.card.MetadataFormCard;
2020-10-09 16:34:23 +02:00
import org.gcube.portlets.widgets.mpformbuilder.client.form.generic.CreateMetadataForm;
2020-10-12 16:46:17 +02:00
import com.github.gwtbootstrap.client.ui.Tab;
2020-10-09 16:34:23 +02:00
import com.github.gwtbootstrap.client.ui.TabPanel;
2020-10-08 16:06:58 +02:00
import com.google.gwt.core.client.GWT;
2020-10-12 16:46:17 +02:00
import com.google.gwt.event.dom.client.ClickEvent;
2020-10-08 16:06:58 +02:00
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
2020-10-12 16:46:17 +02:00
import com.google.gwt.uibinder.client.UiHandler;
2020-10-08 16:06:58 +02:00
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
public class GeonaDataEntryMainForm extends Composite {
private static GeonaDataEntryMainFormUiBinder uiBinder = GWT.create(GeonaDataEntryMainFormUiBinder.class);
interface GeonaDataEntryMainFormUiBinder extends UiBinder<Widget, GeonaDataEntryMainForm> {
}
2020-10-12 13:04:01 +02:00
2020-10-12 16:46:17 +02:00
private List<GeoNaFormCardModel> listCards = new ArrayList<GeoNaFormCardModel>();
2020-10-08 16:06:58 +02:00
@UiField
2020-10-09 16:34:23 +02:00
HTMLPanel mainHTMLPanel;
@UiField
TabPanel mainTabPanel;
2020-10-12 13:04:01 +02:00
private LinkedHashMap<String,MetadataFormCard> mapForms = new LinkedHashMap<String,MetadataFormCard>();
2020-10-09 16:34:23 +02:00
2020-10-12 16:46:17 +02:00
private List<Tab> listTabs = new ArrayList<Tab>();
2020-10-08 16:06:58 +02:00
public GeonaDataEntryMainForm() {
initWidget(uiBinder.createAndBindUi(this));
}
2020-10-12 16:46:17 +02:00
public void addForm(GeoNaFormCardModel geonFormModel, boolean isFormRepeatible){
2020-10-12 13:04:01 +02:00
listCards.add(geonFormModel);
2020-10-12 16:46:17 +02:00
addForm(geonFormModel.getMetadataForm(), geonFormModel.getMetadataProfileBean().getType(), isFormRepeatible);
2020-10-12 13:04:01 +02:00
}
2020-10-09 16:34:23 +02:00
2020-10-12 13:04:01 +02:00
private void addForm(final CreateMetadataForm createMetadataForm, String tabHeading, boolean repeatible){
2020-10-12 16:46:17 +02:00
final Tab tab = new Tab();
2020-10-09 16:34:23 +02:00
tab.setHeading(tabHeading);
2020-10-12 13:04:01 +02:00
MetadataFormCard mfc = new MetadataFormCard(tab, createMetadataForm, repeatible);
2020-10-09 16:34:23 +02:00
listTabs.add(tab);
2020-10-12 13:04:01 +02:00
mainTabPanel.add(tab);
2020-10-09 16:34:23 +02:00
if(listTabs.size()==1) {
tab.setActive(true);
mainTabPanel.selectTab(0);
}
2020-10-12 13:04:01 +02:00
mapForms.put(tabHeading, mfc);
2020-10-09 16:34:23 +02:00
}
public void selectTab(int index){
GWT.log("Selecting tab index: "+ index +" of "+listTabs.size());
if(listTabs.size()<index) {
mainTabPanel.selectTab(index);
}
}
2020-10-12 16:46:17 +02:00
@UiHandler("buttonSave")
void saveData(ClickEvent e){
for (String metadataType : mapForms.keySet()) {
MetadataFormCard card = mapForms.get(metadataType);
boolean isValid = card.validateForm();
card.setValidCard(isValid);
}
}
2020-10-09 16:34:23 +02:00
/**
* Sets the ative after.
*
* @param index the index
* @param bool the bool
*/
public void setAtiveAfter(int index, boolean bool){
// if(listTabs.size()<index) {
// for (int i = index; i < listTabs.size(); i++) {
// listTabs.get(i).setEnabled(bool);
// }
// }
2020-10-08 16:06:58 +02:00
}
}