All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.wicketslides.SlidesPanel Maven / Gradle / Ivy

Go to download

wicket adaptor for Smoothgallery javascript slideshow library based on Mootools 1.2

The newest version!
package com.googlecode.wicketslides;

import java.util.ArrayList;
import java.util.List;

import org.apache.wicket.behavior.HeaderContributor;
import org.apache.wicket.markup.html.CSSPackageResource;
import org.apache.wicket.markup.html.IHeaderContributor;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.JavascriptPackageResource;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;

/**
 * This class provide a almost-out-of-the-box wicket Panel with a smoothgallery
 * in it. What is missing are Mootools resources cause they should be added
 * outside the panel.
 * 
 * To add the Mootools javascript resources just make:
 * 
 * 
 *  add(JavascriptPackageResource.getHeaderContribution(WicketSlides.MOOTOOLS));
 *  add(JavascriptPackageResource.getHeaderContribution(WicketSlides.MOOTOOLS_MORE));
 * 
 * 
 * 
 * in a parent container of the SlidesPanel instance.
 * 
 * @author ildella
 * 
 */
public class SlidesPanel extends Panel {

   private List imageList;
   private List thumbList;
   private Boolean thumbs;
   private Integer width;
   private Integer height;
   private String useHistoryManager;
   private Integer thumbWidth;
   private Integer thumbHeight;
   private Boolean timed;
   private Integer fadeDuration;
   private Integer delay;
   private Boolean showArrow;
   private Boolean embedLinks;
   private Boolean showInfoPane;

   private SlidesPanel(final String id) {
      super(id);
   }

   private void processPanel() {

      add(CSSPackageResource.getHeaderContribution(WicketSlides.JD_GALLERY_CSS));
      add(JavascriptPackageResource.getHeaderContribution(WicketSlides.JD_GALLERY));

      add(new HeaderContributor(new IHeaderContributor() {
         @Override
         public void renderHead(final IHeaderResponse response) {
            response.renderString("");
         }
      }));
      add(new HeaderContributor(new IHeaderContributor() {

         @Override
         public void renderHead(final IHeaderResponse response) {
            final StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("");
            stringBuilder.append("var myGallery = new gallery($('myGallery'), {");
            stringBuilder.append("timed: ");
            stringBuilder.append(timed);
            stringBuilder.append(", ");
            stringBuilder.append("fadeDuration: ");
            stringBuilder.append(fadeDuration);
            stringBuilder.append(", ");
            stringBuilder.append("delay: ");
            stringBuilder.append(delay);
            stringBuilder.append(", ");
            stringBuilder.append("useHistoryManager: ");
            stringBuilder.append(useHistoryManager);
            stringBuilder.append(", ");
            stringBuilder.append("thumbWidth: ");
            stringBuilder.append(thumbWidth);
            stringBuilder.append(", ");
            stringBuilder.append("thumbHeight: ");
            stringBuilder.append(thumbHeight);
            stringBuilder.append(", ");
            stringBuilder.append("showInfopane: ");
            stringBuilder.append(showInfoPane);
            stringBuilder.append(", ");
            stringBuilder.append("embedLinks: ");
            stringBuilder.append(embedLinks);
            stringBuilder.append(", ");
            stringBuilder.append("thumbCloseCarousel: true, ");
            stringBuilder.append("showCarouselLabel: true, ");
            stringBuilder.append("textShowCarousel: 'Pictures', ");
            stringBuilder.append("showArrows: ");
            stringBuilder.append(showArrow);
            stringBuilder.append(", ");
            stringBuilder.append("showCarousel: ");
            stringBuilder.append(thumbs);
            stringBuilder.append(" ");
            stringBuilder.append("});");
            stringBuilder.append((thumbs ? "myGallery.showCarousel();" : ""));
            stringBuilder
                  .append(Boolean.TRUE.equals(Boolean.parseBoolean(useHistoryManager)) ? "HistoryManager.start();" : "");
            final String javascript = stringBuilder.toString();
            response.renderOnDomReadyJavascript(javascript);
         }

      }));

      final ListView listview = new ListView("imageElement", imageList) {

         @Override
         protected void populateItem(final ListItem item) {
            loader.populate(item);
         }

      };

      add(listview);

   }

   private ImageLoader loader;

   public static class Builder {
      private final String id;
      private List imageList = new ArrayList(1);
      private List thumbList = new ArrayList(1);
      private Boolean thumbs = false;
      private Integer width = 480;
      private Integer height = 360;
      private Integer thumbWidth = 48;
      private Integer thumbHeight = 36;
      private Boolean timed = false;
      private Integer fadeDuration = 600;
      private Integer delay = 6000;
      private Boolean showArrow = true;
      private final Boolean embedLinks = true;
      private final Boolean showInfoPane = true;
      private ImageLoader loader = new ImageLoader();
      private Boolean useHistoryManager = Boolean.FALSE;

      public Builder(final String id) {
         this.id = id;
      }

      public SlidesPanel build() {
         final SlidesPanel panel = new SlidesPanel(id);
         panel.imageList = imageList;
         panel.thumbList = thumbList;
         panel.thumbs = thumbs;
         panel.width = width;
         panel.height = height;
         panel.thumbWidth = thumbWidth;
         panel.thumbHeight = thumbHeight;
         panel.useHistoryManager = useHistoryManager.toString();
         panel.timed = timed;
         panel.fadeDuration = fadeDuration;
         panel.delay = delay;
         panel.showArrow = showArrow;
         panel.embedLinks = embedLinks;
         panel.showInfoPane = showInfoPane;
         panel.loader = loader;
         if (thumbs == null) {
            if (thumbList.contains(null) || imageList.size() != thumbList.size()) {
               panel.thumbs = false;
            } else if (imageList.size() == thumbList.size()) {
               panel.thumbs = true;
            }
         }

         panel.processPanel();
         return panel;
      }

      public Builder showThumbs(final Boolean showThumbs) {
         if (showThumbs == null) {
            thumbs = false;
         }
         thumbs = showThumbs;
         return this;
      }

      public Builder thumbList(final List thumbList) {
         if (thumbList == null || thumbList.isEmpty()) {
            thumbs = false;
         }
         this.thumbList = thumbList;
         return this;
      }

      public Builder size(final Integer width, final Integer height) {
         if (width == null || height == null) {
            throw new IllegalArgumentException("Either provide both width and height, or don't call size() at all");
         }
         this.width = width;
         this.height = height;
         return this;
      }

      public Builder thumbSize(final Integer width, final Integer height) {
         if (width == null || height == null) {
            throw new IllegalArgumentException("Either provide both width and height, or don't call size() at all");
         }
         thumbWidth = width;
         thumbHeight = height;
         return this;
      }

      public Builder timed(final Boolean timed) {
         this.timed = timed;
         return this;
      }

      public Builder showArrow(final Boolean showArrow) {
         this.showArrow = showArrow;
         return this;
      }

      public Builder fadeDuration(final Integer fadeDuration) {
         this.fadeDuration = fadeDuration;
         return this;
      }

      public Builder delay(final Integer delay) {
         this.delay = delay;
         return this;
      }

      public Builder historyManager(final boolean useHistoryManager) {
         this.useHistoryManager = useHistoryManager;
         return this;
      }

      public Builder addImage(final String imageUrl, final String thumbUrl) {
         imageList.add(imageUrl);
         thumbList.add(thumbUrl);
         return this;
      }

      public Builder addImage(final String imageUrl) {
         imageList.add(imageUrl);
         return this;
      }

      public Builder addImageList(final List listImagesUrl) {
         imageList = listImagesUrl;
         return this;
      }

      public Builder addThumbList(final List listThumbsUrl) {
         thumbList = listThumbsUrl;
         return this;
      }

      public Builder loadImageWith(final ImageLoader loader) {
         this.loader = loader;
         return this;
      }

      public void addImage(final SlideshowImage mainImage, final SlideshowImage thumbImag2) {
         imageList.add(mainImage);
         thumbList.add(thumbImag2);
      }

   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy