1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // KMBookmarkSheetController.swift
- // PDF Reader Pro
- //
- // Created by lizhe on 2024/2/5.
- //
- import Cocoa
- typealias KMBookmarkSheetControllerDoneAction = (_ controller: KMBookmarkSheetController, _ type: KMBookmarkType, _ label: String) -> ()
- typealias KMBookmarkSheetControllerCancelAction = (_ controller: KMBookmarkSheetController, _ type: KMBookmarkType) -> ()
- class KMBookmarkSheetController: NSWindowController {
- @IBOutlet weak var folderPopUp: NSPopUpButton!
- @IBOutlet weak var bookmarkTextField: NSTextField!
-
- var doneAction: KMBookmarkSheetControllerDoneAction?
- var cancelAction: KMBookmarkSheetControllerCancelAction?
-
- var type: KMBookmarkType = .bookmark
- static func showBookmarkSheetController(type: KMBookmarkType) -> KMBookmarkSheetController {
- let controller = KMBookmarkSheetController.init(windowNibName: "KMBookmarkSheetController")
- controller.type = type
- NSWindow.currentWindow().beginSheet(controller.window!)
-
- return controller
- }
- func addMenuItems(forBookmarks bookmarks: [KMBookmark], level: Int, toMenu menu: NSMenu) {
- for bm in bookmarks {
- if bm.bookmarkType == .folder {
- let label = bm.label
- let item = menu.addItem(withTitle: label, action: nil, keyEquivalent: "")
- item.setImageAndSize(bm.icon)
- item.indentationLevel = level
- item.representedObject = bm
- addMenuItems(forBookmarks: bm.children, level: level + 1, toMenu: menu)
- }
- }
- }
-
- // MARK: Sheet Presentation
-
- func beginSheetModal(for window: NSWindow, completionHandler handler: @escaping (NSApplication.ModalResponse) -> Void) {
- // let bookmarkController = KMBookmarkController.sharedBookmarkController()
- // let root = bookmarkController.bookmarkRoot()
- // folderPopUp.removeAllItems()
- // addMenuItems(forBookmarks: [root], level: 0, toMenu: folderPopUp.menu!)
- // folderPopUp.selectItem(at: 0)
- //
- //
- // super.window?.beginSheet(window, completionHandler: { response in
- // handler(response)
- // })
- // super.beginSheetModal(for: window) { response in
- // handler(response)
- // }
- }
-
- // MARK: Accessors
-
- var selectedFolder: KMBookmark? {
- return folderPopUp.selectedItem?.representedObject as? KMBookmark
- }
-
- @IBAction func cancelButtonAction(_ sender: Any) {
- self.cancelAction?(self, type)
- self.window?.close()
- }
-
- @IBAction func doneButtonAction(_ sender: Any) {
- self.doneAction?(self, type, bookmarkTextField.stringValue)
- }
-
- }
|