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;
import org.wamblee.security.authentication.User;
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 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.
- *
- * @param parameters
- * Page parameters
+ *
+ * @param parameters Page parameters
*/
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);
System.out.println("Entries: " + album.size());
for (int i = 0; i < album.size(); i++) {
PhotoEntry entry = album.getEntry(i);
- System.out.println("Entry " + i + " " + entry.getId() + " " +
- entry.getPath());
+ System.out.println("Entry " + i + " " + entry.getId() + " " + entry.getPath());
+ }
+
+ System.out.println("Authorized Entries: " + authorized.size());
+ for (int i = 0; i < authorized.size(); i++) {
+ 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