
com.googlecode.wicketslides.SlidesPanel Maven / Gradle / Ivy
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