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

svn commit: r723874 [4/4] - in /geronimo/devtools/eclipse-plugin/trunk/plugins: org.apache.geronimo.jee.v21.jaxbmodel/META-INF/ org.apache.geronimo.jee.v21.jaxbmodel/src/main/java/org/apache/geronimo/jee/plugin/ org.apache.geronimo.st.core/src/main/jav...

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/PrerequisiteWizard.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/PrerequisiteWizard.java?rev=723874&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/PrerequisiteWizard.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/PrerequisiteWizard.java Fri Dec  5 13:30:03 2008
@@ -0,0 +1,117 @@
+/*
+ * 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 org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.wizards.AbstractWizard;
+import org.apache.geronimo.system.plugin.model.ArtifactType;
+import org.apache.geronimo.system.plugin.model.PrerequisiteType;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class PrerequisiteWizard extends AbstractWizard {
+
+    protected PrerequisiteType prereq;
+    
+    protected Text group;
+    protected Text artifact;
+    protected Text version;
+    protected Text type;
+    protected Text description;
+    
+    public PrerequisiteWizard (PrerequisiteType oldPrereq) {
+        super();
+        prereq = oldPrereq;
+    }
+
+    public String getAddWizardWindowTitle() {
+        return CommonMessages.wizardNewTitle_Prerequisite;
+    }
+
+    public String getEditWizardWindowTitle() {
+        return CommonMessages.wizardEditTitle_Prerequisite;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.wizard.IWizard#addPages()
+     */
+    public void addPages() {
+        addPage(new MessageDestWizardPage("Page0"));
+    }
+
+    // need to extend the DynamicWizardPage only so that when the Edit dialog is shown
+    // the values are brought in properly.
+    public class MessageDestWizardPage extends AbstractWizardPage {
+        public MessageDestWizardPage(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            Composite composite = createComposite(parent);
+            createLabel (composite, CommonMessages.groupId);
+            group = createTextField (composite, "");
+            createLabel (composite, CommonMessages.artifactId);
+            artifact = createTextField (composite, "");
+            createLabel (composite, CommonMessages.version);
+            version = createTextField (composite, "");
+            createLabel (composite, CommonMessages.type);
+            type = createTextField (composite, "");
+            createLabel (composite, CommonMessages.description);
+            description = createTextField (composite, "");
+
+            if (prereq != null) {
+                group.setText(prereq.getId().getGroupId());
+                artifact.setText(prereq.getId().getArtifactId());
+                version.setText(prereq.getId().getVersion());
+                type.setText(prereq.getResourceType());
+                description.setText(prereq.getDescription());
+            }
+            setControl(composite);
+        }
+
+        public String getWizardPageTitle() {
+            return CommonMessages.wizardPageTitle_Prerequisite;
+        }
+
+        public String getWizardPageDescription() {
+            return CommonMessages.wizardPageDescription_Prerequisite;
+        }
+    }
+    
+    public boolean performFinish() {
+        prereq = new PrerequisiteType();
+        ArtifactType artType = new ArtifactType();
+        artType.setGroupId(group.getText());
+        artType.setArtifactId(artifact.getText());
+        artType.setType(type.getText());
+        artType.setVersion(version.getText());
+        prereq.setId(artType);
+        prereq.setResourceType(type.getText());
+        prereq.setDescription(description.getText());
+
+        return true;
+    }
+    
+    public PrerequisiteType getPrerequisite() {
+        return prereq;
+    }
+}

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/PrerequisiteWizard.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/PrerequisiteWizard.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/PrerequisiteWizard.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/ServerCustomAssemblyWizard.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/ServerCustomAssemblyWizard.java?rev=723874&r1=723873&r2=723874&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerCustomAssemblyWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerCustomAssemblyWizard.java Fri Dec  5 13:30:03 2008
@@ -20,7 +20,7 @@
 
 import org.apache.geronimo.st.ui.CommonMessages;
 import org.apache.geronimo.st.ui.wizards.AbstractWizard;
-import org.apache.geronimo.st.v21.core.operations.GeronimoCustomServerAssembly;
+import org.apache.geronimo.st.v21.core.operations.GeronimoServerPluginManager;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
@@ -35,16 +35,16 @@
 public class ServerCustomAssemblyWizard extends AbstractWizard {
 
     private Table pluginTable;
-
+    
     protected Text group;
     protected Text artifact;
     protected Text version;
     protected Text type;
     protected Text serverPath;
 
-    protected GeronimoCustomServerAssembly customAssembly;
+    protected GeronimoServerPluginManager customAssembly;
 
-    public ServerCustomAssemblyWizard(GeronimoCustomServerAssembly customAssembly) {
+    public ServerCustomAssemblyWizard(GeronimoServerPluginManager customAssembly) {
         super();
         this.customAssembly = customAssembly;
     }
@@ -113,7 +113,7 @@
 
         public void populateTable() {
             List<String> pluginList = customAssembly.getPluginList();
-
+             
             for (int i = 0; i < pluginList.size(); ++i) {
                 TableItem tableItem = new TableItem(pluginTable, SWT.NONE);
                 String tableEntry = pluginList.get(i);
@@ -139,7 +139,7 @@
             isEmpty(serverPath.getText()) || pluginTable.getSelectionCount() == 0) {
             return false;
         }
-        customAssembly.assembleServer(group.getText(), artifact.getText(), version.getText(), type.getText(),
+        customAssembly.assembleServer(group.getText(), artifact.getText(), version.getText(), type.getText(), 
                 serverPath.getText(), pluginTable.getSelectionIndices());
         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/ServerPluginManagerDialog.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/ServerPluginManagerDialog.java?rev=723874&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerPluginManagerDialog.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerPluginManagerDialog.java Fri Dec  5 13:30:03 2008
@@ -0,0 +1,43 @@
+/*
+ * 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 org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ServerPluginManagerDialog extends WizardDialog {
+    private ServerPluginManagerWizard wizard;
+    public ServerPluginManagerDialog(Shell parentShell, ServerPluginManagerWizard newWizard) {
+        super(parentShell, newWizard);
+        wizard = newWizard;
+    }
+
+    @Override
+    protected void nextPressed() {
+        wizard.nextPressed();
+        super.nextPressed();
+    }
+
+    @Override
+    protected void backPressed() {
+        wizard.backPressed();
+        super.backPressed();
+    }
+}

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerPluginManagerDialog.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/ServerPluginManagerDialog.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/ServerPluginManagerDialog.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerPluginManagerWizard.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/ServerPluginManagerWizard.java?rev=723874&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerPluginManagerWizard.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerPluginManagerWizard.java Fri Dec  5 13:30:03 2008
@@ -0,0 +1,754 @@
+/*
+ * 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.io.BufferedReader;
+import java.io.File;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.geronimo.system.plugin.model.ArtifactType;
+import org.apache.geronimo.system.plugin.model.DependencyType;
+import org.apache.geronimo.system.plugin.model.LicenseType;
+import org.apache.geronimo.system.plugin.model.PluginArtifactType;
+import org.apache.geronimo.system.plugin.model.PluginListType;
+import org.apache.geronimo.system.plugin.model.PluginType;
+import org.apache.geronimo.system.plugin.model.PrerequisiteType;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.wizards.AbstractWizard;
+import org.apache.geronimo.st.v21.core.operations.GeronimoServerPluginManager;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ServerPluginManagerWizard extends AbstractWizard {
+
+    protected Text localRepoPath;
+    protected Button createPlugin;
+    protected Button installPlugin;
+    protected Combo createPluginCombo;
+    protected Label pluginCreatedStatus;
+    protected Table licenseTable;
+    protected Table prereqTable;
+    protected Table pluginLoadTable;
+    protected ServerPluginManagerWizardPage1 page1;
+    protected ServerPluginManagerWizardPage2 page2;
+    protected ServerPluginManagerWizardPage3 page3;
+    protected ServerPluginManagerWizardPage4 page4;
+
+    // pageVisible is used to keep track of exactly which page we are viewing
+    protected int pageVisible;
+    protected GeronimoServerPluginManager pluginManager;
+    protected PluginType metadata;
+
+    public ServerPluginManagerWizard(GeronimoServerPluginManager customAssembly) {
+        super();
+        this.pluginManager = customAssembly;
+        pageVisible = 0;
+    }
+
+    public void addPages() {
+        addPage(new ServerPluginManagerWizardPage0("page0"));
+        page1 = new ServerPluginManagerWizardPage1("page1");
+        addPage(page1);
+        page2 = new ServerPluginManagerWizardPage2("page2");
+        addPage(page2);
+        page3 = new ServerPluginManagerWizardPage3("page3");
+        addPage(page3);
+        page4 = new ServerPluginManagerWizardPage4("page4");
+        addPage(page4);
+    }
+
+    public void backPressed () {
+        if (pageVisible == 4) {
+            pageVisible = 0;
+        } else {
+            pageVisible--;
+        }
+    }
+
+    // perform any intermediate steps when next button is pressed
+    public void nextPressed () {
+        switch (pageVisible) {
+            case 0:
+                if (installPlugin.getSelection() == true) {
+                    page4.populateTable(pluginManager.readPluginList(localRepoPath.getText()));
+                    page1.setPageComplete(true);
+                    page2.setPageComplete(true);
+                    page3.setPageComplete(true);
+                    pageVisible = 4;
+                } else {
+                    pageVisible = 1;
+                }
+                break;
+            case 1:
+                metadata = pluginManager.getPluginMetadata(createPluginCombo.getItem(createPluginCombo.getSelectionIndex()));
+                page2.loadMetadata (metadata);
+                pageVisible++;
+                break;
+            case 2:
+                page3.loadMetadata (metadata);
+                pageVisible++;
+                break;
+            case 3:
+                boolean success = true;
+                try {
+                    metadata = page2.getMetadata();
+                    metadata = page3.getMetadata(metadata);
+                    pluginManager.savePluginXML (createPluginCombo.getItem(createPluginCombo.getSelectionIndex()), metadata);
+                    // create the plugin in the proper directory
+                    pluginManager.exportCAR (localRepoPath.getText(), createPluginCombo.getItem(createPluginCombo.getSelectionIndex()));
+                    // update the plugin list that's in the base path
+                    pluginManager.updatePluginList (localRepoPath.getText(), metadata);
+                }
+                catch (Exception e) {
+                    pluginCreatedStatus.setText(CommonMessages.bind(CommonMessages.failedToSave, createPluginCombo.getItem(createPluginCombo.getSelectionIndex())));
+                    Device device = pluginCreatedStatus.getForeground().getDevice();
+                    Color color = new Color (device, 255, 0, 0);
+                    pluginCreatedStatus.setForeground(color);
+                    success = false;
+                }
+                if (success == true) {
+                    pluginCreatedStatus.setText(CommonMessages.bind (CommonMessages.savedSuccess, createPluginCombo.getItem(createPluginCombo.getSelectionIndex())));
+                    Device device = pluginCreatedStatus.getForeground().getDevice();
+                    Color color = new Color (device, 0, 0, 0);
+                    pluginCreatedStatus.setForeground(color);
+                }
+                pageVisible = 0;
+                break;
+        }
+    }
+    
+    public class ServerPluginManagerWizardPage0 extends AbstractWizardPage {
+
+        public ServerPluginManagerWizardPage0(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            parent.setLayoutData(createGridData(400, 300));
+            Composite composite = createComposite(parent);
+
+            createLabel(composite, CommonMessages.localPluginRepo);
+            createLabel(composite, "");
+            localRepoPath = createTextField(composite, "");
+            Button browseButton = createPushButton(composite, CommonMessages.browse);
+            browseButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent e) {
+                    DirectoryDialog dirDlg = new DirectoryDialog(getShell());
+                    dirDlg.setMessage(CommonMessages.localPluginRepo);
+                    dirDlg.setFilterPath(localRepoPath.getText());
+                    localRepoPath.setText(dirDlg.open());
+                }
+            });
+
+            localRepoPath.addModifyListener(new ModifyListener() {
+                public void modifyText(ModifyEvent arg0) {
+                    File temp = new File (localRepoPath.getText());
+                    setPageComplete(temp.isDirectory());
+                }
+            });
+
+            createPlugin = createButton(composite, CommonMessages.createPlugin);
+            installPlugin = createButton(composite, CommonMessages.installPlugins);
+            setPageComplete(false);
+            pluginCreatedStatus = createLabel (composite, "");
+
+            setControl(composite);
+        }
+
+        @Override
+        public IWizardPage getNextPage() {
+            IWizardPage[] pages = getPages();
+            if (createPlugin.getSelection() == true) {
+                return super.getNextPage();
+            } else {
+                return pages[4];
+            }
+        }
+
+        @Override
+        public void setPreviousPage(IWizardPage page) {
+            super.setPreviousPage(null);
+        }
+
+        @Override
+        protected String getWizardPageTitle() {
+            return CommonMessages.wizardPage0Title_PluginManager;
+        }
+
+        @Override
+        protected String getWizardPageDescription() {
+            return CommonMessages.wizardPage0Description_PluginManager;
+        }
+    }
+
+    public class ServerPluginManagerWizardPage1 extends AbstractWizardPage {
+
+        public ServerPluginManagerWizardPage1(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            parent.setLayoutData(createGridData(400, 300));
+            Composite composite = createComposite(parent);
+
+            List<String> strList = pluginManager.getConfigurationList();
+            String[] strArray = new String[strList.size()];
+            strArray = strList.toArray(strArray);
+            createPluginCombo = createCombo(composite, strArray, false);
+            createPluginCombo.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    setPageComplete(createPluginCombo.getSelectionIndex() > -1);
+                }
+            });
+
+            setPageComplete(false);
+            setControl(composite);
+        }
+
+        @Override
+        protected String getWizardPageTitle() {
+            return CommonMessages.wizardPage1Title_PluginManager;
+        }
+
+        @Override
+        protected String getWizardPageDescription() {
+            return CommonMessages.wizardPage1Description_PluginManager;
+        }
+    }
+
+    public class ServerPluginManagerWizardPage2 extends AbstractWizardPage {
+        Text name, downloadRepos, category, description, pluginURL, author;
+        Text geronimoVersions, jvmVersions, dependencies, obsoletes;
+        Label id;
+        
+        public ServerPluginManagerWizardPage2(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            parent.setLayoutData(createGridData(400, 300));
+            Composite composite = createComposite(parent);
+
+            createLabel (composite, CommonMessages.name);
+            name = createTextField (composite, "");
+            createLabel (composite, CommonMessages.id);
+            id = createLabel (composite, "");
+            createLabel (composite, CommonMessages.downloadRepos);
+            downloadRepos = createMultiTextField (composite, null);
+            createLabel (composite, CommonMessages.category);
+            category = createTextField (composite, "");
+            createLabel (composite, CommonMessages.description);
+            description = createMultiTextField (composite, null);
+            createLabel (composite, CommonMessages.pluginURL);
+            pluginURL = createTextField (composite, "");
+            createLabel (composite, CommonMessages.author);
+            author = createTextField (composite, "");
+            createLabel (composite, CommonMessages.geronimoVersions);
+            geronimoVersions = createMultiTextField (composite, null);
+            createLabel (composite, CommonMessages.jvmVersions);
+            jvmVersions = createMultiTextField (composite, null);
+            createLabel (composite, CommonMessages.dependencies);
+            dependencies = createMultiTextField (composite, null);
+            createLabel (composite, CommonMessages.obsoletes);
+            obsoletes = createMultiTextField (composite, null);
+
+            setControl(composite);
+        }
+
+        public void loadMetadata (PluginType metadata) {
+            PluginArtifactType instance = metadata.getPluginArtifact().get(0);
+            setText (name, metadata.getName());
+            id.setText (artifactToString(instance.getModuleId()));
+            setText (downloadRepos, combine (instance.getSourceRepository()));
+            setText (category, metadata.getCategory());
+            setText (description, metadata.getDescription());
+            setText (pluginURL, metadata.getUrl());
+            setText (author, metadata.getAuthor());
+            setText (geronimoVersions, combine(instance.getGeronimoVersion()));
+            setText (jvmVersions, combine(instance.getJvmVersion()));
+            setText (dependencies, artifactsToString(instance.getDependency()));
+            setText (obsoletes, artifactsToString(instance.getObsoletes()));
+        }
+
+        public PluginType getMetadata () {
+            metadata = pluginManager.getPluginMetadata(id.getText());
+            PluginArtifactType instance = metadata.getPluginArtifact().get(0);
+            metadata.setName(name.getText());
+            split (downloadRepos.getText(), instance.getSourceRepository());
+            metadata.setCategory(category.getText());
+            metadata.setDescription(description.getText());
+            metadata.setUrl(pluginURL.getText());
+            metadata.setAuthor(author.getText());
+            split (geronimoVersions.getText(), instance.getGeronimoVersion());
+            split (jvmVersions.getText(), instance.getJvmVersion());
+            stringToDependencies (split(dependencies.getText()), instance.getDependency());
+            stringToArtifacts (split(obsoletes.getText()), instance.getObsoletes());
+            return metadata;
+        }
+
+        private void stringToArtifacts(List<String> artifacts, List<ArtifactType> result) {
+            result.clear();
+            for (String artifact : artifacts) {
+                result.add(pluginManager.toArtifactType(artifact));
+            }
+        }
+
+        private void stringToDependencies(List<String> artifacts, List<DependencyType> result) {
+            result.clear();
+            for (String artifact : artifacts) {
+                result.add(pluginManager.toDependencyType(artifact));
+            }
+        }
+
+        private List<String> split(String deps) {
+            List<String> split = new ArrayList<String>();
+            if (deps != null && !deps.equals("")) {
+                split(deps, split);
+            }
+            return split;
+        }
+
+        private void split(String deps, List<String> split) {
+            split.clear();
+            BufferedReader in = new BufferedReader(new StringReader(deps));
+            String line;
+            try {
+                while ((line = in.readLine()) != null) {
+                    line = line.trim();
+                    if (!line.equals("")) {
+                        split.add(line);
+                    }
+                }
+                in.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        private String artifactsToString(List<? extends ArtifactType> artifacts) {
+            if (artifacts == null || artifacts.size() == 0) {
+                return null;
+            }
+            StringBuffer buf = new StringBuffer();
+            boolean first = true;
+            for (ArtifactType artifactType : artifacts) {
+                if (!first) {
+                    buf.append("\n");
+                }
+                first = false;
+                buf.append(artifactToString(artifactType));
+            }
+            return buf.toString();
+         }
+        
+        private String artifactToString(ArtifactType artifact) {
+            StringBuffer buffer = new StringBuffer();
+
+            if (artifact.getGroupId() != null) {
+                buffer.append(artifact.getGroupId());
+            }
+            buffer.append("/");
+
+            if (artifact.getArtifactId() != null) {
+                buffer.append(artifact.getArtifactId());
+            }
+            buffer.append("/");
+
+            if (artifact.getVersion() != null) {
+                buffer.append(artifact.getVersion());
+            }
+            buffer.append("/");
+
+            if (artifact.getType() != null) {
+                buffer.append(artifact.getType());
+            }
+            return buffer.toString();
+        }
+        
+        private void setText (Text text, String value) {
+            if (value != null) {
+                text.setText(value);
+            } else {
+                text.setText("");
+            }
+        }
+
+        private String combine(List<String> strings) {
+            if (strings == null || strings.size() == 0) {
+                return null;
+            }
+            StringBuffer buf = new StringBuffer();
+            boolean first = true;
+            for (String string : strings) {
+                if (!first) {
+                    buf.append("\n");
+                }
+                first = false;
+                buf.append(string);
+            }
+            return buf.toString();
+        }
+
+        @Override
+        protected String getWizardPageTitle() {
+            return CommonMessages.wizardPage2Title_PluginManager;
+        }
+
+        @Override
+        protected String getWizardPageDescription() {
+            return CommonMessages.wizardPage2Description_PluginManager;
+        }
+    }
+
+    public class ServerPluginManagerWizardPage3 extends AbstractWizardPage {
+        protected Button addLicenseButton, editLicenseButton, removeLicenseButton;
+        protected Button addPrereqButton, editPrereqButton, removePrereqButton;
+        protected PluginType pluginType;
+        
+        public ServerPluginManagerWizardPage3(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            parent.setLayoutData(createGridData(400, 300));
+            Composite composite = createComposite(parent);
+
+            String[] lColumnNames = {CommonMessages.license, CommonMessages.osiApproved};
+            int[] lColumnWidths = {300, 100};
+            licenseTable = createEditableTable(composite, lColumnNames, lColumnWidths);
+            licenseTable.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    activateButtons();
+                }
+            });
+            Composite licenseButtonComposite = createButtonComposite(composite);
+            addLicenseButton = createPushButton(licenseButtonComposite, CommonMessages.add);
+            addLicenseButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    LicenseWizard wizard = new LicenseWizard(null);
+                    if (wizard != null) {
+                        WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+                        dialog.open();
+                        if (dialog.getReturnCode() == Dialog.OK) {
+                            LicenseType newLicense = wizard.getLicense();
+                            pluginType.getLicense().add(newLicense);
+                            loadMetadata(pluginType);
+                            activateButtons();
+                        }
+                    }
+                }
+            });
+            editLicenseButton = createPushButton(licenseButtonComposite, CommonMessages.edit);
+            editLicenseButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    LicenseType oldLicense = (LicenseType)licenseTable.getItem(licenseTable.getSelectionIndex()).getData();
+                    LicenseWizard wizard = new LicenseWizard(oldLicense);
+                    if (wizard != null) {
+                        WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+                        dialog.open();
+                        if (dialog.getReturnCode() == Dialog.OK) {
+                            LicenseType newLicense = wizard.getLicense();
+                            int index = pluginType.getLicense().indexOf(oldLicense);
+                            pluginType.getLicense().remove(index);
+                            pluginType.getLicense().add(index, newLicense);
+                            loadMetadata(pluginType);
+                            activateButtons();
+                        }
+                    }
+                }
+            });
+            removeLicenseButton = createPushButton(licenseButtonComposite, CommonMessages.remove);
+            removeLicenseButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    LicenseType license;
+                    license = (LicenseType)licenseTable.getItem(licenseTable.getSelectionIndex()).getData();
+                    pluginType.getLicense().remove(license);
+                    loadMetadata(pluginType);
+                    activateButtons();
+                }
+            });
+
+            String[] pColumnNames = {CommonMessages.groupId, CommonMessages.artifactId, CommonMessages.version, CommonMessages.type, CommonMessages.description};
+            int[] pColumnWidths = {50, 50, 50, 50, 200};
+            prereqTable = createEditableTable(composite, pColumnNames, pColumnWidths);
+            prereqTable.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    activateButtons();
+                }
+            });
+            Composite prereqButtonComposite = createButtonComposite(composite);
+            addPrereqButton = createPushButton(prereqButtonComposite, CommonMessages.add);
+            addPrereqButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    PrerequisiteWizard wizard = new PrerequisiteWizard(null);
+                    if (wizard != null) {
+                        WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+                        dialog.open();
+                        if (dialog.getReturnCode() == Dialog.OK) {
+                            PrerequisiteType newPrereq = wizard.getPrerequisite();
+                            pluginType.getPluginArtifact().get(0).getPrerequisite().add(newPrereq);
+                            loadMetadata(pluginType);
+                            activateButtons();
+                        }
+                    }
+                }
+            });
+            editPrereqButton = createPushButton(prereqButtonComposite, CommonMessages.edit);
+            editPrereqButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    PrerequisiteType oldPrereq = (PrerequisiteType)prereqTable.getItem(prereqTable.getSelectionIndex()).getData();
+                    PrerequisiteWizard wizard = new PrerequisiteWizard(oldPrereq);
+                    if (wizard != null) {
+                        WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+                        dialog.open();
+                        if (dialog.getReturnCode() == Dialog.OK) {
+                            PrerequisiteType newPrereq = wizard.getPrerequisite();
+                            int index = pluginType.getPluginArtifact().get(0).getPrerequisite().indexOf(oldPrereq);
+                            pluginType.getPluginArtifact().get(0).getPrerequisite().remove(index);
+                            pluginType.getPluginArtifact().get(0).getPrerequisite().add(index, newPrereq);
+                            loadMetadata(pluginType);
+                            activateButtons();
+                        }
+                    }
+                }
+            });
+            removePrereqButton = createPushButton(prereqButtonComposite, CommonMessages.remove);
+            removePrereqButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    PrerequisiteType prereq;
+                    prereq = (PrerequisiteType)prereqTable.getItem(prereqTable.getSelectionIndex()).getData();
+                    pluginType.getPluginArtifact().get(0).getPrerequisite().remove(prereq);
+                    loadMetadata(pluginType);
+                    activateButtons();
+                }
+            });
+            activateButtons();
+            setControl(composite);
+        }
+
+        protected void activateButtons() {
+            editLicenseButton.setEnabled(licenseTable.getSelectionCount() > 0);
+            removeLicenseButton.setEnabled(licenseTable.getSelectionCount() > 0);
+            editPrereqButton.setEnabled(prereqTable.getSelectionCount() > 0);
+            removePrereqButton.setEnabled(prereqTable.getSelectionCount() > 0);
+        }
+        
+        protected Composite createButtonComposite(Composite parent) {
+            Composite buttonComp = new Composite(parent, SWT.NONE);
+            GridLayout layout = new GridLayout();
+            layout.horizontalSpacing = 2;
+            layout.verticalSpacing = 2;
+            layout.marginWidth = 0;
+            layout.marginHeight = 0;
+            layout.numColumns = 1;
+            buttonComp.setLayout(layout);
+            buttonComp.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false));
+            return buttonComp;
+        }
+
+        @Override
+        public IWizardPage getNextPage() {
+            return getPages()[0];
+        }
+
+        public void loadMetadata (PluginType metadata) {
+            pluginType = metadata;
+            PluginArtifactType instance = pluginType.getPluginArtifact().get(0);
+            licenseTable.removeAll();
+            List<LicenseType> licenses = pluginType.getLicense();
+            for (int i = 0; i < licenses.size(); i++) {
+                TableItem tabItem = new TableItem (licenseTable, SWT.NONE);
+                LicenseType license = licenses.get(i);
+                tabItem.setData(license);
+                tabItem.setText(licenseToStringArray(license));
+            }
+            prereqTable.removeAll();
+            List<PrerequisiteType> prereqs = instance.getPrerequisite();
+            for (int i = 0; i < prereqs.size(); i++) {
+                TableItem tabItem = new TableItem (prereqTable, SWT.NONE);
+                PrerequisiteType prereq = prereqs.get(i);
+                tabItem.setData(prereq);
+                tabItem.setText(prereqToStringArray(prereq));
+            }
+        }
+
+        // may not need this once the add/edit/delete buttons are available
+        public PluginType getMetadata (PluginType metadata) {
+            PluginArtifactType instance = metadata.getPluginArtifact().get(0);
+
+            metadata.getLicense().clear();
+            for (int i = 0; i < licenseTable.getItemCount(); i++) {
+                LicenseType license = (LicenseType)licenseTable.getItem (i).getData();
+                metadata.getLicense().add(license);
+            }
+            instance.getPrerequisite().clear();
+            for (int i = 0; i < prereqTable.getItemCount(); i++) {
+                PrerequisiteType prereq = (PrerequisiteType)prereqTable.getItem (i).getData();
+                instance.getPrerequisite().add(prereq);
+            }
+            return metadata;
+        }
+        
+        private String[] licenseToStringArray (LicenseType license) {
+            String[] stringArray = new String[licenseTable.getColumnCount()];
+            stringArray[0] = license.getValue();
+            stringArray[1] = String.valueOf(license.isOsiApproved());
+            return stringArray;
+        }
+        
+        private String[] prereqToStringArray (PrerequisiteType prereq) {
+            String[] stringArray = new String[prereqTable.getColumnCount()];
+            if (prereq.getId() != null) {
+                stringArray[0] = prereq.getId().getGroupId();
+                stringArray[1] = prereq.getId().getArtifactId();
+                stringArray[2] = prereq.getId().getVersion();
+            } else {
+                stringArray[0] = "";
+                stringArray[1] = "";
+                stringArray[2] = "";
+            }
+            stringArray[3] = prereq.getResourceType();
+            stringArray[4] = prereq.getDescription();
+            return stringArray;
+        }
+
+        @Override
+        protected String getWizardPageTitle() {
+            return CommonMessages.wizardPage3Title_PluginManager;
+        }
+
+        @Override
+        protected String getWizardPageDescription() {
+            return CommonMessages.wizardPage3Description_PluginManager;
+        }
+    }
+
+    public class ServerPluginManagerWizardPage4 extends AbstractWizardPage {
+
+        public ServerPluginManagerWizardPage4(String pageName) {
+            super(pageName);
+        }
+
+        public void createControl(Composite parent) {
+            parent.setLayoutData(createGridData(400, 300));
+            Composite composite = createComposite(parent);
+
+            String[] columnNames = {CommonMessages.plugin, CommonMessages.version, CommonMessages.category, CommonMessages.installable};
+            int[] columnWidths = {175, 75, 100, 75};
+            pluginLoadTable = this.createTable(composite, columnNames, columnWidths);
+            pluginLoadTable.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent arg0) {
+                    TableItem tabItem = pluginLoadTable.getItem(pluginLoadTable.getSelectionIndex());
+                    if (tabItem.getText(3).equals("false")) {
+                        pluginLoadTable.deselect(pluginLoadTable.getSelectionIndex());
+                    }
+                    if (pluginLoadTable.getSelectionCount() > 0) {
+                        setPageComplete(true);
+                    } else {
+                        setPageComplete(false);
+                    }
+                }
+                
+            });
+            
+            setPageComplete(false);
+            setControl(composite);
+        }
+
+        @Override
+        public IWizardPage getPreviousPage() {
+            return getPages()[0];
+        }
+        
+        public void populateTable (PluginListType pluginList) {
+            String[] pluginValues;
+            pluginLoadTable.removeAll();
+            List<PluginType> plugins = pluginList.getPlugin();
+            for (int i = 0; i < plugins.size(); i++) {
+                TableItem tabItem = new TableItem (pluginLoadTable, SWT.NONE);
+                PluginType plugin = plugins.get(i);
+                tabItem.setData(plugin);
+                pluginValues = pluginToStringArray(plugin);
+                tabItem.setText(pluginValues);
+            }
+        }
+        
+        private String[] pluginToStringArray (PluginType plugin) {
+            String[] stringArray = new String[pluginLoadTable.getColumnCount()];
+            stringArray[0] = plugin.getName();
+            stringArray[1] = plugin.getPluginArtifact().get(0).getModuleId().getVersion();
+            stringArray[2] = plugin.getCategory();
+            stringArray[3] = String.valueOf(pluginManager.validatePlugin(plugin));
+            return stringArray;
+        }
+
+        @Override
+        protected String getWizardPageTitle() {
+            return CommonMessages.wizardPage4Title_PluginManager;
+        }
+
+        @Override
+        protected String getWizardPageDescription() {
+            return CommonMessages.wizardPage4Description_PluginManager;
+        }
+    }
+
+    public boolean performFinish() {
+        // take each selected object in the pluginLoadTable and install and start 
+        List<PluginType> pluginList = new ArrayList<PluginType>();
+        for (int i = 0; i < pluginLoadTable.getSelectionCount(); i++) {
+            pluginList.add ((PluginType)pluginLoadTable.getItem(pluginLoadTable.getSelectionIndices()[i]).getData());
+        }
+        pluginManager.installPlugins(localRepoPath.getText(), pluginList);
+
+        return true;
+    }
+
+    @Override
+    protected String getAddWizardWindowTitle() {
+        return CommonMessages.wizardTitle_PluginManager;
+    }
+
+    @Override
+    protected String getEditWizardWindowTitle() {
+        return CommonMessages.wizardTitle_PluginManager;
+    }
+}

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/ServerPluginManagerWizard.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/ServerPluginManagerWizard.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/ServerPluginManagerWizard.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain