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 21bd063..e82b63b 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 @@ -15,6 +15,8 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatis import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserDatasetsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserDatasetsEventHandler; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEvent; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEventHandler; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.view.GCubeCkanDataCatalogPanel; @@ -59,8 +61,10 @@ public class CkanEventHandlerManager { @Override public void onShowHome(ShowHomeEvent showHomeEvent) { - CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector()); + CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); + String newPath = panel.getPathInfo(); + ckan.addPathInfo(newPath); panel.instanceCkanFrame(ckan.buildURI()); } }); @@ -114,42 +118,10 @@ public class CkanEventHandlerManager { @Override public void onShowDatasets( ShowUserDatasetsEvent showUserDatasetsEvent) { - - // // get the current path - // String currentPath = Window.Location.getHref(); - // - // // check if the "path" parameter is already present - // String currentParameter = - // Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER); - // - // // the final path must be - // String queryPar = "?" + - // GCubeCkanDataCatalog.GET_PATH_PARAMETER + "=" + - // "/dashboard/datasets"; - // - // String finalPath; - // - // if(currentParameter == null){ - // finalPath = currentPath + queryPar; - // - // }else{ - // - // // remove from the first "path" on - // int index = - // currentPath.lastIndexOf("?"+GCubeCkanDataCatalog.GET_PATH_PARAMETER); - // String firstPartOfThePath = currentPath.substring(0, - // index); - // finalPath = firstPartOfThePath + queryPar; - // - // } - // - // // redirect - // Window.Location.assign(finalPath); - // redirect -// String baseUrlCkanConnector = panel.getBaseURLCKANConnector(); - CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector()); + CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); - ckan.addPathInfo("/dashboard/datasets"); + String newPath = panel.getPathInfo() + "/dashboard/datasets"; + ckan.addPathInfo(newPath); panel.instanceCkanFrame(ckan.buildURI()); } }); @@ -160,38 +132,27 @@ public class CkanEventHandlerManager { @Override public void onShowOrganizations( ShowUserOrganizationsEvent showUserDatasetsEvent) { - - // get the current path - /*String currentPath = Window.Location.getHref(); - // check if the "path" parameter is already present - String currentParameter = - Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER); - // the final path must be - String queryPar = - "?" + GCubeCkanDataCatalog.GET_PATH_PARAMETER + "=" + - "/dashboard/organizations"; - String finalPath; - if (currentParameter == null) { - finalPath = currentPath + queryPar; - } - else { - // remove from the first "path" on - int index = - currentPath.lastIndexOf("?" + - GCubeCkanDataCatalog.GET_PATH_PARAMETER); - String firstPartOfThePath = - currentPath.substring(0, index); - finalPath = firstPartOfThePath + queryPar; - } - Window.Location.assign(finalPath); - */ - // redirect - CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector()); + CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); - ckan.addPathInfo("/dashboard/organizations"); + String newPath = panel.getPathInfo() + "/dashboard/organizations"; + ckan.addPathInfo(newPath); panel.instanceCkanFrame(ckan.buildURI()); } }); + eventBus.addHandler( + ShowUserGroupsEvent.TYPE, new ShowUserGroupsEventHandler() { + + @Override + public void onShowGroups(ShowUserGroupsEvent showUserDatasetsEvent) { + + CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(panel.getBaseURLCKANConnector()); + ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); + String newPath = panel.getPathInfo() + "/dashboard/groups"; + ckan.addPathInfo(newPath); + panel.instanceCkanFrame(ckan.buildURI()); + } + }); + // show statistics event eventBus.addHandler( ShowStatisticsEvent.TYPE, new ShowStatisticsEventHandler() { @@ -199,35 +160,10 @@ public class CkanEventHandlerManager { @Override public void onShowStatistics( ShowStatisticsEvent showStatisticsEvent) { - - // get the current path - /*String currentPath = Window.Location.getHref(); - // check if the "path" parameter is already present - String currentParameter = - Window.Location.getParameter(GCubeCkanDataCatalog.GET_PATH_PARAMETER); - // the final path must be - String queryPar = - "?" + GCubeCkanDataCatalog.GET_PATH_PARAMETER + "=" + - "/stats"; - String finalPath; - if (currentParameter == null) { - finalPath = currentPath + queryPar; - } - else { - // remove from the first "path" on - int index = - currentPath.lastIndexOf("?" + - GCubeCkanDataCatalog.GET_PATH_PARAMETER); - String firstPartOfThePath = - currentPath.substring(0, index); - finalPath = firstPartOfThePath + queryPar; - } - // redirect - Window.Location.assign(finalPath);*/ - CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint( panel.getBaseURLCKANConnector()); ckan.addGubeToken(panel.getGcubeTokenValueToCKANConnector()); - ckan.addPathInfo("/stats"); + String newPath = panel.getPathInfo() + "/stats"; + ckan.addPathInfo(newPath); panel.instanceCkanFrame(ckan.buildURI()); } }); diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GCubeCkanDataCatalog.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GCubeCkanDataCatalog.java index 21ce1d3..730cabb 100644 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GCubeCkanDataCatalog.java +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/GCubeCkanDataCatalog.java @@ -30,20 +30,6 @@ public class GCubeCkanDataCatalog implements EntryPoint { * This is the entry point method. */ public void onModuleLoad() { -// if (BrowserCloseDetector.get().wasClosed()) { -// GWT.log("Browser was closed."); -// } -// else { -// GWT.log("Refreshing or returning from another page."); -// } - -// Window.addCloseHandler(new CloseHandler() { -// -// public void onClose(CloseEvent windowCloseEvent) { -// -// Window.alert("I'm closing"); -// } -// }); Window.addWindowClosingHandler(new Window.ClosingHandler() { diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShowUserGroupsEvent.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShowUserGroupsEvent.java new file mode 100644 index 0000000..35914ce --- /dev/null +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShowUserGroupsEvent.java @@ -0,0 +1,38 @@ +package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event; + +import com.google.gwt.event.shared.GwtEvent; + + +/** + * The Class ShowUserGroupsEvent. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Jun 23, 2016 + */ +public class ShowUserGroupsEvent extends GwtEvent{ + + public static Type TYPE = new Type(); + + /** + * Instantiates a new show user organizations event. + */ + public ShowUserGroupsEvent() { + } + + /* (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(ShowUserGroupsEventHandler handler) { + handler.onShowGroups(this); + } + +} diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShowUserGroupsEventHandler.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShowUserGroupsEventHandler.java new file mode 100644 index 0000000..5c3e40e --- /dev/null +++ b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/event/ShowUserGroupsEventHandler.java @@ -0,0 +1,22 @@ +package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event; + +import com.google.gwt.event.shared.EventHandler; + + +/** + * The Interface ShowUserGroupsEventHandler. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Jun 23, 2016 + */ +public interface ShowUserGroupsEventHandler extends EventHandler { + + + /** + * On show groups. + * + * @param showUserDatasetsEvent the show user datasets event + */ + void onShowGroups(ShowUserGroupsEvent showUserDatasetsEvent); + +} diff --git a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/utility/BrowserCloseDetector.java b/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/utility/BrowserCloseDetector.java deleted file mode 100644 index 7517746..0000000 --- a/src/main/java/org/gcube/portlets/gcubeckan/gcubeckandatacatalog/client/utility/BrowserCloseDetector.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * - */ - -package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.utility; - -/** - * - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * Jun 23, 2016 - */ -import com.google.gwt.user.client.Cookies; -import com.google.gwt.user.client.Window; - -public class BrowserCloseDetector { - - private static final String COOKIE = "ckan-browser-detector-closed"; - private static BrowserCloseDetector instance; - - private BrowserCloseDetector() { - - Window.addWindowClosingHandler(new Window.ClosingHandler() { - - public void onWindowClosing(Window.ClosingEvent closingEvent) { - Cookies.setCookie(COOKIE, ""); - } - }); - } - - public static BrowserCloseDetector get() { - - return instance == null - ? instance = new BrowserCloseDetector() : instance; - } - - public boolean wasClosed() { - - return Cookies.getCookie(COOKIE) == null; - } -} 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 3842472..d54459f 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 @@ -8,6 +8,7 @@ import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.InsertMeta import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowHomeEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowStatisticsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserDatasetsEvent; +import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserGroupsEvent; import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.event.ShowUserOrganizationsEvent; import com.github.gwtbootstrap.client.ui.AlertBlock; @@ -37,6 +38,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ private Button editMeta = new Button("Edit Product"); private Button myDatasets = new Button("My Products"); private Button myOrganizations = new Button("My Organizations"); + private Button myGroups = new Button("My Groups"); private Button statistics = new Button("Statistics"); private HandlerManager eventBus; @@ -53,6 +55,7 @@ public class CkanMetadataManagementPanel extends FlowPanel{ home.setType(ButtonType.LINK); myDatasets.setType(ButtonType.LINK); myOrganizations.setType(ButtonType.LINK); + myGroups.setType(ButtonType.LINK); insertMeta.setType(ButtonType.LINK); editMeta.setType(ButtonType.LINK); statistics.setType(ButtonType.LINK); @@ -61,18 +64,20 @@ public class CkanMetadataManagementPanel extends FlowPanel{ home.setIcon(IconType.HOME); myDatasets.setIcon(IconType.SITEMAP); myOrganizations.setIcon(IconType.BUILDING); + myGroups.setIcon(IconType.GROUP); insertMeta.setIcon(IconType.FILE); editMeta.setIcon(IconType.EDIT_SIGN); statistics.setIcon(IconType.BAR_CHART); - + // hide edit and insert - editMeta.setVisible(false); + editMeta.setVisible(false); insertMeta.setVisible(false); // add to navigation bar nav.add(home); nav.add(myDatasets); nav.add(myOrganizations); + nav.add(myGroups); nav.add(statistics); nav.add(insertMeta); nav.add(editMeta); @@ -88,14 +93,14 @@ public class CkanMetadataManagementPanel extends FlowPanel{ * */ private void addHandlers() { - + home.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { - + eventBus.fireEvent(new ShowHomeEvent()); - + } }); @@ -116,34 +121,45 @@ public class CkanMetadataManagementPanel extends FlowPanel{ eventBus.fireEvent(new EditMetadataEvent()); } }); - + myDatasets.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { - + eventBus.fireEvent(new ShowUserDatasetsEvent()); - + } }); - + myOrganizations.addClickHandler(new ClickHandler() { - + @Override public void onClick(ClickEvent event) { - + eventBus.fireEvent(new ShowUserOrganizationsEvent()); - + } }); - - statistics.addClickHandler(new ClickHandler() { - + + + myGroups.addClickHandler(new ClickHandler() { + @Override public void onClick(ClickEvent event) { - + + eventBus.fireEvent(new ShowUserGroupsEvent()); + + } + }); + + statistics.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + eventBus.fireEvent(new ShowStatisticsEvent()); - + } }); @@ -157,15 +173,15 @@ public class CkanMetadataManagementPanel extends FlowPanel{ public int getCurrentHeight(){ return this.getOffsetHeight(); } - + /** * Those buttons can be only visible when the logged user has role editr/admin/sysadmin * @param show */ public void showInsertAndEditProductButtons(boolean show){ - + editMeta.setVisible(show); insertMeta.setVisible(show); - + } } 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 6705b22..8ccc874 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 @@ -35,8 +35,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{ private Image loading = new Image(CkanPortletResources.ICONS.loading()); private RootPanel rootPanel; private HandlerManager eventBus; - private String baseURLCKANConnector; - private String gCubeTokeValue; + private CkanConnectorAccessPoint ckanAccessPoint; /** * Instantiates a new g cube ckan data catalog panel. @@ -57,9 +56,7 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{ @Override public void onSuccess(CkanConnectorAccessPoint ckan) { -// GWT.log("Instancing CKAN iframe with url: "+uriToCkan); - baseURLCKANConnector = ckan.getBaseUrl(); - gCubeTokeValue = ckan.getGcubeTokenValue(); + ckanAccessPoint = ckan; instanceCkanFrame(ckan.buildURI()); GCubeCkanDataCatalogPanel.this.rootPanel.remove(loading); } @@ -189,17 +186,24 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{ GWT.log("New iFrame size w: "+rootWidth + " h: "+rootHeight); this.setSize(rootWidth+"px",rootHeight+"px"); int height = rootHeight - getTopPanelHeight(); - if(ckanFramePanel.getFrame()!=null) +// if(height<2000) +// height = 2000; + if(ckanFramePanel.getFrame()!=null){ ckanFramePanel.getFrame().setSize(rootWidth+"px", height+"px"); + int newH = managementPanel!=null && managementPanel.getCurrentHeight()>0?managementPanel.getOffsetHeight()+height:height; +// managementPanel.setHeight(height+50+"px"); + this.setHeight(newH+"px"); + } } + /** * Gets the base urlckan connector. * - * @return the baseURLCKANConnector + * @return the base urlckan connector */ public String getBaseURLCKANConnector() { - return baseURLCKANConnector; + return ckanAccessPoint.getBaseUrl(); } @@ -209,7 +213,16 @@ public class GCubeCkanDataCatalogPanel extends BaseViewTemplate{ * @return the gcube token value to ckan connector */ public String getGcubeTokenValueToCKANConnector() { - return gCubeTokeValue; + return ckanAccessPoint.getGcubeTokenValue(); + } + + /** + * Gets the path info. + * + * @return the path info + */ + public String getPathInfo() { + return ckanAccessPoint.getPathInfoParameter(); } }