package org.archstudio.archipelago2;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.graphics.Image;
public abstract class AbstractArchipelago2LabelDecorator extends AbstractArchipelago2Provider
implements IArchipelago2LabelDecorator {
/** The list of label provider listeners. */
protected Set<ILabelProviderListener> labelListeners = new CopyOnWriteArraySet<>();
@Override
public void addListener(ILabelProviderListener listener) {
labelListeners.add(listener);
}
@Override
public void removeListener(ILabelProviderListener listener) {
labelListeners.remove(listener);
}
/**
* Fires a {@link LabelProviderChangedEvent} for the given elements to the label provider
* listeners.
*
* @param elements The element whose labels have changed.
*/
protected void fireLabelProviderEvent(Object... elements) {
LabelProviderChangedEvent event = new LabelProviderChangedEvent(this, elements);
for (ILabelProviderListener listener : labelListeners) {
listener.labelProviderChanged(event);
}
}
@Override
public boolean isLabelProperty(Object element, String property) {
return true;
}
@Override
public Image decorateImage(Image image, Object element) {
return null;
}
@Override
public StyledString decorateStyledText(StyledString styledString, Object element) {
return null;
}
@Override
public final String decorateText(String text, Object element) {
throw new UnsupportedOperationException("Use decorateStyledText(...)");
}
}