123 lines
3.3 KiB
Java
123 lines
3.3 KiB
Java
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;
|
|
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> {
|
|
}
|
|
|
|
@UiField
|
|
HTMLPanel mainHTMLPanel;
|
|
|
|
@UiField
|
|
TabPanel mainTabPanel;
|
|
|
|
private LinkedHashMap<String,List<CreateMetadataForm>> mapForms = new LinkedHashMap<String,List<CreateMetadataForm>>();
|
|
|
|
private List<TabPane> listTabs = new ArrayList<TabPane>();
|
|
|
|
public GeonaDataEntryMainForm() {
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
}
|
|
|
|
|
|
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<CreateMetadataForm> listMF = mapForms.get(theMetadataType);
|
|
if(listMF==null) {
|
|
listMF = new ArrayList<CreateMetadataForm>();
|
|
}
|
|
listMF.add(createMetadataForm);
|
|
mapForms.put(theMetadataType, listMF);
|
|
|
|
indexingForms(createMetadataForm);
|
|
|
|
}
|
|
|
|
private void indexingForms(CreateMetadataForm createMetadataForm) {
|
|
|
|
String theMetadataType = createMetadataForm.getMetadataProfiles().get(0).getType();
|
|
List<CreateMetadataForm> listMF = mapForms.get(theMetadataType);
|
|
if(listMF==null) {
|
|
listMF = new ArrayList<CreateMetadataForm>();
|
|
}
|
|
listMF.add(createMetadataForm);
|
|
mapForms.put(theMetadataType, listMF);
|
|
}
|
|
|
|
public void selectTab(int index){
|
|
|
|
GWT.log("Selecting tab index: "+ index +" of "+listTabs.size());
|
|
|
|
if(listTabs.size()<index) {
|
|
mainTabPanel.selectTab(index);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 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);
|
|
// }
|
|
// }
|
|
}
|
|
|
|
}
|