You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by mc...@apache.org on 2008/09/04 22:43:24 UTC

svn commit: r692233 - in /geronimo/devtools/eclipse-plugin/trunk/plugins: org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/ org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/ org.apache.geronimo.st.v21....

Author: mcconne
Date: Thu Sep  4 13:43:23 2008
New Revision: 692233

URL: http://svn.apache.org/viewvc?rev=692233&view=rev
Log:
GERONIMODEVTOOLS-128 Add usabilty enhancements for Web Service References in geronimo-web.xml deployment plan editor. Thanks to Shiva for the original patch and to BJ Reed for subsequent refinements !!

Added:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java   (with props)
Modified:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractWizard.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/GBeanSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ServiceRefSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/GBeanWizard.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServiceRefWizard.java

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.java Thu Sep  4 13:43:23 2008
@@ -335,6 +335,12 @@
     public static String internalPath;
     public static String externalPath;
     public static String altDD;
+
+    public static String serviceCompletionName;
+    public static String protocol;
+    public static String credential;
+    public static String bindingName;
+    public static String uri;
     
     public static String connector;
     public static String ejb;

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/internal/Messages.properties Thu Sep  4 13:43:23 2008
@@ -340,6 +340,12 @@
 externalPath=External Path
 altDD=Alternate DD
 
+serviceCompletionName=Service Completion Name:
+protocol=Protocol:
+credential=Credential:
+bindingName=Binding Name:
+uri=URI:
+
 connector=Connector
 ejb=EJB
 java=Java

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java?rev=692233&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java Thu Sep  4 13:43:23 2008
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.ui.wizards;
+
+import java.util.ArrayList;
+
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public abstract class AbstractTreeWizard extends AbstractWizard {
+
+    protected String[] elementTypes = null;
+    protected int maxTextFields;
+
+    protected Combo element;
+    protected ArrayList<Text> textList;
+    
+    /*
+     * AbstractTreeWizard takes 3 parameters
+     * The Tree Section that is being added/edited
+     * elementTypeCount for how many different elements could be handled
+     * maxTextFields for the maximum number of fields an element may have.
+     * 
+     * For the most part, the user will be given an opportunity to add any kind of\
+     * element by using a combo.  When the combo changes, the fields need to change
+     * to allow the appropriate fields to be used.
+     */
+    public AbstractTreeWizard(AbstractTreeSection section, int elementTypeCount, int maxTextFields) {
+        super(section);
+        elementTypes = new String[elementTypeCount];
+        this.maxTextFields = maxTextFields;
+        textList = new ArrayList<Text>(maxTextFields);
+    }
+
+    public abstract class AbstractTreeWizardPage extends AbstractWizardPage {
+        protected ArrayList<Label> labelList;
+
+        public AbstractTreeWizardPage(String pageName) {
+            super(pageName);
+            labelList = new ArrayList<Label>(maxTextFields);
+        }
+
+        public void createControl(Composite parent) {
+            Label label;
+            Text text;
+            Composite composite = createComposite(parent);
+            createLabel(composite, CommonMessages.element);
+            element = createCombo(composite, elementTypes, false);
+            for (int i = 0; i < maxTextFields; i++) {
+                label = createLabel(composite, "");
+                labelList.add(label);
+                text = createTextField(composite, "");
+                textList.add(text);
+            }
+            element.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    toggleFields(true);
+                }
+            });
+            
+            initControl();
+            toggleFields(false);
+            setControl(composite);
+        }
+
+        protected abstract void initControl();
+
+        protected abstract void toggleFields(boolean clearFields);
+    }
+
+    protected abstract String getWizardPageTitle();
+
+    protected abstract String getWizardPageDescription();
+
+    protected abstract String getAddWizardWindowTitle();
+
+    protected abstract String getEditWizardWindowTitle();
+}

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTreeWizard.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractWizard.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractWizard.java Thu Sep  4 13:43:23 2008
@@ -16,7 +16,6 @@
  */
 package org.apache.geronimo.st.ui.wizards;
 
-import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory;
 import org.apache.geronimo.st.ui.Activator;
 import org.apache.geronimo.st.ui.sections.AbstractListSection;
 import org.eclipse.jface.resource.ImageDescriptor;

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBModelUtils.java Thu Sep  4 13:43:23 2008
@@ -167,6 +167,14 @@
         return null;
     }
 
+    public static List getServiceRefs (JAXBElement element) {
+        Object plan = element.getValue();
+        if (WebApp.class.isInstance (plan)) {
+            return ((WebApp)plan).getServiceRef() == null ? null : ((WebApp)plan).getServiceRef();
+        }
+        return null;
+    }
+
     public static List getMessageDestinations (JAXBElement element) {
         Object plan = element.getValue();
         if (WebApp.class.isInstance (plan)) {

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/jaxb/JAXBObjectFactoryImpl.java Thu Sep  4 13:43:23 2008
@@ -32,6 +32,9 @@
 import org.apache.geronimo.jee.naming.EjbLocalRef;
 import org.apache.geronimo.jee.naming.GbeanRef;
 import org.apache.geronimo.jee.naming.MessageDestination;
+import org.apache.geronimo.jee.naming.Port;
+import org.apache.geronimo.jee.naming.PortCompletion;
+import org.apache.geronimo.jee.naming.ServiceCompletion;
 import org.apache.geronimo.jee.naming.ResourceEnvRef;
 import org.apache.geronimo.jee.naming.ResourceRef;
 import org.apache.geronimo.jee.naming.ServiceRef;
@@ -72,6 +75,12 @@
             return (new org.apache.geronimo.jee.naming.ObjectFactory()).createMessageDestination();
         } else if ( type.equals( org.apache.geronimo.jee.naming.Pattern.class ) ) {
             return (new org.apache.geronimo.jee.naming.ObjectFactory()).createPattern();
+        } else if ( type.equals( Port.class ) ) {
+            return (new org.apache.geronimo.jee.naming.ObjectFactory()).createPort();
+        } else if ( type.equals( PortCompletion.class ) ) {
+            return (new org.apache.geronimo.jee.naming.ObjectFactory()).createPortCompletion();
+        } else if ( type.equals( ServiceCompletion.class ) ) {
+            return (new org.apache.geronimo.jee.naming.ObjectFactory()).createServiceCompletion();
         } else if ( type.equals( ServiceRef.class ) ) {
             return (new org.apache.geronimo.jee.naming.ObjectFactory()).createServiceRef();
         } else if ( type.equals( EjbLocalRef.class ) ) {

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/GBeanSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/GBeanSection.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/GBeanSection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/GBeanSection.java Thu Sep  4 13:43:23 2008
@@ -173,7 +173,7 @@
             @Override
             public Image getImage(Object arg0) {
                 return Activator.imageDescriptorFromPlugin("org.eclipse.jst.j2ee",
-                        "icons/full/obj16/security_role.gif").createImage();
+                        "icons/full/obj16/accessbean_obj.gif").createImage();
             }
         };
     }

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ServiceRefSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ServiceRefSection.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ServiceRefSection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ServiceRefSection.java Thu Sep  4 13:43:23 2008
@@ -20,58 +20,161 @@
 
 import javax.xml.bind.JAXBElement;
 
+
+import org.apache.geronimo.jee.naming.Port;
+import org.apache.geronimo.jee.naming.PortCompletion;
 import org.apache.geronimo.jee.naming.ServiceRef;
 import org.apache.geronimo.st.ui.CommonMessages;
-import org.apache.geronimo.st.ui.sections.AbstractTableSection;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.v21.ui.Activator;
 import org.apache.geronimo.st.v21.ui.wizards.ServiceRefWizard;
-import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 
 /**
  * @version $Rev$ $Date$
  */
-public class ServiceRefSection extends AbstractTableSection {
-
+public class ServiceRefSection extends AbstractTreeSection {
     public ServiceRefSection(JAXBElement plan, Composite parent, FormToolkit toolkit, int style, List serviceRefs) {
         super(plan, parent, toolkit, style);
         this.objectContainer = serviceRefs;
-        COLUMN_NAMES = new String[] { CommonMessages.editorServiceRefName };
         createClient();
-        getSection().setExpanded(false);
     }
 
+    @Override
     public String getTitle() {
         return CommonMessages.editorServiceRefTitle;
     }
 
+    @Override
     public String getDescription() {
         return CommonMessages.editorServiceRefDescription;
     }
 
+    @Override
     public Wizard getWizard() {
         return new ServiceRefWizard(this);
     }
 
+    @Override
     public Class getTableEntryObjectType() {
         return ServiceRef.class;
     }
 
     @Override
-    public ITableLabelProvider getLabelProvider() {
+    protected void activateAddButton() {
+        if (tree.getSelectionCount() == 0 || tree.getSelection()[0].getParentItem() == null) {
+            addButton.setEnabled(true);
+        } else {
+            addButton.setEnabled(false);
+        }
+    }
+
+    public ServiceRef getSelectedServiceRef () {
+        if (tree.getSelection().length == 0) {
+            return null;
+        }
+        return (ServiceRef)tree.getSelection()[0].getData();
+    }
+    
+    @Override
+    public void removeItem(Object anItem) {
+        if (ServiceRef.class.isInstance(anItem)) {
+            getObjectContainer().remove(anItem);
+        }
+        else if (Port.class.isInstance(anItem)) {
+            ServiceRef serviceRef = (ServiceRef)tree.getSelection()[0].getParentItem().getData();
+            serviceRef.getPort().remove(anItem);
+        }
+        else if (PortCompletion.class.isInstance(anItem)) {
+            ServiceRef serviceRef = (ServiceRef)tree.getSelection()[0].getParentItem().getData();
+            serviceRef.getServiceCompletion().getPortCompletion().remove(anItem);
+        }
+    }
+    
+    @Override
+    public Object getInput() {
+        if (objectContainer != null) {
+            return objectContainer;
+        }
+        return super.getInput();
+    }
+
+    @Override
+    public ITreeContentProvider getContentProvider() {
+        return new ContentProvider() {
+            @Override
+            public Object[] getElements(Object inputElement) {
+                return getChildren(inputElement);
+            }
+
+            @Override
+            public Object[] getChildren(Object parentElement) {
+                if (List.class.isInstance(parentElement)) {
+                    return ((List)parentElement).toArray();
+                }
+                if (ServiceRef.class.isInstance(parentElement)) {
+                    ServiceRef serviceRef = (ServiceRef)parentElement;
+                    Object[] portList = serviceRef.getPort().toArray();
+                    Object[] compList = new Object[0];
+                    if (serviceRef.getServiceCompletion() != null) {
+                        compList = serviceRef.getServiceCompletion().getPortCompletion().toArray();
+                    }
+                    Object[] fullList = new Object[portList.length + compList.length];
+                    System.arraycopy(portList, 0, fullList, 0, portList.length);
+                    System.arraycopy(compList, 0, fullList, portList.length, compList.length);
+                    return fullList;
+                }
+                return new String[] {};
+            }
+        };
+    }
+
+    @Override
+    public ILabelProvider getLabelProvider() {
         return new LabelProvider() {
             @Override
-            public String getColumnText(Object element, int columnIndex) {
+            public String getText(Object element) {
                 if (ServiceRef.class.isInstance(element)) {
-                    ServiceRef serviceRef = (ServiceRef) element;
-                    switch (columnIndex) {
-                    case 0:
-                        return serviceRef.getServiceRefName();
-                    }
+                    ServiceRef serviceRef = (ServiceRef)element;
+                        String retString = "Service Ref: name = \"" + serviceRef.getServiceRefName() + "\"";
+                        if (serviceRef.getServiceCompletion() != null) {
+                            retString += ", service completion name = \"" + serviceRef.getServiceCompletion().getServiceName() + "\"";
+                        }
+                        return retString;
+                }
+                else if (Port.class.isInstance(element)) {
+                    Port port = (Port)element;
+                    return "Port: name = \"" + port.getPortName() + 
+                            "\", protocol = \"" + port.getProtocol() + 
+                            "\", host = \"" + port.getHost() + 
+                            "\", port = \"" + port.getPort() + 
+                            "\", uri = \"" + port.getUri() + 
+                            "\", credential = \"" + port.getCredentialsName() + "\"";
+                }
+                else if (PortCompletion.class.isInstance(element)) {
+                    PortCompletion portComp = (PortCompletion)element;
+                    return "Port Completion: name = \"" + portComp.getPort().getPortName() + 
+                            "\", protocol = \"" + portComp.getPort().getProtocol() + 
+                            "\", host = \"" + portComp.getPort().getHost() + 
+                            "\", port = \"" + portComp.getPort().getPort() + 
+                            "\", uri = \"" + portComp.getPort().getUri() + 
+                            "\", credential = \"" + portComp.getPort().getCredentialsName() +
+                            "\", binding name = \"" + portComp.getBindingName() + "\"";
                 }
+
                 return null;
             }
+
+            @Override
+            public Image getImage(Object arg0) {
+                return Activator.imageDescriptorFromPlugin("org.eclipse.jst.j2ee",
+                        "icons/full/obj16/module_web_obj.gif").createImage();
+            }
         };
     }
 }

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/GBeanWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/GBeanWizard.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/GBeanWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/GBeanWizard.java Thu Sep  4 13:43:23 2008
@@ -16,7 +16,6 @@
  */
 package org.apache.geronimo.st.v21.ui.wizards;
 
-import java.util.ArrayList;
 import javax.xml.bind.JAXBElement;
 
 import org.apache.geronimo.jee.deployment.Attribute;
@@ -27,65 +26,36 @@
 import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory;
 import org.apache.geronimo.st.ui.CommonMessages;
 import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
-import org.apache.geronimo.st.ui.wizards.AbstractWizard;
+import org.apache.geronimo.st.ui.wizards.AbstractTreeWizard;
 import org.apache.geronimo.st.v21.core.jaxb.JAXBModelUtils;
 import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
 import org.apache.geronimo.st.v21.ui.sections.GBeanSection;
-import org.apache.geronimo.st.v21.ui.wizards.SecurityRoleMappingWizard.SecurityRoleMappingsWizardPage;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
 
 /**
  * @version $Rev$ $Date$
  */
-public class GBeanWizard extends AbstractWizard {
+public class GBeanWizard extends AbstractTreeWizard {
 
     private final int GBEAN = 0;
     private final int ATTRIBUTE = 1;
     private final int DEPENDENCY = 2;
     private final int REFERENCE = 3;
-    private final String[] ELEMENT_TYPES = {
-            "GBean", "Attribute", "Dependency", "Reference" };
-
-    protected Combo element;
-    protected ArrayList<Text> textList;
 
     public GBeanWizard(AbstractTreeSection section) {
-        super(section);
-        textList = new ArrayList<Text>(7);
+        super(section, 4, 7);
+        elementTypes[GBEAN] = "GBean";
+        elementTypes[ATTRIBUTE] = "Attribute";
+        elementTypes[DEPENDENCY] = "Dependency";
+        elementTypes[REFERENCE] = "Reference";
     }
 
-    public class GBeanWizardPage extends AbstractWizardPage {
-        protected ArrayList<Label> labelList;
-        protected Composite composite;
+    public class GBeanWizardPage extends AbstractTreeWizardPage {
 
         public GBeanWizardPage(String pageName) {
             super(pageName);
-            labelList = new ArrayList<Label>(7);
         }
 
-        public void createControl(Composite parent) {
-            Label label;
-            Text text;
-            composite = createComposite(parent);
-            createLabel(composite, CommonMessages.element);
-            element = createCombo(composite, ELEMENT_TYPES, false);
-            for (int i = 0; i < 7; i++) {
-                label = createLabel(composite, "");
-                labelList.add(label);
-                text = createTextField(composite, "");
-                textList.add(text);
-            }
-            element.addSelectionListener(new SelectionAdapter() {
-                public void widgetSelected(SelectionEvent arg0) {
-                    toggleFields();
-                }
-            });
-
+        protected void initControl() {
             if (eObject == null) {
                 element.select(GBEAN);
                 if (((GBeanSection)section).getSelectedGbean() == null) {
@@ -127,17 +97,18 @@
                 }
                 element.setEnabled(false);
             }
-            toggleFields();
-            setControl(composite);
         }
         
-        private void toggleFields () {
+        protected void toggleFields (boolean clearFields) {
             int selection = element.getSelectionIndex();
             switch (selection) {
             case GBEAN:
-                for (int i = 0; i < 7; i++) {
+                for (int i = 0; i < maxTextFields; i++) {
                     labelList.get(i).setVisible(i < 2 ? true : false);
                     textList.get(i).setVisible(i < 2 ? true : false);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
                 }
                 labelList.get(0).setText(CommonMessages.name);
                 labelList.get(1).setText(CommonMessages.className);
@@ -150,18 +121,24 @@
                 labelList.get(6).setText(CommonMessages.customName);
                 break;
             case ATTRIBUTE:
-                for (int i = 0; i < 7; i++) {
+                for (int i = 0; i < maxTextFields; i++) {
                     labelList.get(i).setVisible(i < 3 ? true : false);
                     textList.get(i).setVisible(i < 3 ? true : false);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
                 }
                 labelList.get(0).setText(CommonMessages.name);
                 labelList.get(1).setText(CommonMessages.type);
                 labelList.get(2).setText(CommonMessages.value);
                 break;
             case DEPENDENCY:
-                for (int i = 0; i < 7; i++) {
+                for (int i = 0; i < maxTextFields; i++) {
                     labelList.get(i).setVisible(i < 6 ? true : false);
                     textList.get(i).setVisible(i < 6 ? true : false);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
                 }
                 labelList.get(0).setText(CommonMessages.groupId);
                 labelList.get(1).setText(CommonMessages.artifactId);
@@ -171,9 +148,12 @@
                 labelList.get(5).setText(CommonMessages.customName);
                 break;
             case REFERENCE:
-                for (int i = 0; i < 7; i++) {
+                for (int i = 0; i < maxTextFields; i++) {
                     labelList.get(i).setVisible(true);
                     textList.get(i).setVisible(true);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
                 }
                 labelList.get(0).setText(CommonMessages.name);
                 labelList.get(1).setText(CommonMessages.groupId);

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServiceRefWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServiceRefWizard.java?rev=692233&r1=692232&r2=692233&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServiceRefWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServiceRefWizard.java Thu Sep  4 13:43:23 2008
@@ -16,29 +16,215 @@
  */
 package org.apache.geronimo.st.v21.ui.wizards;
 
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.naming.Port;
+import org.apache.geronimo.jee.naming.PortCompletion;
+import org.apache.geronimo.jee.naming.ServiceCompletion;
+import org.apache.geronimo.jee.naming.ServiceRef;
 import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory;
 import org.apache.geronimo.st.ui.CommonMessages;
-import org.apache.geronimo.st.ui.sections.AbstractTableSection;
-import org.apache.geronimo.st.ui.wizards.AbstractTableWizard;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.ui.wizards.AbstractTreeWizard;
+import org.apache.geronimo.st.v21.core.jaxb.JAXBModelUtils;
 import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
+import org.apache.geronimo.st.v21.ui.sections.ServiceRefSection;
 
 /**
  * @version $Rev$ $Date$
  */
-public class ServiceRefWizard extends AbstractTableWizard {
+public class ServiceRefWizard extends AbstractTreeWizard {
 
-    public ServiceRefWizard(AbstractTableSection section) {
-        super(section);
+    private final int SERVICE_REF = 0;
+    private final int PORT = 1;
+    private final int PORT_COMPLETION = 2;
+
+    public ServiceRefWizard(AbstractTreeSection section) {
+        super(section, 3, 7);
+        elementTypes[SERVICE_REF] = "Service Reference";
+        elementTypes[PORT] = "Port";
+        elementTypes[PORT_COMPLETION] = "Port Completion";
+    }
+
+    public class ServiceRefWizardPage extends AbstractTreeWizardPage {
+
+        public ServiceRefWizardPage(String pageName) {
+            super(pageName);
+        }
+
+        protected void initControl () {
+            if (eObject == null) {
+                element.select(SERVICE_REF);
+                ServiceRef serviceRef = ((ServiceRefSection)section).getSelectedServiceRef();
+                // use of ports and port completions are mutually exclusive
+                if (serviceRef == null) {
+                    element.setEnabled(false);
+                } else if (serviceRef.getServiceCompletion() == null) {
+                    element.remove(PORT_COMPLETION);
+                } else {
+                    element.remove(PORT);
+                }
+            }
+            else {
+                if (ServiceRef.class.isInstance(eObject)) {
+                    textList.get(0).setText(((ServiceRef)eObject).getServiceRefName());
+                    if (((ServiceRef)eObject).getServiceCompletion() != null) {
+                        textList.get(1).setText(((ServiceRef)eObject).getServiceCompletion().getServiceName());
+                    }
+                    element.select(SERVICE_REF);
+                }
+                else if (Port.class.isInstance(eObject)) {
+                    textList.get(0).setText(((Port)eObject).getPortName());
+                    textList.get(1).setText(((Port)eObject).getProtocol());
+                    textList.get(2).setText(((Port)eObject).getHost());
+                    textList.get(3).setText(((Port)eObject).getPort().toString());
+                    textList.get(4).setText(((Port)eObject).getUri());
+                    textList.get(5).setText(((Port)eObject).getCredentialsName());
+                    element.select(PORT);
+                }
+                else if (PortCompletion.class.isInstance(eObject)) {
+                    textList.get(0).setText(((PortCompletion)eObject).getPort().getPortName());
+                    textList.get(1).setText(((PortCompletion)eObject).getPort().getProtocol());
+                    textList.get(2).setText(((PortCompletion)eObject).getPort().getHost());
+                    textList.get(3).setText(((PortCompletion)eObject).getPort().getPort().toString());
+                    textList.get(4).setText(((PortCompletion)eObject).getPort().getUri());
+                    textList.get(5).setText(((PortCompletion)eObject).getPort().getCredentialsName());
+                    textList.get(6).setText(((PortCompletion)eObject).getBindingName());
+                    element.select(PORT_COMPLETION);
+                }
+                element.setEnabled(false);
+            }
+        }
+        
+        protected void toggleFields (boolean clearFields) {
+            if (element.getText().equals(elementTypes[SERVICE_REF])) {
+                for (int i = 0; i < maxTextFields; i++) {
+                    labelList.get(i).setVisible(i < 2 ? true : false);
+                    textList.get(i).setVisible(i < 2 ? true : false);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
+                }
+                labelList.get(0).setText(CommonMessages.name);
+                labelList.get(1).setText(CommonMessages.serviceCompletionName);
+                // if we are doing an add, then we need to make sure that the longest
+                // text can be handled
+                labelList.get(2).setText(CommonMessages.protocol);
+                labelList.get(3).setText(CommonMessages.hostName);
+                labelList.get(4).setText(CommonMessages.portValue);
+                labelList.get(5).setText(CommonMessages.credential);
+                labelList.get(6).setText(CommonMessages.bindingName);
+            }
+            else if (element.getText().equals(elementTypes[PORT])) {
+                for (int i = 0; i < maxTextFields; i++) {
+                    labelList.get(i).setVisible(i < 6 ? true : false);
+                    textList.get(i).setVisible(i < 6 ? true : false);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
+                }
+                labelList.get(0).setText(CommonMessages.name);
+                labelList.get(1).setText(CommonMessages.protocol);
+                labelList.get(2).setText(CommonMessages.hostName);
+                labelList.get(3).setText(CommonMessages.portValue);
+                labelList.get(4).setText(CommonMessages.uri);
+                labelList.get(5).setText(CommonMessages.credential);
+            }
+            else if (element.getText().equals(elementTypes[PORT_COMPLETION])) {
+                for (int i = 0; i < maxTextFields; i++) {
+                    labelList.get(i).setVisible(true);
+                    textList.get(i).setVisible(true);
+                    if (clearFields == true) {
+                        textList.get(i).setText("");
+                    }
+                }
+                labelList.get(0).setText(CommonMessages.name);
+                labelList.get(1).setText(CommonMessages.protocol);
+                labelList.get(2).setText(CommonMessages.hostName);
+                labelList.get(3).setText(CommonMessages.portValue);
+                labelList.get(4).setText(CommonMessages.uri);
+                labelList.get(5).setText(CommonMessages.credential);
+                labelList.get(6).setText(CommonMessages.bindingName);
+            }
+        }
+    }
+
+    @Override
+    public void addPages() {
+        addPage(new ServiceRefWizardPage("Page0"));
+    }
+
+    @Override
+    public boolean performFinish() {
+        ServiceRef serviceRef;
+        if (element.getText().equals(elementTypes[SERVICE_REF])) {
+            if (isEmpty(textList.get(0).getText())) {
+                return false;
+            }
+            serviceRef = (ServiceRef)eObject;
+            if (serviceRef == null) {
+                serviceRef = (ServiceRef)getEFactory().create(ServiceRef.class);
+                JAXBElement plan = section.getPlan();
+                JAXBModelUtils.getServiceRefs(plan).add(serviceRef);
+            }
+            serviceRef.setServiceRefName(textList.get(0).getText());
+            if (isEmpty(textList.get(1).getText())) {
+                serviceRef.setServiceCompletion(null);
+            }
+            else {
+                ServiceCompletion serviceComp = serviceRef.getServiceCompletion();
+                if (serviceComp == null) {
+                    serviceComp = (ServiceCompletion)getEFactory().create(ServiceCompletion.class);
+                    serviceRef.setServiceCompletion(serviceComp);
+                }
+                serviceRef.getServiceCompletion().setServiceName(textList.get(1).getText());
+            }
+        }
+        else if (element.getText().equals(elementTypes[PORT])) {
+            if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(4).getText())) {
+                return false;
+            }
+            Port port = (Port)eObject;
+            if (port == null) {
+                port = (Port)getEFactory().create(Port.class);
+                serviceRef = ((ServiceRefSection)section).getSelectedServiceRef();
+                serviceRef.getPort().add(port);
+            }
+            port.setPortName(textList.get(0).getText());
+            port.setProtocol(textList.get(1).getText());
+            port.setHost(textList.get(2).getText());
+            port.setPort(Integer.valueOf(textList.get(3).getText()));
+            port.setUri(textList.get(4).getText());
+            port.setCredentialsName(textList.get(5).getText());
+        }
+        else if (element.getText().equals(elementTypes[PORT_COMPLETION])) { 
+            if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(4).getText()) ||
+                isEmpty(textList.get(6).getText())) {
+                return false;
+            }
+            PortCompletion portComp = (PortCompletion)eObject;
+            if (portComp == null) {
+                portComp = (PortCompletion)getEFactory().create(PortCompletion.class);
+                serviceRef = ((ServiceRefSection)section).getSelectedServiceRef();
+                serviceRef.getServiceCompletion().getPortCompletion().add(portComp);
+                Port port = (Port)getEFactory().create(Port.class);
+                portComp.setPort (port);
+            }
+            portComp.getPort().setPortName(textList.get(0).getText());
+            portComp.getPort().setProtocol(textList.get(1).getText());
+            portComp.getPort().setHost(textList.get(2).getText());
+            portComp.getPort().setPort(Integer.valueOf(textList.get(3).getText()));
+            portComp.getPort().setUri(textList.get(4).getText());
+            portComp.getPort().setCredentialsName(textList.get(5).getText());
+            portComp.setBindingName(textList.get(6).getText());
+        }
+        return true;
     }
 
     public JAXBObjectFactory getEFactory() {
         return JAXBObjectFactoryImpl.getInstance();
     }
 
-    public String[] getTableColumnEAttributes() {
-        return new String[] { "ServiceRefName" };
-    }
-
     public String getAddWizardWindowTitle() {
         return CommonMessages.wizardNewTitle_ServiceRef;
     }
@@ -47,11 +233,11 @@
         return CommonMessages.wizardEditTitle_ServiceRef;
     }
 
-    public String getWizardFirstPageTitle() {
+    public String getWizardPageTitle() {
         return CommonMessages.wizardPageTitle_ServiceRef;
     }
 
-    public String getWizardFirstPageDescription() {
+    public String getWizardPageDescription() {
         return CommonMessages.wizardPageDescription_ServiceRef;
     }
 }