/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.ui.search;
import org.eclipse.core.resources.IResource;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.teiid.core.designer.util.I18nUtil;
import org.teiid.designer.ui.UiConstants;
import org.teiid.designer.ui.explorer.ModelExplorerLabelProvider;
import org.teiid.designer.ui.viewsupport.ModelIdentifier;
/**
* The <code>MetadataSearchLabelProvider</code> is a label provider for use in metadata searching.
*
* @since 8.0
*/
public class MetadataSearchLabelProvider extends LabelProvider implements UiConstants {
// ===========================================================================================================================
// Fields
// ===========================================================================================================================
/**
* Delegate label provider for images.
*
* @since 6.0.0
*/
private ModelExplorerLabelProvider delegate;
// ===========================================================================================================================
// Constructors
// ===========================================================================================================================
/**
* @since 6.0.0
*/
public MetadataSearchLabelProvider() {
this.delegate = new ModelExplorerLabelProvider();
}
// ===========================================================================================================================
// Methods
// ===========================================================================================================================
/**
* {@inheritDoc}
*
* @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
* @since 6.0.0
*/
@Override
public String getText( Object element ) {
// for MetadataMatchInfo objects return path and number of matches contained in that resource
if (element instanceof MetadataMatchInfo) {
MetadataMatchInfo matchInfo = (MetadataMatchInfo)element;
int count = matchInfo.getMatchCount();
if (count == 1) {
return Util.getString(I18nUtil.getPropertyPrefix(MetadataSearchLabelProvider.class) + "resourceOneMatch.msg", //$NON-NLS-1$
matchInfo.getResourcePath());
}
return Util.getString(I18nUtil.getPropertyPrefix(MetadataSearchLabelProvider.class) + "resourceMatches.msg", //$NON-NLS-1$
matchInfo.getResourcePath(),
count);
}
// must be IModelObjectMatch
IModelObjectMatch match = (IModelObjectMatch)element;
return match.getMatchDescription();
}
/**
* {@inheritDoc}
*
* @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
* @since 6.0.0
*/
@Override
public Image getImage( Object element ) {
if (element instanceof IModelObjectMatch) {
IModelObjectMatch match = (IModelObjectMatch)element;
EObject eObj = match.getEObject();
if (eObj != null) {
return this.delegate.getImage(eObj);
}
} else if (element instanceof MetadataMatchInfo) {
IResource model = ((MetadataMatchInfo)element).getResource();
return ModelIdentifier.getModelImage(model);
}
return super.getImage(element);
}
}