org.soitoolkit.tools.generator.plugin.createcomponent.CreateIntegrationComponentPage.java Source code

Java tutorial

Introduction

Here is the source code for org.soitoolkit.tools.generator.plugin.createcomponent.CreateIntegrationComponentPage.java

Source

/* 
 * Licensed to the soi-toolkit project under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The soi-toolkit project 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.soitoolkit.tools.generator.plugin.createcomponent;

import static org.soitoolkit.tools.generator.model.enums.DeploymentModelEnum.STANDALONE_DEPLOY;
import static org.soitoolkit.tools.generator.model.enums.MuleVersionEnum.MULE_3_3_0;
import static org.soitoolkit.tools.generator.plugin.util.SwtUtil.addRadioButtons;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.dialogs.IDialogPage;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.soitoolkit.tools.generator.model.enums.DeploymentModelEnum;
import org.soitoolkit.tools.generator.model.enums.EnumUtil;
import org.soitoolkit.tools.generator.model.enums.MuleVersionEnum;
import org.soitoolkit.tools.generator.model.enums.TransportEnum;
import org.soitoolkit.tools.generator.plugin.util.SwtUtil;
import org.soitoolkit.tools.generator.plugin.util.ValueHolder;

/**
 * The "New" wizard page allows setting the container for the new file as well
 * as the file name. The page will only accept file name without the extension
 * OR with the extension that matches the expected one (mpe).
 */

public class CreateIntegrationComponentPage extends WizardPage {

    //   @Override
    //   public boolean isPageComplete() {
    //      boolean isPageComplete = super.isPageComplete();
    //      System.err.println("CreateIntegrationComponentPage.isPageComplete() returns: " + isPageComplete);
    //      return super.isPageComplete();
    //   }
    //
    //   @Override
    //   public void setPageComplete(boolean complete) {
    //      System.err.println("CreateIntegrationComponentPage.setPageComplete() sets complete  to: " + complete);
    //      super.setPageComplete(complete);
    //   }
    //
    //   @Override
    //   public IWizardPage getPreviousPage() {
    //      IWizardPage p = super.getPreviousPage();
    //      setMustBeDisplayed(false);   
    //      System.err.println("CreateIntegrationComponentPage.getPreviousPage() returns: " + ((p == null)? "NULL" : p.getTitle()));
    //      return p;
    //   }

    @Override
    public IWizardPage getNextPage() {
        IWizardPage[] pages = getWizard().getPages();

        // Skip CreateServiceDescriptionComponentPage - FIX
        ((CreateServiceDescriptionComponentPage) pages[2]).setPageComplete(true);
        // Next Page: "Status Page".
        return pages[3];
    }

    public void setMustBeDisplayed(boolean mustBeDisplayed) {
        this.mustBeDisplayed = mustBeDisplayed;
        dialogChanged();
        //      System.err.println("CreateIntegrationComponentPage.setMustBeDisplayed() sets complete  to: " + mustBeDisplayed);
    }

    private boolean mustBeDisplayed = false;
    private MuleVersionEnum muleVersion = MULE_3_3_0;

    private Combo muleVersionCombo;
    private ValueHolder<Integer> deploymentModelType = new ValueHolder<Integer>(STANDALONE_DEPLOY.ordinal());
    private Button vmButton;
    private Button jmsButton;
    private Button jdbcButton;
    private Button servletButton;
    private Button fileButton;
    private Button ftpButton;
    private Button sftpButton;
    private Button pop3Button;
    private Button imapButton;
    private Button smtpButton;

    private ISelection selection;

    /**
     * Constructor for CreateIntegrationComponentPage.
     * 
     * @param pageName
     */
    public CreateIntegrationComponentPage(ISelection selection) {
        super("wizardPage");
        setTitle("SOI Toolkit - Create a new component, page 2");
        setDescription("Configuration the integration component");
        setImageDescriptor(ImageDescriptor.createFromFile(this.getClass(), "component-large.png"));
        this.selection = selection;
    }

    /**
     * @see IDialogPage#createControl(Composite)
     */
    public void createControl(Composite parent) {
        Composite container = new Composite(parent, SWT.NULL);
        GridLayout layout = new GridLayout();
        container.setLayout(layout);
        layout.numColumns = 1;
        layout.verticalSpacing = 9;

        FocusListener focusListener = new FocusListener() {

            @Override
            public void focusLost(FocusEvent e) {
                System.err.println("CreateIntegrationComponentPage.focusLost() called");
            }

            @Override
            public void focusGained(FocusEvent e) {
                System.err.println("CreateIntegrationComponentPage.focusGained() called");
                setMustBeDisplayed(false);
            }
        };

        container.addFocusListener(focusListener);
        //      Label label = new Label(container, SWT.NULL);
        //      label.setText("&Container:");
        //
        //      containerText = new Text(container, SWT.BORDER | SWT.SINGLE);
        //      GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        //      containerText.setLayoutData(gd);
        //      containerText.addModifyListener(new ModifyListener() {
        //         public void modifyText(ModifyEvent e) {
        //            dialogChanged();
        //         }
        //      });

        // Combo for Mule Version
        Label label = new Label(container, SWT.NULL);
        label.setText("Mule version:");

        muleVersionCombo = new Combo(container, SWT.READ_ONLY);
        muleVersionCombo.setItems(EnumUtil.getLabels(MuleVersionEnum.values()));

        /*
         * Mule Version-Combo-Listener
         */
        SelectionListener muleVersionComboListener = new SelectionListener() {
            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
                System.err.println("### Set default selected MuleVersion");
                Combo c = (Combo) e.widget;
                muleVersion = MuleVersionEnum.get(c.getSelectionIndex());
                System.err.println("### Set default selected MuleVersion to: " + muleVersion);
            }

            @Override
            public void widgetSelected(SelectionEvent e) {
                System.err.println("### Set selected MuleVersion");
                Combo c = (Combo) e.widget;
                muleVersion = MuleVersionEnum.get(c.getSelectionIndex());
                System.err.println("### Set selected MuleVersion to: " + muleVersion);

                dialogChanged();

            }
        };
        muleVersionCombo.addSelectionListener(muleVersionComboListener);

        // Select deployment model
        addRadioButtons(EnumUtil.getLabels(DeploymentModelEnum.values()), "Deployment model:", deploymentModelType,
                container, new Listener() {
                    public void handleEvent(Event e) {
                        dialogChanged();
                    }
                }, false);

        // CheckBoxes for transports
        label = new Label(container, SWT.NULL);
        label.setText("Connectors:");

        int i = 0;
        // Jms transport is mandatory for logging, should not be selectable
        //      vmButton = SwtUtil.createCheckboxButton(container, null, i++, "VM");
        //      vmButton.setSelection(true);
        jmsButton = SwtUtil.createCheckboxButton(container, null, i++, "JMS (required)");
        jmsButton.setSelection(true);
        jmsButton.setEnabled(false);
        jdbcButton = SwtUtil.createCheckboxButton(container, null, i++, "JDBC");
        jdbcButton.setSelection(true);
        servletButton = SwtUtil.createCheckboxButton(container, null, i++, "Servlet");
        servletButton.setSelection(true);

        //      fileButton = SwtUtil.createCheckboxButton(container, null, i++, "File");
        //      fileButton.setSelection(true);

        ftpButton = SwtUtil.createCheckboxButton(container, null, i++, "FTP");
        ftpButton.setSelection(true);

        sftpButton = SwtUtil.createCheckboxButton(container, null, i++, "SFTP");
        sftpButton.setSelection(true);

        //      pop3Button = SwtUtil.createCheckboxButton(container, null, i++, "POP3");
        //      pop3Button.setSelection(true);
        //      imapButton = SwtUtil.createCheckboxButton(container, null, i++, "IMAP");
        //      imapButton.setSelection(true);
        //      smtpButton = SwtUtil.createCheckboxButton(container, null, i++, "SMTP");
        //      smtpButton.setSelection(true);

        // TODO: How to pack?
        //      container.pack();

        initialize();
        dialogChanged();
        setControl(container);
    }

    /**
     * Tests if the current workbench selection is a suitable container to use.
     */

    private void initialize() {
        //      if (selection != null && selection.isEmpty() == false
        //            && selection instanceof IStructuredSelection) {
        //         IStructuredSelection ssel = (IStructuredSelection) selection;
        //         if (ssel.size() > 1)
        //            return;
        //         Object obj = ssel.getFirstElement();
        //         if (obj instanceof IResource) {
        //            IContainer container;
        //            if (obj instanceof IContainer)
        //               container = (IContainer) obj;
        //            else
        //               container = ((IResource) obj).getParent();
        //            containerText.setText(container.getFullPath().toString());
        //         }
        //      }
        muleVersionCombo.select(MULE_3_3_0.ordinal());
    }

    /**
     * Uses the standard container selection dialog to choose the new value for
     * the container field.
     */

    //   private void handleBrowseOrg() {
    //      ContainerSelectionDialog dialog = new ContainerSelectionDialog(
    //            getShell(), ResourcesPlugin.getWorkspace().getRoot(), false,
    //            "Select new file container");
    //      if (dialog.open() == ContainerSelectionDialog.OK) {
    //         Object[] result = dialog.getResult();
    //         if (result.length == 1) {
    //            containerText.setText(((Path) result[0]).toString());
    //         }
    //      }
    //   }

    /**
     * Ensures that both text fields are set.
     */

    private void dialogChanged() {

        if (servletButton != null) {
            if (deploymentModelType.value == STANDALONE_DEPLOY.ordinal()) {
                servletButton.setSelection(false);
                servletButton.setEnabled(false);
                servletButton.setText("Servlet transport disabled, only supported with war deploy model");
            } else {
                servletButton.setSelection(true);
                servletButton.setEnabled(true);
                servletButton.setText("Servlet");
            }
        }

        updateStatus(null);
    }

    private void updateStatus(String message) {
        setErrorMessage(message);
        setPageComplete((message == null) && !mustBeDisplayed);
    }

    //   public String getContainerName() {
    //      return containerText.getText();
    //   }

    //   public boolean isGenSchemaSelected() {
    //      return genSchemaButton.getSelection();
    //   }

    public MuleVersionEnum getMuleVersion() {
        return muleVersion;
    }

    public DeploymentModelEnum getDeploymentModel() {
        return DeploymentModelEnum.get(deploymentModelType.value);
    }

    public List<TransportEnum> getTransports() {
        List<TransportEnum> transports = new ArrayList<TransportEnum>();
        if (isVmTransportSelected())
            transports.add(TransportEnum.VM);
        if (isJmsTransportSelected())
            transports.add(TransportEnum.JMS);
        if (isJdbcTransportSelected())
            transports.add(TransportEnum.JDBC);
        if (isServletTransportSelected())
            transports.add(TransportEnum.SERVLET);
        if (isFileTransportSelected())
            transports.add(TransportEnum.FILE);
        if (isFtpTransportSelected())
            transports.add(TransportEnum.FTP);
        if (isSftpTransportSelected())
            transports.add(TransportEnum.SFTP);
        if (isPop3TransportSelected())
            transports.add(TransportEnum.POP3);
        if (isImapTransportSelected())
            transports.add(TransportEnum.IMAP);
        if (isSmtpTransportSelected())
            transports.add(TransportEnum.SMTP);
        return transports;
    }

    // ---------------

    private boolean isVmTransportSelected() {
        return vmButton != null && vmButton.getSelection();
    }

    private boolean isJmsTransportSelected() {
        return jmsButton != null && jmsButton.getSelection();
    }

    private boolean isJdbcTransportSelected() {
        return jdbcButton != null && jdbcButton.getSelection();
    }

    private boolean isServletTransportSelected() {
        return servletButton != null && servletButton.getSelection();
    }

    private boolean isFileTransportSelected() {
        return fileButton != null && fileButton.getSelection();
    }

    private boolean isFtpTransportSelected() {
        return ftpButton != null && ftpButton.getSelection();
    }

    private boolean isSftpTransportSelected() {
        return sftpButton != null && sftpButton.getSelection();
    }

    private boolean isPop3TransportSelected() {
        return pop3Button != null && pop3Button.getSelection();
    }

    private boolean isImapTransportSelected() {
        return imapButton != null && imapButton.getSelection();
    }

    private boolean isSmtpTransportSelected() {
        return smtpButton != null && smtpButton.getSelection();
    }
}