2021-09-20 18:08:43 +02:00
|
|
|
package org.gcube.portlets.user.geoportaldataentry.client.ui.edit;
|
|
|
|
|
|
|
|
import org.gcube.application.geoportalcommon.shared.products.BaseConcessioneDV;
|
2021-09-22 11:38:52 +02:00
|
|
|
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
2021-09-20 18:08:43 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
|
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.GeoPortalDataEntryApp;
|
2021-09-22 11:38:52 +02:00
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.edit.jseditor.JSONEditorWrapper;
|
|
|
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
2021-09-20 18:08:43 +02:00
|
|
|
|
2021-09-22 11:38:52 +02:00
|
|
|
import com.github.gwtbootstrap.client.ui.Button;
|
|
|
|
import com.github.gwtbootstrap.client.ui.Tab;
|
2021-09-20 18:08:43 +02:00
|
|
|
import com.google.gwt.core.client.GWT;
|
2021-09-22 11:38:52 +02:00
|
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
2021-09-20 18:08:43 +02:00
|
|
|
import com.google.gwt.uibinder.client.UiBinder;
|
|
|
|
import com.google.gwt.uibinder.client.UiField;
|
|
|
|
import com.google.gwt.user.client.Random;
|
|
|
|
import com.google.gwt.user.client.Timer;
|
2021-09-22 11:38:52 +02:00
|
|
|
import com.google.gwt.user.client.Window;
|
2021-09-20 18:08:43 +02:00
|
|
|
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.Widget;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The Class EditModeRecord.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
|
|
*
|
|
|
|
* Sep 17, 2021
|
|
|
|
*/
|
|
|
|
public class EditModeRecord extends Composite {
|
|
|
|
|
|
|
|
private static EditModeRecordUiBinder uiBinder = GWT.create(EditModeRecordUiBinder.class);
|
|
|
|
|
2021-09-22 11:38:52 +02:00
|
|
|
@UiField
|
|
|
|
Tab tabRawUpdate;
|
|
|
|
|
2021-09-20 18:08:43 +02:00
|
|
|
@UiField
|
|
|
|
FlowPanel rawUpdatePanel;
|
|
|
|
|
|
|
|
@UiField
|
|
|
|
FlowPanel filesUpdatePanel;
|
|
|
|
|
2021-09-22 11:38:52 +02:00
|
|
|
@UiField
|
|
|
|
Button buttonJSONUpdate;
|
|
|
|
|
2021-09-20 18:08:43 +02:00
|
|
|
private BaseConcessioneDV selectedConcessione;
|
|
|
|
|
2021-09-22 11:38:52 +02:00
|
|
|
private RECORD_TYPE recordType;
|
|
|
|
|
|
|
|
private JSONEditorWrapper jsEditor;
|
|
|
|
|
2021-09-20 18:08:43 +02:00
|
|
|
/**
|
|
|
|
* The Interface EditModeRecordUiBinder.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
|
|
*
|
|
|
|
* Sep 17, 2021
|
|
|
|
*/
|
|
|
|
interface EditModeRecordUiBinder extends UiBinder<Widget, EditModeRecord> {
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Instantiates a new edits the mode record.
|
|
|
|
*
|
|
|
|
* @param selectedConcessione the selected concessione
|
|
|
|
* @param type the type
|
|
|
|
*/
|
|
|
|
public EditModeRecord(BaseConcessioneDV selectedConcessione, RECORD_TYPE type) {
|
|
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
|
|
this.selectedConcessione = selectedConcessione;
|
2021-09-22 11:38:52 +02:00
|
|
|
this.recordType = type;
|
|
|
|
|
|
|
|
instanceJSONEditor();
|
|
|
|
bindEvents();
|
|
|
|
}
|
2021-09-20 18:08:43 +02:00
|
|
|
|
2021-09-22 11:38:52 +02:00
|
|
|
private void instanceJSONEditor() {
|
|
|
|
|
|
|
|
rawUpdatePanel.clear();
|
2021-09-20 18:08:43 +02:00
|
|
|
final FlowPanel fp = new FlowPanel();
|
2021-09-22 11:38:52 +02:00
|
|
|
fp.getElement().setId("jsoneditor" + Random.nextInt());
|
2021-09-20 18:08:43 +02:00
|
|
|
fp.setHeight("400px");
|
|
|
|
rawUpdatePanel.add(fp);
|
2021-09-22 11:38:52 +02:00
|
|
|
|
|
|
|
GeoPortalDataEntryApp.geoportalDataEntryService.getJSONRecord(selectedConcessione.getItemId(), recordType,
|
|
|
|
new AsyncCallback<String>() {
|
2021-09-20 18:08:43 +02:00
|
|
|
|
|
|
|
@Override
|
2021-09-22 11:38:52 +02:00
|
|
|
public void onSuccess(String jsonData) {
|
|
|
|
GWT.log("Instance JSON Editor with: " + jsonData);
|
|
|
|
jsEditor = JSONEditorWrapper.init(fp.getElement().getId());
|
|
|
|
jsEditor.setName(selectedConcessione.getNome());
|
|
|
|
jsEditor.set(jsonData);
|
|
|
|
|
|
|
|
new Timer() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
jsEditor.setMode("tree");
|
|
|
|
|
|
|
|
}
|
|
|
|
}.schedule(200);
|
|
|
|
|
2021-09-20 18:08:43 +02:00
|
|
|
}
|
|
|
|
|
2021-09-22 11:38:52 +02:00
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
2021-09-24 17:26:46 +02:00
|
|
|
Window.alert(caught.getMessage());
|
2021-09-22 11:38:52 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
});
|
2021-09-20 18:08:43 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Bind events.
|
|
|
|
*/
|
|
|
|
private void bindEvents() {
|
2021-09-22 11:38:52 +02:00
|
|
|
buttonJSONUpdate.addClickHandler(new ClickHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onClick(ClickEvent event) {
|
|
|
|
rawUpdatePanel.getElement().addClassName("disable-div");
|
|
|
|
buttonJSONUpdate.setEnabled(false);
|
|
|
|
final LoaderIcon loader = new LoaderIcon("Updating the project...");
|
|
|
|
tabRawUpdate.add(loader);
|
|
|
|
GeoPortalDataEntryApp.geoportalDataEntryService.updateRecord(selectedConcessione.getItemId(),
|
|
|
|
jsEditor.getText(), recordType, new AsyncCallback<ConcessioneDV>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(Throwable caught) {
|
|
|
|
buttonJSONUpdate.setEnabled(true);
|
|
|
|
try {
|
|
|
|
rawUpdatePanel.getElement().removeClassName("disable-div");
|
|
|
|
tabRawUpdate.remove(loader);
|
|
|
|
} catch (Exception e) {
|
|
|
|
// TODO: handle exception
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSuccess(ConcessioneDV result) {
|
|
|
|
buttonJSONUpdate.setEnabled(true);
|
|
|
|
try {
|
|
|
|
rawUpdatePanel.getElement().removeClassName("disable-div");
|
|
|
|
tabRawUpdate.remove(loader);
|
|
|
|
} catch (Exception e) {
|
|
|
|
// TODO: handle exception
|
|
|
|
}
|
|
|
|
selectedConcessione = result;
|
|
|
|
instanceJSONEditor();
|
|
|
|
|
|
|
|
Window.alert("Project '"+result.getNome()+"' updated correctly");
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
2021-09-20 18:08:43 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
}
|