package org.jboss.seam.wiki.core.upload.editor;
import org.jboss.seam.wiki.core.model.WikiUploadImage;
import org.jboss.seam.wiki.util.WikiUtil;
public class WikiUploadImageEditor extends UploadEditor<WikiUploadImage> {
public String getIncludeName() {
return "wikiUploadImageEditor";
}
public static final int PREVIEW_SIZE_MIN = 60;
public static final int PREVIEW_SIZE_MAX = 1320;
public static final int PREVIEW_ZOOM_STEP = 120;
private int imagePreviewSize = PREVIEW_SIZE_MIN;
public int getImagePreviewSize() { return imagePreviewSize; }
public void zoomActualSize() {
imagePreviewSize = getInstance().getSizeX();
}
public void zoomPreviewIn() {
if (imagePreviewSize < PREVIEW_SIZE_MAX) imagePreviewSize = imagePreviewSize + PREVIEW_ZOOM_STEP;
}
public void zoomPreviewOut() {
if (imagePreviewSize > PREVIEW_SIZE_MIN && (imagePreviewSize - PREVIEW_ZOOM_STEP) > PREVIEW_SIZE_MIN)
imagePreviewSize = imagePreviewSize - PREVIEW_ZOOM_STEP;
else imagePreviewSize = PREVIEW_SIZE_MIN;
}
public boolean beforePersist() {
generateThumbnailData();
return super.beforePersist();
}
public boolean beforeUpdate() {
generateThumbnailData();
return super.beforeUpdate();
}
protected void generateThumbnailData() {
getInstance().setThumbnailData(
WikiUtil.resizeImage(getInstance().getData(), getInstance().getContentType(), getThumbnailWidth())
);
}
public void selectThumbnail() {
if (getInstance().getThumbnail() == WikiUploadImage.Thumbnail.FULL.getFlag())
imagePreviewSize = getInstance().getSizeX();
else
imagePreviewSize = getThumbnailWidth();
}
public int getThumbnailWidth() {
int thumbnailWidth = 80;
// TODO: We could make these sizes customizable
if (getInstance().getThumbnail() == WikiUploadImage.Thumbnail.MEDIUM.getFlag()) {
thumbnailWidth = 160;
} else if (getInstance().getThumbnail() == WikiUploadImage.Thumbnail.LARGE.getFlag()) {
thumbnailWidth = 320;
}
return thumbnailWidth;
}
}