PreviewLabelProvider.java
package com.codeaffine.extras.workingset.internal;
import static org.eclipse.ui.ide.IDE.SharedImages.IMG_OBJ_PROJECT;
import static org.eclipse.ui.ide.IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.preference.JFacePreferences;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
public class PreviewLabelProvider extends LabelProvider implements IColorProvider {
private final LocalResourceManager resourceManager;
private ProjectPatternMatcher projectPatternMatcher;
public PreviewLabelProvider( Display display ) {
resourceManager = new LocalResourceManager( JFaceResources.getResources( display ) );
projectPatternMatcher = new ProjectPatternMatcher( "" );
}
public void setPattern( String pattern ) {
projectPatternMatcher = new ProjectPatternMatcher( pattern );
}
@Override
public String getText( Object element ) {
IProject project = ( IProject )element;
return project.getName();
}
@Override
public Image getImage( Object element ) {
IProject project = ( IProject )element;
return getSharedImage( project.isOpen() ? IMG_OBJ_PROJECT : IMG_OBJ_PROJECT_CLOSED );
}
@Override
public Color getForeground( Object element ) {
IProject project = ( IProject )element;
Color result = null;
if( !projectPatternMatcher.matches( project ) ) {
result = JFaceResources.getColorRegistry().get( JFacePreferences.QUALIFIER_COLOR );
}
return result;
}
@Override
public Color getBackground( Object element ) {
return null;
}
@Override
public void dispose() {
super.dispose();
resourceManager.dispose();
}
private Image getSharedImage( String imageName ) {
IWorkbench workbench = PlatformUI.getWorkbench();
ImageDescriptor imageDescriptor = workbench.getSharedImages().getImageDescriptor( imageName );
return resourceManager.createImage( imageDescriptor );
}
}