From ee7ea997402e41a5413085c79f7177dc474d415d Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Mon, 12 Feb 2024 17:33:18 +0100 Subject: [PATCH] Updated Added Resources --- .../ui/resources/AddedResourcesSummary.java | 67 +++++++++++++------ 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/resources/AddedResourcesSummary.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/resources/AddedResourcesSummary.java index 8c18542..19b9b39 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/resources/AddedResourcesSummary.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/resources/AddedResourcesSummary.java @@ -1,6 +1,7 @@ package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.resources; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanMetadataPublisher; @@ -9,6 +10,7 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.AddResou import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteResourceEvent; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteResourceEventHandler; import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean; +import org.gcube.portlets.widgets.mpformbuilder.client.ui.utils.LoaderIcon; import com.github.gwtbootstrap.client.ui.Accordion; import com.github.gwtbootstrap.client.ui.AccordionGroup; @@ -24,6 +26,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; 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.VerticalPanel; import com.google.gwt.user.client.ui.Widget; @@ -46,17 +49,22 @@ public class AddedResourcesSummary extends Composite { // list of added resources (beans) List addedResources; + LinkedHashMap mapAddedResources = new LinkedHashMap(); + @UiField VerticalPanel addResourcesPanel; @UiField Alert alertMessage; + + FlowPanel alertPanel = new FlowPanel(); public AddedResourcesSummary(HandlerManager eventBus) { initWidget(uiBinder.createAndBindUi(this)); alertMessage.setType(AlertType.ERROR); alertMessage.setClose(true); + alertMessage.add(alertPanel); // save bus this.eventBus = eventBus; // bind on add resource event @@ -81,21 +89,18 @@ public class AddedResourcesSummary extends Composite { final ResourceElementBean justAddedResource = addResourceEvent.getResource(); // Build an accordion to show resource info - Accordion accordion = new Accordion(); + final Accordion accordion = new Accordion(); AccordionGroup accordionGroup = new AccordionGroup(); accordionGroup.setHeading("* " + justAddedResource.getName()); - accordionGroup.getHeading().getElement().getStyle().setBackgroundColor("#FFEDBE"); + accordionGroup.getHeading().getElement().getStyle().setBackgroundColor("#f1f3f9"); accordion.add(accordionGroup); // add sub-info such as url and description - Paragraph pUrl = new Paragraph(); + HTML htmlURL = new HTML(); if (justAddedResource.getUrl() != null) { - pUrl.setText("URL:"); - HTML htmlLink = new HTML(); - htmlLink.setHTML( - "" + justAddedResource.getUrl() + ""); - // pUrl.add(pUrl); - pUrl.add(htmlLink); + htmlURL.setHTML( + "URL: " + justAddedResource.getUrl() + ""); + } Paragraph pDescription = new Paragraph(); pDescription.setText("Description : " + justAddedResource.getDescription()); @@ -114,7 +119,7 @@ public class AddedResourcesSummary extends Composite { }); // fill accordion - accordionGroup.add(pUrl); + accordionGroup.add(htmlURL); accordionGroup.add(pDescription); accordionGroup.add(deleteButton); @@ -123,6 +128,8 @@ public class AddedResourcesSummary extends Composite { // add to the panel addResourcesPanel.add(accordion); + + mapAddedResources.put(justAddedResource.getBeanID(), accordion); } }); @@ -140,13 +147,18 @@ public class AddedResourcesSummary extends Composite { toDeleteButton.setEnabled(false); + LoaderIcon loader = new LoaderIcon("Deleting resource, please wait..."); + setAlertMessage(loader, null, AlertType.INFO, true); + // find it for (int i = 0; i < addedResources.size(); i++) { if (addedResources.get(i).equals(toDelete)) { // get the associated widget and remove it - final Widget widget = addResourcesPanel.getWidget(i); + // final Widget widget = addResourcesPanel.getWidget(i); + + final Accordion toDeleteAccordion = mapAddedResources.get(toDelete.getBeanID()); // remote call to remove it from the dataset CKanMetadataPublisher.ckanServices.deleteResourceFromDataset(toDelete, @@ -154,26 +166,24 @@ public class AddedResourcesSummary extends Composite { @Override public void onSuccess(Boolean result) { - + if (result) { + setAlertMessage(null, "The resource described by " + toDelete.getName() + + " has been deleted!", AlertType.SUCCESS, true); // remove from the list addedResources.remove(toDelete); - alertMessage.setType(AlertType.SUCCESS); - alertMessage.setHTML("The resource described by " + toDelete.getName() - + " has been deleted!"); - widget.removeFromParent(); + addResourcesPanel.remove(toDeleteAccordion); } else { - alertMessage.setVisible(true); - alertMessage.setHTML("Sorry, the resource described by " - + toDelete.getName() + " cannot be deleted"); + setAlertMessage(null, "Sorry, the resource described by " + + toDelete.getName() + " cannot be deleted", AlertType.SUCCESS, + true); } } @Override public void onFailure(Throwable caught) { toDeleteButton.setEnabled(false); - alertMessage.setVisible(true); - alertMessage.setHTML(caught.getMessage()); + setAlertMessage(null, caught.getMessage(), AlertType.ERROR, true); } }); @@ -184,6 +194,21 @@ public class AddedResourcesSummary extends Composite { }); } + private void setAlertMessage(LoaderIcon loader, String message, AlertType type, boolean visible) { + + alertPanel.clear(); + + if (loader != null) { + alertPanel.add(loader); + } + alertMessage.setType(type); + alertMessage.setVisible(visible); + + if (message != null) { + alertPanel.add(new HTML(message)); + } + } + public HandlerManager getEventBus() { return eventBus; }