package de.ovgu.cide.navigator; import java.util.Set; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import de.ovgu.cide.features.FeatureModelManager; import de.ovgu.cide.features.FeatureModelNotFoundException; import de.ovgu.cide.features.IFeature; import de.ovgu.cide.features.IFeatureModel; import de.ovgu.cide.features.source.DirectoryColorManager; import de.ovgu.cide.utils.ColorHelper; /** * provides colors for the project explorer * * registration apparently works only for the project explorer not for the * resource navigator * * @author ckaestne * */ public class ColoringProvider implements ILabelProvider, IColorProvider { private Color color_red = Display.getCurrent() .getSystemColor(SWT.COLOR_RED); public Image getImage(Object element) { // TODO Auto-generated method stub return null; } public String getText(Object element) { // TODO Auto-generated method stub return null; } public void addListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } public void dispose() { color_red.dispose(); } public boolean isLabelProperty(Object element, String property) { // TODO Auto-generated method stub return false; } public void removeListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } public Color getBackground(Object element) { try { if (element instanceof IFile) { IFile file = (IFile) element; IFeatureModel fm = FeatureModelManager.getInstance() .getFeatureModel(file.getProject()); DirectoryColorManager colorManager = DirectoryColorManager .getColoredDirectoryManagerS(file.getParent(), fm); Set<IFeature> colors = colorManager.getColors(file); if (colors != null && !colors.isEmpty()) return ColorHelper.getCombinedColor(colors); } if (element instanceof IFolder || element instanceof IProject) { IContainer folder = (IContainer) element; if (folder.getProject().isOpen()) { IFeatureModel fm = FeatureModelManager.getInstance() .getFeatureModel(folder.getProject()); DirectoryColorManager colorManager = DirectoryColorManager .getColoredDirectoryManagerS(folder, fm); Set<IFeature> colors = colorManager.getFolderColors(); if (colors != null && !colors.isEmpty()) return ColorHelper.getCombinedColor(colors); } } } catch (FeatureModelNotFoundException e) { // ignore problems, just don't add colors to those projects } return null; } public Color getForeground(Object element) { // TODO Auto-generated method stub return null; } }