View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  
20  package org.apache.myfaces.tobago.internal.util;
21  
22  import org.apache.commons.collections.list.SetUniqueList;
23  import org.apache.commons.collections.set.ListOrderedSet;
24  import org.apache.myfaces.tobago.compat.FacesUtils;
25  import org.apache.myfaces.tobago.internal.component.AbstractUIPopup;
26  
27  import javax.faces.context.FacesContext;
28  import java.util.ArrayList;
29  import java.util.Collections;
30  import java.util.List;
31  import java.util.Set;
32  
33  @SuppressWarnings("unchecked")
34  public final class FacesContextUtils {
35    private static final String TOBAGO_AJAX = "org.apache.myfaces.tobago.ajax";
36    private static final String TOBAGO_AJAX_COMPONENT_ID = "org.apache.myfaces.tobago.ajaxComponentId";
37    private static final String TOBAGO_ENCTYPE = "org.apache.myfaces.tobago.enctype";
38    private static final String TOBAGO_SCRIPT_FILES = "org.apache.myfaces.tobago.scriptFiles";
39    private static final String TOBAGO_SCRIPT_BLOCKS = "org.apache.myfaces.tobago.scriptBlocks";
40    private static final String TOBAGO_STYLE_FILES = "org.apache.myfaces.tobago.styleFiles";
41    private static final String TOBAGO_STYLE_BLOCKS = "org.apache.myfaces.tobago.styleBlocks";
42    private static final String TOBAGO_ONLOAD_SCRIPTS = "org.apache.myfaces.tobago.onloadScripts";
43    private static final String TOBAGO_ONUNLOAD_SCRIPTS = "org.apache.myfaces.tobago.onunloadScripts";
44    private static final String TOBAGO_ONEXIT_SCRIPTS = "org.apache.myfaces.tobago.onexitScripts";
45    private static final String TOBAGO_ONSUBMIT_SCRIPTS = "org.apache.myfaces.tobago.onsubmitScripts";
46    private static final String TOBAGO_POPUPS = "org.apache.myfaces.tobago.popups";
47    private static final String TOBAGO_MENU_ACCELERATORS = "org.apache.myfaces.tobago.menuAccelerators";
48    private static final String TOBAGO_FOCUS_ID = "org.apache.myfaces.tobago.focusId";
49    private static final String TOBAGO_ACTION_ID = "org.apache.myfaces.tobago.actionId";
50  
51    public static boolean isAjax(FacesContext context) {
52      return FacesUtils.getFacesContextAttributes(context).containsKey(TOBAGO_AJAX);
53    }
54  
55    public static void setAjax(FacesContext context, boolean ajax) {
56      FacesUtils.getFacesContextAttributes(context).put(TOBAGO_AJAX, ajax);
57    }
58  
59    public static void setFocusId(FacesContext context, String focusId) {
60      FacesUtils.getFacesContextAttributes(context).put(TOBAGO_FOCUS_ID, focusId);
61    }
62  
63    public static String getFocusId(FacesContext context) {
64      return (String) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_FOCUS_ID);
65    }
66  
67    public static void setActionId(FacesContext context, String actionId) {
68      FacesUtils.getFacesContextAttributes(context).put(TOBAGO_ACTION_ID, actionId);
69    }
70  
71    public static String getActionId(FacesContext context) {
72      return (String) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ACTION_ID);
73    }
74  
75  
76    public static String getAjaxComponentId(FacesContext context) {
77      return (String) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_AJAX_COMPONENT_ID);
78    }
79  
80    public static void setAjaxComponentId(FacesContext context, String ajaxComponentId) {
81      FacesUtils.getFacesContextAttributes(context).put(TOBAGO_AJAX_COMPONENT_ID, ajaxComponentId);
82    }
83  
84    public static String getEnctype(FacesContext context) {
85      return (String) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ENCTYPE);
86    }
87  
88    public static void setEnctype(FacesContext context, String enctype) {
89      FacesUtils.getFacesContextAttributes(context).put(TOBAGO_ENCTYPE, enctype);
90    }
91  
92    public static List<String> getScriptFiles(FacesContext context) {
93      List<String> list = (List<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_SCRIPT_FILES);
94      if (list == null) {
95        return Collections.EMPTY_LIST;
96      }
97      return list;
98    }
99    
100   public static void addScriptFile(FacesContext context, String file) {
101     List<String> list = (List<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_SCRIPT_FILES);
102     if (list == null) {
103       list = SetUniqueList.decorate(new ArrayList());
104       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_SCRIPT_FILES, list);
105     }
106     list.add(file);
107 
108   }
109 
110   public static Set<String> getScriptBlocks(FacesContext context) {
111      Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_SCRIPT_BLOCKS);
112      if (set == null) {
113       return Collections.EMPTY_SET;
114     }
115     return set;
116   }
117 
118   public static void addScriptBlock(FacesContext context, String script) {
119     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_SCRIPT_BLOCKS);
120     if (set == null) {
121       set = new ListOrderedSet();
122       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_SCRIPT_BLOCKS, set);
123     }
124     set.add(script);
125   }
126 
127 
128   public static Set<String> getStyleFiles(FacesContext context) {
129     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_STYLE_FILES);
130     if (set == null) {
131       return Collections.EMPTY_SET;
132     }
133     return set;
134   }
135 
136   public static void addStyleFile(FacesContext context, String script) {
137     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_STYLE_FILES);
138     if (set == null) {
139       set = new ListOrderedSet();
140       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_STYLE_FILES, set);
141     }
142     set.add(script);
143   }
144 
145   public static Set<String> getStyleBlocks(FacesContext context) {
146     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_STYLE_BLOCKS);
147     if (set == null) {
148       return Collections.EMPTY_SET;
149     }
150     return set;
151   }
152 
153   public static void addStyleBlock(FacesContext context, String script) {
154     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_STYLE_BLOCKS);
155     if (set == null) {
156       set = new ListOrderedSet();
157       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_STYLE_BLOCKS, set);
158     }
159     set.add(script);
160   }
161 
162   public static List<String> getOnloadScripts(FacesContext context) {
163     List<String> list = (List<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONLOAD_SCRIPTS);
164     if (list == null) {
165       return Collections.EMPTY_LIST;
166     }
167     return list;
168   }
169 
170 
171   public static void addOnloadScript(FacesContext context, String file) {
172     List<String> list = (List<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONLOAD_SCRIPTS);
173     if (list == null) {
174       list = SetUniqueList.decorate(new ArrayList());
175       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_ONLOAD_SCRIPTS, list);
176     }
177     list.add(file);
178   }
179 
180   public static void addOnloadScript(FacesContext context, int position, String file) {
181     List<String> list = (List<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONLOAD_SCRIPTS);
182     if (list == null) {
183       list = SetUniqueList.decorate(new ArrayList());
184       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_ONLOAD_SCRIPTS, list);
185     }
186     list.add(position, file);
187   }
188 
189   public static Set<String> getOnunloadScripts(FacesContext context) {
190     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONUNLOAD_SCRIPTS);
191     if (set == null) {
192       return Collections.EMPTY_SET;
193     }
194     return set;
195   }
196 
197   public static void addOnunloadScript(FacesContext context, String script) {
198     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONUNLOAD_SCRIPTS);
199     if (set == null) {
200       set = new ListOrderedSet();
201       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_ONUNLOAD_SCRIPTS, set);
202     }
203     set.add(script);
204   }
205 
206   public static Set<String> getOnexitScripts(FacesContext context) {
207     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONEXIT_SCRIPTS);
208     if (set == null) {
209       return Collections.EMPTY_SET;
210     }
211     return set;
212   }
213 
214   public static void addOnexitScript(FacesContext context, String script) {
215     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONEXIT_SCRIPTS);
216     if (set == null) {
217       set = new ListOrderedSet();
218       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_ONEXIT_SCRIPTS, set);
219     }
220     set.add(script);
221   }
222 
223   public static Set<String> getOnsubmitScripts(FacesContext context) {
224     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONSUBMIT_SCRIPTS);
225     if (set == null) {
226       return Collections.EMPTY_SET;
227     }
228     return set;
229   }
230 
231   public static void addOnsubmitScript(FacesContext context, String script) {
232     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_ONSUBMIT_SCRIPTS);
233     if (set == null) {
234       set = new ListOrderedSet();
235       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_ONSUBMIT_SCRIPTS, set);
236     }
237     set.add(script);
238   }
239 
240   public static void clearMenuAcceleratorScripts(FacesContext context) {
241     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_MENU_ACCELERATORS);
242     set.clear();
243   }
244 
245   public static Set<String> getMenuAcceleratorScripts(FacesContext context) {
246     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_MENU_ACCELERATORS);
247     if (set == null) {
248       return Collections.EMPTY_SET;
249     }
250     return set;
251   }
252 
253   public static void addMenuAcceleratorScript(FacesContext context, String script) {
254     Set<String> set = (Set<String>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_MENU_ACCELERATORS);
255     if (set == null) {
256       set = new ListOrderedSet();
257       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_MENU_ACCELERATORS, set);
258     }
259     set.add(script);
260   }
261 
262   public static Set<AbstractUIPopup> getPopups(FacesContext context) {
263     Set<AbstractUIPopup> set = (Set<AbstractUIPopup>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_POPUPS);
264     if (set == null) {
265       return Collections.EMPTY_SET;
266     }
267     return set;
268   }
269 
270   public static void addPopup(FacesContext context, AbstractUIPopup popup) {
271     Set<AbstractUIPopup> set = (Set<AbstractUIPopup>) FacesUtils.getFacesContextAttributes(context).get(TOBAGO_POPUPS);
272     if (set == null) {
273       set = new ListOrderedSet();
274       FacesUtils.getFacesContextAttributes(context).put(TOBAGO_POPUPS, set);
275     }
276     set.add(popup);
277   }
278 }