X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fwamblee%2Fphotos%2Fwicket%2FHomePage.java;h=4a34bc0da750792de94ece9fb53d7a0605f90e0d;hb=387bef406fe4b276473d4063c4d227fce6ff2e11;hp=a7aa1a3785d1568ec50504b57d24db05aed19460;hpb=6c8dd0362c097e5d3e40ca066b67ce6834e555df;p=photos diff --git a/src/main/java/org/wamblee/photos/wicket/HomePage.java b/src/main/java/org/wamblee/photos/wicket/HomePage.java index a7aa1a3..4a34bc0 100644 --- a/src/main/java/org/wamblee/photos/wicket/HomePage.java +++ b/src/main/java/org/wamblee/photos/wicket/HomePage.java @@ -15,20 +15,12 @@ */ package org.wamblee.photos.wicket; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; import java.util.List; import java.util.logging.Logger; import javax.inject.Inject; import org.apache.wicket.PageParameters; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.resource.ByteArrayResource; import org.wamblee.photos.model.Album; import org.wamblee.photos.model.Photo; import org.wamblee.photos.model.PhotoEntry; @@ -73,7 +65,6 @@ public class HomePage extends BasePage { @Override public void onClick() { - System.out.println("Entry " + path + " was clicked"); PageParameters pars = new PageParameters(); pars.put("path", path); setResponsePage(HomePage.class, pars); @@ -96,8 +87,6 @@ public class HomePage extends BasePage { path = "/"; } - add(new Label("message", "Hello world!")); - System.out.println("Currently logged in user: " + user); List usernames = userAdmin.getUsers(); @@ -121,96 +110,9 @@ public class HomePage extends BasePage { PhotoEntry current = authorized.getEntry(path); if (current instanceof Photo) { - throw new RuntimeException("Photo entry viewing not yet implemented"); - } - - Album album = (Album) current; - - int ientry = 0; - int irow = 0; - RepeatingView row = new RepeatingView("row"); - add(row); - while (irow < 5 && ientry < album.size()) { - int icolumn = 0; - WebMarkupContainer columns = new WebMarkupContainer(row.newChildId()); - row.add(columns); - RepeatingView column = new RepeatingView("column"); - columns.add(column); - while (icolumn < 5 && ientry < album.size()) { - WebMarkupContainer thumbnail = new WebMarkupContainer(column.newChildId()); - column.add(thumbnail); - - final PhotoEntry entry = album.getEntry(ientry); - 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 Label("name", album.getEntry(ientry).getId())); - icolumn++; - ientry++; - } - irow++; - } - } - - 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); + add(new PhotoPanel("content", parameters)); } 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); + add(new AlbumPanel("content", parameters)); } } } \ No newline at end of file