Same styling of photo albums as with tapestry based application.
[photos] / src / main / java / org / wamblee / photos / wicket / HomePage.java
index 289f783e35340e3358eb48ecb0e5669475007446..a7aa1a3785d1568ec50504b57d24db05aed19460 100644 (file)
@@ -19,6 +19,7 @@ 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;
@@ -41,6 +42,8 @@ import org.wamblee.security.authentication.UserAdministration;
  */
 public class HomePage extends BasePage {
 
+    private static final Logger LOGGER = Logger.getLogger(HomePage.class.getName());
+
     private static final long serialVersionUID = 1L;
 
     @Inject
@@ -71,9 +74,14 @@ 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);
         }
     }
 
+    private String path;
+
     /**
      * Constructor that is invoked when page is invoked without a session.
      *
@@ -81,6 +89,13 @@ public class HomePage extends BasePage {
      */
     public HomePage(final PageParameters parameters) throws Exception {
         super();
+
+        path = parameters.getString("path", "/");
+        if (!path.startsWith("/")) {
+            info("Invalid album '" + path + "', showing root album instead");
+            path = "/";
+        }
+
         add(new Label("message", "Hello world!"));
 
         System.out.println("Currently logged in user: " + user);
@@ -103,21 +118,29 @@ public class HomePage extends BasePage {
             System.out.println("Entry " + i + " " + entry.getId() + " " + entry.getPath());
         }
 
+        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 < authorized.size()) {
+        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 < authorized.size()) {
+            while (icolumn < 5 && ientry < album.size()) {
                 WebMarkupContainer thumbnail = new WebMarkupContainer(column.newChildId());
                 column.add(thumbnail);
 
-                final PhotoEntry entry = authorized.getEntry(ientry);
+                final PhotoEntry entry = album.getEntry(ientry);
                 Link link = new SerializableEntryLink("thumbnail", entry.getPath());
                 thumbnail.add(link);
                 ImageData data = getData(entry);
@@ -125,7 +148,7 @@ public class HomePage extends BasePage {
                 // 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()));
+                link.add(new Label("name", album.getEntry(ientry).getId()));
                 icolumn++;
                 ientry++;
             }