Bug 15844 [Exception Handling] SelectionChange events and NPE
Build 20020508 Due to new global actions there are now more objects listening to selection changes send out by a JFace viewer. We now had the case that one of the listener generated a NPE. As a result all listeners registered after that one didn't receive the selection change event. StructuredViewers should be more fault tolorant to exceptions when informing listeners.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/StructuredViewer.java
* <p>
 * This framework method is called if a model change picked up by a viewer
 * results in an invalid selection. For instance if an element contained
 * in the selection has been removed from the viewer, the viewer is free
 * to either remove the element from the selection or to pick another element
 * as its new selection.
 * The default implementation of this method calls <code>updateSelection</code>.
 * Subclasses may override it to implement a different strategy for picking
 * a new selection when the old selection becomes invalid.
 * </p>
 *
 * @param invalidSelection the selection before the viewer was updated
 * @param newSelection the selection after the update, or <code>null</code> if none
 */
protected void handleInvalidSelection(ISelection invalidSelection, ISelection newSelection) {
	updateSelection(newSelection);
}
/**
 * The <code>StructuredViewer</code> implementation of this <code>ContentViewer</code> method calls <code>update</code>
 * if the event specifies that the label of a given element has changed, otherwise it calls super.
 * Subclasses may reimplement or extend.
 * </p>
 */
protected void handleLabelProviderChanged(LabelProviderChangedEvent event) {
	Object[] elements = event.getElements();
	if (elements != null) {
		update(elements, null);
	}
	else {
		super.handleLabelProviderChanged(event);