Move Language selection links to LanuagePanel. Clean up of sidebar stuff - introduction of SidebarPage

git-svn-id: https://svn.apache.org/repos/asf/karaf/sandbox/pieber/karaf-webconsole/trunk@1158443 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/BasePage.java b/core/src/main/java/org/apache/karaf/webconsole/core/BasePage.java
index 34a24db..463dba9 100644
--- a/core/src/main/java/org/apache/karaf/webconsole/core/BasePage.java
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/BasePage.java
@@ -1,15 +1,16 @@
 package org.apache.karaf.webconsole.core;
 
-import java.util.Collections;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
 
+import org.apache.karaf.webconsole.core.internal.LanguagePanel;
 import org.apache.wicket.ResourceReference;
 import org.apache.wicket.markup.html.CSSPackageResource;
 import org.apache.wicket.markup.html.WebPage;
 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.model.IModel;
 import org.apache.wicket.model.util.ListModel;
 import org.ops4j.pax.wicket.api.PaxWicketBean;
 
@@ -18,6 +19,9 @@
     @PaxWicketBean(name = "tabs")
     private List<ConsoleTab> tabs;
 
+    // list of supported Locales - should be replaced by resolver/detector or something similar
+    private IModel<List<Locale>> supportedLocales = new ListModel<Locale>(Arrays.asList(Locale.FRENCH, Locale.ENGLISH));
+
     public BasePage() {
         add(CSSPackageResource.getHeaderContribution(BasePage.class, "style.css"));
         add(CSSPackageResource.getHeaderContribution(BasePage.class, "grid.css"));
@@ -26,39 +30,9 @@
 
         add(new Image("karafLogo", new ResourceReference(BasePage.class, "images/karaf-logo.png")));
 
-        Link linkFr = new Link("goFrench") {
-			@Override
-			public void onClick() {
-				getSession().setLocale(Locale.FRANCE);
-			}
-		};
-
-        Link linkEn = new Link("goEnglish") {
-			@Override
-			public void onClick() {
-				getSession().setLocale(Locale.ENGLISH);
-			}
-		};
-
-
-        add(linkFr);
-        linkFr.add(new Image("frenchFlag", new ResourceReference(BasePage.class, "images/french-flag.jpeg")));
-
-        add(linkEn);
-        linkEn.add(new Image("englishFlag", new ResourceReference(BasePage.class, "images/english-flag.jpeg")));
+        add(new LanguagePanel("languagePanel", supportedLocales));
 
         add(new NavigationPanel("navigationPanel", new ListModel<ConsoleTab>(tabs)));
-
-        List<Class> subPages = getSubPages();
-        if (subPages != null && subPages.size() > 0) {
-            add(new SidebarPanel("sidebar", getClass(), subPages));
-        } else {
-            add(new Label("sidebar").setRenderBodyOnly(true));
-        }
-    }
-
-    protected List<Class> getSubPages() {
-        return Collections.emptyList();
     }
 
 }
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/NavigationPanel.java b/core/src/main/java/org/apache/karaf/webconsole/core/NavigationPanel.java
index de3ca48..f475a7d 100644
--- a/core/src/main/java/org/apache/karaf/webconsole/core/NavigationPanel.java
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/NavigationPanel.java
@@ -1,5 +1,8 @@
 package org.apache.karaf.webconsole.core;
 
+import java.util.LinkedList;
+import java.util.List;
+
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -8,9 +11,6 @@
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
 
-import java.util.LinkedList;
-import java.util.List;
-
 public class NavigationPanel extends Panel {
 
     public NavigationPanel(String id, IModel<List<ConsoleTab>> model) {
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/SidebarPage.java b/core/src/main/java/org/apache/karaf/webconsole/core/SidebarPage.java
new file mode 100644
index 0000000..cbec73d
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/SidebarPage.java
@@ -0,0 +1,22 @@
+package org.apache.karaf.webconsole.core;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.karaf.webconsole.core.internal.SidebarPanel;
+import org.apache.wicket.Page;
+import org.apache.wicket.model.util.ListModel;
+
+public class SidebarPage extends BasePage {
+
+    public SidebarPage() {
+        ListModel<Class<? extends Page>> listModel = new ListModel<Class<? extends Page>>(getSubPages());
+
+        add(new SidebarPanel("sidebar", getClass(), listModel));
+    }
+
+    protected List<Class<? extends Page>> getSubPages() {
+        return Collections.emptyList();
+    }
+
+}
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/SidebarPanel.java b/core/src/main/java/org/apache/karaf/webconsole/core/SidebarPanel.java
deleted file mode 100644
index 8342dd5..0000000
--- a/core/src/main/java/org/apache/karaf/webconsole/core/SidebarPanel.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.apache.karaf.webconsole.core;
-
-import java.util.List;
-
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.util.ListModel;
-
-public class SidebarPanel<T extends Page> extends Panel {
-
-    public SidebarPanel(String id, Class<T> basePage, List<Class<Page>> subPages) {
-        super(id);
-
-        add(new BookmarkablePageLink<T>("masterPageLink", basePage).add(new Label("masterPageLabel", basePage.getName())));
-
-        add(new ListView<Class<Page>>("subPageLinks", new ListModel<Class<Page>>(subPages)) {
-            @Override
-            protected void populateItem(ListItem<Class<Page>> item) {
-                BookmarkablePageLink<T> link = new BookmarkablePageLink<T>("subPageLink", item.getModelObject());
-                link.add(new Label("subPageLabel", item.getModelObject().getName()));
-                item.add(link);
-            }
-        });
-    }
-
-}
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/internal/LanguagePanel.java b/core/src/main/java/org/apache/karaf/webconsole/core/internal/LanguagePanel.java
new file mode 100644
index 0000000..9016719
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/internal/LanguagePanel.java
@@ -0,0 +1,36 @@
+package org.apache.karaf.webconsole.core.internal;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.karaf.webconsole.core.BasePage;
+import org.apache.wicket.ResourceReference;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+
+public class LanguagePanel extends Panel {
+
+    public LanguagePanel(String id, IModel<List<Locale>> locales) {
+        super(id);
+
+        add(new ListView<Locale>("languages", locales) {
+            @Override
+            protected void populateItem(final ListItem<Locale> item) {
+                final Locale model = item.getModelObject();
+                Image flagImage = new Image("flag", new ResourceReference(BasePage.class, "images/" + model.getDisplayName(Locale.ENGLISH).toLowerCase() + "-flag.png"));
+                Link<Void> link = new Link<Void>("languageLink") {
+                    @Override
+                    public void onClick() {
+                        getSession().setLocale(model);
+                    }
+                };
+                item.add(link.add(flagImage));
+            }
+        });
+    }
+
+}
diff --git a/core/src/main/java/org/apache/karaf/webconsole/core/internal/SidebarPanel.java b/core/src/main/java/org/apache/karaf/webconsole/core/internal/SidebarPanel.java
new file mode 100644
index 0000000..4c9be6e
--- /dev/null
+++ b/core/src/main/java/org/apache/karaf/webconsole/core/internal/SidebarPanel.java
@@ -0,0 +1,28 @@
+package org.apache.karaf.webconsole.core.internal;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.util.ListModel;
+
+public class SidebarPanel extends Panel {
+
+    public SidebarPanel(String id, Class<? extends Page> basePage, ListModel<Class<? extends Page>> listModel) {
+        super(id, listModel);
+
+        add(new BookmarkablePageLink<Page>("masterPageLink", basePage).add(new Label("masterPageLabel", basePage.getName())));
+
+        add(new ListView<Class<? extends Page>>("subPageLinks", listModel) {
+            @Override
+            protected void populateItem(ListItem<Class<? extends Page>> item) {
+                BookmarkablePageLink<Page> link = new BookmarkablePageLink<Page>("subPageLink", item.getModelObject());
+                link.add(new Label("subPageLabel", item.getModelObject().getName()));
+                item.add(link);
+            }
+        });
+    }
+
+}
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/BasePage.html b/core/src/main/resources/org/apache/karaf/webconsole/core/BasePage.html
index 0e4d868..6c83638 100644
--- a/core/src/main/resources/org/apache/karaf/webconsole/core/BasePage.html
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/BasePage.html
@@ -13,30 +13,19 @@
         </div>
         <div class="grid_9">
             <h3>Administration console</h3>
-            <a href="#" wicket:id="goFrench">
-                <img wicket:id="frenchFlag" alt="french flag" height="14" width="20" />
-            </a>
-            <a href="#" wicket:id="goEnglish">
-                <img wicket:id="englishFlag" alt="english flag" height="14" width="20" />
-            </a>
+
+            <div wicket:id="languagePanel" id="languages">Languages go here</div>
         </div>
 
         <div class="clear"></div>
-
         <div class="grid_12">
             <div wicket:id="navigationPanel">Navigation goes here</div>
         </div>
 
         <div class="clear"></div>
-
-        <div class="grid_3">
-            <div wicket:id="sidebar">Sidebar goes here</div>
-        </div>
-
-        <div class="grid_9">
+        <div class="grid_12">
             <wicket:child />
         </div>
-
         <div class="clear"></div>
 
         <div class="grid_12">
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/SidebarPage.html b/core/src/main/resources/org/apache/karaf/webconsole/core/SidebarPage.html
new file mode 100644
index 0000000..df9f17a
--- /dev/null
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/SidebarPage.html
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Karaf wicket console</title>
+</head>
+
+<body>
+    <div class="container container_12">
+        <div class="grid_3">
+            <img wicket:id="karafLogo" alt="karaf-logo" height="70" width="150" />
+        </div>
+        <div class="grid_9">
+            <h3>Administration console</h3>
+
+            <div wicket:id="languagePanel" id="languages">Languages go here</div>
+        </div>
+
+        <div class="clear"></div>
+
+        <div class="grid_12">
+            <div wicket:id="navigationPanel">Navigation goes here</div>
+        </div>
+
+        <div class="clear"></div>
+        <div class="grid_3">
+            <div wicket:id="sidebar">Sidebar goes here</div>
+        </div>
+        <div class="grid_9">
+            <wicket:child />
+        </div>
+        <div class="clear"></div>
+
+        <div class="grid_12">
+            <div wicket:id="footer">Footer</div>
+        </div>
+    </div>
+</body>
+</html>
\ No newline at end of file
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/images/english-flag.jpeg b/core/src/main/resources/org/apache/karaf/webconsole/core/images/english-flag.png
similarity index 100%
rename from core/src/main/resources/org/apache/karaf/webconsole/core/images/english-flag.jpeg
rename to core/src/main/resources/org/apache/karaf/webconsole/core/images/english-flag.png
Binary files differ
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/images/french-flag.jpeg b/core/src/main/resources/org/apache/karaf/webconsole/core/images/french-flag.jpeg
deleted file mode 100644
index 0c72cef..0000000
--- a/core/src/main/resources/org/apache/karaf/webconsole/core/images/french-flag.jpeg
+++ /dev/null
Binary files differ
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/internal/LanguagePanel.html b/core/src/main/resources/org/apache/karaf/webconsole/core/internal/LanguagePanel.html
new file mode 100644
index 0000000..275e99e
--- /dev/null
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/internal/LanguagePanel.html
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Karaf wicket console</title>
+</head>
+<body>
+
+    <wicket:panel>
+        <ul>
+            <li wicket:id="languages">
+                <a href="#" wicket:id="languageLink">
+                    <img wicket:id="flag" alt="flag" height="14" width="20" />
+                </a>
+            </li>
+        </ul>
+    </wicket:panel>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/SidebarPanel.html b/core/src/main/resources/org/apache/karaf/webconsole/core/internal/SidebarPanel.html
similarity index 100%
rename from core/src/main/resources/org/apache/karaf/webconsole/core/SidebarPanel.html
rename to core/src/main/resources/org/apache/karaf/webconsole/core/internal/SidebarPanel.html
diff --git a/core/src/main/resources/org/apache/karaf/webconsole/core/style.css b/core/src/main/resources/org/apache/karaf/webconsole/core/style.css
index 58bb9b0..51600de 100644
--- a/core/src/main/resources/org/apache/karaf/webconsole/core/style.css
+++ b/core/src/main/resources/org/apache/karaf/webconsole/core/style.css
@@ -30,10 +30,14 @@
     width: 250px;
 }
 
-#sidebar ul li {
+#sidebar ul li, #languages ul li {
     list-style-type: none;
 }
 
+#languages ul li {
+    display: inline;
+}
+
 #topmenu ul li, #top-panel ul li {
     display: inline;
 }
diff --git a/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/HomePage.java b/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/HomePage.java
index feedd35..d18b75b 100644
--- a/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/HomePage.java
+++ b/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/HomePage.java
@@ -5,12 +5,12 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import org.apache.karaf.webconsole.core.BasePage;
+import org.apache.karaf.webconsole.core.SidebarPage;
+import org.apache.wicket.Page;
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.behavior.SimpleAttributeModifier;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.ops4j.pax.wicket.api.PaxWicketBean;
@@ -22,7 +22,7 @@
 /**
  * Homepage
  */
-public class HomePage extends BasePage {
+public class HomePage extends SidebarPage {
 
     @PaxWicketBean(name = "blueprintBundleContext")
     private BundleContext context;
@@ -153,8 +153,8 @@
     }
 
     @Override
-    protected List<Class> getSubPages() {
-        List<Class> subpages = new LinkedList<Class>();
+    protected List<Class<? extends Page>> getSubPages() {
+        List<Class<? extends Page>> subpages = new LinkedList<Class<? extends Page>>();
         subpages.add(ConfigurationsPage.class);
         subpages.add(EventsPage.class);
         return subpages;