Package org.eclipse.jst.jsf.metadataprocessors

Source Code of org.eclipse.jst.jsf.metadataprocessors.AbstractMetaDataEnabledFeature

/*******************************************************************************
* Copyright (c) 2006, 2007 Oracle Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Gerry Kessler/Oracle - initial API and implementation
*   
********************************************************************************/

package org.eclipse.jst.jsf.metadataprocessors;

import java.util.Collections;
import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jst.jsf.common.metadata.Entity;
import org.eclipse.jst.jsf.common.metadata.Trait;
import org.eclipse.jst.jsf.common.metadata.internal.IImageDescriptorProvider;
import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider;
import org.eclipse.jst.jsf.common.metadata.internal.TraitValueHelper;
import org.eclipse.jst.jsf.common.metadata.query.TaglibDomainMetaDataQueryHelper;
import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;

/**
* Simple abstract class that implementers of {@link IMetaDataEnabledFeature} can subclass in the <b>TagLibDomain</b> of metadata
* <p><b>Provisional API - subject to change</b></p>*
*/
public abstract class AbstractMetaDataEnabledFeature implements IMetaDataEnabledFeature{
 
  private MetaDataContext mdContext;
  private IStructuredDocumentContext sdContext;

 
  /* (non-Javadoc)
   * @see org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature#setMetaDataContext(org.eclipse.jst.jsf.metadataprocessors.MetaDataContext)
   */
  public void setMetaDataContext(final MetaDataContext context) {
    this.mdContext = context;   
  }

  /* (non-Javadoc)
   * @see org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature#getMetaDataContext()
   */
  public MetaDataContext getMetaDataContext() {
    return mdContext;
  }

  /* (non-Javadoc)
   * @see org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature#setStructuredDocumentContext(org.eclipse.wtp.jsf.context.structureddocument.IStructuredDocumentContext)
   */
  public void setStructuredDocumentContext(final IStructuredDocumentContext context) {
    this.sdContext = context;
  }

  /* (non-Javadoc)
   * @see org.eclipse.jst.jsf.metadataprocessors.IMetaDataEnabledFeature#getStructuredDocumentContext()
   */
  public IStructuredDocumentContext getStructuredDocumentContext() {
    return sdContext;
  }
 
//  private IProject getProject(){
//    if (_project == null){
//      _project = IStructuredDocumentContextResolverFactory.INSTANCE.getWorkspaceContextResolver(sdContext).getProject();
//    }
//    return _project;
//  }

 
  //common metadata accessors
  /**
   * Return the single expected String value for a given property.
   *
   * @param traitName property name
   * @return String value
   */
  protected String getTraitValueAsString(final String traitName){ 
    Trait t = getTraitForEntityUsingContext(traitName);
    if (t != null){
      return TraitValueHelper.getValueAsString(t);
    }
       
    return null;

  }
 
  /**
   * Return the List of values for a given property.
   *
   * @param traitName trait name
   * @return List of String values
   */
  protected List getTraitValueAsListOfStrings(final String traitName){
    Trait t = getTraitForEntityUsingContext(traitName);
    if (t != null){
      return TraitValueHelper.getValueAsListOfStrings(t);
    }
     
    return Collections.EMPTY_LIST;
  }

  /**
   * Return a boolean value for the given named trait .
   *
   * @param traitName property name
   * @return boolean value.  Returns false if trait was not located.
   */
  protected boolean getTraitValueAsBoolean(final String traitName){ 
    Trait t = getTraitForEntityUsingContext(traitName);
    if (t != null){
      return TraitValueHelper.getValueAsBoolean(t);
    }
       
    return false;

  }
  private Trait getTraitForEntityUsingContext(final String traitName) {
    //look for trait on given entity
    final Entity entity = getMetaDataContext().getEntity();
    return TaglibDomainMetaDataQueryHelper.getTrait(entity, traitName);
  }

  /**
   * @return small-icon name
   */
  protected String getSmallIcon() {
    return getTraitValueAsString(IPossibleValues.POSSIBLE_VALUES_SMALL_ICON_PROP_NAME);
  }
 
  /**
   * @return ImageDescriptor from the small-icon property for annotation from the same
   * source model provider as the trait
   */
  protected ImageDescriptor getImage() {
    final String smallIcon = getSmallIcon();
    if (smallIcon == null)
      return null;
   
    try {
      Trait t = getMetaDataContext().getTrait();
      IMetaDataSourceModelProvider provider = t.getSourceModelProvider();
      IImageDescriptorProvider ip = (IImageDescriptorProvider)provider.getAdapter(IImageDescriptorProvider.class);
      if (ip != null){
        return ip.getImageDescriptor(smallIcon);
      }
    } catch (RuntimeException e) {   
      //TODO: log error?

    }
    return null;
  }
}
TOP

Related Classes of org.eclipse.jst.jsf.metadataprocessors.AbstractMetaDataEnabledFeature

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.