com.siteview.mde.internal.ui.preferences.CompilersPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for com.siteview.mde.internal.ui.preferences.CompilersPreferencePage.java

Source

/*******************************************************************************
 * Copyright (c) 2000, 2011 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 API and implementation
 *******************************************************************************/
package com.siteview.mde.internal.ui.preferences;

import java.util.*;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.*;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.preference.PreferencePage;
import com.siteview.mde.internal.core.natures.MDE;
import com.siteview.mde.internal.ui.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.*;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;

/**
 * Allows PDE compiler preferences to be set
 */
public class CompilersPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {

    public static final String NO_LINK = "PropertyAndPreferencePage.nolink"; //$NON-NLS-1$

    private PDECompilersConfigurationBlock fBlock = null;
    private Link link = null;

    /**
     * Since {@link #applyData(Object)} can be called before createContents, store the data
     */
    private Map fPageData = null;

    /**
     *  
     */
    public CompilersPreferencePage() {
        super();
        // only used when page is shown programmatically
        setTitle(MDEUIMessages.CompilersPreferencePage_title);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
     */
    protected Control createContents(Composite parent) {
        Composite comp = SWTFactory.createComposite(parent, 1, 1, GridData.FILL_BOTH, 0, 0);
        link = new Link(comp, SWT.NONE);
        link.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false));
        link.setFont(comp.getFont());
        link.setText(MDEUIMessages.CompilersPreferencePage_configure_project_specific_settings);
        link.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                HashSet set = new HashSet();
                try {
                    IJavaProject[] projects = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())
                            .getJavaProjects();
                    IProject project = null;
                    for (int i = 0; i < projects.length; i++) {
                        project = projects[i].getProject();
                        try {
                            if (project.hasNature(MDE.PLUGIN_NATURE)
                                    && fBlock.hasProjectSpecificSettings(project)) {
                                set.add(projects[i]);
                            }
                        } catch (CoreException ce) {
                            //do nothing ignore the project
                        }
                    }
                } catch (JavaModelException jme) {
                    //ignore
                }
                ProjectSelectionDialog psd = new ProjectSelectionDialog(getShell(), set);
                if (psd.open() == IDialogConstants.OK_ID) {
                    HashMap data = new HashMap();
                    data.put(NO_LINK, Boolean.TRUE);
                    PreferencesUtil.createPropertyDialogOn(getShell(),
                            ((IJavaProject) psd.getFirstResult()).getProject(),
                            "org.eclipse.pde.internal.ui.properties.compilersPropertyPage", //$NON-NLS-1$
                            new String[] { "org.eclipse.pde.internal.ui.properties.compilersPropertyPage" }, data) //$NON-NLS-1$
                            .open();
                }
            }
        });
        fBlock = new PDECompilersConfigurationBlock(null, (IWorkbenchPreferenceContainer) getContainer());
        fBlock.createControl(comp);

        // Initialize with data map in case applyData was called before createContents
        applyData(fPageData);

        PlatformUI.getWorkbench().getHelpSystem().setHelp(comp, IHelpContextIds.COMPILERS_PREFERENCE_PAGE);
        return comp;
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.DialogPage#dispose()
     */
    public void dispose() {
        if (fBlock != null) {
            fBlock.dispose();
        }
        super.dispose();
    }

    /* (non-Javadoc)
     * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
     */
    public void init(IWorkbench workbench) {
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.preference.PreferencePage#performCancel()
     */
    public boolean performCancel() {
        fBlock.performCancel();
        return super.performCancel();
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.preference.PreferencePage#performOk()
     */
    public boolean performOk() {
        fBlock.performOK();
        return super.performOk();
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.preference.PreferencePage#performApply()
     */
    protected void performApply() {
        fBlock.performApply();
        super.performApply();
    }

    /**
     * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
     */
    protected void performDefaults() {
        fBlock.performDefaults();
        super.performDefaults();
    }

    /**
     * @see org.eclipse.jface.preference.PreferencePage#applyData(java.lang.Object)
     */
    public void applyData(Object data) {
        if (data instanceof Map) {
            fPageData = (Map) data;
            if (link != null && fPageData.containsKey(NO_LINK)) {
                link.setVisible(!Boolean.TRUE.equals(((Map) data).get(NO_LINK)));
            }
        }
    }
}