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/08/29 22:43:48 UTC

svn commit: r690385 [1/2] - 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/sections/ org.apache.geronimo....

Author: mcconne
Date: Fri Aug 29 13:43:47 2008
New Revision: 690385

URL: http://svn.apache.org/viewvc?rev=690385&view=rev
Log:
GERONIMODEVTOOLS-129 Enhanced Editor Support for specifying GBeans in all the deployment editors -- Thanks to Shiva for the original patch, and BJ Reed for enhancements!!

Added:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/SecurityRoleMappingSection.java   (with props)
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.java   (with props)
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRunAsSubjectWizard.java   (with props)
Removed:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ImportSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/SecurityRoleMappingsSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/DependencyAddWizard.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ImportWizard.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingsAddWizard.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingsEditWizard.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRunAsSubjectAddWizard.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRunAsSubjectEditWizard.java
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/sections/AbstractListSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTableSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTreeSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTableWizard.java
    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/JAXBObjectFactoryImpl.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/SecurityPage.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/DependencySection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ExtModuleSection.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/SecurityAdvancedSection.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/DependencyWizard.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

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=690385&r1=690384&r2=690385&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 Fri Aug 29 13:43:47 2008
@@ -29,7 +29,7 @@
     static {
         NLS.initializeMessages(Activator.PLUGIN_ID + ".internal.Messages", Messages.class);
     }
-	
+    
     public static String editorTabSource;
     
     public static String editorSectionSecurityTitle;
@@ -127,6 +127,7 @@
     public static String editorSecurityRealmName;
     public static String editorApplicationName;
     public static String editorCallbackHandler;
+    public static String editorDomainName;
     public static String editorRealmName;
     public static String editorSubjectId;
     public static String editorejbqlCompilerFactory;
@@ -239,6 +240,16 @@
     public static String wizardPageTitle_EjbLocalRef;
     public static String wizardPageDescription_EjbLocalRef;
     //
+    public static String wizardNewTitle_RoleMapping;
+    public static String wizardEditTitle_RoleMapping;
+    public static String wizardPageTitle_RoleMapping;
+    public static String wizardPageDescription_RoleMapping;
+    //
+    public static String wizardNewTitle_RunAsSubject;
+    public static String wizardEditTitle_RunAsSubject;
+    public static String wizardPageTitle_RunAsSubject;
+    public static String wizardPageDescription_RunAsSubject;
+    //
     public static String wizardNewTitle_Dependency;
     public static String wizardEditTitle_Dependency;
     public static String wizardPageTitle_Dependency;
@@ -251,6 +262,9 @@
     public static String artifactId;
     public static String version;
     public static String type;
+    public static String element;
+    public static String customName;
+    public static String value;
     public static String messageDestinationName;
     public static String adminModule;
     public static String adminLink;
@@ -294,7 +308,8 @@
     public static String securityRunAsSubjects;
     public static String securityRunAsSubjectRole;
     public static String securityRunAsSubjectRealm;
-    public static String securityRunAsSubjectId;    
+    public static String securityRunAsSubjectId;  
+    public static String securityRefreshRoles;
 
     public static String editorCorrect;
     public static String editorDefault;
@@ -327,10 +342,7 @@
     public static String web;
 
     public static String licenseAgreement;
-
     public static String acceptLicenseAgreement;
-
     public static String rejectLicenseAgreement;
-
     public static String confirmLicenseRejection;
 }

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=690385&r1=690384&r2=690385&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 Fri Aug 29 13:43:47 2008
@@ -103,6 +103,7 @@
 editorWorkDir=Working Directory:
 editorSecurityRealmName=Security Realm Name:
 editorCallbackHandler=Callback Handler:
+editorDomainName=Domain Name:
 editorRealmName=Realm Name:
 editorSubjectId=Subject Id:
 editorApplicationName=Application Name:
@@ -183,7 +184,7 @@
 wizardEditTitle_Dependency=Edit Dependency
 wizardPageTitle_Dependency=Dependency Details
 wizardPageDescription_Dependency=Provide details for this dependency.
-wizardTabManual_Dependency=Add Manually
+wizardTabManual_Dependency=Manual Input
 wizardTabServer_Dependency=Add From Server
 
 wizardNewTitle_Import=New Import
@@ -211,6 +212,21 @@
 wizardPageTitle_ExtModule=External Module Details
 wizardPageDescription_ExtModule=Provide details for this external module.
 
+wizardNewTitle_ServiceRef=New Service Reference
+wizardEditTitle_ServiceRef=Edit Service Reference
+wizardPageTitle_ServiceRef=Service Reference Details
+wizardPageDescription_ServiceRef=Provide details for this service reference.
+
+wizardNewTitle_RoleMapping=New Role Mapping
+wizardEditTitle_RoleMapping=Edit Role Mapping
+wizardPageTitle_RoleMapping=Role Mapping Details
+wizardPageDescription_RoleMapping=Provide details for this role mapping.
+
+wizardNewTitle_RunAsSubject=New Run As Subject
+wizardEditTitle_RunAsSubject=Edit Run As Subject
+wizardPageTitle_RunAsSubject=Run As Subject Details
+wizardPageDescription_RunAsSubject=Provide details for this run-as subject.
+
 securityCredentialStore=Credential Store:
 securityDefaultSubject=Default Subject:
 securityDefaultSubjectRealmName=Realm Name
@@ -221,12 +237,16 @@
 securityRunAsSubjectRole=Role
 securityRunAsSubjectRealm=Realm
 securityRunAsSubjectId=Id
+securityRefreshRoles=Refresh Roles from Deployment Descriptor/Annotations
 
 dependencyGroupLabel=Dependency type and location
 groupId=Group Id
 artifactId=Artifact Id
 version=Version
-type=Artifact Type
+type=Type
+element=Element
+customName=Custom Name
+value=Value
 
 messageDestinationName=Message Destination Name
 adminModule=Admin Module

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractListSection.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/sections/AbstractListSection.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractListSection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractListSection.java Fri Aug 29 13:43:47 2008
@@ -199,7 +199,7 @@
         addButton = toolkit.createButton(buttonComp, CommonMessages.add, SWT.NONE);
         addButton.addSelectionListener(new SelectionAdapter() {
             public void widgetSelected(SelectionEvent e) {
-                Wizard wizard = getAddWizard();
+                Wizard wizard = getWizard();
                 if (wizard != null) {
                     WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
                     dialog.open();
@@ -219,7 +219,7 @@
             public void widgetSelected(SelectionEvent e) {
                 Object selectedObject = ((StructuredSelection) getViewer().getSelection()).getFirstElement();
                 if (selectedObject != null) {
-                    Wizard wizard = getEditWizard();
+                    Wizard wizard = getWizard();
                     if (wizard != null) {
                         if (wizard instanceof AbstractWizard) {
                             ((AbstractWizard) wizard).setEObject(selectedObject);
@@ -262,9 +262,7 @@
 
     abstract public String getDescription();
 
-    abstract public Wizard getAddWizard();
-
-    abstract public Wizard getEditWizard();
+    abstract protected Wizard getWizard();
 
     abstract public Class getTableEntryObjectType();
 

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTableSection.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/sections/AbstractTableSection.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTableSection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTableSection.java Fri Aug 29 13:43:47 2008
@@ -131,15 +131,5 @@
         button.setEnabled(selected);
     }
 
-    @Override
-    public Wizard getAddWizard() {
-        return getWizard();
-    }
-
-    @Override
-    public Wizard getEditWizard() {
-        return getWizard();
-    }
-
-    protected abstract Wizard getWizard();
+    abstract protected Wizard getWizard();
 }

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTreeSection.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/sections/AbstractTreeSection.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTreeSection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/sections/AbstractTreeSection.java Fri Aug 29 13:43:47 2008
@@ -82,7 +82,6 @@
     }
 
     protected void activateButton(Button button) {
-        boolean Selected = tree.getSelectionCount() > 0;
-        button.setEnabled(Selected);
+        button.setEnabled(tree.getSelectionCount() > 0);
     }
 }

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTableWizard.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/AbstractTableWizard.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTableWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.ui/src/main/java/org/apache/geronimo/st/ui/wizards/AbstractTableWizard.java Fri Aug 29 13:43:47 2008
@@ -60,7 +60,7 @@
                 if (eObject != null) {
                     initialValue = (String) JAXBUtils.getValue(eObject, getTableColumnEAttributes()[i]);
                 }
-                textEntries[i] = createTextFeild(composite, initialValue);
+                textEntries[i] = createTextField(composite, initialValue);
             }
         }
 
@@ -111,15 +111,6 @@
         return getWizardFirstPageDescription();
     }
 
-    @Override
-    protected String getWizardWindowTitle() {
-        return getAddWizardWindowTitle();
-    }
-
-    public abstract String getAddWizardWindowTitle();
-
-    public abstract String getEditWizardWindowTitle();
-
     public abstract String getWizardFirstPageTitle();
 
     public abstract String getWizardFirstPageDescription();

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=690385&r1=690384&r2=690385&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 Fri Aug 29 13:43:47 2008
@@ -16,6 +16,7 @@
  */
 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;
@@ -41,11 +42,12 @@
     public AbstractWizard(AbstractListSection section) {
         super();
         this.section = section;
-        setWindowTitle(getWizardWindowTitle());
+        setWindowTitle(getAddWizardWindowTitle());
     }
 
     public void setEObject(Object object) {
         eObject = object;
+        setWindowTitle(getEditWizardWindowTitle());
     }
 
     public abstract class AbstractWizardPage extends WizardPage {
@@ -82,7 +84,7 @@
             return label;
         }
 
-        protected Text createTextFeild(Composite composite, String initialValue) {
+        protected Text createTextField(Composite composite, String initialValue) {
             Text text = new Text(composite, SWT.SINGLE | SWT.BORDER);
             GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
             data.grabExcessHorizontalSpace = true;
@@ -107,12 +109,14 @@
         }
     }
 
-    protected abstract String getWizardWindowTitle();
-
     protected abstract String getWizardPageTitle();
 
     protected abstract String getWizardPageDescription();
 
+    protected abstract String getAddWizardWindowTitle();
+
+    protected abstract String getEditWizardWindowTitle();
+    
     protected ImageDescriptor getImageDescriptor() {
         return Activator.imageDescriptorFromPlugin("org.apache.geronimo.ui", "icons/bigG.gif");
     }

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=690385&r1=690384&r2=690385&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 Fri Aug 29 13:43:47 2008
@@ -21,11 +21,13 @@
 import org.apache.geronimo.jee.application.Module;
 import org.apache.geronimo.jee.application.Path;
 import org.apache.geronimo.jee.deployment.Artifact;
+import org.apache.geronimo.jee.deployment.Attribute;
 import org.apache.geronimo.jee.deployment.ClassFilter;
 import org.apache.geronimo.jee.deployment.Dependencies;
 import org.apache.geronimo.jee.deployment.Dependency;
 import org.apache.geronimo.jee.deployment.Environment;
 import org.apache.geronimo.jee.deployment.Gbean;
+import org.apache.geronimo.jee.deployment.Reference;
 import org.apache.geronimo.jee.naming.EjbRef;
 import org.apache.geronimo.jee.naming.EjbLocalRef;
 import org.apache.geronimo.jee.naming.GbeanRef;
@@ -34,6 +36,10 @@
 import org.apache.geronimo.jee.naming.ResourceRef;
 import org.apache.geronimo.jee.naming.ServiceRef;
 import org.apache.geronimo.jee.security.Description;
+import org.apache.geronimo.jee.security.DistinguishedName;
+import org.apache.geronimo.jee.security.LoginDomainPrincipal;
+import org.apache.geronimo.jee.security.Principal;
+import org.apache.geronimo.jee.security.RealmPrincipal;
 import org.apache.geronimo.jee.security.RoleMappings;
 import org.apache.geronimo.jee.security.Role;
 import org.apache.geronimo.jee.security.Security;
@@ -78,6 +84,14 @@
             return (new org.apache.geronimo.jee.security.ObjectFactory()).createDescription();
         } else if ( type.equals( Role.class ) ) {
             return (new org.apache.geronimo.jee.security.ObjectFactory()).createRole();
+        } else if ( type.equals( DistinguishedName.class ) ) {
+            return (new org.apache.geronimo.jee.security.ObjectFactory()).createDistinguishedName();
+        } else if ( type.equals( Principal.class ) ) {
+            return (new org.apache.geronimo.jee.security.ObjectFactory()).createPrincipal();
+        } else if ( type.equals( LoginDomainPrincipal.class ) ) {
+            return (new org.apache.geronimo.jee.security.ObjectFactory()).createLoginDomainPrincipal();
+        } else if ( type.equals( RealmPrincipal.class ) ) {
+            return (new org.apache.geronimo.jee.security.ObjectFactory()).createRealmPrincipal();
         } else if ( type.equals( Gbean.class ) ) {
             return (new org.apache.geronimo.jee.deployment.ObjectFactory()).createGbean();
         } else if ( type.equals( Artifact.class ) ) {
@@ -92,6 +106,10 @@
             return (new org.apache.geronimo.jee.deployment.ObjectFactory()).createEnvironment();
         } else if ( type.equals( org.apache.geronimo.jee.deployment.Pattern.class ) ) {
             return (new org.apache.geronimo.jee.deployment.ObjectFactory()).createPattern();
+        } else if ( type.equals( Attribute.class ) ) {
+            return (new org.apache.geronimo.jee.deployment.ObjectFactory()).createAttribute();
+        } else if ( type.equals( Reference.class ) ) {
+            return (new org.apache.geronimo.jee.deployment.ObjectFactory()).createReference();
         } else if ( type.equals( ExtModule.class ) ) {
             return (new org.apache.geronimo.jee.application.ObjectFactory()).createExtModule();
         } else if ( type.equals( Module.class ) ) {

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/SecurityPage.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/pages/SecurityPage.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/SecurityPage.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/pages/SecurityPage.java Fri Aug 29 13:43:47 2008
@@ -20,7 +20,7 @@
 import org.apache.geronimo.st.ui.pages.AbstractGeronimoFormPage;
 import org.apache.geronimo.st.v21.core.GeronimoServerInfo;
 import org.apache.geronimo.st.v21.ui.sections.SecurityAdvancedSection;
-import org.apache.geronimo.st.v21.ui.sections.SecurityRoleMappingsSection;
+import org.apache.geronimo.st.v21.ui.sections.SecurityRoleMappingSection;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.ui.forms.IManagedForm;
 import org.eclipse.ui.forms.editor.FormEditor;
@@ -40,7 +40,7 @@
      * @see org.apache.geronimo.ui.pages.AbstractGeronimoFormPage#fillBody(org.eclipse.ui.forms.IManagedForm)
      */
     protected void fillBody(IManagedForm managedForm) {
-        managedForm.addPart(new SecurityRoleMappingsSection(getDeploymentPlan(), getDeploymentDescriptor(), body, toolkit, getStyle()));
+        managedForm.addPart(new SecurityRoleMappingSection(getDeploymentPlan(), getDeploymentDescriptor(), body, toolkit, getStyle()));
         managedForm.addPart(new SecurityAdvancedSection(getDeploymentPlan(), body, toolkit, getStyle()));
     }
 

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/DependencySection.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/DependencySection.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/DependencySection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/DependencySection.java Fri Aug 29 13:43:47 2008
@@ -26,7 +26,6 @@
 import org.apache.geronimo.st.ui.CommonMessages;
 import org.apache.geronimo.st.ui.sections.AbstractTableSection;
 import org.apache.geronimo.st.v21.ui.Activator;
-import org.apache.geronimo.st.v21.ui.wizards.DependencyAddWizard;
 import org.apache.geronimo.st.v21.ui.wizards.DependencyWizard;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.IContentProvider;
@@ -40,10 +39,9 @@
  */
 public class DependencySection extends AbstractTableSection {
 
+    boolean isServerEnvironment;
     protected Environment environment;
 
-    protected boolean isServerEnvironment;
-
     public DependencySection(JAXBElement plan, Environment environment, Composite parent, FormToolkit toolkit, int style) {
         this(plan, environment, parent, toolkit, style, true);
     }
@@ -53,7 +51,7 @@
         this.environment = environment;
         this.isServerEnvironment = isServerEnvironment; 
         this.COLUMN_NAMES = new String[] {
-                CommonMessages.groupId, CommonMessages.artifactId, CommonMessages.version, CommonMessages.type
+                CommonMessages.groupId, CommonMessages.artifactId, CommonMessages.version, CommonMessages.artifactType
         };
         createClient();
         getSection().setExpanded(false);
@@ -90,13 +88,8 @@
     }
 
     @Override
-    public Wizard getAddWizard() {
-        return new DependencyAddWizard(this);
-    }
-
-    @Override
     public Wizard getWizard() {
-        return new DependencyWizard(this, isServerEnvironment);
+        return new DependencyWizard(this);
     }
 
     public ImageDescriptor getImageDescriptor() {

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ExtModuleSection.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/ExtModuleSection.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ExtModuleSection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/ExtModuleSection.java Fri Aug 29 13:43:47 2008
@@ -39,7 +39,7 @@
         this.objectContainer = extModules;
         COLUMN_NAMES = new String[] {
                 CommonMessages.moduleType, CommonMessages.path, CommonMessages.internalPath,
-                CommonMessages.groupId, CommonMessages.artifactId, CommonMessages.version, CommonMessages.type };
+                CommonMessages.groupId, CommonMessages.artifactId, CommonMessages.version, CommonMessages.artifactType };
         createClient();
     }
 

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=690385&r1=690384&r2=690385&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 Fri Aug 29 13:43:47 2008
@@ -16,65 +16,86 @@
  */
 package org.apache.geronimo.st.v21.ui.sections;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.bind.JAXBElement;
 
+import org.apache.geronimo.jee.deployment.Attribute;
 import org.apache.geronimo.jee.deployment.Gbean;
+import org.apache.geronimo.jee.deployment.Pattern;
+import org.apache.geronimo.jee.deployment.Reference;
 import org.apache.geronimo.st.ui.CommonMessages;
-import org.apache.geronimo.st.ui.sections.AbstractTableSection;
-import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.v21.ui.Activator;
 import org.apache.geronimo.st.v21.ui.wizards.GBeanWizard;
-import org.eclipse.jface.viewers.IContentProvider;
-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$
+ * @version $Rev: 688452 $ $Date: 2008-08-24 01:56:20 -0400 (Sun, 24 Aug 2008) $
  */
-public class GBeanSection extends AbstractTableSection {
+public class GBeanSection extends AbstractTreeSection {
 
-    /**
-     * @param plan
-     * @param parent
-     * @param toolkit
-     * @param style
-     */
     public GBeanSection(JAXBElement plan, List gbeans, Composite parent, FormToolkit toolkit, int style) {
         super(plan, parent, toolkit, style);
         this.objectContainer = gbeans;
-        this.COLUMN_NAMES = new String[] {
-                CommonMessages.name, CommonMessages.className };
         createClient();
     }
 
+    @Override
     public String getTitle() {
         return CommonMessages.editorSectionGBeanTitle;
     }
 
+    @Override
     public String getDescription() {
         return CommonMessages.editorSectionGBeanDescription;
     }
 
-    public List getObjectContainer() {
-        //NOTE this is a list of JAXBElements of GBeans, not just GBeans
-        if (objectContainer == null) {
-            objectContainer = (List)JAXBObjectFactoryImpl.getInstance().create(List.class);
-        }
-        return objectContainer;
-    }
-
+    @Override
     public Wizard getWizard() {
         return new GBeanWizard(this);
     }
 
+    @Override
     public Class getTableEntryObjectType() {
         return Gbean.class;
     }
 
+    @Override
+    protected void activateAddButton() {
+        if (tree.getSelectionCount() == 0 || tree.getSelection()[0].getParentItem() == null) {
+            addButton.setEnabled(true);
+        } else {
+            addButton.setEnabled(false);
+        }
+    }
+
+    public Gbean getSelectedGbean () {
+        if (tree.getSelection().length == 0) {
+            return null;
+        }
+        return (Gbean)((JAXBElement)tree.getSelection()[0].getData()).getValue();
+    }
+    
+    @Override
+    public void removeItem(Object anItem) {
+        JAXBElement element =(JAXBElement)tree.getSelection()[0].getData(); 
+        Object object = element.getValue();
+        if (Gbean.class.isInstance(object)) {
+            objectContainer.remove(anItem);
+        }
+        else {
+            Gbean gbean = (Gbean)((JAXBElement)tree.getSelection()[0].getParentItem().getData()).getValue();
+            gbean.getAttributeOrXmlAttributeOrReference().remove(element);
+        }
+    }
+    
+    @Override
     public Object getInput() {
         if (objectContainer != null) {
             return objectContainer;
@@ -82,62 +103,78 @@
         return super.getInput();
     }
 
-    // overwrite this method.
-    // The item is a GBean and the list is a list of JAXBElements of GBean 
-    public void removeItem (Object anItem) {
-        JAXBElement element;
-        Gbean gbean, removeItem;
-        removeItem = (Gbean)anItem;
-        for (int i = 0; i < objectContainer.size(); i++)
-        {
-            element = (JAXBElement)objectContainer.get(i);
-            gbean = (Gbean)element.getValue();
-            if (removeItem.getName().equals(gbean.getName()) && 
-                removeItem.getClazz().equals(gbean.getClazz()))
-            {
-                getObjectContainer().remove(i);
-                return;
-            }
-        }
-    }
-
     @Override
-    public IContentProvider getContentProvider() {
+    public ITreeContentProvider getContentProvider() {
         return new ContentProvider() {
             @Override
             public Object[] getElements(Object inputElement) {
-                if (!List.class.isInstance(inputElement)) {
-                    return new String[] { "" };
+                return getChildren(inputElement);
+            }
+
+            @Override
+            public Object[] getChildren(Object parentElement) {
+                if (List.class.isInstance(parentElement)) {
+                    return ((List)parentElement).toArray();
                 }
-                // convert the list of JAXBElements into regular GBeans
-                List elementList = (List) inputElement;
-                ArrayList gbeanList = new ArrayList();
-                JAXBElement element;
-                Gbean gbean;
-                for (int i = 0; i < elementList.size(); i++) {
-                    element = (JAXBElement) elementList.get(i);
-                    gbean = (Gbean) element.getValue();
-                    gbeanList.add(gbean);
+                if (JAXBElement.class.isInstance(parentElement)) {
+                    Object object = ((JAXBElement)parentElement).getValue();
+                    if (Gbean.class.isInstance(object)) {
+                        Gbean gbean = (Gbean)object;
+                        return gbean.getAttributeOrXmlAttributeOrReference().toArray();
+                    }
                 }
-                return gbeanList.toArray();
+                return new String[] {};
             }
         };
     }
 
     @Override
-    public ITableLabelProvider getLabelProvider() {
+    public ILabelProvider getLabelProvider() {
         return new LabelProvider() {
             @Override
-            public String getColumnText(Object element, int columnIndex) {
-                if (Gbean.class.isInstance(element)) {
-                    Gbean gbean = (Gbean)element;
-                    switch (columnIndex) {
-                    case 0: return gbean.getName();
-                    case 1: return gbean.getClazz();
+            public String getText(Object element) {
+                if (JAXBElement.class.isInstance(element)) {
+                    Object object = ((JAXBElement)element).getValue();
+                    if (Gbean.class.isInstance(object)) {
+                        Gbean gbean = (Gbean)object;
+                        return "GBean: name = \"" + gbean.getName() +
+                                "\", class = \"" + gbean.getClazz() + "\"";
+                    }
+                    else if (Attribute.class.isInstance(object)) {
+                        Attribute attribute = (Attribute)object;
+                        return "Attribute: name = \"" + attribute.getName() + 
+                                "\", type = \"" + attribute.getType() + 
+                                "\", value = \"" + attribute.getValue() + "\"";
+                    }
+                    else if (Pattern.class.isInstance(object)) {
+                        Pattern dependency = (Pattern)object;
+                        return "Dependency: group = \"" + dependency.getGroupId() +
+                                "\", artifact = \"" + dependency.getArtifactId() +
+                                "\", version = \"" + dependency.getVersion() +
+                                "\", module = \"" + dependency.getModule() +
+                                "\", type = \"" + dependency.getType() +
+                                "\", custom name = \"" + dependency.getCustomFoo() + "\"";
+                    }
+                    else if (Reference.class.isInstance(object)) {
+                        Reference reference = (Reference)object;
+                        return "Reference: name = \"" + reference.getName() +
+                                "\", group = \"" + reference.getGroupId() +
+                                "\", artifact = \"" + reference.getArtifactId() +
+                                "\", version = \"" + reference.getVersion() +
+                                "\", module = \"" + reference.getModule() +
+                                "\", type = \"" + reference.getType() +
+                                "\", custom name = \"" + reference.getCustomFoo() + "\"";
                     }
                 }
+
                 return null;
             }
+
+            @Override
+            public Image getImage(Object arg0) {
+                return Activator.imageDescriptorFromPlugin("org.eclipse.jst.j2ee",
+                        "icons/full/obj16/security_role.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/SecurityAdvancedSection.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/SecurityAdvancedSection.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/SecurityAdvancedSection.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/SecurityAdvancedSection.java Fri Aug 29 13:43:47 2008
@@ -30,8 +30,7 @@
 import org.apache.geronimo.st.ui.CommonMessages;
 import org.apache.geronimo.st.ui.sections.AbstractTableSection;
 import org.apache.geronimo.st.v21.core.jaxb.JAXBModelUtils;
-import org.apache.geronimo.st.v21.ui.wizards.SecurityRunAsSubjectAddWizard;
-import org.apache.geronimo.st.v21.ui.wizards.SecurityRunAsSubjectEditWizard;
+import org.apache.geronimo.st.v21.ui.wizards.SecurityRunAsSubjectWizard;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.viewers.IBaseLabelProvider;
 import org.eclipse.jface.viewers.IContentProvider;
@@ -230,7 +229,7 @@
 
     @Override
     public Object getInput() {
-        return SecurityRoleMappingsSection.getRoleMappings(getPlan(), false);
+        return SecurityRoleMappingSection.getRoleMappings(getPlan(), false);
     }
 
     @Override
@@ -285,13 +284,8 @@
     }
 
     @Override
-    public Wizard getAddWizard() {
-        return new SecurityRunAsSubjectAddWizard(this);
-    }
-
-    @Override
     protected Wizard getWizard() {
-        return new SecurityRunAsSubjectEditWizard(this);
+        return new SecurityRunAsSubjectWizard(this);
     }
 
     @Override
@@ -305,7 +299,7 @@
     }
 
     public Role getRole(String roleName) {
-        List<Role> roles = SecurityRoleMappingsSection.getRoles(getPlan(), false);
+        List<Role> roles = SecurityRoleMappingSection.getRoles(getPlan(), false);
         for (int i = 0; i < roles.size(); i++) {
             Role role = roles.get(i);
             if (role.getRoleName().equals(roleName)) {
@@ -316,7 +310,7 @@
     }
 
     public String[] getRolesWithoutRunAsSubject() {
-        List<Role> roles = SecurityRoleMappingsSection.getRoles(getPlan(), false);
+        List<Role> roles = SecurityRoleMappingSection.getRoles(getPlan(), false);
         List<Role> rolesWithoutRunAsSubject = new ArrayList<Role>();
         for (int i = 0; i < roles.size(); i++) {
             Role role = roles.get(i);

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/SecurityRoleMappingSection.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/SecurityRoleMappingSection.java?rev=690385&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/SecurityRoleMappingSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/SecurityRoleMappingSection.java Fri Aug 29 13:43:47 2008
@@ -0,0 +1,288 @@
+/*
+ * 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.v21.ui.sections;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.security.DistinguishedName;
+import org.apache.geronimo.jee.security.LoginDomainPrincipal;
+import org.apache.geronimo.jee.security.Principal;
+import org.apache.geronimo.jee.security.RealmPrincipal;
+import org.apache.geronimo.jee.security.Role;
+import org.apache.geronimo.jee.security.RoleMappings;
+import org.apache.geronimo.jee.security.Security;
+import org.apache.geronimo.st.core.descriptor.AbstractDeploymentDescriptor;
+import org.apache.geronimo.st.core.descriptor.ApplicationDeploymentDescriptor;
+import org.apache.geronimo.st.core.descriptor.EjbDeploymentDescriptor;
+import org.apache.geronimo.st.core.descriptor.WebDeploymentDescriptor;
+import org.apache.geronimo.st.core.jaxb.JAXBUtils;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.v21.core.jaxb.JAXBModelUtils;
+import org.apache.geronimo.st.v21.ui.Activator;
+import org.apache.geronimo.st.v21.ui.wizards.SecurityRoleMappingWizard;
+import org.eclipse.jface.action.IAction;
+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.swt.widgets.TreeItem;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SecurityRoleMappingSection extends AbstractTreeSection {
+
+    public SecurityRoleMappingSection(JAXBElement plan, Composite parent, FormToolkit toolkit, int style) {
+        super(plan, parent, toolkit, style);
+        createClient();
+    }
+
+    public SecurityRoleMappingSection(JAXBElement plan, AbstractDeploymentDescriptor descriptor, Composite parent,
+            FormToolkit toolkit, int style) {
+        super(plan, descriptor, parent, toolkit, style);
+        createClient();
+    }
+
+    @Override
+    protected boolean isRequiredSyncToolbarAction() {
+        return true;
+    }
+
+    @Override
+    protected IAction getSyncAction() {
+        return new SyncAction(CommonMessages.securityRefreshRoles) {
+            @Override
+            public void run() {
+                if( addRolesFromDeploymentDescriptor() ) {
+                    markDirty();
+                }
+            }
+        };
+    }
+
+    @Override
+    protected void activateRemoveButton() {
+        if (tree.getSelectionCount() > 0 && tree.getSelection()[0].getParentItem() != null) {
+            removeButton.setEnabled(true);
+        } else {
+            removeButton.setEnabled(false);
+        }
+    }
+
+    @Override
+    protected void activateEditButton() {
+        if (tree.getSelectionCount() > 0 && tree.getSelection()[0].getParentItem() != null) {
+            editButton.setEnabled(true);
+        } else {
+            editButton.setEnabled(false);
+        }
+    }
+
+    @Override
+    protected void activateAddButton() {
+        if (tree.getSelectionCount() > 0 && tree.getSelection()[0].getParentItem() == null) {
+            addButton.setEnabled(true);
+        } else {
+            addButton.setEnabled(false);
+        }
+    }
+
+    @Override
+    public void handleDelete() {
+        TreeItem selectedItem = tree.getSelection()[0];
+        Object selectedObject = selectedItem.getData();
+        Role role = (Role) selectedItem.getParentItem().getData();
+        ((ArrayList) JAXBUtils.getValue(role, selectedObject.getClass().getSimpleName())).remove(selectedObject);
+    }
+
+    public Role getSelectedRoleDuringAdd() {
+        return (Role) tree.getSelection()[0].getData();
+    }
+
+    @Override
+    public String getTitle() {
+        return CommonMessages.editorSectionSecurityRolesTitle;
+    }
+
+    @Override
+    public String getDescription() {
+        return CommonMessages.editorSectionSecurityRolesDescription;
+    }
+
+    @Override
+    public Wizard getWizard() {
+        return new SecurityRoleMappingWizard(this);
+    }
+
+    @Override
+    public Class getTableEntryObjectType() {
+        return Role.class;
+    }
+
+    @Override
+    public List getObjectContainer() {
+        return getRoles(getPlan(), false);
+    }
+
+    public static List<Role> getRoles(JAXBElement plan, boolean create) {
+        RoleMappings roleMappings = getRoleMappings(plan, create);
+        if (roleMappings != null) {
+            return roleMappings.getRole();
+        }
+        return null;
+    }
+
+    public static RoleMappings getRoleMappings(JAXBElement plan, boolean create) {
+        Security security = JAXBModelUtils.getSecurity(plan);
+        if (security == null && create) {
+            security = new Security();
+            JAXBModelUtils.setSecurity(plan, security);
+        }
+        if (security != null) {
+            RoleMappings roleMappings = security.getRoleMappings();
+            if (roleMappings == null && create) {
+                roleMappings = new RoleMappings();
+                security.setRoleMappings(roleMappings);
+            }
+            return roleMappings;
+        }
+        return null;
+    }
+
+    protected boolean addRolesFromDeploymentDescriptor() {
+        List<String> declaredRoleNames = null;
+        if (WebDeploymentDescriptor.class.isInstance(getDescriptor())) {
+            declaredRoleNames = ((WebDeploymentDescriptor)getDescriptor()).getSecurityRoles();
+        }
+        else if (ApplicationDeploymentDescriptor.class.isInstance(getDescriptor())) {
+            declaredRoleNames = ((ApplicationDeploymentDescriptor)getDescriptor()).getSecurityRoles();
+        }
+        else if (EjbDeploymentDescriptor.class.isInstance(getDescriptor())) {
+            declaredRoleNames = ((EjbDeploymentDescriptor)getDescriptor()).getSecurityRoles();
+        }
+        
+        if (declaredRoleNames == null || declaredRoleNames.size() <= 0) {
+            return false;
+        }
+        List<Role> definedRoles = getRoles(getPlan(), true);
+        List<Role> newRoles = new ArrayList<Role>();
+        for (int i = 0; i < declaredRoleNames.size(); i++) {
+            String roleName = declaredRoleNames.get(i);
+            boolean roleExists = false;
+            for (int j = 0; j < definedRoles.size(); j++) {
+                if (definedRoles.get(j).getRoleName().equals(roleName)) {
+                    roleExists = true;
+                    break;
+                }
+            }
+            if (!roleExists) {
+                Role newRole = new Role();
+                newRole.setRoleName(roleName);
+                newRoles.add(newRole);
+            }
+        }
+        definedRoles.addAll(newRoles);
+        return newRoles.size() > 0;
+    }
+
+    @Override
+    public Object getInput() {
+        addRolesFromDeploymentDescriptor();
+        return getRoleMappings(getPlan(), false);
+    }
+
+    @Override
+    public ITreeContentProvider getContentProvider() {
+        return new ContentProvider() {
+            @Override
+            public Object[] getElements(Object inputElement) {
+                return getChildren(inputElement);
+            }
+
+            @Override
+            public Object[] getChildren(Object parentElement) {
+                if (RoleMappings.class.isInstance(parentElement)) {
+                    return ((RoleMappings) parentElement).getRole().toArray();
+                }
+                if (parentElement instanceof Role) {
+                    Role role = (Role) parentElement;
+                    return concat(role.getDistinguishedName().toArray(), role.getPrincipal().toArray(), 
+                            role.getLoginDomainPrincipal().toArray(), role.getRealmPrincipal().toArray());
+                }
+                return new String[] {};
+            }
+
+            private Object[] concat(Object[] arr1, Object[] arr2, Object[] arr3, Object[] arr4) {
+                Object[] all = new Object[arr1.length + arr2.length + arr3.length + arr4.length];
+                System.arraycopy(arr1, 0, all, 0, arr1.length);
+                System.arraycopy(arr2, 0, all, arr1.length, arr2.length);
+                System.arraycopy(arr3, 0, all, arr1.length + arr2.length, arr3.length);
+                System.arraycopy(arr4, 0, all, arr1.length + arr2.length + arr3.length, arr4.length);
+                return all;
+            }
+        };
+    }
+
+    @Override
+    public ILabelProvider getLabelProvider() {
+        return new LabelProvider() {
+            @Override
+            public String getText(Object element) {
+                if (Role.class.isInstance(element)) {
+                    Role role = (Role) element;
+                    return "Role: role-name = \"" + role.getRoleName() + "\"";
+                }
+                else if (element instanceof DistinguishedName) {
+                    DistinguishedName object = (DistinguishedName) element;
+                    return "DistinguishedName: name = \"" + object.getName() + "\"";
+                }
+                else if (element instanceof RealmPrincipal) {
+                    RealmPrincipal object = (RealmPrincipal) element;
+                    return "RealmPrincipal: name = \"" + object.getName() +
+                            "\", class = \"" + object.getClazz() +
+                            "\", domain-name = \"" + object.getDomainName() +
+                            "\", realm-name = \"" + object.getRealmName() +"\"";
+                }
+                else if (element instanceof LoginDomainPrincipal) {
+                    LoginDomainPrincipal object = (LoginDomainPrincipal) element;
+                    return "LoginDomainPrincipal: name = \"" + object.getName() +
+                            "\", class = \"" + object.getClazz() +
+                            "\", domain-name = \"" + object.getDomainName() +"\"";
+                }
+                else if (element instanceof Principal) {
+                    Principal object = (Principal) element;
+                    return "Principal: name = \"" + object.getName() +
+                            "\", class = \"" + object.getClazz() + "\"";
+                }
+
+                return null;
+            }
+
+            @Override
+            public Image getImage(Object arg0) {
+                return Activator.imageDescriptorFromPlugin("org.eclipse.jst.j2ee",
+                        "icons/full/obj16/security_role.gif").createImage();
+            }
+        };
+    }
+}

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

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

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

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/DependencyWizard.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/DependencyWizard.java?rev=690385&r1=690384&r2=690385&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/DependencyWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/DependencyWizard.java Fri Aug 29 13:43:47 2008
@@ -16,23 +16,36 @@
  */
 package org.apache.geronimo.st.v21.ui.wizards;
 
+import java.util.List;
+
 import org.apache.geronimo.jee.deployment.Dependency;
 import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory;
 import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.SortListener;
 import org.apache.geronimo.st.ui.sections.AbstractTableSection;
 import org.apache.geronimo.st.ui.wizards.AbstractTableWizard;
+import org.apache.geronimo.st.v21.core.GeronimoServerInfo;
 import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
 
 /**
  * @version $Rev$ $Date$
  */
 public class DependencyWizard extends AbstractTableWizard {
 
-    protected boolean isServerEnvironment;
+    private Table dependencyTable;
+    private TabFolder tabFolder;
 
-    public DependencyWizard(AbstractTableSection section, boolean isServerEnvironment) {
+    public DependencyWizard(AbstractTableSection section) {
         super(section);
-        this.isServerEnvironment = isServerEnvironment;
     }
 
     public JAXBObjectFactory getEFactory() {
@@ -52,6 +65,118 @@
         return stringArray;
     }
 
+    public void addPages() {
+        addPage(new DependencyWizardPage("AddDependencyPage"));
+    }
+
+    public class DependencyWizardPage extends DynamicWizardPage {
+
+        public DependencyWizardPage(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            parent.setLayoutData(createGridData());
+
+            Composite composite = createComposite(parent);
+            tabFolder = new TabFolder(composite, SWT.NONE);
+            tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+            TabItem item1 = new TabItem(tabFolder, SWT.NONE);
+            item1.setText(CommonMessages.wizardTabManual_Dependency);
+            Composite addManuallyComposite = createComposite(tabFolder);
+            createEditFields(addManuallyComposite);
+            item1.setControl(addManuallyComposite);
+
+            if (eObject == null) {
+                TabItem item2 = new TabItem(tabFolder, SWT.NONE);
+                item2.setText(CommonMessages.wizardTabServer_Dependency);
+                createTable(tabFolder);
+                populateTable();
+                item2.setControl(dependencyTable);
+            }
+            tabFolder.pack();
+            doCustom(composite);
+            setControl(composite);
+        }
+
+        public GridData createGridData() {
+            GridData data = new GridData();
+            data.verticalAlignment = GridData.FILL;
+            data.horizontalAlignment = GridData.FILL;
+            data.grabExcessVerticalSpace = true;
+            data.grabExcessHorizontalSpace = true;
+            data.heightHint = 230;
+            data.widthHint = 300;
+            return data;
+        }
+
+        private void createTable(Composite composite) {
+            int style = SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
+
+            dependencyTable = new Table(composite, style);
+            GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
+            data.grabExcessHorizontalSpace = true;
+            data.grabExcessVerticalSpace = true;
+            data.horizontalSpan = 2;
+            data.horizontalAlignment = GridData.FILL;
+            data.heightHint = 60;
+            data.widthHint = 400;
+            dependencyTable.setLayoutData(data);
+            dependencyTable.setLinesVisible(false);
+            dependencyTable.setHeaderVisible(true);
+
+            String[] columnNames = section.getTableColumnNames();
+            final TableColumn[] column = new TableColumn[columnNames.length];
+            int columnWidth[] = { 80, 220, 50, 65 };
+            Listener sortListener = new SortListener(dependencyTable, columnNames);
+            for (int i = 0; i < columnNames.length; ++i) {
+                column[i] = new TableColumn(dependencyTable, SWT.LEFT, i);
+                column[i].setText(columnNames[i]);
+                column[i].setWidth(columnWidth[i]);
+                column[i].addListener(SWT.Selection, sortListener);
+            }
+        }
+
+        public void populateTable() {
+            List<Dependency> serverList = GeronimoServerInfo.getInstance().getCommonLibs();
+            List<Dependency> alreadyAddedDependencies = (List<Dependency>) section.getObjectContainer();
+            serverList.removeAll(alreadyAddedDependencies);
+            for (int i = 0; i < serverList.size(); ++i) {
+                TableItem tabItem = new TableItem(dependencyTable, SWT.NONE);
+                Dependency dependency = serverList.get(i);
+                tabItem.setData(dependency);
+                tabItem.setText(dependencyToStringArray(dependency));
+            }
+        }
+    }
+
+    public boolean performFinish() {
+        switch (tabFolder.getSelectionIndex()) {
+        case -1:
+            // no item selected!
+            return false;
+        case 0:
+            // Adding Manually
+            if (eObject == null) {
+                eObject = new Dependency();
+                section.getObjectContainer().add(eObject);
+            }
+            processEAttributes(getPages()[0]);
+            break;
+        case 1:
+            // Adding from Server
+            TableItem[] selectedItems = dependencyTable.getSelection();
+            for (int i = 0; i < selectedItems.length; i++) {
+                TableItem selectedItem = selectedItems[i];
+                Dependency dependency = (Dependency) selectedItem.getData();
+                section.getObjectContainer().add(dependency);
+            }
+            break;
+        }
+        return true;
+    }
+
     public String getAddWizardWindowTitle() {
         return CommonMessages.wizardNewTitle_Dependency;
     }

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=690385&r1=690384&r2=690385&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 Fri Aug 29 13:43:47 2008
@@ -16,33 +16,271 @@
  */
 package org.apache.geronimo.st.v21.ui.wizards;
 
+import java.util.ArrayList;
 import javax.xml.bind.JAXBElement;
 
+import org.apache.geronimo.jee.deployment.Attribute;
 import org.apache.geronimo.jee.deployment.Gbean;
 import org.apache.geronimo.jee.deployment.ObjectFactory;
+import org.apache.geronimo.jee.deployment.Pattern;
+import org.apache.geronimo.jee.deployment.Reference;
 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.AbstractWizard;
 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 AbstractTableWizard {
+public class GBeanWizard extends AbstractWizard {
 
-    public GBeanWizard(AbstractTableSection section) {
+    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);
+    }
+
+    public class GBeanWizardPage extends AbstractWizardPage {
+        protected ArrayList<Label> labelList;
+        protected Composite composite;
+
+        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();
+                }
+            });
+
+            if (eObject == null) {
+                element.select(GBEAN);
+                if (((GBeanSection)section).getSelectedGbean() == null) {
+                    element.setEnabled(false);
+                }
+            }
+            else {
+                // change eObject to be the value of the JAXBElement
+                eObject = ((JAXBElement)eObject).getValue();
+                if (Gbean.class.isInstance(eObject)) {
+                    textList.get(0).setText(((Gbean)eObject).getName());
+                    textList.get(1).setText(((Gbean)eObject).getClazz());
+                    element.select(GBEAN);
+                }
+                else if (Attribute.class.isInstance(eObject)) {
+                    textList.get(0).setText(((Attribute)eObject).getName());
+                    textList.get(1).setText(((Attribute)eObject).getType());
+                    textList.get(2).setText(((Attribute)eObject).getValue());
+                    element.select(ATTRIBUTE);
+                }
+                else if (Pattern.class.isInstance(eObject)) {
+                    textList.get(0).setText(((Pattern)eObject).getGroupId());
+                    textList.get(1).setText(((Pattern)eObject).getArtifactId());
+                    textList.get(2).setText(((Pattern)eObject).getVersion());
+                    textList.get(3).setText(((Pattern)eObject).getModule());
+                    textList.get(4).setText(((Pattern)eObject).getType());
+                    textList.get(5).setText(((Pattern)eObject).getCustomFoo());
+                    element.select(DEPENDENCY);
+                }
+                else if (Reference.class.isInstance(eObject)) {
+                    textList.get(0).setText(((Reference)eObject).getName());
+                    textList.get(1).setText(((Reference)eObject).getGroupId());
+                    textList.get(2).setText(((Reference)eObject).getArtifactId());
+                    textList.get(3).setText(((Reference)eObject).getVersion());
+                    textList.get(4).setText(((Reference)eObject).getModule());
+                    textList.get(5).setText(((Reference)eObject).getType());
+                    textList.get(6).setText(((Reference)eObject).getCustomFoo());
+                    element.select(REFERENCE);
+                }
+                element.setEnabled(false);
+            }
+            toggleFields();
+            setControl(composite);
+        }
+        
+        private void toggleFields () {
+            int selection = element.getSelectionIndex();
+            switch (selection) {
+            case GBEAN:
+                for (int i = 0; i < 7; i++) {
+                    labelList.get(i).setVisible(i < 2 ? true : false);
+                    textList.get(i).setVisible(i < 2 ? true : false);
+                }
+                labelList.get(0).setText(CommonMessages.name);
+                labelList.get(1).setText(CommonMessages.className);
+                // if we are doing an add, then we need to make sure that the longest
+                // text can be handled
+                labelList.get(2).setText(CommonMessages.groupId);
+                labelList.get(3).setText(CommonMessages.artifactId);
+                labelList.get(4).setText(CommonMessages.moduleId);
+                labelList.get(5).setText(CommonMessages.artifactType);
+                labelList.get(6).setText(CommonMessages.customName);
+                break;
+            case ATTRIBUTE:
+                for (int i = 0; i < 7; i++) {
+                    labelList.get(i).setVisible(i < 3 ? true : false);
+                    textList.get(i).setVisible(i < 3 ? true : false);
+                }
+                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++) {
+                    labelList.get(i).setVisible(i < 6 ? true : false);
+                    textList.get(i).setVisible(i < 6 ? true : false);
+                }
+                labelList.get(0).setText(CommonMessages.groupId);
+                labelList.get(1).setText(CommonMessages.artifactId);
+                labelList.get(2).setText(CommonMessages.version);
+                labelList.get(3).setText(CommonMessages.moduleId);
+                labelList.get(4).setText(CommonMessages.artifactType);
+                labelList.get(5).setText(CommonMessages.customName);
+                break;
+            case REFERENCE:
+                for (int i = 0; i < 7; i++) {
+                    labelList.get(i).setVisible(true);
+                    textList.get(i).setVisible(true);
+                }
+                labelList.get(0).setText(CommonMessages.name);
+                labelList.get(1).setText(CommonMessages.groupId);
+                labelList.get(2).setText(CommonMessages.artifactId);
+                labelList.get(3).setText(CommonMessages.version);
+                labelList.get(4).setText(CommonMessages.moduleId);
+                labelList.get(5).setText(CommonMessages.artifactType);
+                labelList.get(6).setText(CommonMessages.customName);
+                break;
+            }
+        }
+    }
+
+    @Override
+    public void addPages() {
+        addPage(new GBeanWizardPage("Page0"));
+    }
+
+    @Override
+    public boolean performFinish() {
+        Gbean gbean;
+        switch (element.getSelectionIndex()) {
+        case GBEAN:
+            if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(1).getText())) {
+                return false;
+            }
+            gbean = (Gbean)eObject;
+            if (gbean == null) {
+                gbean = (Gbean)getEFactory().create(Gbean.class);
+                JAXBElement plan = section.getPlan();
+                
+                // add the JAXBElement of a GBean, not the GBean
+                ObjectFactory objectFactory = new ObjectFactory();
+                JAXBModelUtils.getGbeans(plan).add(objectFactory.createGbean((Gbean)gbean));
+            }
+            gbean.setName(textList.get(0).getText());
+            gbean.setClazz(textList.get(1).getText());
+            break;
+
+        case ATTRIBUTE:
+            if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(1).getText())) {
+                return false;
+            }
+            Attribute attribute = (Attribute)eObject;
+            if (attribute == null) {
+                attribute = (Attribute)getEFactory().create(Attribute.class);
+                gbean = ((GBeanSection)section).getSelectedGbean();
+                
+                // add the JAXBElement of an Attribute, not the Attribute
+                ObjectFactory objectFactory = new ObjectFactory();
+                gbean.getAttributeOrXmlAttributeOrReference().add(objectFactory.createGbeanAttribute(attribute));
+            }
+            attribute.setName(textList.get(0).getText());
+            attribute.setType(textList.get(1).getText());
+            attribute.setValue(textList.get(2).getText());
+            break;
+
+        case DEPENDENCY:
+            if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(1).getText())) {
+                return false;
+            }
+            Pattern dependency = (Pattern)eObject;
+            if (dependency == null) {
+                dependency = (Pattern)getEFactory().create(Pattern.class);
+                gbean = ((GBeanSection)section).getSelectedGbean();
+
+                // add the JAXBElement of a Dependency, not the Dependency
+                ObjectFactory objectFactory = new ObjectFactory();
+                gbean.getAttributeOrXmlAttributeOrReference().add(objectFactory.createGbeanDependency(dependency));
+            }
+            dependency.setGroupId(textList.get(0).getText());
+            dependency.setArtifactId(textList.get(1).getText());
+            dependency.setVersion(textList.get(2).getText());
+            dependency.setModule(textList.get(3).getText());
+            dependency.setType(textList.get(4).getText());
+            dependency.setCustomFoo(textList.get(5).getText());
+            break;
+
+        case REFERENCE:
+            if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(1).getText()) ||
+                    isEmpty(textList.get(2).getText())) {
+                return false;
+            }
+            Reference reference = (Reference)eObject;
+            if (reference == null) {
+                reference = (Reference)getEFactory().create(Reference.class);
+                gbean = ((GBeanSection)section).getSelectedGbean();
+
+                // add the JAXBElement of a Dependency, not the Dependency
+                ObjectFactory objectFactory = new ObjectFactory();
+                gbean.getAttributeOrXmlAttributeOrReference().add(objectFactory.createGbeanReference(reference));
+            }
+            reference.setName(textList.get(0).getText());
+            reference.setGroupId(textList.get(1).getText());
+            reference.setArtifactId(textList.get(2).getText());
+            reference.setVersion(textList.get(3).getText());
+            reference.setModule(textList.get(4).getText());
+            reference.setType(textList.get(5).getText());
+            reference.setCustomFoo(textList.get(6).getText());
+            break;
+        }
+        return true;
     }
 
     public JAXBObjectFactory getEFactory() {
         return JAXBObjectFactoryImpl.getInstance();
     }
-    
-    public String[] getTableColumnEAttributes() {
-        return new String[] { "Name", "Clazz" };
-    }
 
     public String getAddWizardWindowTitle() {
         return CommonMessages.wizardNewTitle_GBean;
@@ -52,32 +290,11 @@
         return CommonMessages.wizardEditTitle_GBean;
     }
 
-    public String getWizardFirstPageTitle() {
+    public String getWizardPageTitle() {
         return CommonMessages.wizardEditTitle_GBean;
     }
 
-    public String getWizardFirstPageDescription() {
+    public String getWizardPageDescription() {
         return CommonMessages.wizardPageTitle_GBean;
     }
-
-    public boolean performFinish() {
-        DynamicWizardPage page = (DynamicWizardPage) getPages()[0];
-
-        if (eObject == null) {
-            eObject = getEFactory().create(Gbean.class);
-            JAXBElement plan = section.getPlan();
-
-            // add the JAXBElement of a GBean, not the GBean
-            ObjectFactory objectFactory = new ObjectFactory();
-            JAXBModelUtils.getGbeans(plan).add(objectFactory.createGbean((Gbean)eObject));
-        }
-
-        processEAttributes (page);
-
-        if (section.getViewer().getInput() == null) {
-            section.getViewer().setInput(section.getInput());
-        }
-
-        return true;
-    }
 }

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.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/SecurityRoleMappingWizard.java?rev=690385&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.java Fri Aug 29 13:43:47 2008
@@ -0,0 +1,233 @@
+/*
+ * 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.v21.ui.wizards;
+
+import java.util.List;
+
+import org.apache.geronimo.jee.security.DistinguishedName;
+import org.apache.geronimo.jee.security.LoginDomainPrincipal;
+import org.apache.geronimo.jee.security.Principal;
+import org.apache.geronimo.jee.security.RealmPrincipal;
+import org.apache.geronimo.jee.security.Role;
+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.v21.core.GeronimoServerInfo;
+import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
+import org.apache.geronimo.st.v21.ui.sections.SecurityRoleMappingSection;
+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 SecurityRoleMappingWizard extends AbstractWizard {
+    public static final String[] PRINCIPAL_CLASSES = {
+            "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal",
+            "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" };
+
+    private final int DISTINGUISHED_NAME = 0;
+    private final int PRINCIPAL = 1;
+    private final int LOGIN_DOMAIN_PRINCIPAL = 2;
+    private final int REALM_PRINCIPAL = 3;
+    private final String[] ROLE_MAPPING_TYPES = {
+            "Distinguished Name", "Principal", "Login Domain Principal", "Realm Principal" };
+
+    protected Combo type;
+    protected Text name;
+    protected Combo clazz;
+    protected Text domainName;
+    protected Combo realmName;
+    
+    public SecurityRoleMappingWizard(AbstractTreeSection section) {
+        super(section);
+    }
+
+    protected static String[] getSecurityRealms() {
+        List<String> securityRealms = GeronimoServerInfo.getInstance().getSecurityRealms();
+        return securityRealms.toArray(new String[securityRealms.size()]);
+    }
+
+    public class SecurityRoleMappingsWizardPage extends AbstractWizardPage {
+        protected Label nameLabel, clazzLabel, domainNameLabel, realmNameLabel;
+
+        public SecurityRoleMappingsWizardPage(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            Composite composite = createComposite(parent);
+            createLabel(composite, CommonMessages.type);
+            type = createCombo(composite, ROLE_MAPPING_TYPES, false);
+            nameLabel = createLabel(composite, CommonMessages.name);
+            name = createTextField(composite, "");
+            name.setFocus();
+            clazzLabel = createLabel(composite, CommonMessages.className);
+            clazz = createCombo(composite, PRINCIPAL_CLASSES, true);
+            clazz.select(0);
+            domainNameLabel = createLabel(composite, CommonMessages.editorDomainName);
+            domainName = createTextField(composite, "");
+            realmNameLabel = createLabel(composite, CommonMessages.editorRealmName);
+            realmName = createCombo(composite, getSecurityRealms(), true);
+
+            type.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    toggleFields();
+                }
+            });
+            if (eObject == null) {
+                type.select(DISTINGUISHED_NAME);
+            }
+            else {
+                // set the fields to the values in eObject and select the correct type
+                if (DistinguishedName.class.isInstance(eObject)) {
+                    name.setText(((DistinguishedName)eObject).getName());
+                    type.select(DISTINGUISHED_NAME);
+                }
+                else {
+                    name.setText(((Principal)eObject).getName());
+                    clazz.setText(((Principal)eObject).getClazz());
+                    if (LoginDomainPrincipal.class.isInstance(eObject)) {
+                        domainName.setText(((LoginDomainPrincipal)eObject).getDomainName());
+                        if (RealmPrincipal.class.isInstance(eObject)) {
+                            realmName.setText(((RealmPrincipal)eObject).getRealmName());
+                            type.select(REALM_PRINCIPAL);
+                        }
+                        else {
+                            type.select(LOGIN_DOMAIN_PRINCIPAL);
+                        }
+                    }
+                    else {
+                        type.select(PRINCIPAL);
+                    }
+                }
+                type.setEnabled(false);
+            }
+            toggleFields();
+            setControl(composite);
+        }
+
+        private void toggleFields() {
+            int selection = type.getSelectionIndex();
+            clazzLabel.setVisible (selection >= PRINCIPAL ? true : false);
+            clazz.setVisible (selection >= PRINCIPAL ? true : false);
+            domainNameLabel.setVisible (selection >= LOGIN_DOMAIN_PRINCIPAL ? true : false);
+            domainName.setVisible (selection >= LOGIN_DOMAIN_PRINCIPAL ? true : false);
+            realmNameLabel.setVisible (selection == REALM_PRINCIPAL ? true : false);
+            realmName.setVisible (selection == REALM_PRINCIPAL ? true : false);
+        }
+    }
+
+    @Override
+    public void addPages() {
+        addPage(new SecurityRoleMappingsWizardPage("Page0"));
+    }
+
+    @Override
+    public boolean performFinish() {
+        switch (type.getSelectionIndex()) {
+        case DISTINGUISHED_NAME:
+            if (isEmpty(name.getText())) {
+                return false;
+            }
+            DistinguishedName distinguishedName = (DistinguishedName)eObject;
+            if (distinguishedName == null) {
+                distinguishedName = (DistinguishedName)getEFactory().create(DistinguishedName.class);
+                Role role = ((SecurityRoleMappingSection) section).getSelectedRoleDuringAdd();
+                role.getDistinguishedName().add(distinguishedName);
+            }
+            distinguishedName.setName(name.getText());
+            break;
+
+        case PRINCIPAL:
+            if (isEmpty(name.getText()) || isEmpty(clazz.getText())) {
+                return false;
+            }
+            Principal principal = (Principal)eObject;
+            if (principal == null) {
+                principal = (Principal)getEFactory().create(Principal.class);
+                Role role = ((SecurityRoleMappingSection) section).getSelectedRoleDuringAdd();
+                role.getPrincipal().add(principal);
+            }
+            principal.setName(name.getText());
+            principal.setClazz(clazz.getText());
+            break;
+
+        case LOGIN_DOMAIN_PRINCIPAL:
+            if (isEmpty(name.getText()) || isEmpty(clazz.getText()) || isEmpty(domainName.getText())) {
+                return false;
+            }
+            LoginDomainPrincipal loginDomainPrincipal = (LoginDomainPrincipal)eObject;
+            if (loginDomainPrincipal == null) {
+                loginDomainPrincipal = (LoginDomainPrincipal)getEFactory().create(LoginDomainPrincipal.class);
+                Role role = ((SecurityRoleMappingSection) section).getSelectedRoleDuringAdd();
+                role.getLoginDomainPrincipal().add(loginDomainPrincipal);
+            }
+            loginDomainPrincipal.setName(name.getText());
+            loginDomainPrincipal.setClazz(clazz.getText());
+            loginDomainPrincipal.setDomainName(domainName.getText()); 
+            break;
+
+        case REALM_PRINCIPAL:
+            if (isEmpty(name.getText()) || isEmpty(clazz.getText()) || isEmpty(domainName.getText())
+                    || isEmpty(realmName.getText())) {
+                return false;
+            }
+            RealmPrincipal realmPrincipal = (RealmPrincipal)eObject;
+            if (realmPrincipal == null) {
+                realmPrincipal = (RealmPrincipal)getEFactory().create(RealmPrincipal.class);
+                Role role = ((SecurityRoleMappingSection) section).getSelectedRoleDuringAdd();
+                role.getRealmPrincipal().add(realmPrincipal);
+            }
+            realmPrincipal.setName(name.getText());
+            realmPrincipal.setClazz(clazz.getText());
+            realmPrincipal.setDomainName(domainName.getText());
+            realmPrincipal.setRealmName(realmName.getText());
+            break;
+        }
+        return true;
+    }
+    
+    public JAXBObjectFactory getEFactory() {
+        return JAXBObjectFactoryImpl.getInstance();
+    }
+
+    @Override
+    protected String getAddWizardWindowTitle() {
+        return CommonMessages.wizardNewTitle_RoleMapping;
+    }
+
+    @Override
+    protected String getEditWizardWindowTitle() {
+        return CommonMessages.wizardEditTitle_RoleMapping;
+    }
+
+    @Override
+    protected String getWizardPageTitle() {
+        return CommonMessages.wizardPageTitle_RoleMapping;
+    }
+
+    @Override
+    protected String getWizardPageDescription() {
+        return CommonMessages.wizardPageDescription_RoleMapping;
+    }
+}

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

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

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