package org.objectstyle.wolips.ui.view; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.eclipse.core.resources.IResource; import org.eclipse.jdt.internal.ui.viewsupport.AppearanceAwareLabelProvider; import org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider; import org.eclipse.jdt.ui.JavaElementLabels; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.PlatformUI; import org.objectstyle.wolips.baseforplugins.util.ResourceUtilities; public class RelatedLabelProvider extends AppearanceAwareLabelProvider implements ITableLabelProvider { private Set<IResource> duplicateResourceSet; public RelatedLabelProvider() { super(AppearanceAwareLabelProvider.DEFAULT_TEXTFLAGS | JavaElementLabels.P_COMPRESSED, AppearanceAwareLabelProvider.DEFAULT_IMAGEFLAGS | JavaElementImageProvider.SMALL_ICONS); addLabelDecorator(PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()); } public void setResultList(Object[] items) { int length = items.length; duplicateResourceSet = new HashSet<IResource>(length); Map<String, IResource> filenameToItemMap = new HashMap<String, IResource>(length); int i = length; while (i-- > 0) { if (!(items[i] instanceof IResource)) { continue; } IResource thisResource = (IResource) items[i]; IResource otherResource = filenameToItemMap.get(thisResource.getName()); if (otherResource != null) { duplicateResourceSet.add(thisResource); duplicateResourceSet.add(otherResource); } filenameToItemMap.put(thisResource.getName(), thisResource); } } public String getColumnText(Object _element, int _columnIndex) { String text = null; if (_element instanceof IResource) { IResource resource = (IResource) _element; String ext = resource.getFileExtension(); String name = resource.getName(); if (_columnIndex == 0) { // display of resource type (HTML/WOD/WOO/API/WO/...) if (ext != null) { if ("java".equalsIgnoreCase(ext)) { text = "Java"; } else if ("groovy".equalsIgnoreCase(ext)) { text = "Groovy"; } else if ("eomodeld".equalsIgnoreCase(ext)) { text = "EOM"; } else if (ext.matches("^wod|wo|woo|html|api$")) { text = ext.toUpperCase(); } else { // display language name if object is in a lproj-folder text = ResourceUtilities.getLocalizationName(resource); if (text == null) { // otherwise display extension text = ext.toUpperCase(); } } } } else { // display of resource name, project and language text = name; if (duplicateResourceSet.contains(resource)) { final StringBuilder sb = new StringBuilder(text); sb.append(" ("); final String languageName = ResourceUtilities.getLocalizationName(resource); if (languageName != null) { sb.append(languageName).append(", "); } sb.append(resource.getProject().getName()).append(")"); text = sb.toString(); } } } if (text == null) { text = getText(_element); } return text; } public Image getColumnImage(Object _element, int _columnIndex) { Image image = null; if (_columnIndex == 0) { image = getImage(_element); } return image; } }