Exemple #1
0
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();

            OpenCertificateFileButton.Activated += (object sender, EventArgs e) => {
                NSOpenPanel openDlg = new NSOpenPanel();
                openDlg.CanChooseFiles = true;
                nint result = openDlg.RunModal();
                if (result == (nint)1)
                {
                    CertificateField.StringValue = openDlg.Url.RelativePath;
                }
            };
            OpenPrivateKeyFileButton.Activated += (object sender, EventArgs e) => {
                NSOpenPanel openDlg = new NSOpenPanel();
                openDlg.CanChooseFiles = true;
                nint result = openDlg.RunModal();
                if (result == (nint)1)
                {
                    PrivateKeyField.StringValue = openDlg.Url.RelativePath;
                }
            };
            AddButton.Activated    += OnAddPrivateKey;
            CancelButton.Activated += (object sender, EventArgs e) => {
                this.Close();
                NSApplication.SharedApplication.StopModalWithCode(0);
            };
        }
Exemple #2
0
        private string ShowChooseFolderDialog(string title)
        {
            string folder = null;

            var dialog = new NSOpenPanel();

            dialog.Title = title;
            dialog.ShowsResizeIndicator    = true;
            dialog.ShowsHiddenFiles        = false;
            dialog.CanChooseDirectories    = true;
            dialog.CanCreateDirectories    = true;
            dialog.AllowsMultipleSelection = false;

            if (dialog.RunModal() == (nint)(int)NSPanelButtonType.Ok)
            {
                NSUrl result = dialog.Url; // Pathname of the file

                if (result != null)
                {
                    folder = result?.Path;
                }
            }

            return(folder);
        }
Exemple #3
0
        public NSUrl GetFile()
        {
            // Create the File Open Dialog class.
            NSOpenPanel openDlg = NSOpenPanel.OpenPanel;

            // Enable the selection of files in the dialog.
            openDlg.CanChooseFiles = true;

            // Multiple files not allowed
            openDlg.AllowsMultipleSelection = false;
            //openDlg.

            // Can't select a directory
            openDlg.CanChooseDirectories = false;

            // Display the dialog. If the OK button was pressed,
            // process the files.
            var openResult = openDlg.RunModal();

            Console.Write($"{openResult}");
            if (openResult == 1)
            {
                // Get an array containing the full filenames of all
                // files and directories selected.
                NSUrl[] files = openDlg.Urls;

                // Loop through all the files and process them.
                return(files[0]);
            }
            return(null);
        }
        static Task <IEnumerable <FileResult> > PlatformPickAsync(PickOptions options, bool allowMultiple = false)
        {
            var openPanel = new NSOpenPanel
            {
                CanChooseFiles          = true,
                AllowsMultipleSelection = allowMultiple,
                CanChooseDirectories    = false
            };

            if (options.PickerTitle != null)
            {
                openPanel.Title = options.PickerTitle;
            }

            SetFileTypes(options, openPanel);

            var resultList  = new List <FileResult>();
            var panelResult = openPanel.RunModal();

            if (panelResult == (nint)(long)NSModalResponse.OK)
            {
                foreach (var url in openPanel.Urls)
                {
                    resultList.Add(new FileResult(url.Path));
                }
            }

            return(Task.FromResult <IEnumerable <FileResult> >(resultList));
        }
Exemple #5
0
        public string ShowOpenDialog()
        {
            NSOpenPanel openPanel = NSOpenPanel.OpenPanel;

            openPanel.RunModal();
            return(openPanel.Filename);
        }
        partial void btnBrowseClick(NSObject sender)
        {
            NSOpenPanel panel = NSOpenPanel.OpenPanel;

            panel.Title = "Choose Unity Project Root Folder";

            panel.Message = "";

            panel.Prompt = "OK";

            panel.CanChooseFiles = false;

            panel.CanChooseDirectories = true;

            panel.CanCreateDirectories = false;

            panel.AllowsMultipleSelection = false;

            nint res = panel.RunModal("~/", "");

            if (res == 1)
            {
                fullPath = panel.Url.AbsoluteString.Substring(7);
                folderText.StringValue = fullPath;
            }
        }
        /// <summary>
        /// Menus the open click.
        /// </summary>
        public void MenuOpenClick()
        {
            var openPanel = new NSOpenPanel();

            openPanel.ReleasedWhenClosed   = true;
            openPanel.Prompt               = "Select file";
            openPanel.CanChooseDirectories = false;
            openPanel.CanChooseFiles       = true;
            openPanel.AllowedFileTypes     = new string[] { "kdbx" };

            var    result = openPanel.RunModal();
            string fileName;

            if (result == 1)
            {
                fileName = openPanel.Url.AbsoluteString;

                // arequest password
                string password = RequestForPassword();

                if (password == string.Empty)
                {
                    return;
                }

                OpenDatabase(fileName, password);
            }
        }
        internal static async Task <IStorageFolder> PickSingleFolderAsync(StorageFolder storageFolder, string message = null)
        {
            return(await MainThread.InvokeOnMainThread(() =>
            {
                var panel = new NSOpenPanel
                {
                    CanCreateDirectories = true,
                    CanChooseDirectories = true,
                    CanChooseFiles = false,
                    FloatingPanel = true,
                    AllowsMultipleSelection = false,
                    ResolvesAliases = true,
                    DirectoryUrl = storageFolder.Url,
                    Prompt = "THIS IS THE PROMPT!",
                    Title = "TITLE!!!",
                };

                if (!string.IsNullOrWhiteSpace(message))
                {
                    panel.Message = message;
                }

                panel.RunModal();

                if (panel.Url is null)
                {
                    return Task.FromResult <IStorageFolder>(null);
                }

                System.Diagnostics.Debug.WriteLine("panel.Url.Path: " + panel.Url.Path);
                return Task.FromResult <IStorageFolder>(new StorageFolder(panel.Url, true));
            }));
        }
        public override void AwakeFromNib ()
        {
            base.AwakeFromNib ();

            OpenCertificateFileButton.Activated += (object sender, EventArgs e) => {
                NSOpenPanel openDlg = new NSOpenPanel ();
                openDlg.CanChooseFiles = true;
                nint result = openDlg.RunModal ();
                if (result == (nint)1) {
                    CertificateField.StringValue = openDlg.Url.RelativePath;
                } 
            };
            OpenPrivateKeyFileButton.Activated += (object sender, EventArgs e) => {
                NSOpenPanel openDlg = new NSOpenPanel ();
                openDlg.CanChooseFiles = true;
                nint result = openDlg.RunModal ();
                if (result == (nint)1) {
                    PrivateKeyField.StringValue = openDlg.Url.RelativePath;
                } 
            };
            AddButton.Activated += OnAddPrivateKey;
            CancelButton.Activated += (object sender, EventArgs e) => {
                this.Close ();
                NSApplication.SharedApplication.StopModalWithCode (0);
            };
        }
        async void SelectPhoto(Object o, EventArgs e)
        {
            NSOpenPanel openDialog = NSOpenPanel.OpenPanel;

            openDialog.CanChooseFiles          = true;
            openDialog.CanChooseDirectories    = false;
            openDialog.AllowsMultipleSelection = false;

            if (openDialog.RunModal(new string[] { "jpg", "png" }) == 1)
            {
                string  fileName = openDialog.Filename;
                NSImage image    = new NSImage(fileName);
                ThePhoto.Image = image;

                ClearExistingBorders();
                DetailView.TextStorage.SetString(new NSAttributedString("Processing..."));

                using (FileStream file = new FileStream(fileName, FileMode.Open))
                {
                    var faces = await client.DetectAsync(file, true, true, new List <FaceAttributeType>() { FaceAttributeType.Gender, FaceAttributeType.Age, FaceAttributeType.Smile, FaceAttributeType.Glasses });

                    DetailView.TextStorage.SetString(new NSAttributedString(""));

                    foreach (var face in faces)
                    {
                        FaceRectangle faceRect = face.FaceRectangle;
                        DetailView.TextStorage.Append(FormatRect(faceRect));
                        DetailView.TextStorage.Append(FormatDetails(face.FaceAttributes));

                        AddFrameAroundFace(faceRect);
                    }
                }
            }
        }
Exemple #11
0
        public Task <FileData> PickFile(string[] allowedTypes, string defaultName, bool saving)
        {
            // for consistency with other platforms, only allow selecting of a single file.
            // would be nice if we passed a "file options" to override picking multiple files & directories
            var openPanel = new NSOpenPanel();

            openPanel.CanChooseFiles          = true;
            openPanel.AllowsMultipleSelection = false;
            openPanel.CanChooseDirectories    = false;

            // macOS allows the file types to contain UTIs, filename extensions or a combination of the two.
            // If no types are specified, all files are selectable.
            if (allowedTypes != null)
            {
                openPanel.AllowedFileTypes = allowedTypes;
            }

            FileData data = null;

            var result = openPanel.RunModal();

            if (result == 1)
            {
                // Nab the first file
                var url = openPanel.Urls[0];

                if (url != null)
                {
                    var path = url.Path;
                    data = new PlatformFileData(path);
                }
            }

            return(Task.FromResult(data));
        }
Exemple #12
0
        public Task <FileResult> PickFolder()
        {
            // for consistency with other platforms, only allow selecting of a single file.
            // would be nice if we passed a "file options" to override picking multiple files & directories
            NSOpenPanel nSOpenPanel1 = new()
            {
                CanChooseFiles          = false,
                AllowsMultipleSelection = false,
                CanChooseDirectories    = true
            };

            using (var nSOpenPanel = nSOpenPanel1)
            {
                NSOpenPanel openPanel = nSOpenPanel;


                nint result = openPanel.RunModal();
                if (result == 1)
                {
                    // Nab the first file
                    NSUrl url = openPanel.Urls[0];
                    return(Task.FromResult(new FileResult(url.Path)));
                }
            }

            return(null);
        }
    }
Exemple #13
0
        public Task <FileData> PickFile()
        {
            // for consistency with other platforms, only allow selecting of a single file.
            // would be nice if we passed a "file options" to override picking multiple files & directories
            var openPanel = new NSOpenPanel();;

            openPanel.CanChooseFiles          = true;
            openPanel.AllowsMultipleSelection = false;
            openPanel.CanChooseDirectories    = false;

            FileData data = null;

            var result = openPanel.RunModal();

            if (result == 1)
            {
                // Nab the first file
                var url      = openPanel.Urls[0];
                var fileName = openPanel.Filenames[0];

                if (url != null)
                {
                    var path = url.Path;
                    data = new FileData(path, fileName, () => File.OpenRead(path));
                }
            }

            return(Task.FromResult(data));
        }
Exemple #14
0
        /// <summary>Ask user for a directory on OSX.</summary>
        /// <param name="prompt">String to use as dialog heading.</param>
        /// <param name="initialPath">Optional initial starting filename or directory.</param>
        /// <returns>string containing the path to the chosen directory.</returns>
        static public string OsxDirectoryDialog(string prompt, string initialPath = "")
        {
            NSOpenPanel panel = new NSOpenPanel
            {
                Title = prompt,
                CanChooseDirectories = true,
                CanChooseFiles       = false
            };

            if (File.Exists(initialPath))
            {
                panel.DirectoryUrl         = new MonoMac.Foundation.NSUrl(Path.GetDirectoryName(initialPath));
                panel.NameFieldStringValue = Path.GetFileName(initialPath);
            }
            else if (Directory.Exists(initialPath))
            {
                panel.DirectoryUrl = new MonoMac.Foundation.NSUrl(initialPath);
            }
            else
            {
                panel.DirectoryUrl = new MonoMac.Foundation.NSUrl(Utility.Configuration.Settings.PreviousFolder);
            }

            string dir = "";

            if (panel.RunModal() == 1 /*NSFileHandlingPanelOKButton*/)
            {
                dir = panel.Url.Path;
            }
            return(dir);
        }
Exemple #15
0
        protected override bool RunDialog(IntPtr hwndOwner)
        {
            using (var context = new ModalDialogContext())
            {
                var panel = new NSOpenPanel();
                panel.CanChooseFiles          = false;
                panel.CanChooseDirectories    = true;
                panel.CanCreateDirectories    = ShowNewFolderButton;
                panel.AllowsMultipleSelection = false;
                panel.ResolvesAliases         = true;
                panel.Title = Description ?? String.Empty;

                if (Prompt != null)
                {
                    panel.Prompt = Prompt;
                }

                if (!String.IsNullOrWhiteSpace(SelectedPath) && System.IO.Directory.Exists(SelectedPath) && IsSubfolderOf(SelectedPath, RootFolder))
                {
                    panel.DirectoryUrl = NSUrl.FromFilename(SelectedPath);
                }

                if (NSPanelButtonType.Ok != (NSPanelButtonType)(int)panel.RunModal())
                {
                    return(false);
                }

                SelectedPath = panel.Url.Path;
                return(true);
            }
        }
Exemple #16
0
        partial void SetSyncPath(NSObject sender)
        {
            var openPanel = new NSOpenPanel();

            openPanel.ReleasedWhenClosed   = true;
            openPanel.CanChooseDirectories = true;
            openPanel.CanChooseFiles       = false;
            openPanel.CanCreateDirectories = true;
            openPanel.Prompt = "Select Directory";

            var result = openPanel.RunModal();

            if (result == 1)
            {
                SyncPathTextField.Cell.Title = openPanel.DirectoryUrl.Path;
                //AppDelegate.FilesystemSyncPath = openPanel.DirectoryUrl.Path;

                AppDelegate.settings.syncURL = openPanel.DirectoryUrl.Path;
                SettingsSync.Write(AppDelegate.settings);

                NSAlert alert = new NSAlert()
                {
                    MessageText     = "File System Sync",
                    InformativeText = "File System Sync path has been set at:\n" + AppDelegate.settings.syncURL,
                    AlertStyle      = NSAlertStyle.Warning
                };
                alert.AddButton("OK");
                alert.BeginSheet(this.Window,
                                 this,
                                 null,
                                 IntPtr.Zero);
            }
        }
Exemple #17
0
        public Task <FolderData> PickFolder()
        {
            // for consistency with other platforms, only allow selecting of a single file.
            // would be nice if we passed a "file options" to override picking multiple files & directories
            var openPanel = new NSOpenPanel();

            openPanel.CanChooseFiles          = false;
            openPanel.CanChooseDirectories    = true;
            openPanel.AllowsMultipleSelection = false;

            var result = openPanel.RunModal();

            if (result == 1)
            {
                // Nab the first folder
                var url = openPanel.Urls[0];

                if (url != null)
                {
                    var folder = new FolderData()
                    {
                        FolderPath = url.Path,
                        FolderName = Path.GetDirectoryName(url.Path)
                    };

                    return(Task.FromResult(folder));
                }
                return(null);
            }
            return(null);
        }
Exemple #18
0
        public string OpenFileDialog(NSWindow window, string[] FileTypes, string title, bool canchoosedirectories = false, bool canchoosefiles = true)
        {
            string path = string.Empty;

            try {
                NSOpenPanel dlg = NSOpenPanel.OpenPanel;
                //dlg.Prompt = "Selecione um Arquivo";
                dlg.Title                   = title;
                dlg.CanChooseFiles          = canchoosefiles;
                dlg.CanChooseDirectories    = canchoosedirectories;
                dlg.AllowedFileTypes        = FileTypes;
                dlg.AllowsMultipleSelection = false;
                dlg.ResolvesAliases         = true;
                dlg.ReleasedWhenClosed      = true;

//				dlg.BeginSheet(window, (i) => {
//					try
//					{
//						if(dlg.Url != null)
//						{
//
//
//							var urlString = dlg.Url.Path;
//
//							if(!string.IsNullOrEmpty(urlString))
//							{
//								Console.WriteLine(urlString);
//							}
//						}
//					}
//					finally
//					{
//						dlg.Dispose();
//					}
//				});
//



                nint retDlg = dlg.RunModal();
                if (retDlg == 1)
                {
                    NSUrl url = dlg.Urls [0];
                    if (url != null)
                    {
                        path = url.Path;
                    }
                }
                NSDate DateLoop = new NSDate();
                DateLoop = DateLoop.AddSeconds(0.1);
                NSRunLoop.Current.RunUntil(DateLoop);
                dlg.Dispose();
                dlg = null;
            } catch (Exception) {
                //
            }
            return(path);
        }
Exemple #19
0
        partial void SelectFile(NSObject sender)
        {
            var openPanel = new NSOpenPanel();

            openPanel.ReleasedWhenClosed   = true;
            openPanel.Prompt               = "Select a file or a folder";
            openPanel.CanChooseDirectories = true;

            var result = openPanel.RunModal();

            if (result == 1)
            {
                DataAccess.Instance.g_WorkingDir = openPanel.Url.ToString();                //.Filename;
                if (DataAccess.Instance.g_WorkingDir.Contains("file://"))
                {
                    DataAccess.Instance.g_WorkingDir = DataAccess.Instance.g_WorkingDir.Replace("file://", "");
                }

                InputTbox.StringValue = DataAccess.Instance.g_WorkingDir;



                //check if file or folder
                if (File.Exists(DataAccess.Instance.g_WorkingDir))                 //is a file
                {
                    //check the extension
                    var ext = Path.GetExtension(DataAccess.Instance.g_WorkingDir).ToLower();
                    if (ext == ".pdf")
                    {
                        PdfCbzChk.State  = NSCellStateValue.On;
                        CbrPdfChk.State  = NSCellStateValue.Off;
                        JoinImgChk.State = NSCellStateValue.On;
                    }
                    else if (ext == ".cbr" || ext == ".cbz")
                    {
                        PdfCbzChk.State  = NSCellStateValue.Off;
                        CbrPdfChk.State  = NSCellStateValue.On;
                        JoinImgChk.State = NSCellStateValue.Off;
                    }
                }
                else                 //is a folder
                {
                    PdfCbzChk.State  = NSCellStateValue.On;
                    CbrPdfChk.State  = NSCellStateValue.On;
                    JoinImgChk.State = NSCellStateValue.On;
                }

                _fileSelected = true;

                //if (this.chk_SourceFolder.Checked) //always true for now
                {
                    //	_outputFolderSelected = true;
                    DataAccess.Instance.g_Output_dir = Path.GetDirectoryName(DataAccess.Instance.g_WorkingDir);
                    //this.tbox_OuputFolder.Text = this.tbox_SourceFile.Text;
                }
            }
        }
Exemple #20
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            //блок инициализации полей
            NameField.StringValue   = item.Name;
            BrandField.StringValue  = item.Brand;
            PriceField.IntValue     = item.Price;
            AvailableField.IntValue = item.Available;
            Desc.Value      = item.Description;
            Imageview.Image = NSImage.FromStream(new MemoryStream(item.Image));

            //Кнопка отмены
            CancelButton.Activated += (sender, e) => DismissViewController(this);

            //Кнопка изменения с делегатом для обратного вызова в методе PrepareForsegue(адресата)
            EditedButton.Activated += (sender, e) =>
            {
                if (CheckExpressions())
                {
                    item.Name        = NameField.StringValue;
                    item.Brand       = BrandField.StringValue;
                    item.Price       = PriceField.IntValue;
                    item.Available   = AvailableField.IntValue;
                    item.Description = Desc.Value;

                    try
                    {
                        //Запрос к бд на изменение элемента
                        SqlClass.EditRow(item);

                        addOne(this, new EventArgs());
                        DismissViewController(this);
                    }
                    catch
                    {
                        (SqlClass.GetError("Не удалось добавить поле")).RunModal();
                    }
                }
                else
                {
                    (SqlClass.GetError("Поля введены не верно")).RunModal();
                }
            };

            UploadButton.Activated += (sender, e) =>
            {
                NSOpenPanel openpanel = new NSOpenPanel();
                openpanel.AllowedFileTypes = new string[] { @"jpg" };
                openpanel.RunModal();
                Imageview.Image = new NSImage(openpanel.Url);
                if (openpanel.Url.Path != null)
                {
                    item.Image = File.ReadAllBytes(openpanel.Url.Path);
                }
            };
        }
Exemple #21
0
        public string PickImageFilename()
        {
            var panel = new NSOpenPanel()
            {
                Title = "Background Image for Song", AllowedFileTypes = new string[] { "jpg", "jpeg", "gif", "bmp", "png", "tif", "tiff", "tga" }, AllowsOtherFileTypes = true, AllowsMultipleSelection = false, CanChooseFiles = true, CanChooseDirectories = false
            };

            return((panel.RunModal() == 1) ? panel.Url?.Path ?? null : null);
        }
Exemple #22
0
        public string RetargetSongFilename()
        {
            var panel = new NSOpenPanel()
            {
                Title = "Retarget Metadata", AllowedFileTypes = (from e in GuiController.SongExtensions select e.Substring(1)).ToArray(), AllowsOtherFileTypes = true, AllowsMultipleSelection = false, CanChooseFiles = true, CanChooseDirectories = false
            };

            return((panel.RunModal() == 1) ? panel.Url?.Path ?? null : null);
        }
Exemple #23
0
        public FileInfo PickImageFile()
        {
            var ofd = new NSOpenPanel
            {
                AllowedFileTypes = new[] { "png", "jpg" }
            };
            var ret = ofd.RunModal();

            return(ret < 1 ? null : new FileInfo(ofd.Url.Path));
        }
        public Task <string> SelectSingle()
        {
            var ofd = new NSOpenPanel
            {
                AllowedFileTypes = new[] { "png", "jpg" }
            };
            var ret = ofd.RunModal();

            return(Task.FromResult(ret < 1 ? "" : ofd.Url.Path));
        }
		public bool Run (AddFileDialogData data)
		{
			using (var panel = new NSOpenPanel {
				CanChooseDirectories = false,
				CanChooseFiles = true,
			}) {
				MacSelectFileDialogHandler.SetCommonPanelProperties (data, panel);
				
				var popup = new NSPopUpButton (new CGRect (0, 0, 200, 28), false);
				var dropdownBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
					{ new MDLabel (GettextCatalog.GetString ("Override build action:")), true },
					{ new MDAlignment (popup, true) { MinWidth = 200 }  }
				};
				
				var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup (data, panel);
				if (filterPopup != null) {
					dropdownBox.Layout ();
					var box = new MDBox (LayoutDirection.Vertical, 2, 2) {
						dropdownBox.View,
						filterPopup,
					};
					box.Layout ();
					panel.AccessoryView = box.View;
					if (box.View.Superview != null)
						box.Layout (box.View.Superview.Frame.Size);
				} else {
					dropdownBox.Layout ();
					panel.AccessoryView = dropdownBox.View;
				}
				
				popup.AddItem (GettextCatalog.GetString ("(Default)"));
				popup.Menu.AddItem (NSMenuItem.SeparatorItem);
				
				foreach (var b in data.BuildActions) {
					if (b == "--")
						popup.Menu.AddItem (NSMenuItem.SeparatorItem);
					else
						popup.AddItem (b);
				}
				
				if (panel.RunModal () == 0) {
					GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
					return false;
				}
				
				data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles (panel);
				
				var idx = popup.IndexOfSelectedItem - 2;
				if (idx >= 0)
					data.OverrideAction = data.BuildActions[idx];
				
				GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
				return true;
			}
		}
 public void OpenCertFile (object sender, EventArgs eventargs)
 {
     NSOpenPanel openDlg = new NSOpenPanel ();
     openDlg.CanChooseFiles = true;
     //TODO - what are the cert file types to be shown?
     //openDlg.AllowedFileTypes = new string[] { "crt" };
     nint result = openDlg.RunModal ();
     if (result == (nint)1) {
         CertPathTxtField.StringValue = openDlg.Url.RelativePath;
         AddCertificateDto.Certificate = openDlg.Url.RelativePath;
     } 
 }
Exemple #27
0
        void OpenCertificateFile(object sender, EventArgs args)
        {
            NSOpenPanel openDlg = new NSOpenPanel();

            openDlg.CanChooseFiles = true;
            nint result = openDlg.RunModal();

            if (result == (nint)1)
            {
                CertificateField.StringValue = openDlg.Url.RelativePath;
            }
        }
        public Task <FileData> PickFile(string[] allowedTypes, FileOptions fileOptions = null)
        {
            if (fileOptions is null)
            {
                fileOptions = new FileOptions();
            }

            // for consistency with other platforms, only allow selecting of a single file.
            // would be nice if we passed a "file options" to override picking multiple files & directories
            var openPanel = new NSOpenPanel();

            openPanel.CanChooseFiles          = fileOptions.CanChooseFiles;
            openPanel.AllowsMultipleSelection = fileOptions.AllowsMultipleSelection;
            openPanel.CanChooseDirectories    = fileOptions.CanChooseDirectories;

            // macOS allows the file types to contain UTIs, filename extensions or a combination of the two.
            // If no types are specified, all files are selectable.
            if (allowedTypes != null)
            {
                openPanel.AllowedFileTypes = allowedTypes;
            }

            FileData data = null;

            var result = openPanel.RunModal();

            if (result == 1)
            {
                // Nab the first file
                var url = openPanel.Urls[0];

                if (url != null)
                {
                    var path     = url.Path;
                    var fileName = Path.GetFileName(path);

                    Func <Stream> streamGetter;
                    if (Directory.Exists(path))
                    {
                        streamGetter = () => Stream.Null;
                    }
                    else
                    {
                        streamGetter = () => File.OpenRead(path);
                    }

                    data = new FileData(path, fileName, streamGetter);
                }
            }

            return(Task.FromResult(data));
        }
Exemple #29
0
        partial void EmulatorSelectButton(NSObject sender)
        {
            var openPanel = new NSOpenPanel
            {
                Title            = "Select Emulator to Run",
                AllowedFileTypes = new string[] { "app" }
            };

            if (openPanel.RunModal() == 1)
            {
                EmulatorField.StringValue = openPanel.Url.Path;
            }
        }
Exemple #30
0
        partial void FileButtonAction(NSObject sender)
        {
            var openPanel = new NSOpenPanel();

            openPanel.FloatingPanel        = true;
            openPanel.CanChooseFiles       = true;
            openPanel.CanChooseDirectories = false;

            if (openPanel.RunModal() == 1)
            {
                Filename = openPanel.Url.Path;
            }
        }
        partial void BrowseInput(NSObject sender)
        {
            NSOpenPanel panel = NSOpenPanel.OpenPanel;

            panel.CanChooseFiles       = true;
            panel.CanChooseDirectories = true;
            panel.AllowedFileTypes     = new string[] { "lxf", "lxfml" };

            if (panel.RunModal() == 1)
            {
                InputPathTextField.StringValue = panel.Urls[0].Path;
            }
        }
        partial void openSelectFileDialog(MonoMac.Foundation.NSObject sender)
        {
            NSOpenPanel panel = NSOpenPanel.OpenPanel;

            panel.AllowsMultipleSelection = false;
            panel.CanChooseDirectories    = false;
            int result = panel.RunModal();

            if (result == 1)
            {
                txt_input.StringValue = panel.Url.Path;
            }
        }
        partial void BrowseDB(NSObject sender)
        {
            NSOpenPanel panel = NSOpenPanel.OpenPanel;

            panel.CanChooseFiles                  = false;
            panel.CanChooseDirectories            = true;
            panel.TreatsFilePackagesAsDirectories = true;

            if (panel.RunModal() == 1)
            {
                DBPathTextField.StringValue = panel.Urls[0].Path;
            }
        }
        void OpenDocument(NSObject sender)
        {
            var panel = new NSOpenPanel () {
                AllowedFileTypes = new [] {"nupkg"},
                AllowsMultipleSelection = false,
                CanChooseDirectories = false,
                ShowsHiddenFiles = true,
                Title = "Open NuGet Package (*.nupkg)"
            };

            if (panel.RunModal () == NSFileHandlingPanelOKButton) {
                NSUrl file = panel.Url;
            }
        }
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			SolutionUserDto = SolutionUserDtoOriginal.DeepCopy();
			TxtName.StringValue = SolutionUserDto.Name;
			TxtDescription.StringValue = string.IsNullOrEmpty(SolutionUserDto.Description)?string.Empty:SolutionUserDto.Description;
			CbDisabled.StringValue = SolutionUserDto.Disabled ? "1" : "0";
			Window.Title = SolutionUserDto.Name + " Properties";
			var cert = new X509Certificate2 (Encoding.ASCII.GetBytes(SolutionUserDto.Certificate.Encoded));
			try {
				TxtIssuer.StringValue =  cert.Issuer;
				TxtValidFrom.StringValue = cert.NotBefore.ToShortDateString();
				TxtValidTo.StringValue = cert.NotAfter.ToShortDateString();
				TxtDC.StringValue = cert.IssuerName.Format(true);
			} catch (Exception) {
				UtilityService.ShowAlert ("Invalid X509 certificate", "Alert");
			}

			//Events
			this.BtnSave.Activated += OnClickSaveButton;
			this.BtnClose.Activated += (object sender, EventArgs e) => {
				this.Close ();
				NSApplication.SharedApplication.StopModalWithCode (0);
			};

			this.BtnChangeCertificate.Activated += (object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert1 = new X509Certificate2 ();
					try {

						cert1.Import (filePath);
						TxtIssuer.StringValue =  cert1.Issuer;
						TxtValidFrom.StringValue = cert1.NotBefore.ToShortDateString();
						TxtValidTo.StringValue = cert1.NotAfter.ToShortDateString();
						TxtDC.StringValue = cert1.IssuerName.Format(true);
					} catch (Exception) {
						UtilityService.ShowAlert ("Invalid X509 certificate", "Alert");
					}
					SolutionUserDto.Certificate.Encoded = cert.ToPem();
				}
			};
		}
 void OpenCertificateFile (object sender, EventArgs args)
 {
     NSOpenPanel openDlg = new NSOpenPanel ();
     openDlg.CanChooseFiles = true;
     nint result = openDlg.RunModal ();
     if (result == (nint)1) {
         CertificateField.StringValue = openDlg.Url.RelativePath;
     } 
 }
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			ExternalIdentityProviderDto = new ExternalIdentityProviderDto () {
				NameIDFormats = new List<string>(),
				SubjectFormats = new Dictionary<string, string>(),
				SsoServices = new List<ServiceEndpointDto>(),
				SloServices = new List<ServiceEndpointDto>(),
				SigningCertificates = new CertificateChainDto{
					Certificates = new List<CertificateDto>()
				}
			};

			// Name Id formats
			BtnAddNameIdFormat.Activated += (object sender, EventArgs e) => {
				if(string.IsNullOrEmpty(TxtNameIdFormat.StringValue))
				{
					UIErrorHelper.ShowAlert ("Name Id format cannot be empty", "Alert");
					return;
				}
				ExternalIdentityProviderDto.NameIDFormats.Add(TxtNameIdFormat.StringValue);
				ReloadTableView(LstNameIdFormat, ExternalIdentityProviderDto.NameIDFormats);
				TxtNameIdFormat.StringValue = (NSString)string.Empty;
			};

			BtnRemoveNameIdFormat.Activated += (object sender, EventArgs e) => {
				if (LstNameIdFormat.SelectedRows.Count > 0) {
					foreach (var row in LstNameIdFormat.SelectedRows) {

						ExternalIdentityProviderDto.NameIDFormats.RemoveAt((int)row);
					}
					ReloadTableView(LstNameIdFormat, ExternalIdentityProviderDto.NameIDFormats);
				}
			};
			ReloadTableView(LstNameIdFormat, ExternalIdentityProviderDto.NameIDFormats);

			// Subject formats
			BtnAddSubjectFormat.Activated += (object sender, EventArgs e) => {
				if(string.IsNullOrEmpty(TxtSubjectFormatName.StringValue))
				{
					UIErrorHelper.ShowAlert ("Subject format name cannot be empty", "Alert");
					return;
				}
				if(string.IsNullOrEmpty(TxtSubjectFormatValue.StringValue))
				{
					UIErrorHelper.ShowAlert ("Subject format value cannot be empty", "Alert");
					return;
				}
				if(ExternalIdentityProviderDto.SubjectFormats.ContainsKey(TxtSubjectFormatName.StringValue))
				{
					UIErrorHelper.ShowAlert ("Subject format name already exists", "Alert");
					return;
				}
				ExternalIdentityProviderDto.SubjectFormats.Add(TxtSubjectFormatName.StringValue, TxtSubjectFormatValue.StringValue);
				ReloadTableView(LstSubjectFormat, ExternalIdentityProviderDto.SubjectFormats);
				TxtSubjectFormatName.StringValue = (NSString)string.Empty;
				TxtSubjectFormatValue.StringValue = (NSString)string.Empty;
			};

			BtnRemoveSubjectFormat.Activated += (object sender, EventArgs e) => {
				if (LstSubjectFormat.SelectedRows.Count > 0) {
					foreach (var row in LstSubjectFormat.SelectedRows) {
						var source = LstSubjectFormat.DataSource as DictionaryDataSource;
						var name = source.Entries[(int)row];
						ExternalIdentityProviderDto.SubjectFormats.Remove(name);
					}
					ReloadTableView(LstSubjectFormat, ExternalIdentityProviderDto.SubjectFormats);
				}
			};
			ReloadTableView(LstSubjectFormat, ExternalIdentityProviderDto.SubjectFormats);

			// Certificates
			BtnAddCertificate.Activated +=	(object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {
						cert.Import (filePath);
						var certfificateDto = new CertificateDto { Encoded = cert.ToPem(), };
						ExternalIdentityProviderDto.SigningCertificates.Certificates.Add(certfificateDto);
						ReloadCertificates();
					});
				}
			};

			BtnRemoveCertificate.Activated += (object sender, EventArgs e) => {
				if (LstCertificates.SelectedRows.Count > 0) {
					foreach (var row in LstCertificates.SelectedRows) {
						ExternalIdentityProviderDto.SigningCertificates.Certificates.RemoveAt ((int)row);
					}
					ReloadCertificates();
				}
			};
			ReloadCertificates ();

			// Sso Services
			BtnAddSso.Activated += OnAddSsoServices;
			BtnRemoveSso.Activated += OnRemoveSsoServices;	
			InitializeSsoServices ();

			// Slo Services
			BtnAddSlo.Activated += OnAddSloServices;
			BtnRemoveSlo.Activated += OnRemoveSloServices;	
			InitializeSloServices ();

			this.BtnSave.Activated += (object sender, EventArgs e) => {
				if (string.IsNullOrEmpty (TxtUniqueId.StringValue)) {
					UIErrorHelper.ShowAlert ("Please choose a Unique Id", "Alert");
				} else if (ExternalIdentityProviderDto.NameIDFormats.Count() < 1) {
					UIErrorHelper.ShowAlert ("Please choose a Name Id format", "Alert");
				} else if (ExternalIdentityProviderDto.SubjectFormats.Count() < 1) {
					UIErrorHelper.ShowAlert ("Please choose a Subject Id format", "Alert");
				} else if (ExternalIdentityProviderDto.SsoServices.Count() < 1) {
					UIErrorHelper.ShowAlert ("Please choose a Sso Service", "Alert");
				} else if (ExternalIdentityProviderDto.SloServices.Count() < 1) {
					UIErrorHelper.ShowAlert ("Please choose a Slo service", "Alert");
				} else if (ExternalIdentityProviderDto.SigningCertificates.Certificates.Count() < 1) {
					UIErrorHelper.ShowAlert ("Please choose a certificate", "Alert");
				} else {
					ExternalIdentityProviderDto.EntityID = TxtUniqueId.StringValue;
					ExternalIdentityProviderDto.JitEnabled = ChkJit.StringValue == "1";

					ActionHelper.Execute(delegate {
						var auth = SnapInContext.Instance.AuthTokenManager.GetAuthToken(ServerDto.ServerName);
						SnapInContext.Instance.ServiceGateway.ExternalIdentityProvider.Create(ServerDto,TenantName,ExternalIdentityProviderDto,auth.Token);
						this.Close ();
						NSApplication.SharedApplication.StopModalWithCode (1);
					});
				}
			};

			BtnClose.Activated += (object sender, EventArgs e) => {
				this.Close ();
				NSApplication.SharedApplication.StopModalWithCode (0);
			};
			BtnViewCertificate.Activated += (object sender, EventArgs e) => 
			{
				if (LstCertificates.SelectedRows.Count > 0) {
					var row = LstCertificates.SelectedRows.First();
					var encoded = ExternalIdentityProviderDto.SigningCertificates.Certificates[(int)row].Encoded;
					var bytes = System.Text.Encoding.ASCII.GetBytes (encoded);
					var certificate = new X509Certificate2(bytes);
					CertificateService.DisplayX509Certificate2(this, certificate);
				}
			};
		}
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			OidcClientDto = new OidcClientDto { 
				OidcClientMetadataDTO = new OidcClientMetadataDto {
					RedirectUris=new List<string>(), 
					PostLogoutRedirectUris = new List<string>()
				} 
			};
			BtnSelectCertificate.Activated +=	(object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {
						cert.Import (filePath);
						TxtCertificateDN.StringValue = cert.Subject;
					});
				}
			};

			BtnAddRedirectUri.Activated += (object sender, EventArgs e) => {
				if(string.IsNullOrEmpty(TxtRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Redirect Uri cannot be empty", "Alert");
					return;
				} else if(!WebUtil.IsValidHttpUrl(TxtRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Redirect Uri is invalid", "Alert");
					return;
				}
				OidcClientDto.OidcClientMetadataDTO.RedirectUris.Add(TxtRedirectUri.StringValue);
				ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
				TxtRedirectUri.StringValue = (NSString)string.Empty;
			};

			BtnAddPostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
				if(string.IsNullOrEmpty(TxtPostLogoutRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Post logout redirect Uri cannot be empty", "Alert");
					return;
				} else if(!WebUtil.IsValidHttpUrl(TxtPostLogoutRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Post logout is invalid", "Alert");
					return;
				}
				OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Add(TxtPostLogoutRedirectUri.StringValue);
				ReloadTableView(PostLogoutUtiTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
				TxtPostLogoutRedirectUri.StringValue = (NSString)string.Empty;
			};

			BtnRemoveRedirectUri.Activated += (object sender, EventArgs e) => {
				if (RedirectUriTableView.SelectedRows.Count > 0) {
					foreach (var row in RedirectUriTableView.SelectedRows) {
						
						OidcClientDto.OidcClientMetadataDTO.RedirectUris.RemoveAt((int)row);
					}
					ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
				}
			};

			BtnRemovePostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
				if (PostLogoutUtiTableView.SelectedRows.Count > 0) {
					foreach (var row in PostLogoutUtiTableView.SelectedRows) {

						OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.RemoveAt((int)row);
					}
					ReloadTableView(PostLogoutUtiTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
				}
			};

			BtnClose.Activated += (object sender, EventArgs e) => {
				OidcClientDto = null;
				this.Close ();
				NSApplication.SharedApplication.StopModalWithCode (0);
			};

			this.BtnSave.Activated += (object sender, EventArgs e) => {
				if (string.IsNullOrEmpty (TxtCertificateDN.StringValue)) {
					UIErrorHelper.ShowAlert ("Please choose a valid certificate", "Alert");
				} else if (string.IsNullOrEmpty (TxtLogoutUri.StringValue) || !WebUtil.IsValidHttpUrl(TxtLogoutUri.StringValue)) {
					UIErrorHelper.ShowAlert ("Please enter valid logout uri", "Alert");
				} else if (OidcClientDto.OidcClientMetadataDTO.RedirectUris.Count == 0) {
					UIErrorHelper.ShowAlert ("Please enter a valid redirect URI", "Alert");
				} else if (OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Count == 0) {
					UIErrorHelper.ShowAlert ("Please enter a valid post logout redirect URI", "Alert");
				}else {
					OidcClientDto.OidcClientMetadataDTO.LogoutUri = TxtLogoutUri.StringValue;
					OidcClientDto.OidcClientMetadataDTO.TokenEndpointAuthMethod = (NSString)CbAuthTokenMethod.SelectedValue;
					OidcClientDto.OidcClientMetadataDTO.CertSubjectDN = TxtCertificateDN.StringValue;
					this.Close ();
					NSApplication.SharedApplication.StopModalWithCode (1);
				}
			};

			CbAuthTokenMethod.SelectItem (0);
		}
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			OidcClientDto = new OidcClientDto {
				ClientId = OidcClientDtoOriginal.ClientId,
				OidcClientMetadataDTO = new OidcClientMetadataDto {
					RedirectUris = OidcClientDtoOriginal.OidcClientMetadataDTO.RedirectUris, 
					PostLogoutRedirectUris = OidcClientDtoOriginal.OidcClientMetadataDTO.PostLogoutRedirectUris,
					CertSubjectDN = OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN,
					LogoutUri = OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri,
					TokenEndpointAuthMethod = OidcClientDtoOriginal.OidcClientMetadataDTO.TokenEndpointAuthMethod
				}
			};

			TxtName.StringValue = OidcClientDtoOriginal.ClientId;
			var authIndex = OidcClientDtoOriginal.OidcClientMetadataDTO.TokenEndpointAuthMethod == "none" ? 0 : 1;
			CbTokenAuthMethod.SelectItem (authIndex);
			TxtLogoutUrl.StringValue = string.IsNullOrEmpty (OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri) ? string.Empty :
				OidcClientDtoOriginal.OidcClientMetadataDTO.LogoutUri;
			TxtCertificateDN.StringValue = string.IsNullOrEmpty (OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN) ? 
				string.Empty : OidcClientDtoOriginal.OidcClientMetadataDTO.CertSubjectDN;
			ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
			ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);

			BtnBrowseCertificate.Activated +=	(object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {
						cert.Import (filePath);
						TxtCertificateDN.StringValue = cert.Subject;
					});
				}
			};

			BtnAddRedirectUri.Activated += (object sender, EventArgs e) => {
				if(string.IsNullOrEmpty(TxtRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Redirect Uri cannot be empty", "Alert");
					return;
				} else if(!WebUtil.IsValidHttpUrl(TxtRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Redirect Uri is invalid", "Alert");
					return;
				}
				OidcClientDto.OidcClientMetadataDTO.RedirectUris.Add(TxtRedirectUri.StringValue);
				ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
				TxtRedirectUri.StringValue = (NSString)string.Empty;
			};

			BtnAddPostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
				if(string.IsNullOrEmpty(TxtPostLogoutRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Post logout redirect Uri cannot be empty", "Alert");
					return;
				} else if(!WebUtil.IsValidHttpUrl(TxtPostLogoutRedirectUri.StringValue))
				{
					UIErrorHelper.ShowAlert ("Post logout is invalid", "Alert");
					return;
				}
				OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Add(TxtPostLogoutRedirectUri.StringValue);
				ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
				TxtPostLogoutRedirectUri.StringValue = (NSString)string.Empty;
			};

			BtnRemoveRedirectUri.Activated += (object sender, EventArgs e) => {
				if (RedirectUriTableView.SelectedRows.Count > 0) {
					foreach (var row in RedirectUriTableView.SelectedRows) {

						OidcClientDto.OidcClientMetadataDTO.RedirectUris.RemoveAt((int)row);
					}
					ReloadTableView(RedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.RedirectUris);
				}
			};

			BtnRemovePostLogoutRedirectUri.Activated += (object sender, EventArgs e) => {
				if (PostLogoutRedirectUriTableView.SelectedRows.Count > 0) {
					foreach (var row in PostLogoutRedirectUriTableView.SelectedRows) {

						OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.RemoveAt((int)row);
					}
					ReloadTableView(PostLogoutRedirectUriTableView, OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris);
				}
			};

			this.BtnApply.Activated += (object sender, EventArgs e) => {

				ActionHelper.Execute (delegate() {
					if (string.IsNullOrEmpty (TxtCertificateDN.StringValue)) {
						UIErrorHelper.ShowAlert ("Please choose a valid certificate", "Alert");
					} else if (string.IsNullOrEmpty (TxtLogoutUrl.StringValue) || !WebUtil.IsValidHttpUrl(TxtLogoutUrl.StringValue)) {
						UIErrorHelper.ShowAlert ("Please enter valid logout uri", "Alert");
					} else if (OidcClientDto.OidcClientMetadataDTO.RedirectUris.Count == 0) {
						UIErrorHelper.ShowAlert ("Please enter a valid redirect URI", "Alert");
					} else if (OidcClientDto.OidcClientMetadataDTO.PostLogoutRedirectUris.Count == 0) {
						UIErrorHelper.ShowAlert ("Please enter a valid post logout redirect URI", "Alert");
					} else {
						OidcClientDto.OidcClientMetadataDTO.LogoutUri = TxtLogoutUrl.StringValue;
						OidcClientDto.OidcClientMetadataDTO.TokenEndpointAuthMethod = (NSString)CbTokenAuthMethod.SelectedValue;
						OidcClientDto.OidcClientMetadataDTO.CertSubjectDN = TxtCertificateDN.StringValue;
						var auth = SnapInContext.Instance.AuthTokenManager.GetAuthToken (ServerDto.ServerName);
						OidcClientDto = SnapInContext.Instance.ServiceGateway.OidcClient.Update (ServerDto, TenantName, OidcClientDto.ClientId, OidcClientDto.OidcClientMetadataDTO, auth.Token);
						NSNotificationCenter.DefaultCenter.PostNotificationName ("RefreshTableView", this);
					}
				});
			};
		}
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			_certs = new List<string> ();
			TxtTenantName.Enabled = !UpdateCredentials;
			txtUsername.Enabled = !UpdateCredentials;
			TxtPassword.Enabled = !UpdateCredentials;
			if (UpdateCredentials)
				TxtTenantName.StringValue = TenantDto.Name;
			else
				TenantDto = new TenantDto ();
			TenantDto.Credentials = new TenantCredentialsDto(){Certificates = new List<CertificateDto>()};
			
			BtnAddCertificate.Activated +=	(object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {
						cert.Import (filePath);
						_certs.Add(filePath);
						var certfificateDto = new CertificateDto { Encoded = cert.ToPem(), };
						TenantDto.Credentials.Certificates.Add(certfificateDto);
						ReloadCertificates();
					});
				}
			};

			BtnRemoveCertificate.Activated += (object sender, EventArgs e) => {
				if (CertificateChainTableView.SelectedRows.Count > 0) {
					foreach (var row in CertificateChainTableView.SelectedRows) {
						_certs.RemoveAt ((int)row);
						TenantDto.Credentials.Certificates.RemoveAt ((int)row);
					}
					ReloadCertificates();
				}
			};

			BtnBrowsePrivateKey.Activated += (object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";
				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);

					ActionHelper.Execute (delegate() {
							var text = System.IO.File.ReadAllText(filePath);
							var privateKey = PrivateKeyHelper.ExtractBase64EncodedPayload(text);
							TxtPrivateKeyPath.StringValue = filePath;
							TenantDto.Credentials.PrivateKey = new PrivateKeyDto(){ Algorithm = EncrptionAlgorithm.RSA, Encoded = privateKey };
					});
				}
			};

			BtnClose.Activated += (object sender, EventArgs e) => {
				TenantDto = null;
				this.Close ();
				NSApplication.SharedApplication.StopModalWithCode (0);
			};
			this.BtnSave.Activated += (object sender, EventArgs e) => {
				if (!UpdateCredentials && string.IsNullOrEmpty (TxtTenantName.StringValue)) {
					UIErrorHelper.ShowAlert ("Please enter valid tenant name", "Alert");
				} else if (!UpdateCredentials && string.IsNullOrEmpty (txtUsername.StringValue)) {
					UIErrorHelper.ShowAlert ("Please enter valid username", "Alert");
				} else if (!UpdateCredentials && string.IsNullOrEmpty (TxtPassword.StringValue)) {
					UIErrorHelper.ShowAlert ("Please enter valid password", "Alert");
				} else if (string.IsNullOrEmpty (TxtPrivateKeyPath.StringValue)) {
					UIErrorHelper.ShowAlert ("Please enter valid private key", "Alert");
				} else if (_certs.Count < 2) {
					UIErrorHelper.ShowAlert ("Please enter atleast 2 valid Certificates", "Alert");
				} else {
					TenantDto.Name = TxtTenantName.StringValue;
					TenantDto.Username = txtUsername.StringValue;
					TenantDto.Password = TxtPassword.StringValue;
					this.Close ();
					NSApplication.SharedApplication.StopModalWithCode (1);
				}
			};
		}
		void OnBrowseCertificate (object sender, EventArgs e)
		{
			var openPanel = new NSOpenPanel();
			openPanel.ReleasedWhenClosed = true;
			openPanel.Prompt = "Select file";

			var result = openPanel.RunModal();
			if (result == 1)
			{
				var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
				var cert = new X509Certificate2 ();
				ActionHelper.Execute (delegate() {
					cert.Import (filePath);
					_certificate = cert;
				});
				TxtCertificate.StringValue = filePath;
			}
		}
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();

			//Events
			this.BtnAcquireToken.Activated += OnClickAddButton;
			this.BtnClose.Activated += (object sender, EventArgs e) => {
				this.Close ();
				NSApplication.SharedApplication.StopModalWithCode (0);
			};
			this.BtnSelectCertificate.Activated += (object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert1 = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {

						cert1.Import (filePath);
						TxtCertificate.StringValue =  filePath;
					});
				}
			};
			this.BtnSelectPrivateKey.Activated += (object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";
				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);

					ActionHelper.Execute (delegate() {
						TxtPrivateKey.StringValue = filePath;
					});
				}
			};
			this.BtnBrowseTokenFile.Activated += (object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";
				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					ActionHelper.Execute (delegate() {
						TxtTokenFile.StringValue = filePath;
					});
				}
			};
			this.CbSaml.Activated += (object sender, EventArgs e) => {
				var legacy = this.CbSaml.StringValue == "1";
				this.TxtStsUrl.Hidden = !legacy;
				this.LblStsUrl.Hidden = !legacy;
				SetUrl(this,EventArgs.Empty);
				PnlJwt.Hidden = legacy;
				PnlSaml.Hidden = !legacy;
			};
			this.RdoTypeGroup.Activated += (object sender, EventArgs e) => {
				SetGroupControls();
			};
			this.TxtServer.Changed += SetUrl;
			this.TxtPort.Changed += SetUrl;
			this.TxtStsUrl.Changed += SetUrl;
			this.TxtTenant.Changed += SetUrl;
			this.CbSsl.Activated += SetUrl;
			var saml = false;
			this.RdoTypeGroup.SelectCellWithTag (1);
			SetGroupControls ();

			if (ServerDto != null) {
				this.TxtServer.StringValue = ServerDto.ServerName;
				this.TxtStsUrl.StringValue = ServerDto.TokenType == TokenType.SAML ? (string.IsNullOrEmpty(ServerDto.StsUrl) ? "sts/STSService" : ServerDto.StsUrl) : "sts/STSService" ;
				this.TxtPort.StringValue = ServerDto.Port;
				this.TxtTenant.StringValue = ServerDto.Tenant;
				saml = ServerDto.TokenType == TokenType.SAML;
				var auth = SnapInContext.Instance.AuthTokenManager.GetAuthToken (ServerDto.ServerName);
				if (auth != null && auth.Login != null) {
					TxtUsername.StringValue = auth.Login.User;
					TxtDomain.StringValue = auth.Login.DomainName;
					this.TxtTenant.StringValue = auth.Login.DomainName;
				}
			}
			this.CbSaml.StringValue = saml ? "1" : "0";
			PnlJwt.Hidden = saml;
			PnlSaml.Hidden = !saml;
			TxtStsUrl.Hidden = !saml;
			LblStsUrl.Hidden = !saml;
			SetUrl (this,EventArgs.Empty);
		}
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			SolutionUserDto = SolutionUserDtoOriginal.DeepCopy();
			TxtName.StringValue = SolutionUserDto.Name;
			TxtDescription.StringValue = string.IsNullOrEmpty(SolutionUserDto.Description)?string.Empty:SolutionUserDto.Description;
			cbDisabled.StringValue = SolutionUserDto.Disabled ? "0" : "1";
			_certificate = new X509Certificate2 (Encoding.ASCII.GetBytes(SolutionUserDto.Certificate.Encoded));
			ActionHelper.Execute (delegate() {
				TxtIssuer.StringValue = _certificate.Issuer;
				TxtValidFrom.StringValue = _certificate.NotBefore.ToShortDateString ();
				TxtValidTo.StringValue = _certificate.NotAfter.ToShortDateString ();
				TxtDn.StringValue = _certificate.IssuerName.Format (true);
			});

			//Events
			this.BtnSave.Activated += OnClickSaveButton;

			this.BtnChangeCertificate.Activated += (object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert1 = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {

						cert1.Import (filePath);
						TxtIssuer.StringValue =  cert1.Issuer;
						TxtValidFrom.StringValue = cert1.NotBefore.ToShortDateString();
						TxtValidTo.StringValue = cert1.NotAfter.ToShortDateString();
						TxtDn.StringValue = cert1.IssuerName.Format(true);
						_certificate = cert1;
					});
					SolutionUserDto.Certificate.Encoded = _certificate.ToPem();
				}
			};

			BtnViewCertificate.Activated += (object sender, EventArgs e) => 
			{
				CertificateService.DisplayX509Certificate2(this, _certificate );
			};

			BtnSave.Hidden = !IsSystemDomain;
		}
		public void OnClickBrowseButton (object sender, EventArgs e)
		{
			var openPanel = new NSOpenPanel();
			openPanel.ReleasedWhenClosed = true;
			openPanel.Prompt = "Select file";

			var result = openPanel.RunModal();
			if (result == 1)
			{
				var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
				var cert = new X509Certificate2 ();
				try {

					cert.Import (filePath);
				} catch (Exception) {
					UIErrorHelper.ShowAlert ("Invalid X509 certificate", "Alert");
				}
				TxtCertificate.StringValue = filePath;
			}
		}
 public void OpenKeyFile (object sender, EventArgs eventargs)
 {
     NSOpenPanel openDlg = new NSOpenPanel ();
     openDlg.CanChooseFiles = true;
     openDlg.AllowedFileTypes = new string[]{ "pem", "key" };
     nint result = openDlg.RunModal ();
     if (result == (int)1) {
         FilePath.StringValue = openDlg.Url.RelativePath;
         UIErrorHelper.ShowAlert (openDlg.Filename, "File");
     }
 }
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			_certificates = new List<CertificateDto> ();
			_currentStep = WizardSteps.One;
			SetWizardStep ();
			ReloadCertificates ();

			//Events
			this.BtnTestConnection.Activated += TestConnection;
			this.BtnNext.Activated += OnClickNextButton;
			this.BtnBack.Activated += OnClickBackButton;
			this.BtnAddCertificate.Activated +=	(object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {
						cert.Import (filePath);
						var certfificateDto = new CertificateDto { Encoded = cert.ToPem(), Chain = cert.GetFormattedThumbPrint()};
						_certificates.Add(certfificateDto);
						ReloadCertificates();
					});
				}
			};

			this.RdoIdentitySource.Activated += (object sender, EventArgs e) => 
			{
				SetSpnControls();
			};
			this.RdoDomainController.Activated += (object sender, EventArgs e) => 
			{
				var anyDc = RdoDomainController.SelectedTag == 1;
				if(anyDc)
				{
					SetConnectionString();
				}
				else
				{
					TxtLdapConnection.StringValue = (NSString) string.Empty;
				}
				ChkProtect.Enabled = anyDc;
				EnableDisableConnectionString(!anyDc);
			};
			this.BtnRemoveCertificate.Activated += (object sender, EventArgs e) => {
				if (LstCertificates.SelectedRows.Count > 0) {
					foreach (var row in LstCertificates.SelectedRows) {
						_certificates.RemoveAt ((int)row);
					}
					ReloadCertificates();
				}
			};
			this.BtnPrimaryImport.Activated += (object sender, EventArgs e) => {
				
			};

			this.BtnSecondaryImport.Activated += (object sender, EventArgs e) => {

			};
			this.TxtDomainName.Changed += (object sender, EventArgs e) => {
				SetConnectionString();
			};

			this.ChkProtect.Activated += (object sender, EventArgs e) => {
				SetConnectionString();
			};
			this.RdoSpn.Activated += (object sender, EventArgs e) => {
				SetSpnControls();
			};
			BtnPrimaryImport.Enabled = false;
			BtnSecondaryImport.Enabled = false;
			this.TxtPrimaryUrl.Activated += (object sender, EventArgs e) => 
			{
				BtnPrimaryImport.Enabled = this.TxtPrimaryUrl.StringValue!= null && this.TxtPrimaryUrl.StringValue.StartsWith("ldaps://");
			};
			this.TxtSecondaryConnection.Activated += (object sender, EventArgs e) => 
			{
				BtnSecondaryImport.Enabled = this.TxtSecondaryConnection.StringValue!= null && this.TxtSecondaryConnection.StringValue.StartsWith("ldaps://");
			};
			BtnPrimaryImport.Activated += (object sender, EventArgs e) => 
			{
				ImportCertificates(TxtPrimaryUrl.StringValue);
			};
			BtnSecondaryImport.Activated += (object sender, EventArgs e) => 
			{
				ImportCertificates(TxtSecondaryConnection.StringValue);
			};
			if (IdentityProviderDto != null)
				DtoToView ();
			else
				IdentityProviderDto = new IdentityProviderDto ();
			this.BtnAdvanced.Activated += (object sender, EventArgs e) => 
			{
				var form = new ExternalDomainAdvancedSettingsController ()
				{
					IdentityProviderDto = new IdentityProviderDto
					{
						Schema = IdentityProviderDto.Schema == null ? new Dictionary<string, SchemaObjectMappingDto>() :new Dictionary<string, SchemaObjectMappingDto>(IdentityProviderDto.Schema),
						AttributesMap = IdentityProviderDto.AttributesMap == null ?  new Dictionary<string, string>() : new Dictionary<string, string>(IdentityProviderDto.AttributesMap),
						BaseDnForNestedGroupsEnabled = IdentityProviderDto.BaseDnForNestedGroupsEnabled,
						MatchingRuleInChainEnabled = IdentityProviderDto.MatchingRuleInChainEnabled,
						DirectGroupsSearchEnabled = IdentityProviderDto.DirectGroupsSearchEnabled
					}
				};
				var result = NSApplication.SharedApplication.RunModalForWindow (form.Window);

				if(result == 1)
				{
					IdentityProviderDto.Schema = GetSchema(form.IdentityProviderDto.Schema);
					IdentityProviderDto.AttributesMap = new Dictionary<string, string>(form.IdentityProviderDto.AttributesMap);
					IdentityProviderDto.BaseDnForNestedGroupsEnabled = form.IdentityProviderDto.BaseDnForNestedGroupsEnabled;
					IdentityProviderDto.MatchingRuleInChainEnabled = form.IdentityProviderDto.MatchingRuleInChainEnabled;
					IdentityProviderDto.DirectGroupsSearchEnabled = form.IdentityProviderDto.DirectGroupsSearchEnabled;
				}
			};
			SetSpnControls ();
		}
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();

			DtoToView ();

			this.BtnAuthenticationAddCertificate.Activated +=	(object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";

				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);
					var cert = new X509Certificate2 ();
					ActionHelper.Execute (delegate() {
						cert.Import (filePath);
						var certfificateDto = new CertificateDto { Encoded = cert.ToPem(), };
						TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.TrustedCACertificates.Add(certfificateDto);
						ReloadCertificates();
					});
				}
			};

			this.BtnAuthenticationRemoveCertificate.Activated += (object sender, EventArgs e) => {
				if (CertificateTableView.SelectedRows.Count > 0) {
					foreach (var row in CertificateTableView.SelectedRows) {
						TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.TrustedCACertificates.RemoveAt ((int)row);
					}
					ReloadCertificates();
				}
			};

			BtnAuthenticationPolicyAddPolicyOid.Activated += (object sender, EventArgs e) => {
				if(string.IsNullOrEmpty(TxtAuthenticationPolicyOid.StringValue))
				{
					UIErrorHelper.ShowAlert ("Policy OID cannot be empty", "Alert");
					return;
				}
				TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs.Add(TxtAuthenticationPolicyOid.StringValue);
				ReloadTableView(AuthenticationPolicyOidTableView, TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs);
				TxtAuthenticationPolicyOid.StringValue = (NSString)string.Empty;
				BtnAuthenticationRemovePolicyOid.Enabled = TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs != null &&
					TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs.Count > 0;
			};

			BtnAuthenticationRemovePolicyOid.Activated += (object sender, EventArgs e) => {
				if (AuthenticationPolicyOidTableView.SelectedRows.Count > 0) {
					foreach (var row in AuthenticationPolicyOidTableView.SelectedRows) {
						TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs.RemoveAt((int)row);
					}
					ReloadTableView(AuthenticationPolicyOidTableView, TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs);
					BtnAuthenticationRemovePolicyOid.Enabled = TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs != null &&
						TenantConfigurationDto.AuthenticationPolicy.ClientCertificatePolicy.CertPolicyOIDs.Count > 0;
				}
			};

			BtnClose.Activated += (object sender, EventArgs e) => {
				TenantConfigurationDto = null;
				this.Close ();
				NSApplication.SharedApplication.StopModalWithCode (0);
			};

			this.BtnSave.Activated += (object sender, EventArgs e) => {

				ActionHelper.Execute (delegate() {
				ViewToDto();
				var auth = SnapInContext.Instance.AuthTokenManager.GetAuthToken(ServerDto.ServerName);
				SnapInContext.Instance.ServiceGateway.Tenant.UpdateConfig(ServerDto,TenantName,TenantConfigurationDto,auth.Token);
				this.Close ();
				NSApplication.SharedApplication.StopModalWithCode (1);
				});
			};

			this.ChkDisableLogonBanner.Activated += (object sender, EventArgs e) => {
				CheckLogonBanner();
			};
			this.BtnUploadContent.Activated += (object sender, EventArgs e) => {
				var openPanel = new NSOpenPanel();
				openPanel.ReleasedWhenClosed = true;
				openPanel.Prompt = "Select file";
				var result = openPanel.RunModal();
				if (result == 1)
				{
					var filePath = openPanel.Url.AbsoluteString.Replace("file://",string.Empty);

					ActionHelper.Execute (delegate() {
						var text = System.IO.File.ReadAllText(filePath);
						if(!string.IsNullOrEmpty(text))
							TxtBrandLogonBanner.StringValue = text;
					});
				}
			};
			CheckLogonBanner ();
		}