blob: b1a2ed254a83f22ac477b206c8996a0e7a3f501d [file] [log] [blame]
package org.eclipse.epf.authoring.ui.providers;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.edit.provider.IWrapperItemProvider;
import org.eclipse.epf.library.configuration.ConfigurationData;
import org.eclipse.epf.library.configuration.ConfigurationHelper;
import org.eclipse.epf.library.edit.util.TngUtil;
import org.eclipse.epf.uma.ContentElement;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Display;
public class ConfigurationDecoratingLabelProvider extends
DecoratingLabelProvider {
private MethodConfiguration config;
private Font italicFont = null;
public ConfigurationDecoratingLabelProvider(MethodConfiguration config,
AdapterFactory adapterFactory) {
super(new ConfigurationLabelProvider(config, adapterFactory),
new MethodElementLabelDecorator());
this.config = config;
}
public Font getFont(Object element) {
if(element instanceof IWrapperItemProvider){
element = TngUtil.unwrap(element);
}
if (element instanceof ContentElement) {
ConfigurationData configData = ConfigurationHelper.getDelegate().getConfigurationData(config);
if (configData.isSuppressed((ContentElement) element)) {
return getItalicFont();
}
}
return super.getFont(element);
}
private Font getItalicFont() {
if (italicFont == null) {
italicFont = createFont(SWT.ITALIC);
}
return italicFont;
}
private Font createFont(int style) {
FontData[] fontdata = Display.getCurrent().getSystemFont()
.getFontData();
for (FontData data : fontdata) {
data.setStyle(style);
}
return new Font(Display.getCurrent(), fontdata);
}
@Override
public void dispose() {
super.dispose();
if (italicFont != null) {
italicFont.dispose();
}
}
}