/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
namespace Everest.Library.Extjs{
[Serializable]
public class ComboboxItem
{
public string Name;
public string Value;
public bool isDefaultValue;
public string Image;
public string ImageAlt;
public bool Checked;
public ComboboxItem()
{
}
public ComboboxItem(string name, string value)
{
this.Name = name;
this.Value = value;
}
public ComboboxItem(string name, string value, bool defaultValue)
{
this.Name = name;
this.Value = value;
this.isDefaultValue = defaultValue;
}
/// <summary>
/// Helper method to parse the private storage format used to communicate known category/value pairs
/// </summary>
/// <param name="knownCategoryValues">private storage format string</param>
/// <returns>dictionary of category/value pairs</returns>
public static StringDictionary ParseKnownCategoryValuesString(string knownCategoryValues)
{
// Validate parameters
if (null == knownCategoryValues)
{
throw new ArgumentNullException("knownCategoryValues");
}
StringDictionary dictionary = new StringDictionary();
if (null != knownCategoryValues)
{
// Split into category/value pairs
foreach (string knownCategoryValue in knownCategoryValues.Split(';'))
{
// Split into category and value
string[] knownCategoryValuePair = knownCategoryValue.Split(':');
if (2 == knownCategoryValuePair.Length)
{
// Add the pair to the dictionary
dictionary.Add(knownCategoryValuePair[0].ToLowerInvariant(), knownCategoryValuePair[1]);
}
}
}
return dictionary;
}
}
public static class CascadingExtension
{
public static IList<ComboboxItem> ToComboboxItems<T>(this IEnumerable<T> values, Func<T, string> nameFunc, Func<T, string> valueFunc)
{
return ToComboboxItems<T>(values, nameFunc, valueFunc, false);
}
public static IList<ComboboxItem> ToComboboxItems<T>(this IEnumerable<T> values, Func<T, string> nameFunc, Func<T, string> valueFunc, bool emptyItem)
{
return ToComboboxItems<T>(values, nameFunc, valueFunc, o => null, o => null, emptyItem);
}
public static IList<ComboboxItem> ToComboboxItems<T>(this IEnumerable<T> values, Func<T, string> nameFunc, Func<T, string> valueFunc, Func<T, string> imageFunc, Func<T, string> imageAltFunc, bool emptyItem)
{
return ToComboboxItems<T>(values, nameFunc, valueFunc, imageFunc, imageAltFunc, o => false, emptyItem);
}
public static IList<ComboboxItem> ToComboboxItems<T>(this IEnumerable<T> values, Func<T, string> nameFunc, Func<T, string> valueFunc, Func<T, string> imageFunc, Func<T, string> imageAltFunc, Func<T, bool> checkedFunc, bool emptyItem)
{
List<ComboboxItem> items = new List<ComboboxItem>();
if (emptyItem)
{
items.Add(new ComboboxItem(Resources.NoneItem, ""));
}
foreach (var o in values)
{
items.Add(new ComboboxItem(nameFunc(o), valueFunc(o)) { Image = imageFunc(o), ImageAlt = imageAltFunc(o), Checked = checkedFunc(o) });
}
return items;
}
}
}
|