Example #1
0
        private ListViewItem BuildListViewItem(ListItemContent contentItem)
        {
            ListViewItem listViewItem = null;

            var entry = contentItem.Entry;

            foreach (ColumnHeader column in Columns)
            {
                var propertyInfo = entry.GetType().GetProperty(column.Name);

                if (null == propertyInfo)
                {
                    throw new BadTemplateException($"Property {column.Name} not found in ListItemContent!");
                }

                var value = propertyInfo.GetValue(entry, null);

                string text = DisplayContentHelper.GetText(propertyInfo, value);

                if (null == listViewItem)
                {
                    listViewItem = new ListViewItem(text)
                    {
                        Tag = entry
                    };
                    listViewItem.SubItems[0].Tag = value;
                }
                else
                {
                    var subItem = new ListViewItem.ListViewSubItem {
                        Text = text, Tag = value
                    };
                    listViewItem.SubItems.Add(subItem);
                }
            }

            if (null != listViewItem)
            {
                if (null != contentItem.Group)
                {
                    listViewItem.Group = Groups[contentItem.Group];
                }

                if (null != contentItem.ImageKey)
                {
                    listViewItem.ImageKey = contentItem.ImageKey;
                }
            }

            return(listViewItem);
        }
        private Form GetForm(object entity)
        {
            var items = new List <ListItemContent>();

            foreach (var propertyInfo in entity.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
            {
                var value = propertyInfo.GetValue(entity, null);

                if (!(value is IFormattable) && !(value is string))
                {
                    continue;
                }

                var name      = Translator.Instance.Translate("Details", propertyInfo.Name);
                var valueText = DisplayContentHelper.GetText(propertyInfo, value);

                items.Add(new ListItemContent(new ResultRecord(name, valueText ?? string.Empty)));
            }

            var form = SubmitFormDisplayHelper.LoadSubmitFormByExtensionId(_context.ExtensionManager, ExtensionCatalog.Details,
                                                                           new Dictionary <string, object>
            {
                { "Details", items }
            });

            form.ServiceCommand += (sender, args) =>
            {
                if (!"Copy".Equals(args.Command))
                {
                    return;
                }

                Clipboard.SetText(((ResultRecord)args.Argument).Value, TextDataFormat.UnicodeText);
            };

            return(form);
        }