Package org.apache.geronimo.st.v21.ui.wizards

Source Code of org.apache.geronimo.st.v21.ui.wizards.ServerPluginManagerWizard$ServerPluginManagerWizardPage5

/*
* 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: 816093 $ $Date: 2009-09-17 16:29:37 +0800 (Thu, 17 Sep 2009) $
*/
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;
    protected ServerPluginManagerWizardPage5 page5;

    // 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);
        page5 = new ServerPluginManagerWizardPage5("page5");
        addPage(page5);
    }

    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);
                    page5.setPageComplete(false);
                    pageVisible = 4;
                } else {
                    // refresh the list of available plugins
                    page1.refreshPluginList();
                    page1.setPageComplete(false);
                    page5.setPageComplete(true);
                    pageVisible = 1;
                }
                break;
            case 1:
                try {
                    metadata = pluginManager.getPluginMetadata(createPluginCombo.getItem(createPluginCombo.getSelectionIndex()));
                    page2.loadMetadata (metadata);
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
                pageVisible++;
                break;
            case 2:
                try {
                    page3.loadMetadata (metadata);
                }
                catch (Exception e) {
                    e.printStackTrace();
                }
                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;
            case 4:
                ArrayList<String> eventList = page4.installPlugins();
                page5.setEventList (eventList);
                page5.setPageComplete(true);
                pageVisible++;
                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.setVisibleItemCount(20);
            createPluginCombo.addSelectionListener(new SelectionAdapter() {
                public void widgetSelected(SelectionEvent arg0) {
                    setPageComplete(createPluginCombo.getSelectionIndex() > -1);
                }
            });

            setPageComplete(false);
            setControl(composite);
        }

        public void refreshPluginList () {
            List<String> strList = pluginManager.getConfigurationList();
            String[] strArray = new String[strList.size()];
            strArray = strList.toArray(strArray);
            createPluginCombo.removeAll();
            createPluginCombo.setItems(strArray);
        }

        @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);

            createLabel(composite, CommonMessages.license);
            createLabel(composite, "");
            String[] lColumnNames = {CommonMessages.license, CommonMessages.osiApproved};
            int[] lColumnWidths = {275, 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();
                }
            });

            createLabel(composite, CommonMessages.prerequisites);
            createLabel(composite, "");
            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);
            }
        }

        // install selected plugins to the server
        public ArrayList<String> installPlugins() {
            // 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());
            }
            return pluginManager.installPlugins(localRepoPath.getText(), pluginList);
        }

        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 class ServerPluginManagerWizardPage5 extends AbstractWizardPage {
        Table eventTable;

        public ServerPluginManagerWizardPage5(String pageName) {
            super(pageName);
        }

        public void createControl(Composite parent) {
            parent.setLayoutData(createGridData(400, 300));
            Composite composite = createComposite(parent);

            String[] columnNames = {CommonMessages.event};
            int[] columnWidths = {400};
            eventTable = this.createTable(composite, columnNames, columnWidths);

            setPageComplete(true);
            setControl(composite);
        }

        protected void setEventList (ArrayList<String> eventList) {
            eventTable.clearAll();
            for (int i = 0; i < eventList.size(); i++) {
                TableItem tabItem = new TableItem (eventTable, SWT.NONE);
                String event = eventList.get(i);
                tabItem.setData(event);
                tabItem.setText(event);
            }
        }

        @Override
        protected String getWizardPageTitle() {
            return CommonMessages.wizardPage5Title_PluginManager;
        }

        @Override
        protected String getWizardPageDescription() {
            return CommonMessages.wizardPage5Description_PluginManager;
        }
    }

    // everything already done, simply close everything down
    public boolean performFinish() {
        return true;
    }

    @Override
    protected String getAddWizardWindowTitle() {
        return CommonMessages.wizardTitle_PluginManager;
    }

    @Override
    protected String getEditWizardWindowTitle() {
        return CommonMessages.wizardTitle_PluginManager;
    }
}
TOP

Related Classes of org.apache.geronimo.st.v21.ui.wizards.ServerPluginManagerWizard$ServerPluginManagerWizardPage5

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.