de.quamoco.qm.guideline.docbook.GeneratorSelectionWizardPage.java Source code

Java tutorial

Introduction

Here is the source code for de.quamoco.qm.guideline.docbook.GeneratorSelectionWizardPage.java

Source

/*-------------------------------------------------------------------------+
|                                                                          |
| Copyright 2012 Technische Universitaet Muenchen and                      |
| Fraunhofer-Institut fuer Experimentelles Software Engineering (IESE)     |
|                                                                          |
| Licensed 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.                                           |
|                                                                          |
+-------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------+
 | de.quamoco.qm.guideline.docbook
 |                                                                       |
   $Id: GeneratorSelectionWizardPage.java 4974 2012-02-17 09:34:10Z lochmann $            
 |                                                                       |
 | Copyright (c)  2004-2009 Technische Universitaet Muenchen             |
 |                                                                       |
 | Technische Universitaet Muenchen               #########  ##########  |
 | Institut fuer Informatik - Lehrstuhl IV           ##  ##  ##  ##  ##  |
 | Prof. Dr. Manfred Broy                            ##  ##  ##  ##  ##  |
 | Boltzmannstr. 3                                   ##  ##  ##  ##  ##  |
 | 85748 Garching bei Muenchen                       ##  ##  ##  ##  ##  |
 | Germany                                           ##  ######  ##  ##  |
 +-----------------------------------------------------------------------*/
package de.quamoco.qm.guideline.docbook;

import java.util.Arrays;

import org.conqat.ide.commons.ui.selection.SelectionUtils;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;

import de.quamoco.qm.guideline.extension.GeneratorExtension;
import de.quamoco.qm.guideline.extension.GeneratorExtensionUtil;
import de.quamoco.qm.guideline.extension.IGenerator;

/**
 * 
 * The {@link WizardPage} for selecting the guideline generator.
 * 
 * @author niessner
 * @author $Author: lochmann $
 * @version $Rev: 4974 $
 * @levd.rating YELLOW Hash: EFBC2A3A7FDF44882547178AEB5C6A40
 */
public class GeneratorSelectionWizardPage extends WizardPage {

    /**
     * Calls the constructor of the superclass.
     */
    public GeneratorSelectionWizardPage() {
        super("Guideline Generator");
    }

    /** {@inheritDoc} */
    public void createControl(Composite parent) {
        setPageComplete(false);
        setTitle("Guideline Generator");
        setDescription("Please choose the guideline generator to be used.");
        Composite composite = new Composite(parent, SWT.NONE);
        FillLayout layout = new FillLayout();
        composite.setLayout(layout);
        Table table = new Table(composite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
        createTableViewer(table);
        setControl(composite);
    }

    /**
     * Creates the table viewer displaying the choices of generators in
     * alphabetical order.
     */
    private void createTableViewer(Table table) {
        TableViewer viewer = new TableViewer(table);
        viewer.setLabelProvider(new LabelProvider() {

            /** {@inheritDoc} */
            @Override
            public String getText(Object object) {
                if (object instanceof GeneratorExtension) {
                    return ((GeneratorExtension) object).getLabel();
                }
                return null;
            }

        });
        Object[] extensions = GeneratorExtensionUtil.getExtensions().toArray();
        Arrays.sort(extensions);
        viewer.add(extensions);
        viewer.addSelectionChangedListener(new ISelectionChangedListener() {

            public void selectionChanged(SelectionChangedEvent event) {
                GeneratorExtension extension = SelectionUtils.checkAndPickFirst(event.getSelection(),
                        GeneratorExtension.class);
                IGenerator generator = extension.getGenerator();
                ((GuidelineWizard) getWizard()).setGenerator(generator);
                setPageComplete(true);
            }

        });
    }
}