private void ButtonSelectCollections_Click(object sender, EventArgs e)
        {
            using (BrowseCollectionDialog collectionDialog = new BrowseCollectionDialog(ConnectionManager))
            {
                collectionDialog.MultiSelect    = true;
                collectionDialog.CollectionType = CollectionType.Device;

                if (collectionDialog.ShowDialog(this) != DialogResult.OK)
                {
                    return;
                }

                foreach (IResultObject collection in collectionDialog.SelectedCollections)
                {
                    listViewCollections.Items.Add(new ListViewItem()
                    {
                        Text     = collection["Name"].StringValue,
                        SubItems =
                        {
                            collection["CollectionID"].StringValue
                        },
                        Tag = collection
                    });
                }

                listViewCollections.Focus();
                UtilitiesClass.UpdateListViewColumnsSize(listViewCollections, columnHeaderName);
            }

            ControlsInspector.InspectAll();
        }
Example #2
0
        public static void AddMulitDeviceCollection(object sender, ScopeNode scopeNode, ActionDescription action, IResultObject selectedObject, PropertyDataUpdated dataUpdatedDelegate, Status Status)
        {
            try
            {
                using (BrowseCollectionDialog collectionDialog = new BrowseCollectionDialog(selectedObject.ConnectionManager))
                {
                    collectionDialog.MultiSelect      = true;
                    collectionDialog.CollectionType   = CollectionType.Device;
                    collectionDialog.CollectionFilter = (collectionResultObject =>
                    {
                        if (collectionResultObject["IsReferenceCollection"].BooleanValue || collectionResultObject["IsBuiltIn"].BooleanValue)
                        {
                            return(false);
                        }
                        if (selectedObject.Count > 1)
                        {
                            foreach (IResultObject resultObject in selectedObject)
                            {
                                if (resultObject.ObjectClass == "SMS_Collection" && resultObject["CollectionID"].StringValue == collectionResultObject["CollectionID"].StringValue)
                                {
                                    return(false);
                                }
                            }
                            return(true);
                        }
                        return(!(selectedObject.ObjectClass == "SMS_Collection") || !(selectedObject["CollectionID"].StringValue == collectionResultObject["CollectionID"].StringValue));
                    });

                    if (collectionDialog.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }

                    foreach (IResultObject collection in collectionDialog.SelectedCollections)
                    {
                        List <IResultObject> list = new List <IResultObject>();
                        foreach (IResultObject item in selectedObject)
                        {
                            IResultObject instance = selectedObject.ConnectionManager.CreateEmbeddedObjectInstance("SMS_CollectionRuleDirect");
                            instance["ResourceClassName"].StringValue = "SMS_R_System";
                            instance["RuleName"].StringValue          = item["Name"].StringValue;
                            instance["ResourceID"].IntegerValue       = item["ResourceID"].IntegerValue;
                            list.Add(instance);
                        }
                        collection.ExecuteMethod("AddMembershipRules", new Dictionary <string, object>()
                        {
                            { "collectionRules", list }
                        });
                    }
                }
            }
            catch (SmsQueryException ex)
            {
                SccmExceptionDialog.ShowDialog(SnapIn.Console, ex);
            }
        }