You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ja...@apache.org on 2012/04/04 08:43:45 UTC

svn commit: r1309263 - /ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java

Author: jawi
Date: Wed Apr  4 06:43:45 2012
New Revision: 1309263

URL: http://svn.apache.org/viewvc?rev=1309263&view=rev
Log:
ACE-246: ensure the delete-target button is disabled for unregistered targets.

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

Modified: ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java
URL: http://svn.apache.org/viewvc/ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java?rev=1309263&r1=1309262&r2=1309263&view=diff
==============================================================================
--- ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java (original)
+++ ace/trunk/ace-webui-vaadin/src/main/java/org/apache/ace/webui/vaadin/VaadinClient.java Wed Apr  4 06:43:45 2012
@@ -68,6 +68,7 @@ import org.osgi.service.useradmin.User;
 import org.osgi.service.useradmin.UserAdmin;
 
 import com.vaadin.data.Item;
+import com.vaadin.data.Property;
 import com.vaadin.event.ItemClickEvent;
 import com.vaadin.event.ItemClickEvent.ItemClickListener;
 import com.vaadin.event.Transferable;
@@ -320,8 +321,7 @@ public class VaadinClient extends com.va
         m_featuresPanel.addListener(m_associations.createSelectionListener(m_featuresPanel, m_featureRepository,
             new Class[] { ArtifactObject.class }, new Class[] { DistributionObject.class, TargetObject.class },
             new Table[] { m_artifactsPanel, m_distributionsPanel, m_targetsPanel }));
-        m_distributionsPanel
-            .addListener(m_associations.createSelectionListener(m_distributionsPanel, m_distributionRepository,
+        m_distributionsPanel.addListener(m_associations.createSelectionListener(m_distributionsPanel, m_distributionRepository,
                 new Class[] { FeatureObject.class, ArtifactObject.class }, new Class[] { TargetObject.class },
                 new Table[] { m_artifactsPanel, m_featuresPanel, m_targetsPanel }));
         m_targetsPanel.addListener(m_associations.createSelectionListener(m_targetsPanel, m_statefulTargetRepository,
@@ -554,8 +554,7 @@ public class VaadinClient extends com.va
                         }
                     };
                     buttons.addComponent(removeLinkButton);
-                    buttons.addComponent(new RemoveItemButton<ArtifactObject, ArtifactRepository>(artifact,
-                        m_artifactRepository));
+                    buttons.addComponent(new RemoveItemButton(artifact, m_artifactRepository));
                     item.getItemProperty(ACTIONS).setValue(buttons);
                 }
             }
@@ -632,8 +631,7 @@ public class VaadinClient extends com.va
                     };
                     HorizontalLayout buttons = new HorizontalLayout();
                     buttons.addComponent(removeLinkButton);
-                    buttons.addComponent(new RemoveItemButton<FeatureObject, FeatureRepository>(feature,
-                        m_featureRepository));
+                    buttons.addComponent(new RemoveItemButton(feature, m_featureRepository));
                     item.getItemProperty(ACTIONS).setValue(buttons);
                 }
             }
@@ -682,10 +680,11 @@ public class VaadinClient extends com.va
         protected abstract void removeLinkFromRight(REPO_OBJECT object, RepositoryObject other);
     }
 
-    public class RemoveItemButton<REPO_OBJECT extends RepositoryObject, REPO extends ObjectRepository> extends Button {
-        public RemoveItemButton(final REPO_OBJECT object, final REPO repository) {
+    public class RemoveItemButton extends Button {
+        public RemoveItemButton(final RepositoryObject object, final ObjectRepository repository) {
             super("x");
             setStyleName("small");
+            
             addListener(new Button.ClickListener() {
                 public void buttonClick(ClickEvent event) {
                     try {
@@ -734,8 +733,7 @@ public class VaadinClient extends com.va
                 if (item != null) {
                     item.getItemProperty(OBJECT_NAME).setValue(distribution.getName());
                     item.getItemProperty(OBJECT_DESCRIPTION).setValue(distribution.getDescription());
-                    Button removeLinkButton = new RemoveLinkButton<DistributionObject>(distribution, m_featuresPanel,
-                        m_targetsPanel) {
+                    Button removeLinkButton = new RemoveLinkButton<DistributionObject>(distribution, m_featuresPanel, m_targetsPanel) {
                         @Override
                         protected void removeLinkFromLeft(DistributionObject object, RepositoryObject other) {
                             List<Feature2DistributionAssociation> associations = object
@@ -760,8 +758,7 @@ public class VaadinClient extends com.va
                     };
                     HorizontalLayout buttons = new HorizontalLayout();
                     buttons.addComponent(removeLinkButton);
-                    buttons.addComponent(new RemoveItemButton<DistributionObject, DistributionRepository>(distribution,
-                        m_distributionRepository));
+                    buttons.addComponent(new RemoveItemButton(distribution, m_distributionRepository));
                     item.getItemProperty(ACTIONS).setValue(buttons);
                 }
             }
@@ -781,6 +778,8 @@ public class VaadinClient extends com.va
 
     private ObjectPanel createTargetsPanel(Window main) {
         return new ObjectPanel(m_associations, "Target", UIExtensionFactory.EXTENSION_POINT_VALUE_TARGET, main, true) {
+            private RemoveItemButton m_deleteButton;
+            
             @Override
             protected RepositoryObject getFromId(String id) {
                 return getTarget(id);
@@ -794,8 +793,7 @@ public class VaadinClient extends com.va
             }
 
             public void handleEvent(org.osgi.service.event.Event event) {
-                StatefulTargetObject statefulTarget = (StatefulTargetObject) event
-                    .getProperty(StatefulTargetObject.EVENT_ENTITY);
+                StatefulTargetObject statefulTarget = (StatefulTargetObject) event.getProperty(StatefulTargetObject.EVENT_ENTITY);
                 String topic = (String) event.getProperty(EventConstants.EVENT_TOPIC);
                 if (StatefulTargetObject.TOPIC_ADDED.equals(topic)) {
                     add(statefulTarget);
@@ -828,9 +826,12 @@ public class VaadinClient extends com.va
                         protected void removeLinkFromRight(StatefulTargetObject object, RepositoryObject other) {
                         }
                     };
+                    m_deleteButton = new RemoveItemButton(statefulTarget, m_statefulTargetRepository);
+                    m_deleteButton.setEnabled(statefulTarget.isRegistered());
+
                     HorizontalLayout buttons = new HorizontalLayout();
                     buttons.addComponent(removeLinkButton);
-                    buttons.addComponent(new RemoveItemButton<StatefulTargetObject, StatefulTargetRepository>(statefulTarget, m_statefulTargetRepository));
+                    buttons.addComponent(m_deleteButton);
                     item.getItemProperty(ACTIONS).setValue(buttons);
                 }
             }
@@ -839,6 +840,8 @@ public class VaadinClient extends com.va
                 Item item = getItem(statefulTarget.getDefinition());
                 if (item != null) {
                     item.getItemProperty(OBJECT_DESCRIPTION).setValue("");
+
+                    m_deleteButton.setEnabled(statefulTarget.isRegistered());
                 }
             }
 
@@ -1116,25 +1119,32 @@ public class VaadinClient extends com.va
     
     public abstract class ObjectPanel extends Table implements EventHandler {
         public static final String ACTIONS = "actions";
-        protected Table m_table = this;
-        protected Associations m_associations;
-        private List<UIExtensionFactoryHolder> m_extensionFactories = new ArrayList<UIExtensionFactoryHolder>();
+        
+        protected final Table m_table;
+        protected final Associations m_associations;
+
+        private final List<UIExtensionFactoryHolder> m_extensionFactories;
         private final String m_extensionPoint;
 
-        public ObjectPanel(Associations associations, final String name, String extensionPoint, final Window main,
-            boolean hasEdit) {
+        public ObjectPanel(Associations associations, final String name, String extensionPoint, final Window main, final boolean hasEdit) {
             super(name + "s");
+
+            m_table = this;
+            m_extensionFactories = new ArrayList<UIExtensionFactoryHolder>();
             m_associations = associations;
             m_extensionPoint = extensionPoint;
+
             addContainerProperty(OBJECT_NAME, String.class, null);
             addContainerProperty(OBJECT_DESCRIPTION, String.class, null);
             addContainerProperty(ACTIONS, HorizontalLayout.class, null);
+
             setSizeFull();
             setCellStyleGenerator(m_associations.createCellStyleGenerator());
             setSelectable(true);
             setMultiSelect(true);
             setImmediate(true);
             setDragMode(TableDragMode.MULTIROW);
+
             if (hasEdit) {
                 addListener(new ItemClickListener() {
                     public void itemClick(ItemClickEvent event) {
@@ -1151,6 +1161,7 @@ public class VaadinClient extends com.va
 
         public void init(Component component) {
             populate();
+            
             DependencyManager dm = component.getDependencyManager();
             component.add(dm
                 .createServiceDependency()