From a028ef42fac04bc3e648135444ede5cf8750ac48 Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Tue, 19 Jan 2016 17:43:15 +0000 Subject: [PATCH] new panel for attachments added but it has to be finished git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/news-feed@122327 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/ui/AttachmentPreviewer.java | 72 +++++++++++++++++++ .../client/ui/AttachmentPreviewer.ui.xml | 9 +++ .../newsfeed/client/ui/TweetTemplate.java | 35 +++++++-- .../newsfeed/client/ui/TweetTemplate.ui.xml | 1 + .../user/newsfeed/server/NewsServiceImpl.java | 5 +- 5 files changed, 111 insertions(+), 11 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.java create mode 100644 src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.ui.xml diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.java b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.java new file mode 100644 index 0000000..fd7c800 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.java @@ -0,0 +1,72 @@ +package org.gcube.portlets.user.newsfeed.client.ui; + +import org.gcube.portal.databook.shared.Attachment; + +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.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; + +/** + * Shows an attachment + * @author Costantino Perciante at ISTI-CNR + * + */ +public class AttachmentPreviewer extends Composite{ + + private static AttachmentPreviewerUiBinder uiBinder = GWT + .create(AttachmentPreviewerUiBinder.class); + + interface AttachmentPreviewerUiBinder extends + UiBinder { + } + + public AttachmentPreviewer() { + initWidget(uiBinder.createAndBindUi(this)); + } + + @UiField + Image attachmentPreviewImage; + + @UiField + Label attachmentFileName; + + // save the attachment + private Attachment attachment; + + public AttachmentPreviewer(final Attachment attachment) { + initWidget(uiBinder.createAndBindUi(this)); + + // print attachment + printJSLOG(attachment.toString()); + + // save it + this.attachment = attachment; + + // set label + attachmentFileName.setText(attachment.getName()); + + // set thumbnail + if(attachment.getThumbnailURL() != null) + attachmentPreviewImage.setUrl(attachment.getThumbnailURL()); + + attachmentPreviewImage.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + Window.open(attachment.getUri(), "_parent", ""); + + } + }); + } + + private static native void printJSLOG(String msg)/*-{ + console.log(msg); + }-*/; +} diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.ui.xml b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.ui.xml new file mode 100644 index 0000000..e9c5bd5 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.ui.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.java b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.java index d5daff8..803521c 100644 --- a/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.java +++ b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.java @@ -36,6 +36,7 @@ import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; 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.HTMLPanel; import com.google.gwt.user.client.ui.Image; @@ -44,7 +45,8 @@ import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** - * @author Massimiliano Assante. ISTI-CNR + * @author Massimiliano Assante at ISTI-CNR + * @author Costantino Perciante at ISTI-CNR * */ public class TweetTemplate extends Composite { @@ -110,6 +112,8 @@ public class TweetTemplate extends Composite { HTML vreSource; @UiField VerticalPanel previewPanel; + @UiField + FlowPanel attachmentPreviewPanel; @UiField Label messageSeparator; /** @@ -128,7 +132,9 @@ public class TweetTemplate extends Composite { this.myFeed = myFeed; isAppFeed = myFeed.getFeed().isApplicationFeed(); Feed feed = myFeed.getFeed(); - if (feed.getUri() != null && feed.getUri().compareTo("") != 0 && feed.getLinkTitle() != null && feed.getLinkTitle().compareTo("") != 0 ) { + + // if there is one attachment, maintain retro compatibility + if (feed.getUri() != null && feed.getUri().compareTo("") != 0 && feed.getLinkTitle() != null && feed.getLinkTitle().compareTo("") != 0 && !feed.isMultiFileUpload()) { previewPanel.add(new LinkPreviewer(feed.getLinkTitle(), feed.getLinkDescription(), feed.getLinkHost(), feed.getUriThumbnail(), feed.getUri())); } this.eventBus = eventBus; @@ -141,12 +147,27 @@ public class TweetTemplate extends Composite { } else { closeImage.removeFromParent(); } + + // in case there are attachments, we have to fill attachmentPreviewPanel instead of the previewPanel if(myFeed.getAttachments() != null){ - GWT.log("# attachments: "+myFeed.getAttachments().size()); - if (myFeed.getAttachments().size() > 0) { - for (Attachment a : myFeed.getAttachments()) { - GWT.log(a.toString()); - } + + // remember that one attachment is stored in the fields: uri, uriThumbnail, linkTitle, linkDescription, linkHost + // build up an attachment + Attachment firstAttachment = new Attachment( + feed.getKey(), // it is meaningless but it's needed + feed.getUri(), + feed.getLinkTitle(), + feed.getLinkDescription(), + feed.getUriThumbnail(), + feed.getLinkHost()); + + // add it to the panel + attachmentPreviewPanel.add(new AttachmentPreviewer(firstAttachment)); + + for (Attachment a : myFeed.getAttachments()) { + + attachmentPreviewPanel.add(new AttachmentPreviewer(a)); + } } diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.ui.xml b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.ui.xml index bdd436a..015445a 100644 --- a/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.ui.xml +++ b/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/TweetTemplate.ui.xml @@ -16,6 +16,7 @@ +
diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java b/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java index cda43b9..701b86f 100644 --- a/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java @@ -124,7 +124,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService */ public String getDevelopmentUser() { String user = NewsConstants.TEST_USER; - // user = "andrea.rossi"; +// user = "costantino.perciante"; return user; } /** @@ -211,9 +211,6 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService } } - - - @Override public ArrayList getAllUpdateUserFeeds(int feedsNoPerCategory) { String userName = getASLSession().getUsername();