public static List <ISettingsInstance> generateListForSelection(SettingsProperties props) { if (props.visualization.displaySelection) { List <SettingsInstance> lst; if (settingsInstances.TryGetValue(props.id, out lst)) { ISettingsVisualizationSelection visualProps = ((ISettingsVisualizationSelection)props.visualization); List <object> allBaseObjects = visualProps.getBaseObjectsForSelection(); foreach (object baseObject in allBaseObjects.Where(o => lst.Find(si => si.getKey().Equals(visualProps.getKeyFromBaseObject(o))) == null)) { string key; try { key = visualProps.getKeyFromBaseObject(baseObject); } catch { Log.Warning("Failed to load key from database object \"" + baseObject + "\"."); continue; } if (!lst.Any(si => si.getKey().Equals(key))) { try { lst.Add(new SettingsInstance(props.id, baseObject)); } catch { Log.Warning("Failed to load database object for key \"" + key + "\" into setting \"" + props.id + "\"."); } } } //lst.AddRange(allBaseObjects.Where(o=>lst.Find(si=>si.getKey().Equals(visualProps.getKeyFromBaseObject(o)))==null).Select(o=>new SettingsInstance(props.id,o))); lst = lst.OrderByDescending(si => si.getActive()).ThenBy(si => si.getLabel()).ToList(); return(lst.Cast <ISettingsInstance>().ToList()); } } return(null); }
public SettingsInstance(string id, object obj) : this(id, obj, null, null) { SettingsProperties properties = SettingsStorage.getSettingsProperties(getId()); ISettingsVisualizationSelection selection = properties.visualization as ISettingsVisualizationSelection; if (selection != null) { this.baseObjectKey = selection.getKeyFromBaseObject(obj); this.label = selection.getLabelFromBaseObject(obj); } else { this.baseObjectKey = "singleton"; this.label = "singleton"; } }