package org.marketcetera.photon.internal.strategy.engine.ui.workbench;
import org.eclipse.core.databinding.observable.set.IObservableSet;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
import org.eclipse.ui.navigator.ICommonLabelProvider;
import org.marketcetera.photon.commons.ui.databinding.PropertyWatcher;
import org.marketcetera.photon.commons.ui.databinding.PropertyWatcher.IPropertiesChangedListener;
import org.marketcetera.photon.strategy.engine.ui.StrategyEngineStatusDecorator;
import org.marketcetera.photon.strategy.engine.ui.StrategyEnginesContentProvider;
import org.marketcetera.photon.strategy.engine.ui.StrategyEnginesLabelProvider;
import org.marketcetera.photon.strategy.engine.ui.workbench.StrategyEngineWorkbenchUI;
import org.marketcetera.util.misc.ClassVersion;
import com.google.common.collect.ImmutableSet;
/* $License$ */
/**
* This label provider enhances {@link StrategyEnginesLabelProvider} to support
* {@link ICommonLabelProvider}. It also hooks up label redecoration to the
* content provider's elements.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: StrategyEnginesCommonLabelProvider.java 16154 2012-07-14 16:34:05Z colin $
* @since 2.0.0
*/
@ClassVersion("$Id: StrategyEnginesCommonLabelProvider.java 16154 2012-07-14 16:34:05Z colin $")
public final class StrategyEnginesCommonLabelProvider extends StrategyEnginesLabelProvider implements
ICommonLabelProvider {
private final PropertyWatcher mDecorationPropertyWatcher = new PropertyWatcher(
StrategyEngineStatusDecorator.PROPERTIES,
new IPropertiesChangedListener() {
@Override
public void propertiesChanged(ImmutableSet<?> affectedElements) {
PlatformUI
.getWorkbench()
.getDecoratorManager()
.update(
StrategyEngineWorkbenchUI.STRATEGY_ENGINES_STATUS_DECORATOR_ID);
}
});
@Override
public void init(ICommonContentExtensionSite aConfig) {
final IObservableSet elements = ((StrategyEnginesContentProvider) aConfig
.getExtension().getContentProvider()).getKnownElements();
track(elements);
mDecorationPropertyWatcher.watch(elements);
}
@Override
public void restoreState(IMemento aMemento) {
}
@Override
public void saveState(IMemento aMemento) {
}
@Override
public String getDescription(Object anElement) {
return getText(anElement);
}
@Override
public void dispose() {
mDecorationPropertyWatcher.dispose();
super.dispose();
}
}