package org.gcube.portlets.user.geoportaldataviewer.client.ui.gallery; import java.util.List; import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV; import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; import com.google.gwt.user.client.Random; import com.google.gwt.user.client.ui.HTMLPanel; /** * The Class ImagesGallery. * * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) * * Jul 21, 2021 */ public class ImagesGallery { private HTMLPanel galleryPanel; private List listImages; private String galleryDivId; /** * Show gallery. * * @param json_array_images the json array images */ private native void showGallery(JavaScriptObject json_array_images, String galleryDivId) /*-{ console.log("showing: " + json_array_images) var waitForJQuery = setInterval( function() { if (typeof $wnd.$ != 'undefined') { $wnd .$("#"+galleryDivId) .nanogallery2( { thumbnailHeight : '200 XS150 SM150', // RESPONSIVE THUMBNAIL HEIGHT: default=200px, XS resolution=150px, SM resolution=150px thumbnailWidth : '218 XS150 SM150', // RESPONSIVE THUMBNAIL WIDTH: auto thumbnailAlignment : 'left', thumbnailBorderHorizontal : 0, thumbnailBorderVertical : 0, thumbnailGutterWidth : '10 XS10 SM10', thumbnailGutterHeight : '10 XS10 SM10', // THUMBNAIL TOOLS & LABEL thumbnailLabel : { display : true, position : 'onBottom', align : 'left' }, thumbnailToolbarImage : { bottomLeft : 'display' }, // replace the default DISPLAY tool icon icons : { thumbnailDisplay : ' display' }, // DISPLAY ANIMATION galleryDisplayTransition : 'slideUp', galleryDisplayTransitionDuration : 1000, thumbnailDisplayTransition : 'scaleDown', thumbnailDisplayTransitionDuration : 300, thumbnailDisplayInterval : 50, // THUMBNAIL'S HOVER ANIMATION //thumbnailBuildInit2 : 'tools_font-size_1.5em|title_font-size_1.5em', thumbnailHoverEffect2 : 'imageScaleIn80|tools_opacity_0_1|tools_translateX_-30px_0px|title_opacity_1_0|title_translateX_0px_-30px', touchAnimation : true, touchAutoOpenDelay : 800, // GALLERY THEME galleryTheme : { thumbnail : { borderRadius : '2px !important', background : '#ffffff !important', titleShadow : 'none !important', titleColor : '#696969 !important', labelBackground : '#f3f3f3 !important' }, thumbnailIcon : { color : '#000', shadow : 'none' }, }, viewerToolbar : { display : true, standard : 'minimizeButton, label', minimized : 'minimizeButton, label, fullscreenButton, downloadButton' }, viewerTools : { topLeft : 'pageCounter', topRight : 'playPauseButton, zoomButton, fullscreenButton, downloadButton, closeButton' }, // DEEP LINKING locationHash : false, items : json_array_images }) clearInterval(waitForJQuery); } }, 200); }-*/; /** * Instantiates a new images gallery. * * @param immagini the immagini */ public ImagesGallery(List immagini) { this.galleryDivId = "nanogallery"+Random.nextInt()+Random.nextInt(); this.galleryPanel = new HTMLPanel("
"); this.listImages = immagini; } /** * Gets the gallery panel. * * @return the gallery panel */ public HTMLPanel getGalleryPanel() { return galleryPanel; } /** * Fill gallery. */ public void fillGallery() { JSONArray jsonArray = new JSONArray(); int index = 0; for (UploadedImageDV image : listImages) { for (WorkspaceContentDV imageContent : image.getListWsContent()) { JSONObject json = new JSONObject(); json.put("src", new JSONString(imageContent.getLink())); json.put("srct", new JSONString(imageContent.getLink())); List listAuthors = image.getResponsabili(); String txtAuthors = listAuthors.size()>1 ? "Authors: ": "Author: "; for (String author : listAuthors) { txtAuthors+= " "+author +","; } txtAuthors = txtAuthors.substring(0,txtAuthors.length()-2); String description = txtAuthors + ". ID Licenza: "+image.getLicenseID(); json.put("title", new JSONString(image.getDidascalia())); json.put("description", new JSONString(description)); json.put("downloadURL", new JSONString(imageContent.getLink())); jsonArray.set(index, json); index++; } } showGallery(jsonArray.getJavaScriptObject(), galleryDivId); } }