zweb/src/main/java/org/zkoss/web/theme/ThemeRegistry.java

Summary

Maintainability
A
0 mins
Test Coverage
/* ThemeRegistry.java

    Purpose:
        
    Description:
        
    History:
        Mar 14, 2013 10:57:00 PM Created by neillee

Copyright (C) 2013 Potix Corporation. All Rights Reserved.

*/
package org.zkoss.web.theme;

/**
 * Used to store a list of themes available to the web application.
 * Themes should be registered before they could be used.
 * 
 * User could define their own theme registry by implementing ThemeRegistry
 * interface, and specifying the following configuration in metainfo/zk/zk.xml
 * or WEB-INF/zk.xml.
 *
 * <pre>{@code
 * <desktop-config>
 *   <theme-registry-class>foo.CustomThemeRegistry</theme-registry>
 * </desktop-config>
 * }</pre>
 * @since 6.5.2
 * @author neillee
 */
public interface ThemeRegistry {

    /**
     * Register a theme, i.e. making the theme known to the web application
     * 
     * Note: how to deal with duplicate registration is entirely up to the specific
     * implementation of ThemeRegistry.
     * 
     * @param theme theme-specific information
     * @return true if the theme is registered; false if it cannot be registered
     */
    public boolean register(Theme theme);

    /**
     * Remove a theme from web application's use
     * 
     * @param theme the theme to be removed from the registry
     * @return true if the theme is removed; false if the theme cannot be found
     * 
     * @since 6.5.2
     */
    public boolean deregister(Theme theme);

    /**
     * @return a list of currently registered themes
     */
    public Theme[] getThemes();

    /**
     * Returns the theme identified by themeName
     * 
     * @param themeName the name of the theme
     * @return the theme identified by themeName; null if the theme is not registered
     */
    public Theme getTheme(String themeName);

    /**
     * Determine if a theme is registered
     * 
     * @param themeName the name of the theme
     * @return true if a theme with themeName is registered; false if not
     */
    public boolean hasTheme(String themeName);
}