示例#1
0
        protected override void OnDelete(SyncStatus status)
        {
            if (!MMCDlgHelper.ShowConfirm(CommonConstants.GetSelectedDeleteMsg("secret keys", this.SelectedNodes.Count)))
            {
                return;
            }

            base.OnDelete(status);
            var entriesNode = this.ScopeNode as VecsStoreEntriesNode;
            var dto         = entriesNode.ServerDTO;
            var storeName   = entriesNode.StoreName;
            var storePass   = "";

            MMCActionHelper.CheckedExec(delegate()
            {
                using (var session = new VecsStoreSession(dto.VecsClient, storeName, storePass))
                {
                    foreach (ResultNode node in this.SelectedNodes)
                    {
                        var certDTO = node.Tag as Vecs.CertDTO;
                        session.DeleteCertificate(certDTO.Alias);
                    }
                }
            });
            Refresh();
        }
        public override NSMenu MenuForEvent(NSEvent theEvent)
        {
            CGPoint pt = this.ConvertPointFromView(theEvent.LocationInWindow, null);

            _selectedRow = this.GetRow(pt);
            NSTableViewDataSource ds = (NSTableViewDataSource)this.DataSource;
            NSMenu menu = new NSMenu();

            if (_selectedRow >= (nint)0)
            {
                if (ds is NodesListView)
                {
                    string data = (ds as NodesListView).Entries [(int)_selectedRow].DisplayName;
                    switch (data)
                    {
                    case "Private Entities":
                        NSMenuItem addPrivateEntity = new NSMenuItem("Add Private Entity", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsPrivateKeysNode).AddPrivateKeyHandler);
                        menu.AddItem(addPrivateEntity);
                        break;

                    case "Secret Keys":
                        NSMenuItem createCertificate = new NSMenuItem("Add Secret Key", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsSecretKeysNode).AddSecretKey);
                        menu.AddItem(createCertificate);
                        break;

                    case "Trusted Certs":
                        NSMenuItem createSigningRequest = new NSMenuItem("Create Certificate", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsTrustedCertsNode).AddCertificate);
                        menu.AddItem(createSigningRequest);
                        break;

                    default:
                        break;
                    }
                }
                else if (ds is CertificateDetailsListView)
                {
                    CertificateDetailsListView lw = ds as CertificateDetailsListView;
                    CertDTO    cert     = lw.Entries [(int)_selectedRow];
                    NSMenuItem showCert = new NSMenuItem("Show Certificate", (object sender, EventArgs e) => CertificateService.DisplayX509Certificate2(this, cert.Cert));
                    menu.AddItem(showCert);
                    NSMenuItem deleteEntry = new NSMenuItem("Delete", (object sender, EventArgs e) => {
                        UIErrorHelper.CheckedExec(delegate() {
                            if (UIErrorHelper.ConfirmDeleteOperation("Are you sure?") == true)
                            {
                                using (var session = new VecsStoreSession(lw.ServerDto.VecsClient, lw.Store, "")) {
                                    session.DeleteCertificate(cert.Alias);
                                }
                                lw.Entries.Remove(cert);
                                UIErrorHelper.ShowAlert("", "Successfully deleted the entry.");
                                NSNotificationCenter.DefaultCenter.PostNotificationName("ReloadServerData", this);
                            }
                        });
                    });
                    menu.AddItem(deleteEntry);
                }
                NSMenu.PopUpContextMenu(menu, theEvent, theEvent.Window.ContentView);
            }
            return(base.MenuForEvent(theEvent));
        }