From 0d5c92e005bb3785b56362cc6b41f0ea2080fdb7 Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Mon, 3 Apr 2017 14:43:36 +0000 Subject: [PATCH] share link widget embedded git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@146521 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 20 ++++----- .settings/org.eclipse.wst.common.component | 2 +- pom.xml | 8 +++- .../GCubeCkanDataCatalog.gwt.xml | 8 ++-- .../client/CkanEventHandlerManager.java | 13 ++++++ .../client/event/ShareLinkEvent.java | 42 +++++++++++++++++++ .../client/event/ShareLinkEventHandler.java | 11 +++++ .../view/CkanMetadataManagementPanel.java | 27 +++++++++++- .../view/GCubeCkanDataCatalogPanel.java | 1 + src/main/webapp/WEB-INF/web.xml | 10 +++++ 10 files changed, 125 insertions(+), 17 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEvent.java create mode 100644 src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEventHandler.java diff --git a/.classpath b/.classpath index 311720d..fe913b3 100644 --- a/.classpath +++ b/.classpath @@ -6,22 +6,12 @@ - - - - - - - - - - @@ -34,5 +24,15 @@ + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 22c4014..2131e1b 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,7 +4,7 @@ - + uses diff --git a/pom.xml b/pom.xml index 58b024c..18572e9 100644 --- a/pom.xml +++ b/pom.xml @@ -89,6 +89,13 @@ + + + org.gcube.portlets-widgets + catalogue-sharing-widget + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + org.gcube.portlets.widgets @@ -232,7 +239,6 @@ org.apache.maven.plugins maven-assembly-plugin - 2.2 ${distroDirectory}/descriptor.xml diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml index d8704bf..17c7d19 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/GCubeCkanDataCatalog.gwt.xml @@ -20,11 +20,11 @@ - + name='org.gcube.portlets_widgets.catalogue_sharing_widget.ShareCatalogue' /> + name='org.gcube.portlets.widgets.ckandatapublisherwidget.CKanMetadataPublisher' /> + + 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 3503745..34c4ab2 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 @@ -10,6 +10,8 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMeta import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.NotifyLogoutEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.NotifyLogoutEventHandler; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShareLinkEvent; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShareLinkEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowGroupsEvent; @@ -26,6 +28,7 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDa import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.CloseCreationFormEvent; import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.CreateDatasetForm; +import org.gcube.portlets_widgets.catalogue_sharing_widget.client.ShareCatalogueWidget; import com.github.gwtbootstrap.client.ui.Modal; import com.github.gwtbootstrap.client.ui.event.HideEvent; @@ -202,6 +205,16 @@ public class CkanEventHandlerManager { new ManageProductWidget(event.getProductIdentifier()); } }); + + eventBus.addHandler(ShareLinkEvent.TYPE, new ShareLinkEventHandler() { + + @Override + public void onShareLink(ShareLinkEvent event) { + + new ShareCatalogueWidget(event.getUuidItem()); + + } + }); } /** diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEvent.java new file mode 100644 index 0000000..baafc16 --- /dev/null +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEvent.java @@ -0,0 +1,42 @@ +package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * On share link button press event + * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) + */ +public class ShareLinkEvent extends GwtEvent{ + + public static Type TYPE = new Type(); + private String uuidItem; + + /** + * Instantiates a new insert metadata event. + */ + public ShareLinkEvent(String uuidItem) { + this.uuidItem = uuidItem; + } + + public String getUuidItem() { + return uuidItem; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#getAssociatedType() + */ + @Override + public Type getAssociatedType() { + return TYPE; + } + + /* (non-Javadoc) + * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler) + */ + @Override + protected void dispatch(ShareLinkEventHandler handler) { + handler.onShareLink(this); + } + + +} diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEventHandler.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEventHandler.java new file mode 100644 index 0000000..56d5f3e --- /dev/null +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShareLinkEventHandler.java @@ -0,0 +1,11 @@ +package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event; + +import com.google.gwt.event.shared.EventHandler; + +/** + * On share link button press event + * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) + */ +public interface ShareLinkEventHandler extends EventHandler { + void onShareLink(ShareLinkEvent event); +} 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 01b2bdd..4edb49f 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 @@ -5,6 +5,7 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.EditMetadataEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMetadataEvent; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShareLinkEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowDatasetsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowGroupsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEvent; @@ -46,6 +47,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ private Button organizations = new Button("Organizations"); private Button groups = new Button("Groups"); private Button items = new Button("Items"); + private Button shareLink = new Button("Share Link"); // user's own private InlineHTML separatorMyInfo = null; @@ -77,7 +79,11 @@ public class CkanMetadataManagementPanel extends FlowPanel{ organizations.setType(ButtonType.LINK); groups.setType(ButtonType.LINK); items.setType(ButtonType.LINK); - + shareLink.setType(ButtonType.LINK); + shareLink.setEnabled(false); + shareLink.setTitle("Get the link of this item and share it!"); + + myDatasets.setType(ButtonType.LINK); myOrganizations.setType(ButtonType.LINK); myGroups.setType(ButtonType.LINK); @@ -94,6 +100,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ organizations.setIcon(IconType.BUILDING); groups.setIcon(IconType.GROUP); items.setIcon(IconType.SITEMAP); + shareLink.setIcon(IconType.SHARE); myDatasets.setIcon(IconType.SITEMAP); myOrganizations.setIcon(IconType.BUILDING); myGroups.setIcon(IconType.GROUP); @@ -118,6 +125,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ nav.add(groups); nav.add(items); nav.add(statistics); + nav.add(shareLink); separatorMyInfo = new InlineHTML("|"); separatorMyInfo.setVisible(true); nav.add(separatorMyInfo); @@ -251,6 +259,16 @@ public class CkanMetadataManagementPanel extends FlowPanel{ } }); + + shareLink.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + eventBus.fireEvent(new ShareLinkEvent(GCubeCkanDataCatalogPanel.getLatestSelectedProductIdentifier())); + + } + }); } /** @@ -289,6 +307,13 @@ public class CkanMetadataManagementPanel extends FlowPanel{ public void enableManageProductButton(boolean value){ manageProduct.setEnabled(value); } + + /** + * Enable or disable the share link button + */ + public void enableShareItemButton(boolean value){ + shareLink.setEnabled(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 0e939a2..ac1a3b3 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 @@ -386,6 +386,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate { // show or hide the manage product button if(!isProductKeyMissing){ latestSelectedProductIdentifier = productId.toString(); + managementPanel.enableShareItemButton(productId != null && !productId.isEmpty()); managementPanel.enableManageProductButton(productId != null && !productId.isEmpty() && isManageProductToShow); } } else { diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 1357c2f..be8f1bf 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -49,6 +49,16 @@ org.gcube.datacatalogue.grsf_manage_widget.server.manage.GRSFNotificationService + + shareservices + org.gcube.portlets_widgets.catalogue_sharing_widget.server.ShareServicesImpl + + + + shareservices + /gCubeCkanDataCatalog/shareservices + + gcubeckandatacatalogservice /gCubeCkanDataCatalog/ckandatacatalogue