OSDN Git Service

MappingConfigurationのプロパティを変更
[kcd/KCD.git] / KCD / HistoryWindowController.swift
1 //
2 //  HistoryWindowController.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2016/12/20.
6 //  Copyright © 2016年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 class HistoryWindowController: NSWindowController {
12     fileprivate enum HistoryWindowTabIndex: Int {
13         case kaihatuHistory = 0
14         case kenzoHistory = 1
15         case dropHistory = 2
16     }
17     
18     let manageObjectContext = LocalDataStore.default.managedObjectContext
19     
20     @IBOutlet var tabView: NSTabView!
21     @IBOutlet var kaihatsuTableVC: KaihatsuHistoryTableViewController!
22     @IBOutlet var kenzoTableVC: KenzoHistoryTableViewController!
23     @IBOutlet var dropShipTableVC: DropShipHistoryTableViewController!
24     
25     @IBOutlet var searchField: NSSearchField!
26     
27     private var currentSelection: HistoryTableViewController? {
28         didSet {
29             window?.makeFirstResponder(currentSelection?.tableView)
30             
31             if let controller = currentSelection?.controller,
32                 let predicateFormat = currentSelection?.predicateFormat {
33             searchField.bind(NSPredicateBinding,
34                              to: controller,
35                              withKeyPath: NSFilterPredicateBinding,
36                              options: [NSPredicateFormatBindingOption: predicateFormat])
37             } else {
38                 searchField.unbind(NSPredicateBinding)
39             }
40         }
41     }
42     
43     var selectedTabIndex: Int = -1 {
44         didSet {
45             guard let tabIndex = HistoryWindowTabIndex(rawValue: selectedTabIndex)
46                 else { return }
47             switch tabIndex {
48             case .kaihatuHistory:
49                 currentSelection = kaihatsuTableVC
50             case .kenzoHistory:
51                 currentSelection = kenzoTableVC
52             case .dropHistory:
53                 currentSelection = dropShipTableVC
54             }
55         }
56     }
57     override var windowNibName: String! {
58         return "HistoryWindowController"
59     }
60     
61     override func windowDidLoad() {
62         super.windowDidLoad()
63         
64         let vcs: [NSViewController] = [kaihatsuTableVC, kenzoTableVC, dropShipTableVC]
65         zip(vcs, tabView.tabViewItems)
66             .forEach { $0.1.viewController = $0.0 }
67         
68         selectedTabIndex = 0
69     }
70     
71     @IBAction func delete(_ sender: AnyObject?) {
72         currentSelection?.delete(sender)
73     }
74 }
75
76 @available(OSX 10.12.2, *)
77 fileprivate var objectForTouchBar: [Int: NSTouchBar] = [:]
78 fileprivate var object1ForTouchBar: [Int: NSButton] = [:]
79
80 @available(OSX 10.12.2, *)
81 extension HistoryWindowController {
82     @IBOutlet var myTouchBar: NSTouchBar? {
83         get { return objectForTouchBar[hashValue] }
84         set { objectForTouchBar[hashValue] = newValue }
85     }
86     @IBOutlet var searchButton: NSButton? {
87         get { return object1ForTouchBar[hashValue] }
88         set { object1ForTouchBar[hashValue] = newValue }
89     }
90     
91     override var touchBar: NSTouchBar? {
92         get {
93             if let _ = myTouchBar {
94                 return myTouchBar
95             }
96             var topLevel: NSArray = []
97             Bundle.main.loadNibNamed("HistoryWindowTouchBar",
98                                      owner: self,
99                                      topLevelObjects: &topLevel)
100             return myTouchBar
101         }
102         set {}
103     }
104     
105     @IBAction func selectSearchField(_ sender: AnyObject?) {
106         window!.makeFirstResponder(searchField!)
107     }
108 }