public List<OptionsDescription> describeOptions(OptionsHolder optionsHolder) { Set<Field> fields = findOptionFields(optionsHolder); List<OptionsDescription> optionDescriptions = new ArrayList<>(); for (Field field : fields) { String key = (!EdenUtils.isEmpty(field.getAnnotation(Option.class).value())) ? field.getAnnotation(Option.class).value() : field.getName(); String description = (field.getAnnotation(Description.class) != null && !EdenUtils.isEmpty(field.getAnnotation(Description.class).value())) ? field.getAnnotation(Description.class).value() : ""; optionDescriptions.add(new OptionsDescription(key, field.getType(), description)); } return optionDescriptions; }
public void extractOptions(OptionsHolder optionsHolder, JSONObject options) { Set<Field> fields = findOptionFields(optionsHolder); for (Field field : fields) { String key = (!EdenUtils.isEmpty(field.getAnnotation(Option.class).value())) ? field.getAnnotation(Option.class).value() : field.getName(); if (field.getType().isArray()) { setOptionArray(optionsHolder, field, options, key); } else if (List.class.isAssignableFrom(field.getType())) { setOptionArray(optionsHolder, field, options, key); } else { setOption(optionsHolder, field, options, key); } } }
public class RecentPostsComponent extends OrchidComponent { public PostsModel postsModel; @Option public String category; @Option public int limit; @Inject public RecentPostsComponent(OrchidContext context, PostsModel postsModel) { super(context, "recentPosts", 25); this.postsModel = postsModel; } public List<PostPage> getRecentPosts() { if(!EdenUtils.isEmpty(category)) { return postsModel.getRecentPosts(category, limit); } else { return postsModel.getRecentPosts(null, limit); } } }
public final class IndexMenuItem extends OrchidMenuItem { @Option public String title; @Option public String index; @Inject public IndexMenuItem(OrchidContext context) { super(context, "index", 100); } @Override public List<OrchidMenuItemImpl> getMenuItems() { List<OrchidMenuItemImpl> menuItems = new ArrayList<>(); if (!EdenUtils.isEmpty(title) && !EdenUtils.isEmpty(index)) { OrchidIndex foundIndex = context.getIndex().findIndex(index); menuItems.add(new OrchidMenuItemImpl(context, title, foundIndex)); } return menuItems; } }
public final class DividerMenuItem extends OrchidMenuItem { @Option public String title; @Inject public DividerMenuItem(OrchidContext context) { super(context, "separator", 100); } @Override public List<OrchidMenuItemImpl> getMenuItems() { List<OrchidMenuItemImpl> menuItems = new ArrayList<>(); if(!EdenUtils.isEmpty(title)) { menuItems.add(new OrchidMenuItemImpl(context, title)); } else { menuItems.add(new OrchidMenuItemImpl(context)); } return menuItems; } }
public class PageMenuType extends OrchidMenuItem { @Option("page") public String pageName; @Inject public PageMenuType(OrchidContext context) { super(context, "page", 100); } @Override public List<OrchidMenuItemImpl> getMenuItems() { List<OrchidMenuItemImpl> menuItems = new ArrayList<>(); List<OrchidPage> pages = context.getInternalIndex().getGeneratorPages("pages"); if(!EdenUtils.isEmpty(pageName)) { for (OrchidPage page : pages) { if(page.getTitle().equals(pageName)) { menuItems.add(new OrchidMenuItemImpl(context, page)); } } } return menuItems; } }
public abstract class Theme extends AbstractTheme { @Getter @Setter @Option protected OrchidMenu menu; @Inject public Theme(OrchidContext context, String key, int priority) { super(context, key, priority); } }
public final class TemplateComponent extends OrchidComponent { @Getter @Setter @Option public JSONObject data; @Inject public TemplateComponent(OrchidContext context) { super(context, "template", 100); } }