package com.psddev.cms.db; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.psddev.dari.db.ObjectField; import com.psddev.dari.db.ObjectType; import com.psddev.dari.db.Recordable; /** @deprecated Use {@link Renderer} instead. */ @Deprecated public interface Renderable extends Recordable { /** @deprecated Use {@link Renderer.ListLayout} instead. */ @Deprecated @Documented @Retention(RetentionPolicy.RUNTIME) public @interface ListLayout { String name(); Class<?>[] itemClasses(); } /** @deprecated Use {@link Renderer.ListLayouts} instead. */ @Deprecated @Documented @Inherited @ObjectField.AnnotationProcessorClass(RenderableListLayoutsProcessor.class) @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface ListLayouts { String[] value() default { }; ListLayout[] map() default { }; } } @Deprecated class RenderableListLayoutsProcessor implements ObjectField.AnnotationProcessor<Renderable.ListLayouts> { @Override public void process(ObjectType type, ObjectField field, Renderable.ListLayouts annotation) { String[] value = annotation.value(); Renderable.ListLayout[] map = annotation.map(); Map<String, List<String>> listLayouts = field.as(Renderer.FieldData.class).getListLayouts(); for (String layoutName : value) { listLayouts.put(layoutName, new ArrayList<String>()); } for (Renderable.ListLayout layout : map) { List<String> layoutItems = new ArrayList<String>(); listLayouts.put(layout.name(), layoutItems); for (Class<?> itemClass : layout.itemClasses()) { layoutItems.add(itemClass.getName()); } } } }