Services may optionally provide UIs which allow different styles of interaction in different roles. One role may be end-user browsing and setting of print options. Another role may be administering the print service.
Although the Print Service API does not presently provide standardised support for administering a print service, monitoring of the print service is possible and a UI may provide for private update mechanisms.
The basic design intent is to allow applications to lazily locate and initialize services only when needed without any API dependencies except in an environment in which they are used.
Swing UIs are preferred as they provide a more consistent L&F and can support accessibility APIs.
Example usage:
ServiceUIFactory factory = printService.getServiceUIFactory();
if (factory != null) {
JComponent swingui = (JComponent)factory.getUI(
ServiceUIFactory.MAIN_UIROLE,
ServiceUIFactory.JCOMPONENT_UI);
if (swingui != null) {
tabbedpane.add("Custom UI", swingui);
}
}