diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java index d3eac8b..5995b02 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/CkanEventHandlerManager.java @@ -40,6 +40,7 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModerat import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants; import org.gcube.portlets.widgets.ckancontentmoderator.shared.DISPLAY_FIELD; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form.CreateDatasetForm; +import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.form.UpdateDatasetForm; import org.gcube.portlets_widgets.catalogue_sharing_widget.client.ShareCatalogueWidget; import com.github.gwtbootstrap.client.ui.Modal; @@ -305,6 +306,48 @@ public class CkanEventHandlerManager { } }); + + eventBus.addHandler(EditMetadataEvent.TYPE, new EditMetadataEventHandler() { + + @Override + public void onEditMetadata(EditMetadataEvent editMetadataEvent) { + GWT.log("onEditMetadata called"); + + if (editMetadataEvent.getItemID() != null) { + + GWT.log("editMetadataEvent: " + editMetadataEvent); + final Modal modal = new ExtModal(true, true); + + modal.setTitle(WIDGET_CREATE_TITLE); + modal.addStyleName("insert-metadata-modal-style"); + modal.addStyleName("modal-top-custom"); + ((Element) modal.getElement().getChildNodes().getItem(1)).addClassName("modal-body-custom"); + modal.add(new UpdateDatasetForm(eventBus, editMetadataEvent.getItemID())); + modal.setCloseVisible(true); + +// // hide any popup gcubeCkanDataCatalogue opened +// modal.addHideHandler(new HideHandler() { + // +// @Override +// public void onHide(HideEvent hideEvent) { +// GWT.log("HideEvent on modal fired"); +// GWT.log(hideEvent.toDebugString()); +// eventBus.fireEvent(new CloseCreationFormEvent()); +// +// hideEvent.preventDefault(); +// hideEvent.stopPropagation(); +// return; +// +// } +// }); + + GWT.log("show"); + modal.show(); + + } + + } + }); } /** diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java index 0ccd44f..98df1a8 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/EditMetadataEvent.java @@ -11,14 +11,22 @@ import com.google.gwt.event.shared.GwtEvent; */ public class EditMetadataEvent extends GwtEvent { public static Type TYPE = new Type(); - + private String itemID; /** - * Instantiates a new insert metadata event. + * Instantiates a new edits the metadata event. + * + * @param itemID the item ID */ - public EditMetadataEvent() { + public EditMetadataEvent(String itemID) { + this.itemID = itemID; } + /** + * Gets the associated type. + * + * @return the associated type + */ /* (non-Javadoc) * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() */ @@ -27,6 +35,11 @@ public class EditMetadataEvent extends GwtEvent { return TYPE; } + /** + * Dispatch. + * + * @param handler the handler + */ /* (non-Javadoc) * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) */ @@ -34,5 +47,9 @@ public class EditMetadataEvent extends GwtEvent { protected void dispatch(EditMetadataEventHandler handler) { handler.onEditMetadata(this); } + + public String getItemID() { + return itemID; + } } diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java index f883003..631c713 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/CkanMetadataManagementPanel.java @@ -22,6 +22,7 @@ import com.github.gwtbootstrap.client.ui.Label; import com.github.gwtbootstrap.client.ui.constants.AlertType; import com.github.gwtbootstrap.client.ui.constants.ButtonType; import com.github.gwtbootstrap.client.ui.constants.IconType; +import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Float; import com.google.gwt.dom.client.Style.FontWeight; import com.google.gwt.dom.client.Style.Unit; @@ -78,7 +79,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { private Button shareLink = new Button("Share Link"); private Button uploadToZenodo = new Button("Upload to Zenodo"); private Button insertMeta = new Button("Publish Item"); - private Button editMeta = new Button("Edit Item"); + private Button editMeta = new Button("Update Item"); private Button manageGRSFProduct = new Button("Manage GRSF Item"); // GRSF Manage private Button manageCModS = new Button("Manage Items"); // Moderation @@ -146,7 +147,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { // hide edit and insert shareLink.setEnabled(false); uploadToZenodo.setEnabled(false); - editMeta.setVisible(false); + editMeta.setEnabled(false); insertMeta.setVisible(false); manageGRSFProduct.setVisible(false); manageGRSFProduct.setEnabled(false); @@ -261,8 +262,8 @@ public class CkanMetadataManagementPanel extends FlowPanel { @Override public void onClick(ClickEvent event) { - - eventBus.fireEvent(new EditMetadataEvent()); + GWT.log("Edit Meta CLICK"); + eventBus.fireEvent(new EditMetadataEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier())); } }); @@ -391,7 +392,7 @@ public class CkanMetadataManagementPanel extends FlowPanel { /** * Button to manage the products under moderation via Content Moderation System - * (CMS) + * (CMS). * * @param value true or false */ @@ -436,6 +437,15 @@ public class CkanMetadataManagementPanel extends FlowPanel { uploadToZenodo.setEnabled(value); } + /** + * Enable edit item button. + * + * @param value the value + */ + public void enableEditItemButton(boolean value) { + editMeta.setEnabled(value); + } + /** * Visibility publish on zenodo button. * @@ -444,6 +454,16 @@ public class CkanMetadataManagementPanel extends FlowPanel { public void visibilityPublishOnZenodoButton(boolean value) { uploadToZenodo.setVisible(value); } + + + /** + * Visibility edit item button. + * + * @param value the value + */ + public void visibilityEditItemButton(boolean value) { + editMeta.setVisible(value); + } /** * Show only home/statistics buttons. diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java index 5099582..8a56132 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/view/GCubeCkanDataCatalogPanel.java @@ -563,6 +563,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate { if (!isProductKeyMissing) { latestSelectedProductIdentifier = productId.toString(); managementPanel.enableShareItemButton(productId != null && !productId.isEmpty()); + managementPanel.enableEditItemButton(productId != null && !productId.isEmpty()); managementPanel.enablePublishOnZenodoButton(productId != null && !productId.isEmpty()); managementPanel.enableManageGRSFProductButton( productId != null && !productId.isEmpty() && manageProductResponse.isManageEnabled());