KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > icefaces > samples > showcase > util > StyleBean


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.icefaces.samples.showcase.util;
35
36 import com.icesoft.icefaces.samples.showcase.navigation.TreeNavigation;
37
38 import javax.faces.model.SelectItem;
39 import java.util.ArrayList JavaDoc;
40 import java.util.List JavaDoc;
41
42 /**
43  * <p>The StyleBean class is the backing bean which manages the demonstrations'
44  * active theme. There are currently two themes supported by the bean; XP and
45  * Royale. </p>
46  * <p/>
47  * <p>The webpages' style attributes are modified by changing link in the header
48  * of the HTML document. The selectInputDate and tree components' styles are
49  * changed by changing the location of their image src directories.</p>
50  *
51  * @since 0.3.0
52  */

53 public class StyleBean {
54
55     // possible theme choices
56
private final String JavaDoc XP = "xp";
57     private final String JavaDoc ROYALE = "royale";
58
59     // default theme
60
private String JavaDoc currentStyle = XP;
61     private String JavaDoc tempStyle = XP;
62
63     // available style list
64
private ArrayList JavaDoc styleList;
65
66     // default theme image directory for selectinputdate and theme.
67
private String JavaDoc imageDirectory = "/xmlhttp/css/xp/css-images/";
68
69     // navigation tree reference for updating folder icons
70
TreeNavigation treeNav;
71
72     // folder icons for the respective themes
73
public static final String JavaDoc XP_BRANCH_EXPANDED_ICON =
74             "xmlhttp/css/xp/css-images/tree_folder_open.gif";
75     public static final String JavaDoc XP_BRANCH_CONTRACTED_ICON =
76             "xmlhttp/css/xp/css-images/tree_folder_close.gif";
77     public static final String JavaDoc ROYALE_BRANCH_EXPANDED_ICON =
78             "xmlhttp/css/royale/css-images/tree_folder_open.gif";
79     public static final String JavaDoc ROYALE_BRANCH_CONTRACTED_ICON =
80             "xmlhttp/css/royale/css-images/tree_folder_close.gif";
81
82     /**
83      * Creates a new instance of the StyleBean.
84      */

85     public StyleBean() {
86         // initialize the style list
87
styleList = new ArrayList JavaDoc();
88         styleList.add(new SelectItem(XP, XP));
89         styleList.add(new SelectItem(ROYALE, ROYALE));
90     }
91
92     /**
93      * Gets the current style.
94      *
95      * @return current style
96      */

97     public String JavaDoc getCurrentStyle() {
98         return currentStyle;
99     }
100
101     /**
102      * Sets the current style of the application to one of the predetermined
103      * themes.
104      *
105      * @param currentStyle
106      */

107     public void setCurrentStyle(String JavaDoc currentStyle) {
108         this.tempStyle = currentStyle;
109     }
110
111     /**
112      * Gets the html needed to insert a valid css link tag.
113      *
114      * @return the tag information needed for a valid css link tag
115      */

116     public String JavaDoc getStyle() {
117         return "<link rel=\"stylesheet\" type=\"text/css\" HREF=\"xmlhttp/css/" +
118                currentStyle + "/" + currentStyle + ".css" + "\"></link>";
119     }
120
121     /**
122      * Gets the image directory to use for the selectinputdate and tree
123      * theming.
124      *
125      * @return image directory used for theming
126      */

127     public String JavaDoc getImageDirectory() {
128         return imageDirectory;
129     }
130
131     /**
132      * Applies temp style to to the current style and image directory and
133      * manually refreshes the icons in the navigation tree. The page will reload
134      * based on navigation rules to ensure the theme is applied; this is
135      * necessary because of difficulties encountered by updating the stylesheet
136      * reference within the <HEAD> of the document.
137      *
138      * @return the reload navigation attribute
139      */

140     public String JavaDoc changeStyle() {
141         currentStyle = tempStyle;
142         imageDirectory = "./xmlhttp/css/" + currentStyle + "/css-images/";
143
144         // manually update the icons in the navigation tree
145
treeNav.refreshIcons(currentStyle);
146
147         return "reload";
148     }
149
150     /**
151      * Gets a list of available theme names that can be applied.
152      *
153      * @return available theme list
154      */

155     public List JavaDoc getStyleList() {
156         return styleList;
157     }
158
159     /**
160      * Provides the StyleBean with a reference to the TreeNavigation, enabling
161      * the StyleBean to use <code>refreshIcons()</code> to change the navigation
162      * icons based on the theme.
163      *
164      * @param treeNav
165      */

166     public void registerTree(TreeNavigation treeNav) {
167
168         this.treeNav = treeNav;
169     }
170 }
Popular Tags