*/
package org.wamblee.photos.wicket;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
import java.io.Serializable;
import java.util.logging.Logger;
import javax.inject.Inject;
final PhotoEntry entry = album.getEntry(ientry.getValue());
Link link = new SerializableEntryLink("thumbnail", entry.getPath());
thumbnail.add(link);
- //ImageData data = getData(entry);
-
- // TODO very inefficient. all data is loaded when generating the page.
- //link.add(new Image("image",
- // new ByteArrayResource(data.getContentType(), data.getData())));
-
- //link.add(new Image("image",
- // new ContextRelativeResource("image/thumbnail" + entry.getPath())));
-
- //final String url = "/image/thumbnail/" + entry.getPath();
+ final ValueHolder<String> pathinfo = new MyValueHolder<String>();
if (entry instanceof Photo) {
- link.add(new Image("image") {
- @Override
- protected void onComponentTag(ComponentTag tag) {
- tag.put("src",
- context.getContextPath() + "/image/thumbnail/" + entry.getPath());
- }
- });
+ pathinfo.setValue("/image/thumbnail/" + entry.getPath());
} else {
- link.add(new Image("image") {
- @Override
- protected void onComponentTag(ComponentTag tag) {
- //tag.put("src", context.getContextPath() + "/resources/folder.png" +
- // entry.getPath());
- tag.put("src", context.getContextPath() + "/image/resource/folder.png");
- }
- });
+ pathinfo.setValue("/image/resource/folder.png");
}
+ link.add(new Image("image") {
+ @Override
+ protected void onComponentTag(ComponentTag tag) {
+ tag.put("src", context.getContextPath() + pathinfo.getValue());
+ }
+ });
link.add(new Label("name", album.getEntry(ientry.getValue()).getId()));
icolumn++;
}
return (Album) current;
}
-
- public static final class ImageData {
- private String contentType;
- private byte[] data;
-
- public ImageData(String aContentType, byte[] aData) {
- contentType = aContentType;
- data = aData;
- }
-
- public String getContentType() {
- return contentType;
- }
-
- public byte[] getData() {
- return data;
- }
- }
-
- private ImageData getData(PhotoEntry aEntry) {
- if (aEntry instanceof Photo) {
- return getData((Photo) aEntry);
- } else if (aEntry instanceof Album) {
- return getData((Album) aEntry);
- } else {
- throw new RuntimeException("Unsupported type " + aEntry.getClass().getName());
- }
- }
-
- private ImageData getData(Photo aPhoto) {
- try (InputStream is = aPhoto.getThumbNail()) {
- return new ImageData("image/jpeg", getBytes(is));
- }
- catch (IOException e) {
- // to improve.
- throw new RuntimeException("Cannot read photo", e);
- }
- }
-
- private byte[] getBytes(InputStream is) throws IOException {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] block = new byte[1024];
- int n = is.read(block);
- while (n > 0) {
- bos.write(block, 0, n);
- n = is.read(block);
- }
- return bos.toByteArray();
- }
-
- private ImageData getData(Album aAlbum) {
- try (InputStream is = getClass().getResourceAsStream("folder.png")) {
- return new ImageData("image/png", getBytes(is));
- }
- catch (IOException e) {
- throw new RuntimeException("Cannot read album jpg", e);
- }
- }
}
\ No newline at end of file