/*
* generated by Xtext
*/
package org.eclipse.qvto.examples.xtext.imperativeocl.ui.labeling;

/**
 * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
 * 
 * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
 */
public class ImperativeOCLDescriptionLabelProvider extends org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider {

	// Labels and icons can be computed like this:
	
//	String text(IEObjectDescription ele) {
//	   return ele.getName();
//	}
//	 
//  String image(IEObjectDescription ele) {
//     return ele.getEClass().getName() + ".gif";
//  }	 
}
