File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed
Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ class DocumentationViewController: NSViewController {
1818 case ready
1919 }
2020
21+ weak var delegate : DocumentationViewDelegate ?
2122 private var webView : WKWebView !
2223 private var searchCVC : SearchControlViewController ?
2324
@@ -203,6 +204,11 @@ class DocumentationViewController: NSViewController {
203204 }
204205}
205206
207+ protocol DocumentationViewDelegate : class {
208+ typealias OpenPanelParameters = WKOpenPanelParameters
209+ func selectFileToOpen( _ parameters: OpenPanelParameters , completionHandler: @escaping ( [ URL ] ? ) -> Void )
210+ }
211+
206212// MARK:- WKUIDelegate
207213extension DocumentationViewController : WKUIDelegate {
208214 func webView( _ webView: WKWebView ,
@@ -229,6 +235,13 @@ extension DocumentationViewController: WKUIDelegate {
229235
230236 return nil
231237 }
238+
239+ func webView( _ webView: WKWebView ,
240+ runOpenPanelWith parameters: WKOpenPanelParameters ,
241+ initiatedByFrame frame: WKFrameInfo ,
242+ completionHandler: @escaping ( [ URL ] ? ) -> Void ) {
243+ delegate? . selectFileToOpen ( parameters, completionHandler: completionHandler)
244+ }
232245}
233246
234247// MARK:- WKNavigationDelegate
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ class DocumentationWindowController: NSWindowController {
1414
1515 override func awakeFromNib( ) {
1616 guard let dvc = documentationViewController else { return }
17+ dvc. delegate = self
1718 dvc. documentURL = documentation. url
1819 }
1920
@@ -110,3 +111,22 @@ class DocumentationWindowController: NSWindowController {
110111 )
111112 }
112113}
114+
115+ // MARK:- DocumentationViewDelegate
116+ extension DocumentationWindowController : DocumentationViewDelegate {
117+ func selectFileToOpen( _ parameters: OpenPanelParameters , completionHandler: @escaping ( [ URL ] ? ) -> Void ) {
118+ let panel = NSOpenPanel ( )
119+ panel. canChooseFiles = true
120+ panel. canChooseDirectories = parameters. allowsDirectories
121+ panel. allowsMultipleSelection = parameters. allowsMultipleSelection
122+ panel. allowedFileTypes = [ " json " ]
123+ panel. allowsOtherFileTypes = false
124+ panel. resolvesAliases = true
125+
126+ panel. beginSheetModal ( for: self . window!) { modalResponse in
127+ if modalResponse == NSApplication . ModalResponse. OK, let url = panel. url {
128+ completionHandler ( [ url] )
129+ }
130+ }
131+ }
132+ }
You can’t perform that action at this time.
0 commit comments