Example usage for org.eclipse.jdt.internal.core JavaProject getEclipsePreferences

List of usage examples for org.eclipse.jdt.internal.core JavaProject getEclipsePreferences

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core JavaProject getEclipsePreferences.

Prototype

public IEclipsePreferences getEclipsePreferences() 

Source Link

Document

Returns the project custom preference pool.

Usage

From source file:org.eclipse.ajdt.core.builder.AJBuilder.java

License:Open Source License

/**
 * This is the workaround discussed in bug 73435 for the case when projects are
 * checked out from CVS, the AJ projects have no valid build state and projects
 * depend on them./*from ww w.  j  av a  2s . c  o m*/
 */
private void updateJavaCompilerPreferences(IProject[] dependingProjects) {
    boolean setWorkbenchPref = false;
    for (int i = 0; i < dependingProjects.length; i++) {
        IProject dependingProject = dependingProjects[i];
        try {
            // Skip over any dependents that are themselves
            // AspectJ projects
            if (AspectJPlugin.isAJProject(dependingProject)) {
                continue;
            }

            // Only update dependent projects that have Java natures.
            // These could be ordinary Java projects or if we running inside
            // other Eclipse-based tools, they could be J2EE projects like dynamic
            // web projects.
            // Note that if the project does not have a Java nature then
            // the JavaCore.create() call appears to return a null. 
            if (dependingProject.hasNature(JavaCore.NATURE_ID)) {
                JavaProject jp = (JavaProject) JavaCore.create(dependingProject);
                // Bug 91131 - In Eclipse 3.1 need to use IEclipsePreferences
                IEclipsePreferences projectPreferences = jp.getEclipsePreferences();
                String[] keys = projectPreferences.keys();

                if (keys.length == 0 && !setWorkbenchPref) {
                    Hashtable options = JavaCore.getOptions();
                    String workbenchSetting = (String) options.get(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH);
                    if (lastWorkbenchPreference.equals(JavaCore.ABORT)
                            && workbenchSetting.equals(JavaCore.IGNORE)) {
                        lastWorkbenchPreference = JavaCore.IGNORE;
                    } else if (lastWorkbenchPreference.equals(JavaCore.ABORT)
                            && workbenchSetting.equals(JavaCore.ABORT)) {
                        if (!setWorkbenchPref) {
                            options.put(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, JavaCore.IGNORE);
                            JavaCore.setOptions(options);
                            setWorkbenchPref = true;
                            lastWorkbenchPreference = JavaCore.IGNORE;
                        }
                    } else if (lastWorkbenchPreference.equals(JavaCore.IGNORE)
                            && workbenchSetting.equals(JavaCore.ABORT)) {
                        if (!setWorkbenchPref) {
                            options.put(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, JavaCore.IGNORE);
                            JavaCore.setOptions(options);
                            setWorkbenchPref = true;
                        } else {
                            lastWorkbenchPreference = JavaCore.ABORT;
                        }
                    }
                } else if (keys.length > 0 && usingProjectBuildingOptions(keys)) {
                    projectPreferences.put(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH, JavaCore.IGNORE);
                    try {
                        projectPreferences.flush();
                    } catch (BackingStoreException e) {
                        // problem with pref store - quietly ignore
                    }
                    lastWorkbenchPreference = (String) JavaCore.getOptions()
                            .get(JavaCore.CORE_JAVA_BUILD_INVALID_CLASSPATH);
                }
            } // end if dependent has a Java nature
        } catch (CoreException e) {
        } catch (BackingStoreException e) {
        }
    }
}