Putting the album content in its own panel.
[photos] / src / main / java / org / wamblee / photos / wicket / HomePage.java
index 26331e6fec69d83494ca993d8b1aafd61a8c3ba5..0a55e869c56cac75a824584ac5c073dda930b14e 100644 (file)
 package org.wamblee.photos.wicket;
 
 import java.util.List;
-
+import java.util.logging.Logger;
 import javax.inject.Inject;
 
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
 import org.wamblee.photos.model.Album;
+import org.wamblee.photos.model.Photo;
 import org.wamblee.photos.model.PhotoEntry;
 import org.wamblee.photos.model.plumbing.AllPhotos;
 import org.wamblee.photos.model.plumbing.AuthorizedPhotos;
@@ -33,21 +35,45 @@ 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
-    private User user;
+    private transient User user;
 
     @Inject
-    private UserAdministration userAdmin;
+    private transient UserAdministration userAdmin;
+
+    // TODO the state should be stored as a path.
 
     @Inject
     @AllPhotos
-    private Album album;
+    private transient Album album;
 
     @Inject
     @AuthorizedPhotos
-    private Album authorized;
+    private transient Album authorized;
+
+    private class SerializableEntryLink extends Link {
+
+        private String path;
+
+        public SerializableEntryLink(String aId, String aPath) {
+            super(aId);
+            path = aPath;
+        }
+
+        @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.
@@ -56,6 +82,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);
@@ -77,5 +110,15 @@ public class HomePage extends BasePage {
             PhotoEntry entry = authorized.getEntry(i);
             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;
+
+        add(new AlbumPanel("content", parameters));
     }
-}
+}
\ No newline at end of file