View Javadoc

1   /*
2    * $Id: DragDropEffectsConverter.java,v 1.2 2010/07/06 16:12:47 oeuillot Exp $
3    * 
4    */
5   package org.rcfaces.core.internal.converter;
6   
7   import java.util.HashMap;
8   import java.util.Map;
9   import java.util.StringTokenizer;
10  
11  import javax.faces.FacesException;
12  import javax.faces.component.UIComponent;
13  import javax.faces.context.FacesContext;
14  import javax.faces.convert.Converter;
15  
16  import org.rcfaces.core.component.capability.IDragAndDropEffects;
17  import org.rcfaces.core.model.AbstractConverter;
18  
19  /**
20   * 
21   * @author Olivier Oeuillot (latest modification by $Author: oeuillot $)
22   * @version $Revision: 1.2 $ $Date: 2010/07/06 16:12:47 $
23   */
24  public class DragDropEffectsConverter extends AbstractConverter {
25      private static final String REVISION = "$Revision: 1.2 $";
26  
27      public static final Converter SINGLETON = new DragDropEffectsConverter();
28  
29      private static final Integer NO_EFFECTS = new Integer(0);
30  
31      private static final Map EFFECTS = new HashMap(8);
32      static {
33          EFFECTS.put("NONE", new Integer(IDragAndDropEffects.NONE_DND_EFFECT));
34          EFFECTS.put("DEFAULT", new Integer(
35                  IDragAndDropEffects.DEFAULT_DND_EFFECT));
36          EFFECTS.put("COPY", new Integer(IDragAndDropEffects.COPY_DND_EFFECT));
37          EFFECTS.put("LINK", new Integer(IDragAndDropEffects.LINK_DND_EFFECT));
38          EFFECTS.put("MOVE", new Integer(IDragAndDropEffects.MOVE_DND_EFFECT));
39          EFFECTS.put("ANY", new Integer(IDragAndDropEffects.ANY_DND_EFFECT));
40          EFFECTS.put("UNKNOWN", new Integer(
41                  IDragAndDropEffects.UNKNOWN_DND_EFFECT));
42      }
43  
44      public Object getAsObject(FacesContext context, UIComponent component,
45              String value) {
46          if (value == null) {
47              return NO_EFFECTS;
48          }
49  
50          StringTokenizer st = new StringTokenizer(value, ",; ");
51  
52          int mask = 0;
53  
54          for (; st.hasMoreTokens();) {
55              String token = st.nextToken().toUpperCase();
56  
57              Integer flags = (Integer) EFFECTS.get(token);
58              if (flags == null) {
59                  continue;
60              }
61  
62              mask |= flags.intValue();
63          }
64  
65          if (mask == 0) {
66              return NO_EFFECTS;
67          }
68  
69          return new Integer(mask);
70      }
71  
72      public String getAsString(FacesContext context, UIComponent component,
73              Object value) {
74          throw new FacesException("Not implemented !");
75      }
76  
77      public static Integer convertUpperCase(String key) {
78          return (Integer) EFFECTS.get(key);
79      }
80  }