diff --git a/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsService.java b/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsService.java index 8764315..61b470d 100644 --- a/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsService.java +++ b/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsService.java @@ -16,4 +16,6 @@ public interface MyVREsService extends RemoteService { LinkedHashMap> getUserVREs(); void loadLayout(String scope, String URL); + + String showMoreVREs(); } diff --git a/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsServiceAsync.java b/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsServiceAsync.java index d30f867..45adcc2 100644 --- a/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsServiceAsync.java +++ b/src/main/java/org/gcube/portlet/user/my_vres/client/MyVREsServiceAsync.java @@ -15,4 +15,6 @@ public interface MyVREsServiceAsync { void getUserVREs( AsyncCallback>> callback); + void showMoreVREs(AsyncCallback callback); + } diff --git a/src/main/java/org/gcube/portlet/user/my_vres/client/VresPanel.java b/src/main/java/org/gcube/portlet/user/my_vres/client/VresPanel.java index 81fc8b2..2232aee 100644 --- a/src/main/java/org/gcube/portlet/user/my_vres/client/VresPanel.java +++ b/src/main/java/org/gcube/portlet/user/my_vres/client/VresPanel.java @@ -9,6 +9,7 @@ import org.gcube.portlet.user.my_vres.shared.VRE; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; @@ -25,6 +26,7 @@ import com.google.gwt.user.client.ui.VerticalPanel; */ public class VresPanel extends Composite { public static final String loading = GWT.getModuleBaseURL() + "../images/loading.gif"; + private static final String ADD_OTHER = "Add More"; private final MyVREsServiceAsync myVREsService = GWT.create(MyVREsService.class); private FlowPanel flowPanel; private VerticalPanel mainPanel = new VerticalPanel(); @@ -87,6 +89,7 @@ public class VresPanel extends Composite { ClickableVRE vreButton = new ClickableVRE(vre, myVREsService); flowPanel.add(vreButton); } + mainPanel.add(flowPanel); } } @@ -94,9 +97,29 @@ public class VresPanel extends Composite { if (! hasAtLeastOneVRE(cachedVREs)) { mainPanel.add(new NoVresPanel()); imagesPanel.clear(); + } else { + addMoreVREsButton(); } } + + private void addMoreVREsButton() { + SimplePanel catPanel = new SimplePanel(); + catPanel.setStyleName("category-panel"); + HTML categ = new HTML(ADD_OTHER); + categ.setStyleName("category-name"); + catPanel.add(categ); + + mainPanel.add(catPanel); + FlowPanel flowPanel = new FlowPanel(); + flowPanel.setWidth("100%"); + flowPanel.setStyleName("flowPanel"); + + ClickableVRE vreButton = new ClickableVRE(myVREsService); + flowPanel.add(vreButton); + + mainPanel.add(flowPanel); + } private boolean hasAtLeastOneVRE(LinkedHashMap> cachedVREs) { for (String cat : cachedVREs.keySet()) diff --git a/src/main/java/org/gcube/portlet/user/my_vres/client/widgets/ClickableVRE.java b/src/main/java/org/gcube/portlet/user/my_vres/client/widgets/ClickableVRE.java index 6d714fe..d055fe6 100644 --- a/src/main/java/org/gcube/portlet/user/my_vres/client/widgets/ClickableVRE.java +++ b/src/main/java/org/gcube/portlet/user/my_vres/client/widgets/ClickableVRE.java @@ -1,5 +1,6 @@ package org.gcube.portlet.user.my_vres.client.widgets; +import org.gcube.common.portal.GCubePortalConstants; import org.gcube.portlet.user.my_vres.client.MyVREsServiceAsync; import org.gcube.portlet.user.my_vres.shared.VRE; @@ -7,7 +8,6 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Timer; -import com.google.gwt.user.client.Window; import com.google.gwt.user.client.Window.Location; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HTML; @@ -16,7 +16,6 @@ import com.google.gwt.user.client.ui.Image; /** * * @author Massimiliano Assante - ISTI CNR - * @version 1.0 Jun 2012 * */ public class ClickableVRE extends HTML { @@ -29,11 +28,36 @@ public class ClickableVRE extends HTML { private int imageWidth = 0; public static final String LOADING_IMAGE = GWT.getModuleBaseURL() + "../images/loading.gif"; + public static final String MORE_IMAGE = GWT.getModuleBaseURL() + "../images/More.png"; Image img = new Image(LOADING_IMAGE); public ClickableVRE() { super(); } + + public ClickableVRE(final MyVREsServiceAsync service) { + super.setPixelSize(WIDTH, HEIGHT); + setPixelSize(WIDTH, HEIGHT); + imageWidth = WIDTH - 25; + String html = ""; + html = "
"; + setHTML(html); + setStyleName("vreButton"); + + addClickHandler(new ClickHandler() { + public void onClick(ClickEvent event) { + service.showMoreVREs(new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { } + + @Override + public void onSuccess(String result) { + Location.assign(result+"/"+GCubePortalConstants.VRES_EXPLORE_FRIENDLY_URL); + } + }); + } + }); + } public ClickableVRE(final VRE vre, final MyVREsServiceAsync service) { super.setPixelSize(WIDTH, HEIGHT); diff --git a/src/main/java/org/gcube/portlet/user/my_vres/server/MyVREsServiceImpl.java b/src/main/java/org/gcube/portlet/user/my_vres/server/MyVREsServiceImpl.java index 017e2bc..ebabd59 100644 --- a/src/main/java/org/gcube/portlet/user/my_vres/server/MyVREsServiceImpl.java +++ b/src/main/java/org/gcube/portlet/user/my_vres/server/MyVREsServiceImpl.java @@ -10,6 +10,7 @@ import javax.servlet.http.HttpSession; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; import org.gcube.common.portal.GCubePortalConstants; +import org.gcube.common.portal.PortalContext; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; import org.gcube.portlet.user.my_vres.client.MyVREsService; import org.gcube.portlet.user.my_vres.shared.UserBelonging; @@ -30,7 +31,6 @@ import com.liferay.portal.service.UserLocalServiceUtil; /** * The server side implementation of the RPC service. * @author Massimiliano Assante - ISTI CNR - * @version 1.0 Jun 2012 */ @SuppressWarnings("serial") public class MyVREsServiceImpl extends RemoteServiceServlet implements MyVREsService { @@ -53,6 +53,10 @@ public class MyVREsServiceImpl extends RemoteServiceServlet implements MyVREsSer } return SessionManager.getInstance().getASLSession(sessionID, user); } + @Override + public String showMoreVREs() { + return PortalContext.getConfiguration().getSiteLandingPagePath(getThreadLocalRequest()); + } /** * * @return true if you're running into the portal, false if in development @@ -231,4 +235,5 @@ public class MyVREsServiceImpl extends RemoteServiceServlet implements MyVREsSer return toReturn; } + } \ No newline at end of file diff --git a/src/main/webapp/MyVREs.css b/src/main/webapp/MyVREs.css index 4eaed09..87cf6a5 100644 --- a/src/main/webapp/MyVREs.css +++ b/src/main/webapp/MyVREs.css @@ -94,6 +94,12 @@ a.vrelink:hover { background-repeat: no-repeat; } +.more-vre { + width: 100%; + height: 100px; + background: url(images/More.png) 50% 50% no-repeat; +} + .item-vre { background-image: url("images/vres.png"); } diff --git a/src/main/webapp/images/More.png b/src/main/webapp/images/More.png new file mode 100644 index 0000000..59f7ff9 Binary files /dev/null and b/src/main/webapp/images/More.png differ