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 2012/11/02 14:15:26 UTC

svn commit: r1404958 - in /ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui: UIExtensionFactory.java vaadin/Activator.java vaadin/VaadinClient.java vaadin/component/MainActionToolbar.java

Author: marrs
Date: Fri Nov  2 13:15:26 2012
New Revision: 1404958

URL: http://svn.apache.org/viewvc?rev=1404958&view=rev
Log:
ACE-298 Created an initial implementation, including a 'Hello world' button (which will be removed later).

Modified:
    ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/UIExtensionFactory.java
    ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/Activator.java
    ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/VaadinClient.java
    ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/component/MainActionToolbar.java

Modified: ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/UIExtensionFactory.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/UIExtensionFactory.java?rev=1404958&r1=1404957&r2=1404958&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/UIExtensionFactory.java (original)
+++ ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/UIExtensionFactory.java Fri Nov  2 13:15:26 2012
@@ -32,6 +32,7 @@ public interface UIExtensionFactory {
     public static final String EXTENSION_POINT_VALUE_FEATURE = "feature";
     public static final String EXTENSION_POINT_VALUE_DISTRIBUTION = "distribution";
     public static final String EXTENSION_POINT_VALUE_TARGET = "target";
+    public static final String EXTENSION_POINT_VALUE_MENU = "menu";
     
     /**
      * Creates a UI component for use in the extension point. The contents of the

Modified: ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/Activator.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/Activator.java?rev=1404958&r1=1404957&r2=1404958&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/Activator.java (original)
+++ ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/Activator.java Fri Nov  2 13:15:26 2012
@@ -32,6 +32,7 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.service.http.HttpService;
 
+import com.vaadin.ui.Button;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.Label;
 import com.vaadin.ui.VerticalLayout;
@@ -79,7 +80,17 @@ public class Activator extends Dependenc
                     return vl;
                 }
             })
-            );
+        );
+        
+        manager.add(createComponent()
+            .setInterface(UIExtensionFactory.class.getName(), new Properties() {{ put(UIExtensionFactory.EXTENSION_POINT_KEY, UIExtensionFactory.EXTENSION_POINT_VALUE_MENU); }} )
+            .setImplementation(new UIExtensionFactory() {
+                @Override
+                public Component create(Map<String, Object> context) {
+                    return new Button("Hello world");
+                }
+            })
+        );
     }
 
     @Override

Modified: ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/VaadinClient.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/VaadinClient.java?rev=1404958&r1=1404957&r2=1404958&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/VaadinClient.java (original)
+++ ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/VaadinClient.java Fri Nov  2 13:15:26 2012
@@ -522,12 +522,10 @@ public class VaadinClient extends com.va
         Properties props = new Properties();
         props.put(EventConstants.EVENT_TOPIC, topics);
         props.put(EventConstants.EVENT_FILTER, "(" + SessionFactory.SERVICE_SID + "=" + m_sessionID + ")");
-        // @formatter:off
         m_manager.add(
             m_manager.createComponent()
                 .setInterface(EventHandler.class.getName(), props)
                 .setImplementation(implementation));
-        // @formatter:on
     }
 
     /**
@@ -545,7 +543,8 @@ public class VaadinClient extends com.va
 
     private GridLayout createToolbar() {
         final boolean showLogoutButton = m_useAuth;
-        MainActionToolbar mainActionToolbar = new MainActionToolbar(showLogoutButton) {
+        final DependencyManager manager = m_manager;
+        MainActionToolbar mainActionToolbar = new MainActionToolbar(manager, showLogoutButton) {
             @Override
             protected RepositoryAdmin getRepositoryAdmin() {
                 return m_admin;

Modified: ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/component/MainActionToolbar.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/component/MainActionToolbar.java?rev=1404958&r1=1404957&r2=1404958&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/component/MainActionToolbar.java (original)
+++ ace/trunk/org.apache.ace.webui.vaadin/src/org/apache/ace/webui/vaadin/component/MainActionToolbar.java Fri Nov  2 13:15:26 2012
@@ -19,13 +19,22 @@
 package org.apache.ace.webui.vaadin.component;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.ace.client.repository.RepositoryAdmin;
+import org.apache.ace.webui.UIExtensionFactory;
+import org.apache.felix.dm.DependencyManager;
+import org.osgi.framework.ServiceReference;
 import org.osgi.service.event.EventHandler;
 
 import com.vaadin.ui.Button;
 import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Component;
 import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
 import com.vaadin.ui.Label;
 import com.vaadin.ui.Window.Notification;
 
@@ -267,21 +276,42 @@ public abstract class MainActionToolbar 
     private Button m_revertButton;
     private Button m_logoutButton;
 
+    private final DependencyManager m_manager;
+    private final ConcurrentHashMap<ServiceReference, UIExtensionFactory> m_extensions = new ConcurrentHashMap<ServiceReference, UIExtensionFactory>();
+
     /**
      * Creates a new {@link MainActionToolbar} instance.
+     * @param manager 
      * 
      * @param showLogoutButton <code>true</code> if a logout button should be shown, <code>false</code> if it should not.
      */
-    public MainActionToolbar(boolean showLogoutButton) {
+    public MainActionToolbar(DependencyManager manager, boolean showLogoutButton) {
         super(5, 1);
+        m_manager = manager;
 
         m_showLogoutButton = showLogoutButton;
 
         setWidth("100%");
         setSpacing(true);
+        
+        m_manager.add(m_manager.createComponent()
+            .setImplementation(this)
+            .add(m_manager.createServiceDependency()
+                .setService(UIExtensionFactory.class, "(" + UIExtensionFactory.EXTENSION_POINT_KEY + "=" + UIExtensionFactory.EXTENSION_POINT_VALUE_MENU + ")")
+                .setCallbacks("add", "remove")
+            )
+        );
 
         initComponent();
     }
+    
+    public void add(ServiceReference ref, UIExtensionFactory factory) {
+        m_extensions.put(ref, factory);
+    }
+    
+    public void remove(ServiceReference ref,  UIExtensionFactory factory) {
+        m_extensions.remove(ref);
+    }
 
     /**
      * {@inheritDoc}
@@ -355,8 +385,14 @@ public abstract class MainActionToolbar 
         m_revertButton.addListener(new RevertButtonListener());
         addComponent(m_revertButton, 2, 0);
 
-        Label spacer = new Label(" ");
-        addComponent(spacer, 3, 0);
+        HorizontalLayout bar = new HorizontalLayout();
+        Label spacer = new Label("");
+        spacer.setWidth("2em");
+        bar.addComponent(spacer);
+        for (Component c : getExtraComponents()) {
+            bar.addComponent(c);
+        }
+        addComponent(bar, 3, 0);
 
         m_logoutButton = new Button("Logout");
         m_logoutButton.addListener(new LogoutButtonListener());
@@ -368,4 +404,12 @@ public abstract class MainActionToolbar 
         // button to appear at the right side of the screen....
         setColumnExpandRatio(3, 5);
     }
+    
+    protected List<Component> getExtraComponents() {
+        List<Component> result = new ArrayList<Component>();
+        for (UIExtensionFactory f : m_extensions.values()) {
+            result.add(f.create(Collections.EMPTY_MAP));
+        }
+        return result;
+    }
 }