View Javadoc

1   /*
2    * $Id: ImageAccessorTools.java,v 1.8 2008/09/17 16:35:34 oeuillot Exp $
3    */
4   package org.rcfaces.core.internal.tools;
5   
6   import javax.faces.context.FacesContext;
7   
8   import org.rcfaces.core.component.ToolBarComponent;
9   import org.rcfaces.core.component.capability.IImageCapability;
10  import org.rcfaces.core.component.capability.ISeverityImagesCapability;
11  import org.rcfaces.core.component.capability.IStatesImageCapability;
12  import org.rcfaces.core.component.familly.IContentAccessors;
13  import org.rcfaces.core.internal.capability.IComponentEngine;
14  import org.rcfaces.core.internal.component.IExpandImageAccessors;
15  import org.rcfaces.core.internal.component.IImageAccessors;
16  import org.rcfaces.core.internal.component.ISeverityImageAccessors;
17  import org.rcfaces.core.internal.component.IToolBarImageAccessors;
18  import org.rcfaces.core.internal.component.Properties;
19  import org.rcfaces.core.internal.contentAccessor.ContentAccessorFactory;
20  import org.rcfaces.core.internal.contentAccessor.IContentAccessor;
21  import org.rcfaces.core.lang.IContentFamily;
22  
23  /**
24   * 
25   * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
26   * @version $Revision: 1.8 $ $Date: 2008/09/17 16:35:34 $
27   */
28  public class ImageAccessorTools {
29      private static final String REVISION = "$Revision: 1.8 $";
30  
31      private static final IContentAccessors NO_IMAGE_ACCESSORS = new IImageAccessors() {
32          private static final String REVISION = "$Revision: 1.8 $";
33  
34          public IContentAccessor getImageAccessor() {
35              return null;
36          }
37      };
38  
39      private static final IContentAccessors NO_IMAGE_STATES_ACCESSORS = new IExpandImageAccessors() {
40          private static final String REVISION = "$Revision: 1.8 $";
41  
42          public IContentAccessor getImageAccessor() {
43              return null;
44          }
45  
46          public IContentAccessor getDisabledImageAccessor() {
47              return null;
48          }
49  
50          public IContentAccessor getHoverImageAccessor() {
51              return null;
52          }
53  
54          public IContentAccessor getSelectedImageAccessor() {
55              return null;
56          }
57  
58          public IContentAccessor getExpandedImageAccessor() {
59              return null;
60          }
61      };
62  
63      private static final IContentAccessors NO_IMAGE_SEVERITY_ACCESSSORS = new ISeverityImageAccessors() {
64          private static final String REVISION = "$Revision: 1.8 $";
65  
66          public IContentAccessor getErrorImageAccessor() {
67              return null;
68          }
69  
70          public IContentAccessor getFatalImageAccessor() {
71              return null;
72          }
73  
74          public IContentAccessor getInfoImageAccessor() {
75              return null;
76          }
77  
78          public IContentAccessor getWarnImageAccessor() {
79              return null;
80          }
81  
82          public IContentAccessor getImageAccessor() {
83              return null;
84          }
85  
86      };
87  
88      public static IContentAccessors createImageAccessor(
89              FacesContext facesContext, Object value) {
90          if (value == null) {
91              return NO_IMAGE_ACCESSORS;
92          }
93  
94          return ContentAccessorFactory.createSingleImageWebResource(
95                  facesContext, value, IContentFamily.IMAGE);
96      }
97  
98      public static IContentAccessors createImageAccessors(
99              FacesContext facesContext, IImageCapability component,
100             IComponentEngine engine) {
101         if (facesContext == null) {
102             facesContext = FacesContext.getCurrentInstance();
103         }
104 
105         Object imageContent = engine.getProperty(Properties.IMAGE_URL,
106                 facesContext);
107 
108         return createImageAccessor(facesContext, imageContent);
109     }
110 
111     public static IContentAccessors createImageAccessors(
112             FacesContext facesContext, IStatesImageCapability component,
113             IComponentEngine engine) {
114         if (facesContext == null) {
115             facesContext = FacesContext.getCurrentInstance();
116         }
117 
118         final IContentAccessor imageContentAccessor = createSubAccessor(
119                 facesContext, engine, Properties.IMAGE_URL, null);
120 
121         final IContentAccessor disabledImageContentAccessor = createSubAccessor(
122                 facesContext, engine, Properties.DISABLED_IMAGE_URL,
123                 imageContentAccessor);
124 
125         final IContentAccessor selectedImageContentAccessor = createSubAccessor(
126                 facesContext, engine, Properties.SELECTED_IMAGE_URL,
127                 imageContentAccessor);
128 
129         final IContentAccessor hoverImageContentAccessor = createSubAccessor(
130                 facesContext, engine, Properties.HOVER_IMAGE_URL,
131                 imageContentAccessor);
132 
133         final IContentAccessor expandedImageContentAccessor = createSubAccessor(
134                 facesContext, engine, Properties.EXPANDED_IMAGE_URL,
135                 imageContentAccessor);
136 
137         if (imageContentAccessor == null
138                 && selectedImageContentAccessor == null
139                 && disabledImageContentAccessor == null
140                 && hoverImageContentAccessor == null
141                 && expandedImageContentAccessor == null) {
142 
143             return NO_IMAGE_STATES_ACCESSORS;
144         }
145 
146         return new IExpandImageAccessors() {
147             private static final String REVISION = "$Revision: 1.8 $";
148 
149             public IContentAccessor getImageAccessor() {
150                 return imageContentAccessor;
151             }
152 
153             public IContentAccessor getSelectedImageAccessor() {
154                 return selectedImageContentAccessor;
155             }
156 
157             public IContentAccessor getDisabledImageAccessor() {
158                 return disabledImageContentAccessor;
159             }
160 
161             public IContentAccessor getHoverImageAccessor() {
162                 return hoverImageContentAccessor;
163             }
164 
165             public IContentAccessor getExpandedImageAccessor() {
166                 return expandedImageContentAccessor;
167             }
168 
169         };
170     }
171 
172     public static IContentAccessors createImageAccessors(
173             FacesContext facesContext, ISeverityImagesCapability component,
174             IComponentEngine engine) {
175         if (facesContext == null) {
176             facesContext = FacesContext.getCurrentInstance();
177         }
178 
179         final IContentAccessor imageContentAccessor = createSubAccessor(
180                 facesContext, engine, Properties.IMAGE_URL, null);
181 
182         final IContentAccessor infoImageContentAccessor = createSubAccessor(
183                 facesContext, engine, Properties.INFO_IMAGE_URL,
184                 imageContentAccessor);
185 
186         final IContentAccessor warnImageContentAccessor = createSubAccessor(
187                 facesContext, engine, Properties.WARN_IMAGE_URL,
188                 imageContentAccessor);
189 
190         final IContentAccessor errorImageContentAccessor = createSubAccessor(
191                 facesContext, engine, Properties.ERROR_IMAGE_URL,
192                 imageContentAccessor);
193 
194         final IContentAccessor fatalImageContentAccessor = createSubAccessor(
195                 facesContext, engine, Properties.FATAL_IMAGE_URL,
196                 imageContentAccessor);
197 
198         if (imageContentAccessor == null && infoImageContentAccessor == null
199                 && warnImageContentAccessor == null
200                 && errorImageContentAccessor == null
201                 && fatalImageContentAccessor == null) {
202             return NO_IMAGE_SEVERITY_ACCESSSORS;
203         }
204 
205         return new ISeverityImageAccessors() {
206             private static final String REVISION = "$Revision: 1.8 $";
207 
208             public IContentAccessor getErrorImageAccessor() {
209                 return errorImageContentAccessor;
210             }
211 
212             public IContentAccessor getFatalImageAccessor() {
213                 return fatalImageContentAccessor;
214             }
215 
216             public IContentAccessor getInfoImageAccessor() {
217                 return infoImageContentAccessor;
218             }
219 
220             public IContentAccessor getWarnImageAccessor() {
221                 return warnImageContentAccessor;
222             }
223 
224             public IContentAccessor getImageAccessor() {
225                 return imageContentAccessor;
226             }
227         };
228     }
229 
230     private static IContentAccessor createSubAccessor(
231             FacesContext facesContext, IComponentEngine engine,
232             String attributeName, IContentAccessor rootImageContentAccessor) {
233 
234         Object imageContent = engine.getProperty(attributeName, facesContext);
235 
236         if (imageContent == null) {
237             return null;
238         }
239 
240         if (rootImageContentAccessor != null) {
241             return ContentAccessorFactory.createFromWebResource(facesContext,
242                     imageContent, rootImageContentAccessor);
243         }
244 
245         return ContentAccessorFactory.createFromWebResource(facesContext,
246                 imageContent, IContentFamily.IMAGE);
247     }
248 
249     public static IToolBarImageAccessors createImageAccessors(
250             FacesContext facesContext, ToolBarComponent component,
251             IComponentEngine engine) {
252         if (facesContext == null) {
253             facesContext = FacesContext.getCurrentInstance();
254         }
255 
256         final IContentAccessor separatorContentAccessor = createSubAccessor(
257                 facesContext, engine, Properties.SEPARATOR_IMAGE_URL, null);
258 
259         final IContentAccessor controlImageContentAccessor = createSubAccessor(
260                 facesContext, engine, Properties.CONTROL_IMAGE_URL, null);
261 
262         return new IToolBarImageAccessors() {
263             private static final String REVISION = "$Revision: 1.8 $";
264 
265             public IContentAccessor getControlImageAccessor() {
266                 return controlImageContentAccessor;
267             }
268 
269             public IContentAccessor getSeparatorImageAccessor() {
270                 return separatorContentAccessor;
271             }
272 
273         };
274     }
275 }