org.netbeans.modules.projectapi/1 1.36.1

org.netbeans.spi.project
Annotation Type ProjectServiceProvider


@Retention(value=SOURCE)
@Target(value={TYPE,METHOD})
public @interface ProjectServiceProvider

Like LookupProvider but registers a single object into a project's lookup. An annotated class must have one public constructor, which may take Project and/or Lookup parameters. An annotated factory method must have similar parameters.

public final class TestAction implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        System.err.println("===> running action");
        for (Project p : OpenProjects.getDefault().getOpenProjects()) {
            Service s = p.getLookup().lookup(Service.class);
            if (s != null) {
                System.err.println("===> got a service: " + s.m());
            } else {
                System.err.println("===> nothing for " + p);
            }
        }
    }
    public static abstract class Service {
        static {
            System.err.println("===> loading Service");
        }
        public abstract String m();
    }
    @ProjectServiceProvider(service=Service.class,
                            projectType="org-netbeans-modules-java-j2seproject")
    public static class ServiceImpl extends Service {
        static {
            System.err.println("===> loading ServiceImpl");
        }
        private final Project p;
        public ServiceImpl(Project p) {
            this.p = p;
            System.err.println("===> new ServiceImpl on " + p);
        }
        public String m() {
            return ProjectUtils.getInformation(p).getDisplayName();
        }
    }
}
 

Since:
org.netbeans.modules.projectapi/1 1.23

Required Element Summary
 Class<?>[] service
          Service class(es) to be registered.
 
Optional Element Summary
 String[] projectType
          Token(s) denoting one or more project types, e.g.
 LookupProvider.Registration.ProjectType[] projectTypes
          Alternate registration of project types with positions.
 

Element Detail

service

public abstract Class<?>[] service
Service class(es) to be registered. The annotated class must be assignable to the service class(es).

projectType

public abstract String[] projectType
Token(s) denoting one or more project types, e.g. "org-netbeans-modules-java-j2seproject" LookupProviderSupport.createCompositeLookup(org.openide.util.Lookup, java.lang.String) may be used with the path Projects/TYPE/Lookup.

Default:
{}

projectTypes

public abstract LookupProvider.Registration.ProjectType[] projectTypes
Alternate registration of project types with positions. You must specify either this or projectType() (or both).

Default:
{}

org.netbeans.modules.projectapi/1 1.36.1

Built on December 5 2011.  |  Portions Copyright 1997-2011 Sun Microsystems, Inc. All rights reserved.