com.nokia.cdt.internal.debug.launch.wizard.LaunchWizardSelectionPage.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.cdt.internal.debug.launch.wizard.LaunchWizardSelectionPage.java

Source

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/
package com.nokia.cdt.internal.debug.launch.wizard;

import java.util.Iterator;
import java.util.List;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardSelectionPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.PlatformUI;

class LaunchWizardSelectionPage extends WizardSelectionPage
        implements ISelectionChangedListener, IStructuredContentProvider {

    private LaunchCreationWizard mainWizard;
    private FormBrowser descriptionBrowser;
    private TableViewer wizardSelectionTableViewer = null;
    private AbstractLaunchWizard selectedWizard = null;
    private boolean inputChanged = false;

    public LaunchWizardSelectionPage(LaunchCreationWizard mainWizard, List<IPath> mmps, List<IPath> exes,
            IPath defaultExecutable, IProject project, String configurationName, String mode) throws Exception {
        super(Messages.getString("LaunchWizardSelectionPage.0")); //$NON-NLS-1$
        setTitle(Messages.getString("LaunchWizardSelectionPage.1")); //$NON-NLS-1$
        setDescription(Messages.getString("LaunchWizardSelectionPage.2")); //$NON-NLS-1$
        this.mainWizard = mainWizard;
        descriptionBrowser = new FormBrowser();
        descriptionBrowser.setText(""); //$NON-NLS-1$
    }

    public void createDescriptionIn(Composite composite) {
        descriptionBrowser.createControl(composite);
        Control c = descriptionBrowser.getControl();
        c.setData(".uid", "LaunchWizardSelection.descriptionBrowser");
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.widthHint = 200;
        c.setLayoutData(gd);
    }

    public String getLabel() {
        return Messages.getString("LaunchWizardSelectionPage.4"); //$NON-NLS-1$
    }

    public void setDescriptionText(String text) {
        descriptionBrowser.setText(text);
    }

    public void moveToNextPage() {
        getContainer().showPage(getNextPage());
    }

    public void createControl(Composite parent) {
        Composite container = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.verticalSpacing = 10;
        container.setLayout(layout);
        container.setLayoutData(new GridData(GridData.FILL_BOTH));

        Label label = new Label(container, SWT.NONE);
        label.setText(getLabel());
        GridData gd = new GridData();
        label.setLayoutData(gd);
        label.setData(".uid", "LaunchWizardSelectionPage.label");

        SashForm sashForm = new SashForm(container, SWT.VERTICAL);
        gd = new GridData(GridData.FILL_BOTH);
        gd.widthHint = 300;
        gd.heightHint = 300;
        gd.minimumHeight = 230;
        sashForm.setLayoutData(gd);

        wizardSelectionTableViewer = new TableViewer(sashForm, SWT.BORDER);
        wizardSelectionTableViewer.setContentProvider(this);
        wizardSelectionTableViewer.addDoubleClickListener(new IDoubleClickListener() {
            public void doubleClick(DoubleClickEvent event) {
                selectionChanged(new SelectionChangedEvent(wizardSelectionTableViewer,
                        wizardSelectionTableViewer.getSelection()));
                moveToNextPage();
            }
        });
        wizardSelectionTableViewer.addSelectionChangedListener(this);

        wizardSelectionTableViewer.setInput(mainWizard.getWizardsForCategory(mainWizard.getCategoryId()));

        createDescriptionIn(sashForm);
        sashForm.setWeights(new int[] { 75, 25 });

        Dialog.applyDialogFont(container);
        setControl(container);

        PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), LaunchWizardHelpIds.WIZARD_SELECTION_PAGE);
    }

    public TableViewer getViewer() {
        return wizardSelectionTableViewer;
    }

    public void selectionChanged(SelectionChangedEvent event) {
        selectedWizard = null;
        setErrorMessage(null);
        IStructuredSelection selection = (IStructuredSelection) event.getSelection();
        Object selectedObject = null;
        Iterator<?> iter = selection.iterator();
        if (iter.hasNext()) {
            selectedObject = iter.next();
            if (selectedObject instanceof AbstractLaunchWizard)
                selectedWizard = (AbstractLaunchWizard) selectedObject;
        }
        mainWizard.setSelectedWizard(selectedWizard);

        if (selectedWizard == null) {
            setDescriptionText(""); //$NON-NLS-1$
            setSelectedNode(null);
            return;
        }
        setSelectedNode(new WizardNode(this, (Wizard) selectedWizard));
        setDescriptionText(selectedWizard.getDescription());
    }

    public void setVisible(boolean visible) {
        super.setVisible(visible);
        if (visible && wizardSelectionTableViewer != null) {
            if (inputChanged) {
                wizardSelectionTableViewer
                        .setSelection(new StructuredSelection(wizardSelectionTableViewer.getElementAt(0)), true);
            }
            wizardSelectionTableViewer.getTable().setFocus();
        }
    }

    @SuppressWarnings("unchecked")
    public Object[] getElements(Object inputElement) {
        List<Wizard> wizards = (List<Wizard>) inputElement;
        return wizards.toArray();
    }

    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        if (oldInput == null || newInput == null || !oldInput.equals(newInput)) {
            inputChanged = true;
        } else {
            inputChanged = false;
        }
    }

    public ILaunchWizard getSelectedWizard() {
        return selectedWizard;
    }
}