//
//  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
import Account

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
	}

	static func select(_ folder: Folder, in popupButton: NSPopUpButton) {
		for menuItem in popupButton.itemArray {
			if let oneFolder = menuItem.representedObject as? Folder, oneFolder == folder {
				popupButton.select(menuItem)
				return
			}
		}
	}

	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)
				}
			}
		}
	}
	
}