You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ma...@apache.org on 2010/12/09 00:11:08 UTC

svn commit: r1043766 - in /incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui: UIExtensionFactory.java vaadin/Activator.java vaadin/VaadinClient.java

Author: marrs
Date: Wed Dec  8 23:11:07 2010
New Revision: 1043766

URL: http://svn.apache.org/viewvc?rev=1043766&view=rev
Log:
First go at implementing UI extensions.

Modified:
    incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/UIExtensionFactory.java
    incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java
    incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java

Modified: incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/UIExtensionFactory.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/UIExtensionFactory.java?rev=1043766&r1=1043765&r2=1043766&view=diff
==============================================================================
--- incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/UIExtensionFactory.java (original)
+++ incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/UIExtensionFactory.java Wed Dec  8 23:11:07 2010
@@ -23,7 +23,7 @@ import java.util.Map;
 import com.vaadin.ui.Component;
 
 /**
- * A {@link org.apache.ace.webui.UIExtensionFactory} creates components for named extension points in the Vaadin UI.
+ * Creates components for named extension points in the Vaadin UI.
  */
 public interface UIExtensionFactory {
     public static final String EXTENSION_POINT = "extension_point";

Modified: incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java?rev=1043766&r1=1043765&r2=1043766&view=diff
==============================================================================
--- incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java (original)
+++ incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/Activator.java Wed Dec  8 23:11:07 2010
@@ -18,16 +18,23 @@
  */
 package org.apache.ace.webui.vaadin;
 
+import java.util.Map;
 import java.util.Properties;
 
 import javax.servlet.http.HttpServlet;
 
+import org.apache.ace.client.repository.stateful.StatefulGatewayObject;
 import org.apache.ace.http.listener.constants.HttpConstants;
+import org.apache.ace.webui.UIExtensionFactory;
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.http.HttpService;
 
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Button.ClickEvent;
+
 public class Activator extends DependencyActivatorBase {
     @Override
     public void init(BundleContext context, DependencyManager manager) throws Exception {
@@ -59,6 +66,22 @@ public class Activator extends Dependenc
 //            })
 //            .setInterface(EventHandler.class.getName(), new Properties() {{ put(EventConstants.EVENT_TOPIC, "*"); }} )
 //        );
+        
+        // shows off components that are contributed by extensions
+        manager.add(createComponent()
+            .setInterface(UIExtensionFactory.class.getName(), null)
+            .setImplementation(new UIExtensionFactory() {
+                public Component create(Map<String, Object> context) {
+                    final StatefulGatewayObject target = (StatefulGatewayObject) context.get("object");
+                    return new Button("i", new Button.ClickListener() {
+                        public void buttonClick(ClickEvent event) {
+                            event.getButton().getWindow().showNotification(
+                                target.getID(), "current version is " + target.getCurrentVersion());
+                        }
+                    });
+                }
+            })
+        );
     }
     
     @Override

Modified: incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java?rev=1043766&r1=1043765&r2=1043766&view=diff
==============================================================================
--- incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java (original)
+++ incubator/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java Wed Dec  8 23:11:07 2010
@@ -56,6 +56,7 @@ import org.apache.ace.client.repository.
 import org.apache.ace.client.repository.repository.LicenseRepository;
 import org.apache.ace.client.repository.stateful.StatefulGatewayObject;
 import org.apache.ace.client.repository.stateful.StatefulGatewayRepository;
+import org.apache.ace.webui.UIExtensionFactory;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
 import org.osgi.framework.BundleContext;
@@ -570,6 +571,20 @@ public class VaadinClient extends com.va
             private void init(Component component) {
                 populate();
                 DependencyManager dm = component.getDependencyManager();
+                component.add(dm.createServiceDependency()
+                    .setInstanceBound(true)
+                    .setService(UIExtensionFactory.class)
+                    .setCallbacks("addExtension", "removeExtension")
+                );
+            }
+            private List<UIExtensionFactory> m_factories = new ArrayList<UIExtensionFactory>();
+            public void addExtension(UIExtensionFactory factory) {
+                m_factories.add(factory);
+                populate();
+            }
+            public void removeExtension(UIExtensionFactory factory) {
+                m_factories.remove(factory);
+                populate();
             }
             public void populate() {
                 removeAllItems();
@@ -595,22 +610,12 @@ public class VaadinClient extends com.va
                 item.getItemProperty(OBJECT_NAME).setValue(statefulTarget.getID());
                 item.getItemProperty(OBJECT_DESCRIPTION).setValue("TODO");
                 HorizontalLayout buttons = new HorizontalLayout();
-                Button startStopButton = new Button("start");
-                startStopButton.addListener(new Button.ClickListener() {
-                    public void buttonClick(ClickEvent event) {
-                        // TODO start/stop the cloud node
-                        String caption = event.getButton().getCaption();
-                        System.out.println("Action: " + caption);
-                        if ("start".equals(caption)) {
-                            event.getButton().setCaption("stop");
-                        }
-                        else {
-                            event.getButton().setCaption("start");
-                        }
-                        m_table.requestRepaint();
-                    }
-                });
-                buttons.addComponent(startStopButton);
+                Map<String, Object> context = new HashMap<String, Object>();
+                context.put("object", statefulTarget);
+                for (UIExtensionFactory factory : m_factories) {
+                    com.vaadin.ui.Component component = factory.create(context);
+                    buttons.addComponent(component);
+                }
                 item.getItemProperty(ACTIONS).setValue(buttons);
             }
             private void change(StatefulGatewayObject statefulTarget) {