From c384e9cc3c8dba9522183bb45ebeaed52e11f3ed Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Fri, 9 Oct 2020 16:34:23 +0200 Subject: [PATCH] built the main form --- .../client/GeoPortalDataEntryApp.java | 56 ++++++++-- .../client/ui/GeonaDataEntryMainForm.java | 101 +++++++++++++++++- .../client/ui/GeonaDataEntryMainForm.ui.xml | 21 +++- 3 files changed, 166 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java index 67ae0ef..a816097 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java @@ -1,7 +1,9 @@ package org.gcube.portlets.user.geoportaldataentry.client; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.TreeMap; import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaDataEntryMainForm; import org.gcube.portlets.widgets.mpformbuilder.client.MetadataProfileFormBuilderServiceAsync; @@ -35,6 +37,11 @@ public class GeoPortalDataEntryApp implements EntryPoint { private final Messages messages = GWT.create(Messages.class); private final HandlerManager eventBus = new HandlerManager(null); + + private TreeMap mapOrderedGeoNaProfiles = new TreeMap(); + + private List orderedListMetadataProfilesForGeona = null; + /** * This is the entry point method. */ @@ -45,17 +52,20 @@ public class GeoPortalDataEntryApp implements EntryPoint { final GeonaDataEntryMainForm geoNaMainForm = new GeonaDataEntryMainForm(); -// CreateMetadataForm baseForm = new CreateMetadataForm(scope, secondaryType, eventBus); -// geoNaMainForm.addWidget(baseForm); - MetadataProfileFormBuilderServiceAsync.Util.getInstance().getProfilesInTheScope(scope, secondaryType, new AsyncCallback>() { @Override public void onSuccess(List result) { + orderedListMetadataProfilesForGeona = setGeoNaFormOrder(result); - for (MetaDataProfileBean metaDataProfileBean : result) { - CreateMetadataForm baseForm = new CreateMetadataForm(Arrays.asList(metaDataProfileBean), eventBus); - geoNaMainForm.addWidget(baseForm); + for (MetaDataProfileBean metaDataProfileBean : orderedListMetadataProfilesForGeona) { + CreateMetadataForm baseForm = new CreateMetadataForm(Arrays.asList(metaDataProfileBean)); + boolean repeatibleForm = false; + String theMetaType = metaDataProfileBean.getType().toLowerCase(); + if(theMetaType.contains("immagin") || theMetaType.contains("fine scavo")) { + repeatibleForm = true; + } + geoNaMainForm.addForm(baseForm, metaDataProfileBean.getType(),repeatibleForm); } } @@ -67,4 +77,38 @@ public class GeoPortalDataEntryApp implements EntryPoint { RootPanel.get(DIV_PORTLET_ID).add(geoNaMainForm); } + + private List setGeoNaFormOrder(List listMetadataProfilesForGeona) { + + mapOrderedGeoNaProfiles.clear(); + + for (MetaDataProfileBean metaDataProfileBean : listMetadataProfilesForGeona) { + + String theMetaType = metaDataProfileBean.getType().toLowerCase(); + + if(theMetaType.contains("relazione di scavo")) { + mapOrderedGeoNaProfiles.put(1, metaDataProfileBean); + }else if(theMetaType.contains("immagin")) { + mapOrderedGeoNaProfiles.put(2, metaDataProfileBean); + }else if(theMetaType.contains("posizionamento")) { + mapOrderedGeoNaProfiles.put(3, metaDataProfileBean); + }else if(theMetaType.contains("fine scavo")) { + mapOrderedGeoNaProfiles.put(4, metaDataProfileBean); + } + } + + GWT.log("Map size: "+mapOrderedGeoNaProfiles.size()); + + List orderedList = new ArrayList(mapOrderedGeoNaProfiles.size()); + orderedList.addAll(mapOrderedGeoNaProfiles.values()); + + GWT.log("List ordered size: "+orderedList.size()); + for (MetaDataProfileBean metaDataProfileBean : orderedList) { + GWT.log("Title: "+metaDataProfileBean.getTitle() + ", type: "+metaDataProfileBean.getType()); + } + + return orderedList; + + } + } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/GeonaDataEntryMainForm.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/GeonaDataEntryMainForm.java index 33a0442..465c00e 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/GeonaDataEntryMainForm.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/GeonaDataEntryMainForm.java @@ -1,6 +1,17 @@ package org.gcube.portlets.user.geoportaldataentry.client.ui; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; + +import org.gcube.portlets.widgets.mpformbuilder.client.form.generic.CreateMetadataForm; + +import com.github.gwtbootstrap.client.ui.Button; +import com.github.gwtbootstrap.client.ui.TabPane; +import com.github.gwtbootstrap.client.ui.TabPanel; 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.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; @@ -15,15 +26,97 @@ public class GeonaDataEntryMainForm extends Composite { } @UiField - HTMLPanel baseHtmlPanel; + HTMLPanel mainHTMLPanel; + + @UiField + TabPanel mainTabPanel; + + private LinkedHashMap> mapForms = new LinkedHashMap>(); + + private List listTabs = new ArrayList(); public GeonaDataEntryMainForm() { initWidget(uiBinder.createAndBindUi(this)); } - public void addWidget(Widget w) { - baseHtmlPanel.add(w); - + + public void addForm(final CreateMetadataForm createMetadataForm, String tabHeading, boolean repeatible){ + final TabPane tab = new TabPane(); + //tab.setActive(false); + tab.setHeading(tabHeading); + + if(repeatible) { + Button buttonAddNew = new Button("Add New..."); + tab.add(buttonAddNew); + + buttonAddNew.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + CreateMetadataForm newForm = new CreateMetadataForm(createMetadataForm.getMetadataProfiles()); + tab.add(newForm); + indexingForms(newForm); + } + }); + } + + tab.add(createMetadataForm); + mainTabPanel.add(tab); + listTabs.add(tab); + + if(listTabs.size()==1) { + tab.setActive(true); + mainTabPanel.selectTab(0); + } + + + String theMetadataType = createMetadataForm.getMetadataProfiles().get(0).getType(); + List listMF = mapForms.get(theMetadataType); + if(listMF==null) { + listMF = new ArrayList(); + } + listMF.add(createMetadataForm); + mapForms.put(theMetadataType, listMF); + + indexingForms(createMetadataForm); + + } + + private void indexingForms(CreateMetadataForm createMetadataForm) { + + String theMetadataType = createMetadataForm.getMetadataProfiles().get(0).getType(); + List listMF = mapForms.get(theMetadataType); + if(listMF==null) { + listMF = new ArrayList(); + } + listMF.add(createMetadataForm); + mapForms.put(theMetadataType, listMF); + } + + public void selectTab(int index){ + + GWT.log("Selecting tab index: "+ index +" of "+listTabs.size()); + + if(listTabs.size() + xmlns:g="urn:import:com.google.gwt.user.client.ui" + xmlns:b="urn:import:com.github.gwtbootstrap.client.ui"> .important { font-weight: bold; } + + .custom-page-header { + padding: 10px; + background-color: #f5f5f5; + margin: 20px 0 30px; + border-bottom: 1px solid #eee; + } - + + GeoNa + + + + + Save + + \ No newline at end of file