package org.gcube.portlets.user.geoportaldataentry.client.ui.edit; import java.util.List; import org.gcube.application.geoportaldatamapper.shared.MetaDataProfileBeanExt; import org.gcube.application.geoportaldatamapper.shared.ProjectEdit; import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp; import org.gcube.portlets.user.geoportaldataentry.client.GeoportalDataEntryServiceAsync; import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon; import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetadataFieldWrapper; import com.github.gwtbootstrap.client.ui.Alert; import com.github.gwtbootstrap.client.ui.ControlGroup; import com.github.gwtbootstrap.client.ui.ListBox; import com.github.gwtbootstrap.client.ui.constants.AlertType; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; 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.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; public class UpdateRecord extends Composite { private static UpdateRecordUiBinder uiBinder = GWT.create(UpdateRecordUiBinder.class); interface UpdateRecordUiBinder extends UiBinder { } @UiField ListBox listBoxSections; @UiField HTMLPanel htmlSectionContent; @UiField HTMLPanel alertHTMLPanel; @UiField ControlGroup controlsControlGroup; private LoaderIcon loaderProjectSections = new LoaderIcon("Loading Project sections..., please wait"); public UpdateRecord(HandlerManager editorManagerBus, String profileID, String projectID) { initWidget(uiBinder.createAndBindUi(this)); alertHTMLPanel.add(loaderProjectSections); GeoportalDataEntryServiceAsync.Util.getInstance().getProjectEdit(profileID, projectID, new AsyncCallback() { @Override public void onSuccess(ProjectEdit result) { try { alertHTMLPanel.remove(loaderProjectSections); } catch (Exception e) { } for (final MetaDataProfileBeanExt profileBean : result.getTheProfileBeans()) { listBoxSections.addItem(profileBean.getType(), profileBean.getType()); listBoxSections.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { controlsControlGroup.setVisible(true); htmlSectionContent.clear(); List listMeta = profileBean.getMetadataFields(); if (listMeta != null && listMeta.size() > 0) { MetadataFieldWrapper firstMeta = listMeta.get(0); FlowPanel fp = new FlowPanel(); fp.add(new HTML(firstMeta.getFieldName())); fp.add(new HTML(firstMeta.getCurrentValue())); htmlSectionContent.add(fp); } } }); } } @Override public void onFailure(Throwable caught) { alertHTMLPanel.remove(loaderProjectSections); String errorMsg = caught.getMessage(); Alert alert = new Alert(errorMsg, AlertType.ERROR); alert.setClose(false); try { alertHTMLPanel.remove(loaderProjectSections); } catch (Exception e) { } alertHTMLPanel.add(alert); Window.alert(errorMsg); } }); } }