/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License, Version 1.0,
* which accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
*/
package net.rim.ejde.internal.builders;
import net.rim.ejde.internal.core.ClasspathElementChangedListener;
import org.eclipse.jdt.core.JavaCore;
/**
* The Class ClasspathChangeManager.
*/
public class ClasspathChangeManager {
private static class ClasspathChangeManagerHolder {
public static ClasspathChangeManager classpathChangeManager = new ClasspathChangeManager();
}
private ClasspathElementChangedListener _elementChangedListener;
/**
* Private default constructor
*
*/
private ClasspathChangeManager() {
super();
_elementChangedListener = new ClasspathElementChangedListener();
}
/**
* Singleton getInstance() method.
*
* @return the unique instance of the class
*/
public static synchronized ClasspathChangeManager getInstance() {
return ClasspathChangeManagerHolder.classpathChangeManager;
}
/**
* This method adds an element change listener to Java Core after removing its prior instance in the case the method is called
* multiple times.
*/
public synchronized void addElementChangedListener() {
JavaCore.removeElementChangedListener( _elementChangedListener ); // has no effect if the element exists
JavaCore.addElementChangedListener( _elementChangedListener );
}
/**
* Removes the unique element changed listener. Has no affect if the unique listener is not registered.
*/
public synchronized void removeAddElementChangedListener() {
JavaCore.removeElementChangedListener( _elementChangedListener );
}
}