com.arc.cdt.importer.internal.ui.SelectProjectSpaceWizardPage.java Source code

Java tutorial

Introduction

Here is the source code for com.arc.cdt.importer.internal.ui.SelectProjectSpaceWizardPage.java

Source

/*******************************************************************************
 * Copyright (c) 2005-2012 Synopsys, Incorporated
 * 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:
 * Synopsys, Inc - Initial implementation 
 *******************************************************************************/
package com.arc.cdt.importer.internal.ui;

import java.io.File;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import com.arc.cdt.importer.ImporterPlugin;
import com.arc.cdt.importer.core.ICodewrightProject;
import com.arc.cdt.importer.core.ICodewrightProjectSpace;

/**
 * The first Wizard page for the CodeWright project importer wizard.
 * It selects the project-space file to import.
 * @author davidp
 * @currentOwner <a href="mailto:davidp@arc.com">davidp</a>
 * @version $Revision$
 * @lastModified $Date$
 * @lastModifiedBy $Author$
 * @reviewed 0 $Revision:1$
 */
class SelectProjectSpaceWizardPage extends WizardPage {

    private static final String PAGE_NAME = "SelectProject";
    private File mPspFile = null; // selected file
    private FileDialog mFileDialog = null;
    private Text mPathField = null;
    private ICodewrightProject mLoneProject = null;
    private static final String FILE_DIALOG_ID = "selectProjectFileFilter";

    SelectProjectSpaceWizardPage() {
        super(PAGE_NAME);
        this.setTitle("Project-space file");
        this.setDescription("Select the project-space file to import");
    }

    public void createControl(Composite parent) {
        Composite composite = new Composite(parent, SWT.NULL);
        composite.setFont(parent.getFont());

        GridLayout layout = new GridLayout();
        composite.setLayout(layout);
        layout.numColumns = 3;
        Label l = new Label(composite, SWT.HORIZONTAL);
        GridData gridData = new GridData();
        gridData.horizontalSpan = 3;
        l.setLayoutData(gridData);
        l.setText("Select project-space file (.psp):");

        mPathField = new Text(composite, SWT.LEFT | SWT.SINGLE | SWT.BORDER);
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.horizontalSpan = 2;
        mPathField.setLayoutData(gridData);
        mPathField.addModifyListener(new ModifyListener() {

            public void modifyText(ModifyEvent e) {
                setPspFileAndValidate(mPathField.getText());

            }
        });

        Button browseButton = new Button(composite, SWT.PUSH);
        browseButton.setText("Browse...");
        gridData = new GridData();
        browseButton.setLayoutData(gridData);
        browseButton.addSelectionListener(new SelectionListener() {

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

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

            }
        });
        setControl(composite);
        setPageComplete(false);
    }

    private void setPspFileAndValidate(String text) {
        if (text.trim().length() == 0) {
            mPspFile = null;
            this.setErrorMessage("File not specified");
        } else {
            File f = new File(text);
            if (f.exists() && f.isFile()) {
                mPspFile = f;
                this.setErrorMessage(null);
            } else {
                mPspFile = null;
                this.setErrorMessage(f.isDirectory() ? "Not a file" : "Non-existent file");
            }
        }
        getAccessModel().setPspFile(mPspFile);
        mLoneProject = null;
        if (mPspFile != null) {
            try {
                ICodewrightProjectSpace psp = getAccessModel().getProjectSpace();
                ICodewrightProject projects[] = psp.getProjects();
                if (projects.length == 0) {
                    this.setErrorMessage("No projects in project space");
                    setPageComplete(false);
                } else {
                    if (projects.length == 1 && AccessModel.getProjectType(projects[0]) != null) {
                        mLoneProject = projects[0];
                    }
                    setPageComplete(true);
                }
            } catch (Exception e) {
                this.setErrorMessage(e.getMessage());
            }
        } else
            setPageComplete(false);
    }

    private void showFileDialog() {
        if (mFileDialog == null) {
            mFileDialog = new FileDialog(getShell(), SWT.OPEN);
            mFileDialog.setFilterExtensions(new String[] { "*.psp" });
            IPreferenceStore prefs = ImporterPlugin.getDefault().getPreferenceStore();
            String dir = prefs.getString(FILE_DIALOG_ID);
            if (dir != null)
                mFileDialog.setFilterPath(dir);
        }
        String fileName = mFileDialog.open();
        if (fileName != null) {
            mPathField.setText(fileName);
            setPspFileAndValidate(fileName);
        }
        String filterPath = mFileDialog.getFilterPath();
        if (filterPath != null)
            ImporterPlugin.getDefault().getPreferenceStore().putValue(FILE_DIALOG_ID, filterPath);
    }

    @Override
    public IWizardPage getNextPage() {
        if (mLoneProject != null) {
            getAccessModel().setSelectedProjects(new ICodewrightProject[] { mLoneProject });
            return getWizard().getPage(NewProjectCreatorPage.PAGE_NAME);
        } else
            return super.getNextPage();
    }

    private AccessModel getAccessModel() {
        return ((CodeWrightImportWizard) getWizard()).getAccessModel();
    }
}