123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- //
- // KMBookemarkOutlineView.swift
- // PDF Reader Pro
- //
- // Created by lizhe on 2024/3/4.
- //
- import Cocoa
- private let kLabelIdentifier = NSUserInterfaceItemIdentifier("Label")
- private let kFileIdentifier = NSUserInterfaceItemIdentifier("File")
- private let kPageIdentifier = NSUserInterfaceItemIdentifier("Page")
- class KMBookmarkOutlineView: KMBaseXibView {
- @IBOutlet weak var outlineView: NSOutlineView!
-
- var data: KMRootBookmark? {
- didSet {
- self.reloadData()
- }
- }
-
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
- // Drawing code here.
- }
-
- override func setup() {
- outlineView.delegate = self
- outlineView.dataSource = self
- outlineView.registerForDraggedTypes([kPasteboardTypeBookmarkRows, .fileURL, .string])
- outlineView.doubleAction = #selector(doubleClickBookmark)
- }
-
- override func reloadData() {
- guard let data = data else { return }
-
- self.outlineView.reloadData()
- }
-
- }
- //MARK: Action
- extension KMBookmarkOutlineView {
- @objc func doubleClickBookmark() {
-
- }
- }
- // MARK: - NSOutlineViewDataSource
- extension KMBookmarkOutlineView: NSOutlineViewDataSource {
- func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int {
- let bookmark = item as? KMBookmark ?? data
- guard let bookmark = bookmark else { return 0}
- return bookmark.bookmarkType == .folder ? bookmark.children.count : 0
- }
-
- func outlineView(_ outlineView: NSOutlineView, isItemExpandable item: Any) -> Bool {
- let bookmark = item as! KMBookmark
- return bookmark.bookmarkType == .folder
- }
-
- func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: Any?) -> Any {
- let bookmark = (item as? KMBookmark) ?? data
- return bookmark?.objectOfChidren(index: index) as Any
- }
- }
- extension KMBookmarkOutlineView: NSOutlineViewDelegate {
- // MARK: - NSOutlineViewDelegate
-
- func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
- guard let column = tableColumn else { return nil }
- guard let item = item as? KMBookmark else { return nil }
- let identifier = column.identifier
-
- var cell: NSTableCellView = NSTableCellView()
- switch identifier {
- case kLabelIdentifier: do {
- cell = KMBookmarkOutlineTitleCellView()
- }
- case kPageIdentifier: do {
- cell = KMBookmarkOutlinePageCellView()
- }
- case kFileIdentifier: do {
- cell = KMBookmarkOutlineFileCellView()
- }
-
- default:
- break
- }
-
- return cell
- }
- }
|