From 89ae69d54bdd2939e9e0e5f283b40680c4b76ea2 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 13 Feb 2024 16:52:34 +0100 Subject: [PATCH] Added dedicated EventBus. Separated from Portlet EventBus --- .../client/events/ReloadDatasetPageEvent.java | 50 ++++++++++++++ .../events/ReloadDatasetPageEventHandler.java | 20 ++++++ .../client/ui/form/CreateDatasetForm.java | 51 +++++++------- .../client/ui/form/UpdateDatasetForm.java | 69 ++++++++++++------- 4 files changed, 143 insertions(+), 47 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEvent.java create mode 100644 src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEventHandler.java diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEvent.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEvent.java new file mode 100644 index 0000000..55eab8a --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEvent.java @@ -0,0 +1,50 @@ +package org.gcube.portlets.widgets.ckandatapublisherwidget.client.events; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * The Class ReloadDatasetPageEvent. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Feb 13, 2024 + */ +public class ReloadDatasetPageEvent extends GwtEvent { + public static Type TYPE = new Type(); + + private String datasetIDorName; + + /** + * Instantiates a new reload dataset page event. + * + * @param resource the resource + */ + public ReloadDatasetPageEvent(String datasetIDorName) { + this.datasetIDorName = datasetIDorName; + } + + /** + * Gets the associated type. + * + * @return the associated type + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /** + * Dispatch. + * + * @param handler the handler + */ + @Override + protected void dispatch(ReloadDatasetPageEventHandler handler) { + handler.onReloadDatasetPage(this); + } + + public String getDatasetIDorName() { + return datasetIDorName; + } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEventHandler.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEventHandler.java new file mode 100644 index 0000000..601a871 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/events/ReloadDatasetPageEventHandler.java @@ -0,0 +1,20 @@ +package org.gcube.portlets.widgets.ckandatapublisherwidget.client.events; + +import com.google.gwt.event.shared.EventHandler; + +/** + * The Interface ReloadDatasetPageEventHandler. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Feb 13, 2024 + */ +public interface ReloadDatasetPageEventHandler extends EventHandler { + + /** + * On added resource. + * + * @param addResourceEvent the add resource event + */ + void onReloadDatasetPage(ReloadDatasetPageEvent addResourceEvent); +} diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java index 5e868f6..c5ab92a 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/CreateDatasetForm.java @@ -274,7 +274,10 @@ public class CreateDatasetForm extends Composite { private List licenseBean; // event bus - private HandlerManager eventBus; + private HandlerManager eventBusPublisherWidget = new HandlerManager(null); + + // event bus of the principal application (it is the Catalogue Portlet) + private HandlerManager eventBusMainApplication; // added custom field entries (by the user) private List customFieldEntriesList = new ArrayList(); @@ -305,29 +308,29 @@ public class CreateDatasetForm extends Composite { /** * Invoked in the most general case * - * @param eventBus the event bus + * @param eventBusPublisherWidget the event bus */ - public CreateDatasetForm(HandlerManager eventBus) { - createDatasetFormBody(false, null, eventBus, OPERATION.NEW); + public CreateDatasetForm(HandlerManager eventBusMainApplication) { + createDatasetFormBody(false, null, eventBusMainApplication, OPERATION.NEW); } /** * Invoked in the most general case * - * @param eventBus the event bus + * @param eventBusPublisherWidget the event bus */ - public CreateDatasetForm(HandlerManager eventBus, OPERATION operation) { - createDatasetFormBody(false, null, eventBus, operation); + public CreateDatasetForm(HandlerManager eventBusMainApplication, OPERATION operation) { + createDatasetFormBody(false, null, eventBusMainApplication, operation); } /** * Invoked when the workspace is used * * @param idFolderWorkspace - * @param eventBus the event bus + * @param eventBusPublisherWidget the event bus */ - public CreateDatasetForm(String idFolderOrFileWorkspace, HandlerManager eventBus) { - createDatasetFormBody(true, idFolderOrFileWorkspace, eventBus, OPERATION.NEW); + public CreateDatasetForm(String idFolderOrFileWorkspace, HandlerManager eventBusMainApplication) { + createDatasetFormBody(true, idFolderOrFileWorkspace, eventBusMainApplication, OPERATION.NEW); } /** @@ -335,7 +338,7 @@ public class CreateDatasetForm extends Composite { */ private void bind() { // when a custom field is removed, remove it from the list - eventBus.addHandler(DeleteCustomFieldEvent.TYPE, new DeleteCustomFieldEventHandler() { + eventBusPublisherWidget.addHandler(DeleteCustomFieldEvent.TYPE, new DeleteCustomFieldEventHandler() { @Override public void onRemoveEntry(DeleteCustomFieldEvent event) { @@ -345,7 +348,7 @@ public class CreateDatasetForm extends Composite { }); // on close form - eventBus.addHandler(CloseCreationFormEvent.TYPE, new CloseCreationFormEventHandler() { + eventBusPublisherWidget.addHandler(CloseCreationFormEvent.TYPE, new CloseCreationFormEventHandler() { @Override public void onClose(CloseCreationFormEvent event) { InfoIconsLabels.closeDialogBox(popupOpenedIds); @@ -359,13 +362,13 @@ public class CreateDatasetForm extends Composite { * @param isWorkspaceRequest * @param idFolderWorkspace * @param owner - * @param eventBus + * @param eventBusPublisherWidget */ private void createDatasetFormBody(final boolean isWorkspaceRequest, final String idFolderOrFileWorkspace, - final HandlerManager eventBus, final OPERATION operation) { + final HandlerManager eventBusMainApplication, final OPERATION operation) { initWidget(uiBinder.createAndBindUi(this)); - this.eventBus = eventBus; + this.eventBusMainApplication = eventBusMainApplication; this.isWorkspaceRequest = isWorkspaceRequest; iconSpinner.setSpin(true); @@ -460,8 +463,8 @@ public class CreateDatasetForm extends Composite { for (String value : values) { // these are fixed key, variable value custom fields - CustomFieldEntry toAdd = new CustomFieldEntry(eventBus, entry.getKey(), - value, false); + CustomFieldEntry toAdd = new CustomFieldEntry(eventBusPublisherWidget, + entry.getKey(), value, false); customFieldEntriesList.add(toAdd); customFields.add(toAdd); @@ -856,10 +859,10 @@ public class CreateDatasetForm extends Composite { if (categories == null || categories.isEmpty()) { for (MetadataFieldWrapper field : fields) { - + MetaDataField fieldWidget; try { - fieldWidget = new MetaDataField(field, eventBus, operation); + fieldWidget = new MetaDataField(field, eventBusPublisherWidget, operation); metadataFieldsPanel.add(fieldWidget); listOfMetadataFields.add(fieldWidget); } catch (Exception e) { @@ -883,7 +886,8 @@ public class CreateDatasetForm extends Composite { MetaDataField fieldWidget; try { - fieldWidget = new MetaDataField(metadataFieldWrapper, eventBus, operation); + fieldWidget = new MetaDataField(metadataFieldWrapper, eventBusPublisherWidget, + operation); cp.addField(fieldWidget); listOfMetadataFields.add(fieldWidget); } catch (Exception e) { @@ -900,7 +904,7 @@ public class CreateDatasetForm extends Composite { MetaDataField fieldWidget; try { - fieldWidget = new MetaDataField(field, eventBus, operation); + fieldWidget = new MetaDataField(field, eventBusPublisherWidget, operation); extrasCategory.addField(fieldWidget); listOfMetadataFields.add(fieldWidget); } catch (Exception e) { @@ -917,7 +921,7 @@ public class CreateDatasetForm extends Composite { @UiHandler("addCustomFieldButton") void addCustomFieldEvent(ClickEvent e) { - CustomFieldEntry toAdd = new CustomFieldEntry(eventBus, "", "", true); + CustomFieldEntry toAdd = new CustomFieldEntry(eventBusPublisherWidget, "", "", true); customFieldEntriesList.add(toAdd); customFields.add(toAdd); @@ -1252,7 +1256,8 @@ public class CreateDatasetForm extends Composite { // remove content of the main panel createDatasetMainPanel.clear(); - ManageResources manageResources = new ManageResources(eventBus, createdDatasetBean, datasetUrl); + ManageResources manageResources = new ManageResources(eventBusPublisherWidget, + createdDatasetBean, datasetUrl); createDatasetMainPanel.add(manageResources); } }); diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/UpdateDatasetForm.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/UpdateDatasetForm.java index 9184459..4b574f9 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/UpdateDatasetForm.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/form/UpdateDatasetForm.java @@ -18,6 +18,8 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.CloseCre import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.CloseCreationFormEventHandler; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteCustomFieldEvent; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteCustomFieldEventHandler; +import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.ReloadDatasetPageEvent; +import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.ReloadDatasetPageEventHandler; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.metadata.CustomFieldEntry; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.resources.AddResourceToDataset; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.resources.ManageResources; @@ -291,8 +293,10 @@ public class UpdateDatasetForm extends Composite { // the licenses private List licenseBean; - // event bus - private HandlerManager eventBus; + // event bus of the principal application (it is the Catalogue Portlet) + private HandlerManager eventBusMainApplication; + + private HandlerManager eventBusPublisherWidget = new HandlerManager(null); // added custom field entries (by the user) private List customFieldEntriesList = new ArrayList(); @@ -315,17 +319,17 @@ public class UpdateDatasetForm extends Composite { private WizardCreator wizCreator; private boolean isWorkspaceRequest = false; + private String datasetIdOrName = null; - // private DatasetBean theDataset = null; /** * Instantiates a new update dataset form. * - * @param eventBus the event bus - * @param itemId the item id + * @param eventBusMainApplication the event bus + * @param itemId the item id */ - public UpdateDatasetForm(HandlerManager eventBus, String itemId) { - updateDatasetFormBody(eventBus, itemId, OPERATION.UPDATE); + public UpdateDatasetForm(HandlerManager mainApplicationBusRef, String itemId) { + updateDatasetFormBody(mainApplicationBusRef, itemId, OPERATION.UPDATE); } /** @@ -333,7 +337,7 @@ public class UpdateDatasetForm extends Composite { */ private void bind() { // when a custom field is removed, remove it from the list - eventBus.addHandler(DeleteCustomFieldEvent.TYPE, new DeleteCustomFieldEventHandler() { + eventBusPublisherWidget.addHandler(DeleteCustomFieldEvent.TYPE, new DeleteCustomFieldEventHandler() { @Override public void onRemoveEntry(DeleteCustomFieldEvent event) { @@ -343,26 +347,41 @@ public class UpdateDatasetForm extends Composite { }); // on close form - eventBus.addHandler(CloseCreationFormEvent.TYPE, new CloseCreationFormEventHandler() { + eventBusPublisherWidget.addHandler(CloseCreationFormEvent.TYPE, new CloseCreationFormEventHandler() { @Override public void onClose(CloseCreationFormEvent event) { InfoIconsLabels.closeDialogBox(popupOpenedIds); } }); + + eventBusPublisherWidget.addHandler(ReloadDatasetPageEvent.TYPE, new ReloadDatasetPageEventHandler() { + + @Override + public void onReloadDatasetPage(ReloadDatasetPageEvent addResourceEvent) { + + // Firing the event on the main application bus + if (addResourceEvent.getDatasetIDorName() != null) { + eventBusMainApplication + .fireEvent(new ReloadDatasetPageEvent(addResourceEvent.getDatasetIDorName())); + } + + } + }); } /** * The real constructor. * - * @param eventBus the event bus - * @param datasetIdOrName the item id - * @param operation the operation + * @param eventBusMainApplication the event bus + * @param datasetIdOrName the item id + * @param operation the operation */ - private void updateDatasetFormBody(final HandlerManager eventBus, final String datasetIdOrName, + private void updateDatasetFormBody(final HandlerManager mainApplicationBusRef, final String datasetIdOrName, final OPERATION operation) { initWidget(uiBinder.createAndBindUi(this)); - this.eventBus = eventBus; + + this.eventBusMainApplication = mainApplicationBusRef; this.datasetIdOrName = datasetIdOrName; iconSpinner.setSpin(true); @@ -459,8 +478,8 @@ public class UpdateDatasetForm extends Composite { for (String value : values) { // these are fixed key, variable value custom fields - CustomFieldEntry toAdd = new CustomFieldEntry(eventBus, entry.getKey(), - value, false); + CustomFieldEntry toAdd = new CustomFieldEntry(eventBusPublisherWidget, + entry.getKey(), value, false); customFieldEntriesList.add(toAdd); customFields.add(toAdd); @@ -665,7 +684,8 @@ public class UpdateDatasetForm extends Composite { for (String value : values) { // these are fixed key, variable value custom fields - CustomFieldEntry toAdd = new CustomFieldEntry(eventBus, entry.getKey(), value, false); + CustomFieldEntry toAdd = new CustomFieldEntry(eventBusPublisherWidget, entry.getKey(), value, + false); customFieldEntriesList.add(toAdd); customFields.add(toAdd); } @@ -897,7 +917,7 @@ public class UpdateDatasetForm extends Composite { MetaDataField fieldWidget; try { - fieldWidget = new MetaDataField(field, eventBus, operation); + fieldWidget = new MetaDataField(field, eventBusPublisherWidget, operation); metadataFieldsPanel.add(fieldWidget); listOfMetadataFields.add(fieldWidget); } catch (Exception e) { @@ -921,7 +941,8 @@ public class UpdateDatasetForm extends Composite { MetaDataField fieldWidget; try { - fieldWidget = new MetaDataField(metadataFieldWrapper, eventBus, operation); + fieldWidget = new MetaDataField(metadataFieldWrapper, eventBusPublisherWidget, + operation); cp.addField(fieldWidget); listOfMetadataFields.add(fieldWidget); } catch (Exception e) { @@ -938,7 +959,7 @@ public class UpdateDatasetForm extends Composite { MetaDataField fieldWidget; try { - fieldWidget = new MetaDataField(field, eventBus, operation); + fieldWidget = new MetaDataField(field, eventBusPublisherWidget, operation); extrasCategory.addField(fieldWidget); listOfMetadataFields.add(fieldWidget); } catch (Exception e) { @@ -960,7 +981,7 @@ public class UpdateDatasetForm extends Composite { @UiHandler("addCustomFieldButton") void addCustomFieldEvent(ClickEvent e) { - CustomFieldEntry toAdd = new CustomFieldEntry(eventBus, "", "", true); + CustomFieldEntry toAdd = new CustomFieldEntry(eventBusPublisherWidget, "", "", true); customFieldEntriesList.add(toAdd); customFields.add(toAdd); @@ -1336,7 +1357,7 @@ public class UpdateDatasetForm extends Composite { GWT.log("bindManageResources on dataset: " + theDatasetBean.getCkanName()); if (step == 1) { - //addResourcesButtonStep1.clear(); + // addResourcesButtonStep1.clear(); addResourcesButtonStep1.setVisible(true); addResourcesButtonStep1.addClickHandler(new ClickHandler() { @@ -1350,7 +1371,7 @@ public class UpdateDatasetForm extends Composite { } if (step == 3) { - //addResourcesButtonStep3.clear(); + // addResourcesButtonStep3.clear(); addResourcesButtonStep3.setVisible(true); addResourcesButtonStep3.addClickHandler(new ClickHandler() { @@ -1370,7 +1391,7 @@ public class UpdateDatasetForm extends Composite { // remove content of the main panel createDatasetMainPanel.clear(); - ManageResources manageResources = new ManageResources(eventBus, theDatasetBean, datasetUrl); + ManageResources manageResources = new ManageResources(eventBusPublisherWidget, theDatasetBean, datasetUrl); // form container // AddResourceContainer container = new AddResourceContainer(datasetUrl);