public void LoadResource(GenericObject data)
{
Text = data.Type;
listView1.BeginUpdate();
try
{
foreach (string name in data.PropertyValues)
{
var item = new ListViewItem(name);
var dataType = data.GetDataType(name);
item.SubItems.Add(dataType);
var isArray = dataType.StartsWith("@") && !dataType.StartsWith("@*");
item.SubItems.Add(isArray ? "" : data.GetPropertyValueAsString(name, _explorer.StringsFile));
listView1.Items.Add(item);
if (isArray)
{
var items = (List<object>) data.GetPropertyValue(name);
for(int i=0; i<items.Count; i++)
{
var childItem = new ListViewItem("[" + i + "]");
childItem.SubItems.Add(dataType.Substring(1));
childItem.SubItems.Add(items[i].ToString());
childItem.IndentCount = 1;
listView1.Items.Add(childItem);
}
}
}
if (data.UndecodedData != null)
{
var item = new ListViewItem("<undecoded data>");
item.SubItems.Add("byte[]");
item.SubItems.Add(data.UndecodedData.Length + " bytes");
listView1.Items.Add(item);
}
}
finally
{
listView1.EndUpdate();
}
}