RatingPropertyEditorSpi Example

package com.escenic.studio.plugin;

import com.escenic.domain.PropertyDescriptor;
import com.escenic.studio.binding.AbstractPropertyBinding;
import com.escenic.studio.editors.PropertyEditorUI;
import com.escenic.studio.editors.ResourceRecorder;
import com.escenic.studio.editors.spi.PropertyEditorSpi;

import java.net.URI;

public class RatingPropertyEditorSpi extends PropertyEditorSpi {
  public static final URI PLUGIN_URI = URI.create("http://xmlns.escenic.com/2008/studio-plugin");
  public static final String RATING_EDITOR = "rating-editor";
  public static final String ENABLED_ATTRIBUTE = "enabled";
  public static final String ENABLED_ATTRIBUTE_VALUE = "true";

  public boolean supports(final PropertyDescriptor pPropertyDescriptor) {
    return Number.class.isAssignableFrom(pPropertyDescriptor.getType()) &&
        pPropertyDescriptor.getModule(PLUGIN_URI, 
                                      RATING_EDITOR, 
                                      ENABLED_ATTRIBUTE, 
                                      ENABLED_ATTRIBUTE_VALUE) != null;
  }

  public PropertyEditorUI createPropertyEditor(final AbstractPropertyBinding pBinding, 
                                               final ResourceRecorder pResourceRecorder) {
    return new RatingPropertyEditorUI(pBinding, pResourceRecorder);
  }
}