com.ebmwebsourcing.petals.services.su.wizards.pages.JbiAbstractPage.java Source code

Java tutorial

Introduction

Here is the source code for com.ebmwebsourcing.petals.services.su.wizards.pages.JbiAbstractPage.java

Source

/******************************************************************************
 * Copyright (c) 2008-2013, Linagora
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *       Linagora - initial API and implementation
 *******************************************************************************/

package com.ebmwebsourcing.petals.services.su.wizards.pages;

import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import com.ebmwebsourcing.petals.common.internal.provisional.swt.QNameText;
import com.ebmwebsourcing.petals.common.internal.provisional.utils.StringUtils;
import com.ebmwebsourcing.petals.common.internal.provisional.utils.SwtFactory;
import com.ebmwebsourcing.petals.services.PetalsServicesPlugin;
import com.ebmwebsourcing.petals.services.su.extensions.SuWizardSettings;
import com.sun.java.xml.ns.jbi.AbstractEndpoint;

/**
 * The abstract wizard page showing JBI standard fields.
 * @author Vincent Zurczak - EBM WebSourcing
 */
public abstract class JbiAbstractPage extends AbstractSuWizardPage {

    public static final String PAGE_NAME = "JbiPage";

    protected QNameText itfQText, srvQText;
    protected Text edptText;
    protected Image tipImage;

    /**
     * Constructor.
     * @param suType the component type used by the SU (e.g. FTP, XSLT...).
     * @param suTypeVersion the version of the Petals component used by the SU.
     */
    public JbiAbstractPage() {
        super(PAGE_NAME);
        this.tipImage = PetalsServicesPlugin.loadImage("icons/obj16/smartmode_co.gif");
    }

    /*
     * (non-Javadoc)
     * @see org.eclipse.jface.dialogs.DialogPage
     * #dispose()
     */
    @Override
    public void dispose() {

        if (this.tipImage != null && !this.tipImage.isDisposed())
            this.tipImage.dispose();

        super.dispose();
    }

    /*
     * (non-Javadoc)
     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
     */
    @Override
    public final void createControl(Composite parent) {

        // Container
        final Composite container = SwtFactory.createComposite(parent);
        setControl(container);
        SwtFactory.applyNewGridLayout(container, 2, false, 20, 15, 0, 15);
        SwtFactory.applyHorizontalGridData(container);

        // Set the page description
        setDescription(getDescription());

        // Create controls in the form.
        createCustomControls(container);
    }

    /**
     * This method defines the controls to add in the page.
     * <p>
     * It should use {@link JbiAbstractPage#createCommonControls(Composite)}
     * </p>
     *
     * @param container the parent container with a two-column layout
     */
    protected abstract void createCustomControls(Composite container);

    /**
     * Create JBI common controls (service, interface and end-point names).
     * @param parent the parent
     * @param marginTop the margin above the first widget.
     */
    protected void createCommonControls(Composite container, int marginTop) {

        // Interface name
        SuWizardSettings settings = getWizard().getSettings();
        Label l = SwtFactory.createLabel(container, "Interface Name *:",
                "The qualified name of the service contract");
        SwtFactory.applyGridData(l, 1, marginTop);

        this.itfQText = SwtFactory.createQNameTextField(container, false, "Interface",
                "http://Your.Interface.Namespace/");
        SwtFactory.applyHorizontalGridData(this.itfQText, 1, marginTop);
        if (!settings.activateInterfaceName)
            this.itfQText.setEditable(false);

        this.itfQText.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent e) {
                getNewlyCreatedEndpoint().setInterfaceName(JbiAbstractPage.this.itfQText.getValue());
                validate();
            }
        });

        // Service name
        SwtFactory.createLabel(container, "Service Name:", "The qualified name of the service implementation");
        this.srvQText = SwtFactory.createQNameTextField(container, true, "Service  ",
                "http://Your.Service.Namespace/");
        if (settings.activateServiceNameOnly)
            this.srvQText.setNamespacePartEditable(false);
        else if (!settings.activateServiceName)
            this.srvQText.setEditable(false);

        this.srvQText.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent e) {
                if (!((StyledText) e.widget).isEnabled())
                    return;

                getNewlyCreatedEndpoint().setServiceName(JbiAbstractPage.this.srvQText.getValue());
                validate();
            }
        });

        // End-point name
        SwtFactory.createLabel(container, "End-point Name:", "The name of the service deployment point");
        this.edptText = SwtFactory.createSimpleTextField(container, true);
        if (!settings.activateEndpointName)
            this.edptText.setEditable(false);

        this.edptText.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent e) {
                if (!((Text) e.widget).isEnabled())
                    return;

                String edpt = JbiAbstractPage.this.edptText.getText();
                if (StringUtils.isEmpty(edpt))
                    edpt = null;

                getNewlyCreatedEndpoint().setEndpointName(edpt);
                validate();
            }
        });
    }

    /*
     * (non-Javadoc)
     * @see org.eclipse.jface.dialogs.DialogPage
     * #setVisible(boolean)
     */
    @Override
    public void setVisible(boolean visible) {

        // Update the UI
        if (visible) {
            AbstractEndpoint ae = getNewlyCreatedEndpoint();
            this.itfQText.setValue(ae.getInterfaceName());
            this.srvQText.setValue(ae.getServiceName());
            String edpt = ae.getEndpointName();

            if (!getWizard().getComponentVersionDescription().getAutoGeneratedEndpointValue().equals(edpt))
                this.edptText.setText(edpt == null ? "" : edpt);

            String errorMsg = getErrorMessage();
            if (errorMsg != null) {
                setMessage(errorMsg, IMessageProvider.INFORMATION);
                setErrorMessage(null);
            }

            setPageComplete(errorMsg == null);
        }

        // Call to super
        super.setVisible(visible);
    }
}