01: /******************************************************************************
02: * JBoss, a division of Red Hat *
03: * Copyright 2006, Red Hat Middleware, LLC, and individual *
04: * contributors as indicated by the @authors tag. See the *
05: * copyright.txt in the distribution for a full listing of *
06: * individual contributors. *
07: * *
08: * This is free software; you can redistribute it and/or modify it *
09: * under the terms of the GNU Lesser General Public License as *
10: * published by the Free Software Foundation; either version 2.1 of *
11: * the License, or (at your option) any later version. *
12: * *
13: * This software is distributed in the hope that it will be useful, *
14: * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16: * Lesser General Public License for more details. *
17: * *
18: * You should have received a copy of the GNU Lesser General Public *
19: * License along with this software; if not, write to the Free *
20: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
21: * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
22: ******************************************************************************/package org.jboss.portal.theme;
23:
24: import org.jboss.portal.theme.metadata.PortalThemeMetaData;
25:
26: /**
27: * The ThemeService is the location where all the available themes are stored and retrieved. <p>The theme server works
28: * together with a deployer to register and unregister themes. The portal can access the theme server via the server
29: * manager, and query it for available themes.</P>
30: *
31: * @author <a href="mailto:mholzner@novell.com">Martin Holzner</a>.
32: * @author <a href="mailto:roy@jboss.org">Roy Russo</a>
33: * @version <tt>$Revision: 8784 $</tt>
34: */
35: public interface ThemeService extends ThemeServiceInfo {
36: /**
37: * Add a theme.
38: *
39: * @param metaData the meta data about the theme
40: */
41: void addTheme(RuntimeContext runtimeContext,
42: PortalThemeMetaData metaData) throws ThemeException;
43:
44: /**
45: * Set the default theme on a global scope.
46: *
47: * @param themeID the registration id of the theme to be the new default theme
48: * @throws ThemeException if the theme with this id is not available in the list of currently registered themes
49: */
50: void setDefault(ServerRegistrationID themeID) throws ThemeException;
51:
52: PortalTheme getDefaultTheme();
53:
54: /**
55: * Remove the theme from the available themes.
56: *
57: * @param theme the theme to be removed
58: * @throws ThemeException if the theme with this id is not available in the list of currently registered themes
59: */
60: void removeTheme(PortalTheme theme) throws ThemeException;
61:
62: /**
63: * Remove all themes that are registered with the provided application. <p>On deployment of a new application, the
64: * theme descriptor (if any present) in that application is parsed for themes that are to be registered with the
65: * theme server. For each entry in the descriptor, a new theme is registered with the theme server. Uppon
66: * undeployment of that same application, all themes must be deregistered. This method is a convenient way to achieve
67: * this.
68: *
69: * @param applicationName the name of the application that hosts the themes to unregister
70: * @throws ThemeException if there are no themes registered with this application, or if an error occurs during the
71: * remove
72: */
73: void removeThemes(String applicationName) throws ThemeException;
74: }
|