Before looking at the definition of our TopComponent, let's look at PhotoManager, and learn a bit about its services. The PhotoManager interface itself is pretty simple:
public interface PhotoManager extends Lookup.Provider { void scanSourceDirs(); List<String> getYears(); List<String> getMonths(int year); List<String> getPhotos(int year, int month); }
There is little of interest in the preceding code beyond the extends Lookup.Provider portion. Adding this here, we can force implementations to implement the lone method on that interface, as we'll need that later. The interesting part comes from the implementation, which is as follows:
@ServiceProvider(service = PhotoManager.class) public class ...