/* * 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.query.ui.builder.util; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.query.IQueryService; import org.teiid.designer.query.sql.ISQLStringVisitor; import org.teiid.designer.query.sql.lang.ICompoundCriteria; import org.teiid.designer.query.sql.lang.ICriteria; import org.teiid.designer.query.sql.lang.ILanguageObject; import org.teiid.designer.query.sql.lang.INotCriteria; import org.teiid.designer.query.sql.lang.IPredicateCriteria; import org.teiid.designer.query.sql.symbol.IConstant; import org.teiid.designer.query.sql.symbol.IFunction; import org.teiid.designer.query.sql.symbol.IReference; import org.teiid.query.ui.UiConstants; import org.teiid.query.ui.UiPlugin; /** * LanguageObjectLabelProvider * * @since 8.0 */ public class LanguageObjectLabelProvider extends LabelProvider implements UiConstants { // ///////////////////////////////////////////////////////////////////////////////////////////// // CONSTANTS // ///////////////////////////////////////////////////////////////////////////////////////////// /** The image used when rendering a {@link CompoundCriteria} node. */ private static final Image COMPOUND_CRITERIA_IMAGE; /** The image used when rendering a {@link Constant} node. */ private static final Image CONSTANT_IMAGE; /** The image used when rendering a {@link Function} node. */ private static final Image FUNCTION_IMAGE; /** The image used when rendering a {@link PredicateCriteria} node. */ private static final Image PREDICATE_IMAGE; /** The image used when rendering a {@link Reference} node. */ private static final Image REFERENCE_IMAGE; /** The image used when rendering an undefined node. */ private static final Image UNDEFINED_IMAGE; // ///////////////////////////////////////////////////////////////////////////////////////////// // INITIALIZER // ///////////////////////////////////////////////////////////////////////////////////////////// static { UiPlugin plugin = UiPlugin.getDefault(); COMPOUND_CRITERIA_IMAGE = plugin.getImage(Images.COMPOUND_CRITERIA_LANG_OBJ); CONSTANT_IMAGE = plugin.getImage(Images.CONSTANT_LANG_OBJ); FUNCTION_IMAGE = plugin.getImage(Images.FUNCTION_LANG_OBJ); PREDICATE_IMAGE = plugin.getImage(Images.PREDICATE_LANG_OBJ); REFERENCE_IMAGE = plugin.getImage(Images.REFERENCE_LANG_OBJ); UNDEFINED_IMAGE = plugin.getImage(Images.UNDEFINED_LANG_OBJ); } // ///////////////////////////////////////////////////////////////////////////////////////////// // METHODS // ///////////////////////////////////////////////////////////////////////////////////////////// /* (non-Javadoc) * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) */ @Override public Image getImage( Object theElement ) { Image result = null; if (theElement instanceof IConstant) { result = CONSTANT_IMAGE; } else if (theElement instanceof ILanguageObject && theElement instanceof IFunction) { result = FUNCTION_IMAGE; } else if (theElement instanceof IPredicateCriteria) { result = PREDICATE_IMAGE; } else if (theElement instanceof ICompoundCriteria) { result = COMPOUND_CRITERIA_IMAGE; } else if (theElement instanceof INotCriteria) { result = getNotCriteriaIcon((INotCriteria)theElement); } else if (theElement instanceof IReference) { result = REFERENCE_IMAGE; } else { result = UNDEFINED_IMAGE; } return result; } /** * Gets the appropriate icon to display with a <code>NotCriteria</code>. The {@link Criteria} contained in the * <code>NotCriteria</code> determines the icon. * * @param theCriteria the not criteria being rendered * @return the appropriate icon */ private Image getNotCriteriaIcon( INotCriteria theCriteria ) { Image result = null; ICriteria crit = theCriteria.getCriteria(); if (crit instanceof IPredicateCriteria) { result = PREDICATE_IMAGE; } if (crit instanceof ICompoundCriteria) { result = COMPOUND_CRITERIA_IMAGE; } else if (crit instanceof INotCriteria) { result = getNotCriteriaIcon((INotCriteria)crit); } return result; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ @Override public String getText( Object theElement ) { String result = null; if (theElement == null) { result = ISQLStringVisitor.UNDEFINED; } else if (theElement instanceof ILanguageObject) { IQueryService queryService = ModelerCore.getTeiidQueryService(); ISQLStringVisitor visitor = queryService.getSQLStringVisitor(); result = visitor.returnSQLString((ILanguageObject)theElement); } else { result = super.getText(theElement); } return result; } }