diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..65a07a3 --- /dev/null +++ b/.classpath @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..cd15ed2 --- /dev/null +++ b/.project @@ -0,0 +1,53 @@ + + + image-previewer-widget + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + com.google.gwt.eclipse.core.gwtNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..b72a6a4 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs new file mode 100644 index 0000000..f7c4208 --- /dev/null +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +lastWarOutDir=/home/costantino/workspace/image-previewer-widget/target/image-previewer-widget-1.0.0-SNAPSHOT +warSrcDir=src/main/webapp +warSrcDirIsOutput=false diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..f23a752 --- /dev/null +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +entryPointModules= diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..443e085 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..8c33358 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..735eb31 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e7ebc34 --- /dev/null +++ b/pom.xml @@ -0,0 +1,134 @@ + + + + 4.0.0 + + maven-parent + org.gcube.tools + 1.0.0 + + + + org.gcube.portlets.widgets + image-previewer-widget + war + 1.0.0-SNAPSHOT + gCube Image previewer widget + + gCube Image Previewer widget is a GWT Widget that can be used to show a preview of one or more images + + + + + 2.7.0 + distro + 1.7 + 1.7 + UTF-8 + UTF-8 + + + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + com.google.gwt + gwt + ${gwtVersion} + pom + import + + + + + + + com.google.gwt + gwt-servlet + ${gwtVersion} + runtime + + + com.google.gwt + gwt-user + ${gwtVersion} + provided + + + com.google.gwt + gwt-dev + ${gwtVersion} + provided + + + com.github.gwtbootstrap + gwt-bootstrap + 2.3.2.0 + + + junit + junit + 4.11 + test + + + org.gcube.portal + social-networking-library + provided + + + + + + ${webappDirectory}/WEB-INF/classes + + + src/main/java + + **/*.* + + + + src/main/resources + + **/*.* + + + + + + + + + org.codehaus.mojo + gwt-maven-plugin + 2.7.0 + + + + compile + test + generateAsync + + + + + + ImagePreviewer.html + + org.gcube.portlets.widgets.imagepreviewerwidget.ImagePreviewer + + + + + + + diff --git a/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/EnhancedImage.java b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/EnhancedImage.java new file mode 100644 index 0000000..3410cbb --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/EnhancedImage.java @@ -0,0 +1,84 @@ +package org.gcube.portlets.widgets.imagepreviewerwidget.client; + +import com.github.gwtbootstrap.client.ui.Image; + +/** + * This class contains the object to show within the carousel. + * @author Costantino Perciante at ISTI-CNR + * + */ +public class EnhancedImage { + + private Image image; + private String titleToShow; + private String toolTipToShow; + + public EnhancedImage(String imageUrl){ + + super(); + this.image = new Image(imageUrl); + this.titleToShow = imageUrl; + this.toolTipToShow = imageUrl; + + } + + public EnhancedImage(Image image){ + + super(); + this.image = image; + this.titleToShow = image.getUrl(); + this.toolTipToShow = image.getUrl(); + + } + + public EnhancedImage(Image image, String titleToShow, String toolTipToShow) { + + super(); + this.image = image; + this.titleToShow = titleToShow; + this.toolTipToShow = toolTipToShow; + + } + + public Image getImage() { + + return image; + + } + public void setImage(Image image) { + + this.image = image; + + } + public String getTitleToShow() { + + return titleToShow; + + } + public void setTitleToShow(String titleToShow) { + + this.titleToShow = titleToShow; + + } + public String getToolTipToShow() { + + return toolTipToShow; + + } + public void setToolTipToShow(String toolTipToShow) { + + this.toolTipToShow = toolTipToShow; + + } + public String getImageUrl(){ + + return this.image.getUrl(); + + } + + @Override + public String toString() { + return "EnhancedImage [image=" + image + ", titleToShow=" + titleToShow + + ", toolTipToShow=" + toolTipToShow + "]"; + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ImagePreviewer.java b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ImagePreviewer.java new file mode 100644 index 0000000..72cd509 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ImagePreviewer.java @@ -0,0 +1,30 @@ +package org.gcube.portlets.widgets.imagepreviewerwidget.client; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.widgets.imagepreviewerwidget.client.ui.Carousel; +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.user.client.ui.RootPanel; + +/** + * Entry point classes define onModuleLoad(). + */ +public class ImagePreviewer implements EntryPoint { + + + /** + * This is the entry point method. + */ + public void onModuleLoad() { + + // random images for test + List images = new ArrayList<>(); + images.add(new EnhancedImage("https://i.ytimg.com/vi/ReF6iQ7M5_A/maxresdefault.jpg")); + images.add(new EnhancedImage("http://images6.alphacoders.com/316/316963.jpg")); + images.add(new EnhancedImage("http://nerdist.com/wp-content/uploads/2014/07/ned-stark-970x545.jpg")); + images.add(new EnhancedImage("http://vignette2.wikia.nocookie.net/gameofthrones/images/2/25/Eddard's_Head.png/revision/latest?cb=20121205211321")); + images.add(new EnhancedImage("https://upload.wikimedia.org/wikipedia/it/1/17/Il_grande_Lebowski.jpg")); + RootPanel.get("image-previewer-div").add(new Carousel(images)); + } +} diff --git a/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ui/Carousel.java b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ui/Carousel.java new file mode 100644 index 0000000..b942001 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ui/Carousel.java @@ -0,0 +1,144 @@ +package org.gcube.portlets.widgets.imagepreviewerwidget.client.ui; + +import java.util.List; + +import org.gcube.portlets.widgets.imagepreviewerwidget.client.EnhancedImage; + +import com.github.gwtbootstrap.client.ui.Button; +import com.github.gwtbootstrap.client.ui.Image; +import com.github.gwtbootstrap.client.ui.Modal; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; + +/** + * A carousel for image/file previews. + * @author Costantino Perciante at ISTI-CNR + */ +public class Carousel extends Composite{ + + private static CarouselUiBinder uiBinder = GWT + .create(CarouselUiBinder.class); + + interface CarouselUiBinder extends UiBinder { + } + + public Carousel() { + initWidget(uiBinder.createAndBindUi(this)); + + } + + @UiField + Modal mainModalPanel; + + @UiField + Button showButton; + + @UiField + Button prevButton; + + @UiField + Button nextButton; + + @UiField + Image shownImage; + + private List listOfAttachmentsToShow; + + private int currentPreviewPosition; + + public Carousel(List imagesToShow) { + initWidget(uiBinder.createAndBindUi(this)); + + // prev button + prevButton.setText("<<"); + + // next button + nextButton.setText(">>"); + + // save the attachments list + listOfAttachmentsToShow = imagesToShow; + + // take the first object + currentPreviewPosition = 0; + + // show it + shownImage.setUrl(listOfAttachmentsToShow.get(currentPreviewPosition).getImageUrl()); + + // change image tooltip + shownImage.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getToolTipToShow()); + + // change the title to the modal + mainModalPanel.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getTitleToShow()); + + } + + @UiHandler("showButton") + public void onClick(ClickEvent e){ + + mainModalPanel.show(); + + } + + @UiHandler("prevButton") + public void onClickPrev(ClickEvent e){ + + int prevPreviewPosition = currentPreviewPosition == 0 ? listOfAttachmentsToShow.size() - 1 : currentPreviewPosition - 1; + currentPreviewPosition = prevPreviewPosition; + + // show it + shownImage.setUrl(listOfAttachmentsToShow.get(currentPreviewPosition).getImageUrl()); + + // change image tooltip + shownImage.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getToolTipToShow()); + + // change the title to the modal + mainModalPanel.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getTitleToShow()); + + } + + @UiHandler("nextButton") + public void onClickNext(ClickEvent e){ + + int nextPreviewPosition = currentPreviewPosition == listOfAttachmentsToShow.size() -1 ? + 0 : currentPreviewPosition + 1; + currentPreviewPosition = nextPreviewPosition; + + // show it + shownImage.setUrl(listOfAttachmentsToShow.get(currentPreviewPosition).getImageUrl()); + + // change image tooltip + shownImage.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getToolTipToShow()); + + // change the title to the modal + mainModalPanel.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getTitleToShow()); + + } + + /** + * Change the current image. + * @param newPosition index of the new image to show + */ + public void changeImageShown(int newPosition){ + + if(newPosition < 0 || newPosition >= listOfAttachmentsToShow.size()) + return; + + currentPreviewPosition = newPosition; + + // show it + shownImage.setUrl(listOfAttachmentsToShow.get(currentPreviewPosition).getImageUrl()); + + // change image tooltip + shownImage.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getToolTipToShow()); + + // change the title to the modal + mainModalPanel.setTitle(listOfAttachmentsToShow.get(currentPreviewPosition).getTitleToShow()); + + } + +} diff --git a/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ui/Carousel.ui.xml b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ui/Carousel.ui.xml new file mode 100644 index 0000000..11cd7ff --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/imagepreviewerwidget/client/ui/Carousel.ui.xml @@ -0,0 +1,39 @@ + + + + .image { + width: 100%; + } + + .left-align { + vertical-align: center; + float: left; + color: #3B5998; + font-weight: bold; + } + + .right-align { + vertical-align: center; + float: right; + color: #3B5998; + font-weight: bold; + } + + .modal-text-size { + font-family: "Helvetica Neue", Arial, sans-serif; + font-size: 14px; + } + + + Show the modal! + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/org/gcube/portlets/widgets/imagepreviewerwidget/ImagePreviewer.gwt.xml b/src/main/resources/org/gcube/portlets/widgets/imagepreviewerwidget/ImagePreviewer.gwt.xml new file mode 100644 index 0000000..0e6f399 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/widgets/imagepreviewerwidget/ImagePreviewer.gwt.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/org/gcube/portlets/widgets/imagepreviewerwidget/client/Messages_fr.properties b/src/main/resources/org/gcube/portlets/widgets/imagepreviewerwidget/client/Messages_fr.properties new file mode 100644 index 0000000..b4a7627 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/widgets/imagepreviewerwidget/client/Messages_fr.properties @@ -0,0 +1,2 @@ +sendButton = Envoyer +nameField = Entrez votre nom \ No newline at end of file diff --git a/src/main/webapp/ImagePreviewer.css b/src/main/webapp/ImagePreviewer.css new file mode 100644 index 0000000..b45c86c --- /dev/null +++ b/src/main/webapp/ImagePreviewer.css @@ -0,0 +1,4 @@ +.modal-style { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; +} \ No newline at end of file diff --git a/src/main/webapp/ImagePreviewer.html b/src/main/webapp/ImagePreviewer.html new file mode 100644 index 0000000..2c97c80 --- /dev/null +++ b/src/main/webapp/ImagePreviewer.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + Web Application Starter Project + + + + + + + + + + + + + + + +
+ + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..4d5414b --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + + + + + + + ImagePreviewer.html + + + diff --git a/src/test/resources/org/gcube/portlets/widgets/imagepreviewerwidget/ImagePreviewerJUnit.gwt.xml b/src/test/resources/org/gcube/portlets/widgets/imagepreviewerwidget/ImagePreviewerJUnit.gwt.xml new file mode 100644 index 0000000..e750912 --- /dev/null +++ b/src/test/resources/org/gcube/portlets/widgets/imagepreviewerwidget/ImagePreviewerJUnit.gwt.xml @@ -0,0 +1,9 @@ + + + + + + + + +