From 747828be3e98d840454b0c12553b8c7749a29dfd Mon Sep 17 00:00:00 2001 From: Thomas Andraschko Date: Wed, 22 Mar 2023 11:38:32 +0100 Subject: [PATCH] #9948 --- .../org/primefaces/showcase/domain/Photo.java | 12 +++ .../org/primefaces/showcase/menu/AppMenu.java | 1 + .../view/multimedia/DynamicGalleriaView.java | 73 +++++++++++++++++++ .../ui/multimedia/galleria/dynamic.xhtml | 34 +++++++++ 4 files changed, 120 insertions(+) create mode 100644 primefaces-showcase/src/main/java/org/primefaces/showcase/view/multimedia/DynamicGalleriaView.java create mode 100644 primefaces-showcase/src/main/webapp/ui/multimedia/galleria/dynamic.xhtml diff --git a/primefaces-showcase/src/main/java/org/primefaces/showcase/domain/Photo.java b/primefaces-showcase/src/main/java/org/primefaces/showcase/domain/Photo.java index 1862a30f85..f9019b5182 100644 --- a/primefaces-showcase/src/main/java/org/primefaces/showcase/domain/Photo.java +++ b/primefaces-showcase/src/main/java/org/primefaces/showcase/domain/Photo.java @@ -24,24 +24,36 @@ package org.primefaces.showcase.domain; import java.io.Serializable; +import java.util.UUID; public class Photo implements Serializable { + private String id; private String itemImageSrc; private String thumbnailImageSrc; private String alt; private String title; public Photo() { + this.id = UUID.randomUUID().toString().substring(0, 8); } public Photo(String itemImageSrc, String thumbnailImageSrc, String alt, String title) { + this(); this.itemImageSrc = itemImageSrc; this.thumbnailImageSrc = thumbnailImageSrc; this.alt = alt; this.title = title; } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + public String getItemImageSrc() { return itemImageSrc; } diff --git a/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java b/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java index e08cfcc78c..f69e4711f8 100644 --- a/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java +++ b/primefaces-showcase/src/main/java/org/primefaces/showcase/menu/AppMenu.java @@ -498,6 +498,7 @@ public void init() { galleriaMenuItems.add(new MenuItem("FullScreen", "/ui/multimedia/galleria/fullscreen")); galleriaMenuItems.add(new MenuItem("AutoPlay", "/ui/multimedia/galleria/autoplay")); galleriaMenuItems.add(new MenuItem("Caption", "/ui/multimedia/galleria/caption")); + galleriaMenuItems.add(new MenuItem("Dynamic", "/ui/multimedia/galleria/dynamic")); multimediaMenuItems.add(new MenuItem("Galleria", galleriaMenuItems)); multimediaMenuItems.add(new MenuItem("Media", "/ui/multimedia/media")); diff --git a/primefaces-showcase/src/main/java/org/primefaces/showcase/view/multimedia/DynamicGalleriaView.java b/primefaces-showcase/src/main/java/org/primefaces/showcase/view/multimedia/DynamicGalleriaView.java new file mode 100644 index 0000000000..1a7ddb7154 --- /dev/null +++ b/primefaces-showcase/src/main/java/org/primefaces/showcase/view/multimedia/DynamicGalleriaView.java @@ -0,0 +1,73 @@ +/* + * The MIT License + * + * Copyright (c) 2009-2023 PrimeTek Informatics + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.primefaces.showcase.view.multimedia; + +import java.io.Serializable; +import java.util.List; +import javax.annotation.PostConstruct; +import javax.enterprise.context.RequestScoped; +import javax.faces.context.FacesContext; +import javax.inject.Inject; +import javax.inject.Named; +import org.primefaces.model.DefaultStreamedContent; +import org.primefaces.model.StreamedContent; +import org.primefaces.showcase.domain.Photo; +import org.primefaces.showcase.service.PhotoService; + +@Named +@RequestScoped +public class DynamicGalleriaView implements Serializable { + + private List photos; + + @Inject + private PhotoService service; + + @PostConstruct + public void init() { + photos = service.getPhotos(); + } + + public StreamedContent getPhotoAsStreamedContent() { + FacesContext facesContext = FacesContext.getCurrentInstance(); + String photoId = facesContext.getExternalContext().getRequestParameterMap().get("photoId"); + Photo photo = photos.stream() + .filter(p -> p.getId().equals(photoId)) + .findFirst().get(); + + return DefaultStreamedContent.builder() + .name(photo.getTitle() + ".jpg") + .contentType("image/jpg") + .stream(() -> facesContext.getExternalContext().getResourceAsStream("/resources/" + photo.getItemImageSrc())) + .build(); + } + + public List getPhotos() { + return photos; + } + + public void setService(PhotoService service) { + this.service = service; + } +} diff --git a/primefaces-showcase/src/main/webapp/ui/multimedia/galleria/dynamic.xhtml b/primefaces-showcase/src/main/webapp/ui/multimedia/galleria/dynamic.xhtml new file mode 100644 index 0000000000..34015dc0cf --- /dev/null +++ b/primefaces-showcase/src/main/webapp/ui/multimedia/galleria/dynamic.xhtml @@ -0,0 +1,34 @@ + + + + Galleria Dynamic + + + + Galleria also supports dynamic content via StreamedContent. + + + + + + +
+ + + + + + + + + + +
+
+ +