/** * Returns all the widgets which support a given type. * * @param type the type to support * @return the widgets which support the given type */ public static Set<Class<? extends Widget>> getWidgetsForType(DataType type) { Set<DataType> types = generateTypes(new LinkedHashSet<DataType>(), type.getParents()); types.add(type); Set<Class<? extends Widget>> elements = new LinkedHashSet<Class<? extends Widget>>(); for (DataType t : types) { Set<Class<? extends Widget>> set = map.get(t); if (set != null) { Class<? extends Widget> priority = t.getDefault(); if (priority != null) { elements.add(priority); } } } for (DataType t : types) { Set<Class<? extends Widget>> set = map.get(t); if (set != null) { elements.addAll(set); } } return elements; }