View Javadoc

1   package net.sf.josceleton.core.api.entity.joint;
2   
3   import java.util.Arrays;
4   import java.util.Collections;
5   
6   import net.sf.josceleton.core.api.entity.joint.JointImplProvider.AnklesImpl;
7   import net.sf.josceleton.core.api.entity.joint.JointImplProvider.ElbowsImpl;
8   import net.sf.josceleton.core.api.entity.joint.JointImplProvider.FeetImpl;
9   import net.sf.josceleton.core.api.entity.joint.JointImplProvider.HandsImpl;
10  import net.sf.josceleton.core.api.entity.joint.JointImplProvider.HeadImpl;
11  import net.sf.josceleton.core.api.entity.joint.JointImplProvider.HipsImpl;
12  import net.sf.josceleton.core.api.entity.joint.JointImplProvider.KneesImpl;
13  import net.sf.josceleton.core.api.entity.joint.JointImplProvider.NeckImpl;
14  import net.sf.josceleton.core.api.entity.joint.JointImplProvider.ShouldersImpl;
15  import net.sf.josceleton.core.api.entity.joint.JointImplProvider.TorsoImpl;
16  import net.sf.josceleton.core.api.entity.joint.JointParts.Ankles;
17  import net.sf.josceleton.core.api.entity.joint.JointParts.Elbows;
18  import net.sf.josceleton.core.api.entity.joint.JointParts.Feet;
19  import net.sf.josceleton.core.api.entity.joint.JointParts.Hands;
20  import net.sf.josceleton.core.api.entity.joint.JointParts.Head;
21  import net.sf.josceleton.core.api.entity.joint.JointParts.Hips;
22  import net.sf.josceleton.core.api.entity.joint.JointParts.Knees;
23  import net.sf.josceleton.core.api.entity.joint.JointParts.Neck;
24  import net.sf.josceleton.core.api.entity.joint.JointParts.Shoulders;
25  import net.sf.josceleton.core.api.entity.joint.JointParts.Torso;
26  
27  /**
28   * Implements an hierarchical enum.
29   * 
30   * @since 0.1
31   */
32  public final class Joints {
33  	
34  	private static final Head HEAD           = new HeadImpl();
35  	private static final Neck NECK           = new NeckImpl();
36  	private static final Torso TORSO         = new TorsoImpl();
37  	private static final Shoulders SHOULDERS = new ShouldersImpl();
38  	private static final Elbows ELBOWS       = new ElbowsImpl();
39  	private static final Hands HANDS         = new HandsImpl();
40  	private static final Hips HIPS           = new HipsImpl();
41  	private static final Knees KNEES         = new KneesImpl();
42  	private static final Ankles ANKLES       = new AnklesImpl();
43  	private static final Feet FEET           = new FeetImpl();
44  
45  	private static final Iterable<Joint> ALL_JOINTS;
46  	static {
47  		ALL_JOINTS = Collections.unmodifiableList(Arrays.asList(
48  			HEAD,
49  			NECK,
50  			TORSO,
51  			SHOULDERS.LEFT(), SHOULDERS.RIGHT(),
52  			ELBOWS.LEFT(),    ELBOWS.RIGHT(),
53  			HANDS.LEFT(),     HANDS.RIGHT(),
54  			HIPS.LEFT(),      HIPS.RIGHT(),
55  			KNEES.LEFT(),     KNEES.RIGHT(),
56  			ANKLES.LEFT(),    ANKLES.RIGHT(),
57  			FEET.LEFT(),      FEET.RIGHT()
58  		));
59  		
60  	}
61  
62  	
63  	private Joints() { /* as its a pseudo-enum => not instantiable */ }
64  	
65  	
66  	/** @since 0.1 */
67  	public static Iterable<Joint> values() {
68  		return ALL_JOINTS;
69  	}
70  	
71  	
72  	/** @since 0.1 */
73  	public static Head HEAD() { return Joints.HEAD; }
74  
75  	/** @since 0.1 */
76  	public static Neck NECK() { return Joints.NECK; }
77  
78  	/** @since 0.1 */
79  	public static Torso TORSO() { return Joints.TORSO; }
80  	
81  	
82  	/** @since 0.1 */
83  	public static Shoulders SHOULDER() { return Joints.SHOULDERS; }
84  
85  	/** @since 0.1 */
86  	public static Elbows ELBOW() { return Joints.ELBOWS; }
87  
88  	/** @since 0.1 */
89  	public static Hands HAND() { return Joints.HANDS; }
90  
91  	/** @since 0.1 */
92  	public static Hips HIP() { return Joints.HIPS; }
93  
94  	/** @since 0.1 */
95  	public static Knees KNEE() { return Joints.KNEES; }
96  
97  	/** @since 0.1 */
98  	public static Ankles ANKLE() { return Joints.ANKLES; }
99  
100 	/** @since 0.1 */
101 	public static Feet FOOT() { return Joints.FEET; }
102 
103 }