// // DocHubToolbar.swift // DocHub // // Created by Tristan Juricek on 6/13/14. // Copyright (c) 2014 Perforce. All rights reserved. // import Foundation import AppKit // ToolbarIDs that I would make class properties let DocHubBackToolbarItemIdentifier = "DocHubBackToolbarItemIdentifier" let DocHubNextToolbarItemIdentifier = "DocHubNextToolbarItemIdentifier" let DocHubLibraryToolbarItemIdentifier = "DocHubLibraryToolbarItemIdentifier" // Defines the application toobar for DocHub. Should really only be one per // window. @objc class DocHubToolbarDelegate : NSObject, NSToolbarDelegate { let controller:AnyObject! init(mainController:AnyObject!) { controller = mainController super.init() } // Create a new toolbar item for the particular ID func toolbar(toolbar: NSToolbar!, itemForItemIdentifier itemIdentifier: String!, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem! { var toolbarItem:NSToolbarItem? = nil switch(itemIdentifier) { case DocHubBackToolbarItemIdentifier: toolbarItem = createBack(); case DocHubNextToolbarItemIdentifier: toolbarItem = createNext(); case DocHubLibraryToolbarItemIdentifier: toolbarItem = createLibrary(); default: assert(false, "illegal toolbar item") } return toolbarItem! } func createBack() -> NSToolbarItem { let backItem = NSToolbarItem(itemIdentifier: DocHubBackToolbarItemIdentifier) backItem.label = NSLocalizedString("Back", comment: "Back") backItem.image = NSImage(named: "icon_back16.png") return backItem } func createNext() -> NSToolbarItem { let nextItem = NSToolbarItem(itemIdentifier: DocHubNextToolbarItemIdentifier) nextItem.label = NSLocalizedString("Next", comment: "Next") nextItem.image = NSImage(named: "icon_next16.png") return nextItem } func createLibrary() -> NSToolbarItem { let libraryItem = LibraryItem(itemIdentifier: DocHubLibraryToolbarItemIdentifier) libraryItem.label = NSLocalizedString("Library", comment: "Library") libraryItem.paletteLabel = NSLocalizedString("Toggle Library", comment: "Toggle Library") libraryItem.toolTip = NSLocalizedString("Open or close the leftmost panel", comment: "Open or close the leftmost panel") libraryItem.enabled = true libraryItem.target = controller libraryItem.action = "toggleLibrary" return libraryItem } // Sent to discover the allowed item identifiers for a toolbar. func toolbarAllowedItemIdentifiers(toolbar: NSToolbar!) -> AnyObject[]! { return [ // DocHubBackToolbarItemIdentifier, // DocHubNextToolbarItemIdentifier, DocHubLibraryToolbarItemIdentifier ] } // Sent to discover the default item identifiers for a toolbar. func toolbarDefaultItemIdentifiers(toolbar: NSToolbar!) -> AnyObject[]! { return [ // DocHubBackToolbarItemIdentifier, // DocHubNextToolbarItemIdentifier, DocHubLibraryToolbarItemIdentifier ] } class LibraryItem : NSToolbarItem { var selected:Bool = false { didSet { updateImage() } } init(itemIdentifier: String!) { super.init(itemIdentifier: itemIdentifier) } override var minSize: NSSize { didSet { updateImage() } } func updateImage() { if (minSize.height < 32) { if selected { self.image = NSImage(named: "icon-library24-blue.png") } else { self.image = NSImage(named: "icon-library24.png") } } else { if selected { self.image = NSImage(named: "icon-library-blue.png") } else { self.image = NSImage(named: "icon-library.png") } } } } }