/** * Creates a structured value. * * @param router router for the document holding the value state * @param element element on which the value state is stored * @param serializer converter between strings and values * @param keyClass class object for the key type */ public static <E, K extends Enum<K>, C extends Comparable<C>> DocumentBasedStructuredValue<E, K, C> create( DocumentEventRouter<? super E, E, ?> router, E element, Serializer<C> serializer, Class<K> keyClass) { DocumentBasedStructuredValue<E, K, C> value = new DocumentBasedStructuredValue<E, K, C>(router.getDocument(), element, serializer, keyClass); router.addAttributeListener(element, value); router.addDeletionListener(element, value); return value; }