org.eclipse.epf.importing.wizards.SelectConfigSpecsToImportPage.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.epf.importing.wizards.SelectConfigSpecsToImportPage.java

Source

//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 IBM Corporation and others.
// 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.importing.wizards;

import java.util.Iterator;

import org.eclipse.epf.authoring.ui.AuthoringUIResources;
import org.eclipse.epf.importing.ImportPlugin;
import org.eclipse.epf.importing.ImportResources;
import org.eclipse.epf.importing.services.ConfigSpecs;
import org.eclipse.epf.importing.services.ConfigurationImportData;
import org.eclipse.epf.library.ui.LibraryUIImages;
import org.eclipse.epf.ui.wizards.BaseWizardPage;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

/**
 * A wizard page that prompts the user to select the configuration
 * specificaitons to import.
 * 
 * @author Jeff Hardy
 * @author Kelvin Low
 * @since 1.0
 */
public class SelectConfigSpecsToImportPage extends BaseWizardPage
        implements ISelectionChangedListener, ICheckStateListener {

    public static final String PAGE_NAME = SelectConfigSpecsToImportPage.class.getName();

    private static final String libraryConfigSpecExists = ImportResources.SelectConfigSpecsToImportPage_libraryConfigSpecExists;

    private static final String libraryConfigSpecNotExists = ImportResources.SelectConfigSpecsToImportPage_libraryConfigSpecNotExists;

    private static final String configSpecNoSelection = ImportResources.SelectConfigSpecsToImportPage_configSpecNoSelection;

    private static final String configSpecDataLabel = ImportResources.SelectConfigSpecsToImportPage_configSpecDataLabel;

    private CheckboxTableViewer ctrl_chkboxTableViewer;

    // 2 controls for displaying configspec info for plugins in import directory
    private Text ctrl_briefDescImport;

    private Label importConfigSpecLabel;

    // 2 controls for displaying configspec info for plugins in the library
    private Text ctrl_briefDescLibrary;

    private Label libraryConfigSpecLabel;

    private Composite container;

    private ConfigurationImportData data;

    private Button selectAllButton;

    private Button deselectAllButton;

    /**
     * Creates a new instance.
     */
    public SelectConfigSpecsToImportPage(ConfigurationImportData data) {
        super(PAGE_NAME);
        setTitle(ImportResources.selectConfigSpecsWizardPage_title);
        setDescription(ImportResources.selectConfigSpecsWizardPage_text);
        setImageDescriptor(ImportPlugin.getDefault().getImageDescriptor("full/wizban/imp_lib_conf_wizban.gif")); //$NON-NLS-1$
        this.data = data;
    }

    /**
     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite)
     */
    public void createControl(Composite parent) {
        container = new Composite(parent, SWT.NONE);
        container.setLayout(new GridLayout(2, true));

        Composite tableContainer = new Composite(container, SWT.NONE);
        tableContainer.setLayout(new GridLayout());
        GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.horizontalSpan = 2;
        tableContainer.setLayoutData(gridData);

        Composite container1 = new Composite(tableContainer, SWT.NONE);
        container1.setLayout(new GridLayout(3, false));
        //createLabel(container1,
        //      ImportResources.SelectConfigSpecsToImportPage_label_configs, 2);
        createLabel(container1, ImportResources.SelectConfigSpecsToImportPage_label_configs);

        selectAllButton = createButton(container1,
                AuthoringUIResources.AuthoringUIPlugin_SaveAllEditorsPage_SelectAllButtonLabel);
        deselectAllButton = createButton(container1,
                AuthoringUIResources.AuthoringUIPlugin_SaveAllEditorsPage_DeselectAllButtonLabel);

        ctrl_chkboxTableViewer = createCheckboxTableViewer(tableContainer, 1);

        ILabelProvider labelProvider = new LabelProvider() {
            public Image getImage(Object element) {
                return LibraryUIImages.IMG_METHOD_CONFIGURATON;
            }

            public String getText(Object element) {
                return super.getText(element);
            }
        };

        ctrl_chkboxTableViewer.setLabelProvider(labelProvider);
        ctrl_chkboxTableViewer.setContentProvider(new ArrayContentProvider());

        Composite importContainer = new Composite(container, SWT.NONE);
        importContainer.setLayout(new GridLayout());
        importContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        createImportConfigSpecInfo(importContainer);

        Composite libraryContainer = new Composite(container, SWT.NONE);
        libraryContainer.setLayout(new GridLayout());
        libraryContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        createLibraryConfigSpecInfo(libraryContainer);

        addListeners();

        setControl(container);
        setPageComplete(false);
    }

    private void createImportConfigSpecInfo(Composite container) {
        importConfigSpecLabel = createLabel(container, configSpecNoSelection, 1);
        createLine(container, 1);

        createLabel(container, ImportResources.SelectConfigSpecsToImportPage_label_desc, 1);
        ctrl_briefDescImport = createMultiLineText(container, "", 275, 100, 1); //$NON-NLS-1$
    }

    private void createLibraryConfigSpecInfo(Composite container) {
        libraryConfigSpecLabel = createLabel(container, configSpecNoSelection, 1);
        createLine(container, 1);

        createLabel(container, ImportResources.SelectConfigSpecsToImportPage_label_desc, 1);
        ctrl_briefDescLibrary = createMultiLineText(container, "", 275, 100, 1); //$NON-NLS-1$
    }

    private void addListeners() {
        ctrl_chkboxTableViewer.addSelectionChangedListener(this);
        ctrl_chkboxTableViewer.addCheckStateListener(this);

        selectAllButton.addSelectionListener(new SelectionListener() {
            public void widgetSelected(SelectionEvent e) {
                ctrl_chkboxTableViewer.setAllChecked(true);
                setPageComplete(isPageComplete());
                getWizard().getContainer().updateButtons();
            }

            public void widgetDefaultSelected(SelectionEvent e) {
                widgetSelected(e);
            }

        });

        deselectAllButton.addSelectionListener(new SelectionListener() {
            public void widgetSelected(SelectionEvent e) {
                ctrl_chkboxTableViewer.setAllChecked(false);
                setPageComplete(isPageComplete());
                getWizard().getContainer().updateButtons();
            }

            public void widgetDefaultSelected(SelectionEvent e) {
                widgetSelected(e);
            }

        });
    }

    /**
     * @see org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged(org.eclipse.jface.viewers.CheckStateChangedEvent)
     */
    public void checkStateChanged(CheckStateChangedEvent event) {
        setPageComplete(isPageComplete());
        getWizard().getContainer().updateButtons();
    }

    /**
     * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
     */
    public void selectionChanged(SelectionChangedEvent event) {
        StructuredSelection selection = (StructuredSelection) event.getSelection();
        if (!selection.isEmpty()) {
            Object[] configs = selection.toArray();
            setDisplayAttributes((ConfigSpecs.Entry) configs[0]);
        } else {
            clearDisplayAttributes();
        }
    }

    private void setDisplayAttributes(ConfigSpecs.Entry spec) {
        ctrl_briefDescImport.setText(spec.configSpec.brief_desc == null ? "" : spec.configSpec.brief_desc); //$NON-NLS-1$
        importConfigSpecLabel.setText(configSpecDataLabel);

        if (spec.existingConfig != null) {
            ctrl_briefDescLibrary.setText(spec.existingConfig.getBriefDescription());
            libraryConfigSpecLabel.setText(libraryConfigSpecExists);
        } else {
            libraryConfigSpecLabel.setText(libraryConfigSpecNotExists);
            ctrl_briefDescLibrary.setText(""); //$NON-NLS-1$
        }
    }

    private void clearDisplayAttributes() {
        ctrl_briefDescImport.setText(""); //$NON-NLS-1$
        ctrl_briefDescLibrary.setText(""); //$NON-NLS-1$
        libraryConfigSpecLabel.setText(configSpecNoSelection);
        importConfigSpecLabel.setText(configSpecNoSelection);
    }

    /**
     * @see org.eclipse.jface.wizard.WizardPage#isCompleted()
     */
    public boolean isPageComplete() {
        if (getErrorMessage() != null)
            return false;

        if (ctrl_chkboxTableViewer.getCheckedElements().length > 0) {
            // Set data.specs.configs list, fix the selected field of each
            // entry.
            Iterator iter = data.specs.configs.iterator();
            while (iter.hasNext()) {
                ConfigSpecs.Entry e = (ConfigSpecs.Entry) iter.next();
                if (ctrl_chkboxTableViewer.getChecked(e))
                    e.selected = true;
                else
                    e.selected = false;
            }
            ((ImportConfigurationWizard) getWizard()).okToComplete = true;
        } else {
            ((ImportConfigurationWizard) getWizard()).okToComplete = false;
        }

        // Always return false so that the "Next" button is never enabled.
        return false;
    }

    /**
     * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
     */
    public boolean canFlipToNextPage() {
        return isPageComplete();
    }

    /**
     * @see org.eclipse.epf.ui.wizards.BaseWizardPage#onEnterPage(Object)
     */
    public void onEnterPage(Object obj) {
        ctrl_chkboxTableViewer.setInput(data.specs.configs);
        if (data.specs.configs.size() > 0) {
            IStructuredSelection sel = new StructuredSelection(data.specs.configs.get(0));
            ctrl_chkboxTableViewer.setSelection(sel);
        }
    }

}