You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ld...@apache.org on 2011/08/17 12:58:41 UTC

svn commit: r1158621 - in /karaf/sandbox/pieber/karaf-webconsole/trunk: core/src/main/java/org/apache/karaf/webconsole/core/ core/src/main/java/org/apache/karaf/webconsole/core/internal/ core/src/main/resources/ core/src/main/resources/org/apache/karaf...

Author: ldywicki
Date: Wed Aug 17 10:58:41 2011
New Revision: 1158621

URL: http://svn.apache.org/viewvc?rev=1158621&view=rev
Log:
Implementation of dashboard widgets

Added:
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationReference.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationSetter.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/Initializer.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/dashboard.css
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/wicket.properties
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/KarafFeaturesWidget.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.java
      - copied, changed from r1158443, karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.html
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.html
Removed:
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.html
Modified:
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/DashboardWidget.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/DashboardPage.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/WicketApplication.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/DashboardPage.html
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java
    karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/wicket.xml

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationReference.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationReference.java?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationReference.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationReference.java Wed Aug 17 10:58:41 2011
@@ -0,0 +1,15 @@
+package org.apache.karaf.webconsole.core;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.Session;
+
+public interface ApplicationReference {
+
+    Application getApplication();
+
+    Session getSession();
+
+    RequestCycle getRequestCycle();
+
+}

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationSetter.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationSetter.java?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationSetter.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/ApplicationSetter.java Wed Aug 17 10:58:41 2011
@@ -0,0 +1,28 @@
+package org.apache.karaf.webconsole.core;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.Session;
+
+/**
+ * Helper class which calls {@link Application#set(Application)} with given
+ * instance.
+ */
+public class ApplicationSetter {
+
+    private ApplicationReference reference;
+
+    public ApplicationSetter(ApplicationReference reference) {
+        this.reference = reference;
+    }
+
+    public void initialize() {
+        Application.set(reference.getApplication());
+        Session.set(reference.getSession());
+    }
+
+    public void destroy() {
+        Application.unset();
+        Session.unset();
+    }
+
+}

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/DashboardWidget.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/DashboardWidget.java?rev=1158621&r1=1158620&r2=1158621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/DashboardWidget.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/DashboardWidget.java Wed Aug 17 10:58:41 2011
@@ -4,6 +4,6 @@ import org.apache.wicket.markup.html.pan
 
 public interface DashboardWidget {
 
-    Panel getWidgetPanel();
+    Panel getWidgetPanel(String id);
 
 }

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/DashboardPage.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/DashboardPage.java?rev=1158621&r1=1158620&r2=1158621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/DashboardPage.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/DashboardPage.java Wed Aug 17 10:58:41 2011
@@ -4,6 +4,10 @@ import java.util.List;
 
 import org.apache.karaf.webconsole.core.BasePage;
 import org.apache.karaf.webconsole.core.DashboardWidget;
+import org.apache.wicket.markup.html.CSSPackageResource;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.util.ListModel;
 import org.ops4j.pax.wicket.api.PaxWicketBean;
 
 public class DashboardPage extends BasePage {
@@ -11,12 +15,16 @@ public class DashboardPage extends BaseP
     @PaxWicketBean(name = "widgets")
     private List<DashboardWidget> widgets;
 
-	public DashboardPage() {
+    public DashboardPage() {
+        add(CSSPackageResource.getHeaderContribution(DashboardPage.class, "dashboard.css"));
 
-	    for (DashboardWidget widget : widgets) {
-	        add(widget.getWidgetPanel());
-	    }
+        add(new ListView<DashboardWidget>("widgets", new ListModel<DashboardWidget>(widgets)) {
+            @Override
+            protected void populateItem(ListItem<DashboardWidget> item) {
+                item.add(item.getModelObject().getWidgetPanel("widget"));
+            }
+        });
 
-	}
+    }
 
 }

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/Initializer.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/Initializer.java?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/Initializer.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/Initializer.java Wed Aug 17 10:58:41 2011
@@ -0,0 +1,52 @@
+package org.apache.karaf.webconsole.core.internal;
+
+import java.util.Hashtable;
+
+import org.apache.karaf.webconsole.core.ApplicationReference;
+import org.apache.wicket.Application;
+import org.apache.wicket.IDestroyer;
+import org.apache.wicket.IInitializer;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.Session;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceRegistration;
+
+public class Initializer implements IInitializer, IDestroyer {
+
+    private BundleContext context;
+    private ServiceRegistration registration;
+
+    public Initializer() {
+        context = FrameworkUtil.getBundle(getClass()).getBundleContext();
+    }
+
+    public void init(final Application application) {
+        Hashtable<String, String> properties = new Hashtable<String, String>();
+        properties.put("applicationKey", application.getApplicationKey());
+
+//        // access session from ThreadLocal
+//        final Session session = Session.get();
+        ApplicationReference reference = new ApplicationReference() {
+            public Application getApplication() {
+                return application;
+            }
+
+            public Session getSession() {
+                return Session.get();
+            }
+
+            public RequestCycle getRequestCycle() {
+                return RequestCycle.get();
+            }
+        };
+        registration = context.registerService(ApplicationReference.class.getName(), reference, properties);
+    }
+
+    public void destroy(Application application) {
+        if (registration != null) {
+            registration.unregister();
+        }
+    }
+
+}

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/WicketApplication.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/WicketApplication.java?rev=1158621&r1=1158620&r2=1158621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/WicketApplication.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/java/org/apache/karaf/webconsole/core/internal/WicketApplication.java Wed Aug 17 10:58:41 2011
@@ -8,8 +8,7 @@ import org.apache.wicket.protocol.http.W
  * 
  * @see org.code-house.Start#main(String[])
  */
-public class WicketApplication extends WebApplication
-{
+public class WicketApplication extends WebApplication {
 
     public WicketApplication() {
         super();

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/DashboardPage.html
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/DashboardPage.html?rev=1158621&r1=1158620&r2=1158621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/DashboardPage.html (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/DashboardPage.html Wed Aug 17 10:58:41 2011
@@ -7,68 +7,13 @@
 <body>
 
     <wicket:extend>
-        <h1>Welcome in hell</h1>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 1.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 2.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 3.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 4.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 5.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 6.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 7.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 8.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 9.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 10.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 11.
-        </div>
-
-        <div class="grid_3 widget">
-            <h3>Title</h3>
-            This is widget 12.
-        </div>
-
+        <ul id="widgets">
+            <li wicket:id="widgets">
+                <div wicket:id="widget">
+                    Widget content.
+                </div>
+            </li>
+        </ul>
     </wicket:extend>
 
 </body>

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/dashboard.css
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/dashboard.css?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/dashboard.css (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/org/apache/karaf/webconsole/core/internal/dashboard.css Wed Aug 17 10:58:41 2011
@@ -0,0 +1,3 @@
+#widgets li {
+    list-style-type: none;
+}
\ No newline at end of file

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/wicket.properties
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/wicket.properties?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/wicket.properties (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/core/src/main/resources/wicket.properties Wed Aug 17 10:58:41 2011
@@ -0,0 +1 @@
+initializer=org.apache.karaf.webconsole.core.internal.Initializer
\ No newline at end of file

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/KarafFeaturesWidget.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/KarafFeaturesWidget.java?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/KarafFeaturesWidget.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/KarafFeaturesWidget.java Wed Aug 17 10:58:41 2011
@@ -0,0 +1,20 @@
+package org.apache.karaf.webconsole.osgi.internal;
+
+import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.webconsole.core.DashboardWidget;
+import org.apache.karaf.webconsole.osgi.internal.widget.FeaturesWidgetPanel;
+import org.apache.wicket.markup.html.panel.Panel;
+
+public class KarafFeaturesWidget implements DashboardWidget {
+
+    private final FeaturesService service;
+
+    public KarafFeaturesWidget(FeaturesService service) {
+        this.service = service;
+    }
+
+    public Panel getWidgetPanel(String id) {
+        return new FeaturesWidgetPanel(id, service);
+    }
+
+}

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java?rev=1158621&r1=1158620&r2=1158621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java Wed Aug 17 10:58:41 2011
@@ -1,23 +1,21 @@
 package org.apache.karaf.webconsole.osgi.internal;
 
 import org.apache.karaf.webconsole.core.DashboardWidget;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.karaf.webconsole.osgi.internal.widget.OsgiWidgetPanel;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.osgi.framework.BundleContext;
 
-public class OsgiWidget extends Panel implements DashboardWidget {
+public class OsgiWidget implements DashboardWidget {
 
-    public OsgiWidget(BundleContext context) {
-        super("none");
-
-        add(new Label("bundleCount", "" + context.getBundles().length));
+    private final BundleContext context;
 
-        add(new BookmarkablePageLink<HomePage>("osgiLink", HomePage.class).add(new Label("osgiLinkLabel", "Manage")));
+    public OsgiWidget(BundleContext context) {
+        this.context = context;
+        
     }
 
-    public Panel getWidgetPanel() {
-        return this;
+    public Panel getWidgetPanel(String id) {
+        return new OsgiWidgetPanel(id, context);
     }
 
 }

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.java?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.java (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.java Wed Aug 17 10:58:41 2011
@@ -0,0 +1,32 @@
+package org.apache.karaf.webconsole.osgi.internal.widget;
+
+import org.apache.karaf.features.Feature;
+import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.webconsole.osgi.internal.FeaturesPage;
+import org.apache.karaf.webconsole.osgi.internal.RepositoriesPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.panel.Panel;
+
+public class FeaturesWidgetPanel extends Panel {
+
+    public FeaturesWidgetPanel(String id, FeaturesService service) {
+        super(id);
+
+        try {
+            Feature[] allFeatures = service.listFeatures();
+            Feature[] installed = service.listInstalledFeatures();
+
+            add(new Label("featuresCount", "" + allFeatures.length));
+            add(new Label("installedCount", "" + installed.length));
+            add(new Label("uninstalledCount", "" + (allFeatures.length - installed.length)));
+
+            add(new BookmarkablePageLink<FeaturesPage>("featuresLink", FeaturesPage.class));
+            add(new BookmarkablePageLink<FeaturesPage>("repositoriesLink", RepositoriesPage.class));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+}

Copied: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.java (from r1158443, karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java)
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.java?p2=karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.java&p1=karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java&r1=1158443&r2=1158621&rev=1158621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/OsgiWidget.java (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/java/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.java Wed Aug 17 10:58:41 2011
@@ -1,23 +1,22 @@
-package org.apache.karaf.webconsole.osgi.internal;
+package org.apache.karaf.webconsole.osgi.internal.widget;
 
-import org.apache.karaf.webconsole.core.DashboardWidget;
+import org.apache.karaf.webconsole.osgi.internal.HomePage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.osgi.framework.BundleContext;
 
-public class OsgiWidget extends Panel implements DashboardWidget {
+public class OsgiWidgetPanel extends Panel {
 
-    public OsgiWidget(BundleContext context) {
-        super("none");
+    public OsgiWidgetPanel(String id, BundleContext context) {
+        super(id);
+
+        add(new Label("framework", context.getBundle(0).getSymbolicName()));
+        add(new Label("version", context.getBundle(0).getVersion().toString()));
 
         add(new Label("bundleCount", "" + context.getBundles().length));
 
         add(new BookmarkablePageLink<HomePage>("osgiLink", HomePage.class).add(new Label("osgiLinkLabel", "Manage")));
-    }
 
-    public Panel getWidgetPanel() {
-        return this;
     }
-
 }

Modified: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/wicket.xml
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/wicket.xml?rev=1158621&r1=1158620&r2=1158621&view=diff
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/wicket.xml (original)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/OSGI-INF/blueprint/wicket.xml Wed Aug 17 10:58:41 2011
@@ -11,12 +11,16 @@
     
     <reference id="featuresService" interface="org.apache.karaf.features.FeaturesService"/>
 
-    <!-- he is not ready yet ;-)
     <service interface="org.apache.karaf.webconsole.core.DashboardWidget">
         <bean class="org.apache.karaf.webconsole.osgi.internal.OsgiWidget">
             <argument ref="blueprintBundleContext" />
         </bean>
     </service>
-    -->
+
+    <service interface="org.apache.karaf.webconsole.core.DashboardWidget">
+        <bean class="org.apache.karaf.webconsole.osgi.internal.KarafFeaturesWidget">
+            <argument ref="featuresService" />
+        </bean>
+    </service>
 
 </blueprint>

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.html
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.html?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.html (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/FeaturesWidgetPanel.html Wed Aug 17 10:58:41 2011
@@ -0,0 +1,26 @@
+<?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>
+        <div class="grid_3 widget">
+            <h3>Karaf Features</h3>
+            <p>
+                You have <span wicket:id="featuresCount">10</span> features.
+                <span wicket:id="installedCount">10</span> installed and
+                <span wicket:id="uninstalledCount">10</span> waiting for installation.
+            </p>
+
+            <p>
+                <a wicket:id="featuresLink">Go to feature management</a>
+                <a wicket:id="repositoriesLink">Go to repository management</a>
+            </p>
+        </div>
+    </wicket:panel>
+
+</body>
+</html>
\ No newline at end of file

Added: karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.html
URL: http://svn.apache.org/viewvc/karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.html?rev=1158621&view=auto
==============================================================================
--- karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.html (added)
+++ karaf/sandbox/pieber/karaf-webconsole/trunk/osgi/src/main/resources/org/apache/karaf/webconsole/osgi/internal/widget/OsgiWidgetPanel.html Wed Aug 17 10:58:41 2011
@@ -0,0 +1,28 @@
+<?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>
+        <div class="grid_3 widget">
+            <h3>OSGi</h3>
+            <p>
+                Running framework <span wicket:id="framework">framework</span> in version 
+                <span wicket:id="version">1.0</span>.
+            </p>
+
+            <p>
+                You have <span wicket:id="bundleCount">130</span> bundles installed.
+
+                <a href="#" wicket:id="osgiLink">
+                    <span wicket:id="osgiLinkLabel">Go to OSGi management</span>
+                </a>
+            </p>
+        </div>
+    </wicket:panel>
+
+</body>
+</html>
\ No newline at end of file