Bug 157174 [Viewers] Refactor new Viewer API
We are yet not completely happy with the API and refactor it.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingLabelProvider.java
* decorator is not disposed. Fires a label provider changed event
	 * indicating that all labels should be updated. Has no effect if the given
	 * decorator is identical to the current one.
	 * 
	 * @param decorator
	 *            the label decorator, or <code>null</code> if no decorations
	 *            are to be applied
	 */
	public void setLabelDecorator(ILabelDecorator decorator) {
		ILabelDecorator oldDecorator = this.decorator;
		if (oldDecorator != decorator) {
			Object[] listenerList = this.listeners.getListeners();
			if (oldDecorator != null) {
				for (int i = 0; i < listenerList.length; ++i) {
					oldDecorator
							.removeListener((ILabelProviderListener) listenerList[i]);
				}
			}
			this.decorator = decorator;
			if (decorator != null) {
				for (int i = 0; i < listenerList.length; ++i) {
					decorator
							.addListener((ILabelProviderListener) listenerList[i]);
				}
			}
			fireLabelProviderChanged(new LabelProviderChangedEvent(this));
		}
	}
	/*
	 * (non-Javadoc)