/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.debug.ui.actions;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.python.pydev.debug.model.PyExceptionBreakPointManager;
public class PyExceptionListProvider implements IStructuredContentProvider {
private Object newInput;
private Object[] elementsForCurrentInput;
private static final String[] EMPTY = new String[0];
public PyExceptionListProvider() {
}
public Object[] getElements(Object inputElement) {
if (this.newInput == null) {
this.inputChanged(null, null, inputElement);
}
return elementsForCurrentInput == null ? EMPTY : elementsForCurrentInput;
}
public void dispose() {
elementsForCurrentInput = null;
newInput = null;
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
if (newInput == this.newInput) {
return;
}
// let go of the old info before getting the new info
dispose();
this.newInput = newInput;
if (newInput == null) {
return;
}
PyExceptionBreakPointManager instance = PyExceptionBreakPointManager.getInstance();
List<String> list = instance.getBuiltinExceptions();
list.addAll(instance.getUserConfiguredExceptions());
elementsForCurrentInput = list.toArray(new String[0]);
}
public void addUserConfiguredException(String userConfiguredException) {
PyExceptionBreakPointManager.getInstance().addUserConfiguredException(userConfiguredException);
this.newInput = null;
}
}