- int ientry = 0;
- int irow = 0;
- RepeatingView row = new RepeatingView("row");
- add(row);
- while (irow < 5 && ientry < authorized.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 < authorized.size()) {
- WebMarkupContainer thumbnail = new WebMarkupContainer(column.newChildId());
- column.add(thumbnail);
-
- final PhotoEntry entry = authorized.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", authorized.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);
- } else {
- throw new RuntimeException("Unsupported type " + aEntry.getClass().getName());
- }
- }