// // DocHubLocation.swift // DocHub // // Created by Tristan Juricek on 6/24/14. // Copyright (c) 2014 Perforce. All rights reserved. // import AppKit import Foundation // Tracks the current location of "where" we are in the application class DocHubLocation : NSObject { let libraryObserver = PropertyObserver() let areaObserver = PropertyObserver() let directoryObserver = PropertyObserver() let fileObserver = PropertyObserver() var library:Library? { willSet(newLib) { area = nil directory = nil file = nil } didSet { if let lib = library { libraryObserver.fire(lib) } } } var area:Area? { willSet(newArea) { directory = nil file = nil } didSet { if let ar = area { areaObserver.fire(ar) } } } var directory:Directory? { willSet(newDir) { file = nil } didSet { if let dir = directory { directoryObserver.fire(dir) } } } var file:File? { didSet { if let ff = file { fileObserver.fire(ff) } } } var directoryCount:Int { var count = 0 var dir = directory if dir { count++ while dir?.parent { count++ } } return count } func directoryAt(index:Int) -> DirectoryLike? { if area == nil { return nil } if index == 0 { return area! } var idx = index - 1 var dir = directory while idx > 0 && dir { idx-- dir = dir!.parent } return dir } }