package org.jactr.eclipse.ui.wizards.pages; /* * default logging */ import java.util.function.Function; import java.util.function.Predicate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.jface.preference.JFacePreferences; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.IFontProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.jactr.eclipse.core.bundles.descriptors.CommonExtensionDescriptor; import org.jactr.eclipse.core.bundles.descriptors.InstrumentDescriptor; import org.jactr.eclipse.core.bundles.descriptors.ModelExtensionDescriptor; import org.jactr.eclipse.core.bundles.descriptors.ModuleDescriptor; import org.jactr.eclipse.ui.images.JACTRImages; public class CommonExtensionDescriptorLabelProvider extends LabelProvider implements IFontProvider, IColorProvider { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(CommonExtensionDescriptorLabelProvider.class); private Predicate<CommonExtensionDescriptor> _shouldHighlight; private Predicate<CommonExtensionDescriptor> _isAvailable; private Function<CommonExtensionDescriptor, String> _decorateLabel; private Font _defaultFont; private Font _availableFont; private Font _highlightFont; private Color _highlightColor; private Color _availableColor; public CommonExtensionDescriptorLabelProvider() { this((ced) -> false, (ced) -> false, (ced) -> ""); } public CommonExtensionDescriptorLabelProvider( Predicate<CommonExtensionDescriptor> highlight, Predicate<CommonExtensionDescriptor> available, Function<CommonExtensionDescriptor, String> decorator) { if (highlight == null) highlight = (ced) -> false; if (available == null) available = (ced) -> false; if (decorator == null) decorator = (ced) -> ""; _shouldHighlight = highlight; _isAvailable = available; _decorateLabel = decorator; String rootFontName = JFaceResources.DIALOG_FONT; _defaultFont = JFaceResources.getFontRegistry().get(rootFontName); _highlightFont = JFaceResources.getFontRegistry().getBold(rootFontName); _availableFont = JFaceResources.getFontRegistry().getItalic(rootFontName); _availableColor = JFaceResources.getColorRegistry().get( JFacePreferences.COUNTER_COLOR); _highlightColor = JFaceResources.getColorRegistry().get( JFacePreferences.HYPERLINK_COLOR); } @Override public String getText(Object element) { CommonExtensionDescriptor ced = (CommonExtensionDescriptor) element; String label = String.format("%s %s", ced.getName(), _decorateLabel.apply(ced)); return label; } @Override public Font getFont(Object element) { CommonExtensionDescriptor ced = (CommonExtensionDescriptor) element; if (_shouldHighlight.test(ced)) return _highlightFont; if (_isAvailable.test(ced)) return _availableFont; return _defaultFont; } @Override public Color getForeground(Object element) { CommonExtensionDescriptor ced = (CommonExtensionDescriptor) element; if (_shouldHighlight.test(ced)) return _highlightColor; if (_isAvailable.test(ced)) return _availableColor; return null; } @Override public Color getBackground(Object element) { return null; } @Override public Image getImage(Object element) { CommonExtensionDescriptor ced = (CommonExtensionDescriptor) element; /* * use the type to determine the icon */ if (ced instanceof ModelExtensionDescriptor) return JACTRImages.getImage(JACTRImages.EXTENSION); if (ced instanceof InstrumentDescriptor) return JACTRImages.getImage(JACTRImages.TOOL); if (ced instanceof ModuleDescriptor) return JACTRImages.getImage(JACTRImages.LIBRARY); return null; } }