/******************************************************************************* * Copyright (c) 2004, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.make.internal.ui.scannerconfig; import org.eclipse.cdt.internal.ui.dialogs.cpaths.CPathEntryMessages; import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry; import org.eclipse.cdt.make.internal.ui.MakeUIPlugin; import org.eclipse.cdt.ui.CDTSharedImages; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor; 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.graphics.ImageData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; /** * Label provider for DiscoveredElement-s. DiscoveredElement can be active or removed. * * @deprecated as of CDT 4.0. This class was used to set preferences/properties * for 3.X style projects. * * @author vhirsl */ @Deprecated public class DiscoveredElementLabelProvider extends LabelProvider implements IColorProvider { private final Color inDirect = new Color(Display.getDefault(), new RGB(170, 170, 170)); private ImageDescriptor fIncludeIcon, fMacroIcon, fContainerImage; private ImageDescriptor fIncludeGroupIcon, fMacroGroupIcon; private ImageDescriptor fIncludeAndMacrosFileIcon; private ImageDescriptor fIncludeAndMacrosFileGroupIcon; private ImageDescriptorRegistry fRegistry; private final String DISABLED_LABEL = MakeUIPlugin. getResourceString("ManageScannerConfigDialogCommon.discoveredGroup.annotation.disabled");//$NON-NLS-1$ public DiscoveredElementLabelProvider() { fRegistry = CUIPlugin.getImageDescriptorRegistry(); fContainerImage = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_LIBRARY); fIncludeGroupIcon = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_INCLUDES_CONTAINER); fMacroGroupIcon = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_MACRO); fIncludeAndMacrosFileGroupIcon = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_INCLUDE); fIncludeIcon = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_INCLUDES_FOLDER); // fQuoteIncludeIcon = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_QUOTE_INCLUDES_FOLDER); fIncludeAndMacrosFileIcon = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_TUNIT_HEADER); fMacroIcon = fMacroGroupIcon; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) */ @Override public Image getImage(Object element) { if (element instanceof DiscoveredElement) { DiscoveredElement elem = (DiscoveredElement) element; Image image = composeImage(elem); if (image != null) { return image; } } return super.getImage(element); } private Image composeImage(DiscoveredElement elem) { Image image = null; switch (elem.getEntryKind()) { case DiscoveredElement.PATHS_GROUP: image = fRegistry.get(fIncludeGroupIcon); break; case DiscoveredElement.CONTAINER: image = fRegistry.get(fContainerImage); break; case DiscoveredElement.INCLUDE_PATH: image = fRegistry.get(fIncludeIcon); break; case DiscoveredElement.SYMBOLS_GROUP: case DiscoveredElement.SYMBOL_DEFINITION: image = fRegistry.get(fMacroIcon); break; case DiscoveredElement.INCLUDE_FILE: case DiscoveredElement.MACROS_FILE: image = fRegistry.get(fIncludeAndMacrosFileIcon); break; case DiscoveredElement.INCLUDE_FILE_GROUP: case DiscoveredElement.MACROS_FILE_GROUP: image = fRegistry.get(fIncludeAndMacrosFileGroupIcon); break; } if (image != null && elem.isRemoved()) { image = new DiscoveredElementImageDescriptor(image, true).createImage(); } return image; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element) { if (element instanceof DiscoveredElement) { DiscoveredElement elem = (DiscoveredElement) element; switch (elem.getEntryKind()) { case DiscoveredElement.PATHS_GROUP: return CPathEntryMessages.CPElementLabelProvider_Includes; case DiscoveredElement.SYMBOLS_GROUP: return CPathEntryMessages.CPElementLabelProvider_PreprocessorSymbols; case DiscoveredElement.INCLUDE_FILE_GROUP: return CPathEntryMessages.CPElementLabelProvider_IncludeFiles; case DiscoveredElement.MACROS_FILE_GROUP: return CPathEntryMessages.CPElementLabelProvider_MacrosFiles; case DiscoveredElement.CONTAINER: case DiscoveredElement.INCLUDE_PATH: case DiscoveredElement.SYMBOL_DEFINITION: case DiscoveredElement.INCLUDE_FILE: case DiscoveredElement.MACROS_FILE: return elem.getEntry() + (elem.isRemoved() ? addAnnotation(DISABLED_LABEL) : ""); //$NON-NLS-1$ } } return super.getText(element); } private String addAnnotation(String annotation) { return " (" + annotation + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object) */ public Color getForeground(Object element) { if (element instanceof DiscoveredElement) { DiscoveredElement elem = (DiscoveredElement) element; switch (elem.getEntryKind()) { case DiscoveredElement.INCLUDE_PATH: case DiscoveredElement.SYMBOL_DEFINITION: case DiscoveredElement.INCLUDE_FILE: case DiscoveredElement.MACROS_FILE: if (elem.isRemoved()) { return inDirect; } } } return null; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object) */ public Color getBackground(Object element) { return null; } /** * ComositeImageDescriptor adds 'removed' image overlay to the DiscoveredElement * * @author vhirsl */ private class DiscoveredElementImageDescriptor extends CompositeImageDescriptor { private Image fBaseImage; private boolean showRemoved; private Point fSize; public DiscoveredElementImageDescriptor(Image baseImage, boolean removed) { fBaseImage = baseImage; showRemoved = removed; } /* (non-Javadoc) * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int) */ @Override protected void drawCompositeImage(int width, int height) { ImageData bg = fBaseImage.getImageData(); if (bg == null) { bg = DEFAULT_IMAGE_DATA; } drawImage(bg, 0, 0); drawOverlays(); } /** * Add any overlays to the image as specified in the flags. */ protected void drawOverlays() { ImageData data = null; if (showRemoved) { data = CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OVR_ERROR).getImageData(); drawImage(data, 0, 0); } } /* (non-Javadoc) * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize() */ @Override protected Point getSize() { if (fSize == null) { ImageData data = fBaseImage.getImageData(); fSize = new Point(data.width, data.height); } return fSize; } } }