96 lines
2.6 KiB
Java
96 lines
2.6 KiB
Java
package org.gcube.portlets.user.shareupdates.client.form;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.event.dom.client.ClickEvent;
|
|
import com.google.gwt.event.dom.client.ClickHandler;
|
|
import com.google.gwt.uibinder.client.UiHandler;
|
|
import com.google.gwt.user.client.ui.Composite;
|
|
import com.google.gwt.user.client.ui.HTML;
|
|
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
|
import com.google.gwt.user.client.ui.Image;
|
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
|
|
|
public class ImageSwitcher extends Composite{
|
|
|
|
private ArrayList<String> imageUrls;
|
|
private VerticalPanel mainPanel = new VerticalPanel();
|
|
private HorizontalPanel controlPanel = new HorizontalPanel();
|
|
private Image image = new Image();
|
|
private HTML prev = new HTML(" << ");
|
|
private HTML label = new HTML("1 of 1");
|
|
private HTML next = new HTML(" >> ");
|
|
private int currentIndex = 0;
|
|
|
|
public ImageSwitcher() {
|
|
super();
|
|
image.setWidth("80px");
|
|
mainPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
|
mainPanel.setPixelSize(100, 100);
|
|
mainPanel.add(image);
|
|
|
|
controlPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
|
|
controlPanel.add(prev);
|
|
controlPanel.add(label);
|
|
controlPanel.add(next);
|
|
|
|
mainPanel.add(controlPanel);
|
|
|
|
prev.setStyleName("small-text-arrow");
|
|
label.setStyleName("small-text");
|
|
next.setStyleName("small-text-arrow");
|
|
|
|
|
|
initWidget(mainPanel);
|
|
|
|
next.addClickHandler(new ClickHandler() {
|
|
public void onClick(ClickEvent event) {
|
|
if (imageUrls != null && currentIndex < imageUrls.size()) {
|
|
currentIndex++;
|
|
image.setUrl(imageUrls.get(currentIndex));
|
|
label.setHTML((currentIndex+1)+" of " + imageUrls.size());
|
|
}
|
|
}
|
|
});
|
|
|
|
prev.addClickHandler(new ClickHandler() {
|
|
public void onClick(ClickEvent event) {
|
|
if (imageUrls != null && currentIndex > 0) {
|
|
currentIndex--;
|
|
image.setUrl(imageUrls.get(currentIndex));
|
|
label.setHTML((currentIndex+1)+" of " + imageUrls.size());
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
protected void setImages(ArrayList<String> imageUrls) {
|
|
this.imageUrls = imageUrls;
|
|
if (imageUrls.size() == 0) {
|
|
mainPanel.remove(controlPanel);
|
|
return;
|
|
}
|
|
image.setUrl(imageUrls.get(0));
|
|
GWT.log("images no. " + imageUrls.size());
|
|
if (imageUrls.size() < 2) {
|
|
prev.setVisible(false);
|
|
next.setVisible(false);
|
|
} else {
|
|
enableSwitch(imageUrls);
|
|
}
|
|
}
|
|
|
|
private void enableSwitch(ArrayList<String> imageUrls) {
|
|
label.setHTML("1 of " + imageUrls.size());
|
|
currentIndex = 0;
|
|
}
|
|
|
|
protected String getSelectedImageURL() {
|
|
return image.getUrl();
|
|
}
|
|
}
|