/* * 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.modelgenerator.wsdl.ui.wizards.soap; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.xsd.XSDAttributeUse; import org.eclipse.xsd.XSDComplexTypeDefinition; import org.eclipse.xsd.XSDElementDeclaration; import org.eclipse.xsd.XSDModelGroup; import org.eclipse.xsd.XSDParticle; import org.eclipse.xsd.impl.XSDParticleImpl; import org.teiid.designer.modelgenerator.wsdl.ui.ModelGeneratorWsdlUiConstants; import org.teiid.designer.modelgenerator.wsdl.ui.util.ModelGeneratorWsdlUiUtil; import org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap.SchemaTreeModel.SchemaNode; /** * @since 8.0 */ public class SchemaTreeLabelProvider extends AdapterFactoryLabelProvider { private final Image XSD_COMPLEX_ELEMENT_ICON_IMG = ModelGeneratorWsdlUiUtil.getImage(ModelGeneratorWsdlUiConstants.Images.XSD_COMPLEX_ELEMENT_ICON); public SchemaTreeLabelProvider(AdapterFactory adapterFactory) { super(adapterFactory); } @Override public Image getImage(Object object) { if( object instanceof SchemaNode ) { // TODO Auto-generated method stub SchemaNode node = (SchemaNode)object; if( node.getElement() instanceof XSDParticle) { boolean doShow = false; Object content = ((XSDParticleImpl) node.getElement()).getContent(); if( content instanceof XSDElementDeclaration ) { doShow = ! (((XSDElementDeclaration )content).getType() instanceof XSDComplexTypeDefinition); } else { doShow = content instanceof XSDModelGroup; } if( ! doShow ) { return XSD_COMPLEX_ELEMENT_ICON_IMG; } } return super.getImage(node.getElement()); } return super.getImage(object); } @Override public String getText(Object object) { if( object instanceof SchemaNode ) { SchemaNode node = (SchemaNode) object; if( node.getElement() instanceof XSDAttributeUse ) { XSDAttributeUse attributeUse = (XSDAttributeUse)node.getElement(); String dTypeString = attributeUse.getAttributeDeclaration().getType().getAliasName(); String name = super.getText(node.getElement()); if( dTypeString != null ) { name = name + " : " + dTypeString; //$NON-NLS-1$ } return name; } return super.getText(node.getElement()); } else { return super.getText(object); } } }