Files
NetNewsWire/NetNewsWire/MainWindow/AddFeed/FolderTreeMenu.swift

48 lines
1.3 KiB
Swift

//
// FolderTreeMenu.swift
// NetNewsWire
//
// Created by Maurice Parker on 9/12/18.
// Copyright © 2018 Ranchero Software, LLC. All rights reserved.
//
import AppKit
import RSCore
import RSTree
class FolderTreeMenu {
static func createFolderPopupMenu(with rootNode: Node) -> NSMenu {
let menu = NSMenu(title: "Folders")
let menuItem = NSMenuItem(title: NSLocalizedString("Top Level", comment: "Add Feed Sheet"), action: nil, keyEquivalent: "")
menuItem.representedObject = rootNode.representedObject
menu.addItem(menuItem)
let childNodes = rootNode.childNodes
addFolderItemsToMenuWithNodes(menu: menu, nodes: childNodes, indentationLevel: 1)
return menu
}
private static func addFolderItemsToMenuWithNodes(menu: NSMenu, nodes: [Node], indentationLevel: Int) {
nodes.forEach { (oneNode) in
if let nameProvider = oneNode.representedObject as? DisplayNameProvider {
let menuItem = NSMenuItem(title: nameProvider.nameForDisplay, action: nil, keyEquivalent: "")
menuItem.indentationLevel = indentationLevel
menuItem.representedObject = oneNode.representedObject
menu.addItem(menuItem)
if oneNode.numberOfChildNodes > 0 {
addFolderItemsToMenuWithNodes(menu: menu, nodes: oneNode.childNodes, indentationLevel: indentationLevel + 1)
}
}
}
}
}