OSDN Git Service

関数名を変更
[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 final class HistoryWindowController: NSWindowController {
12     
13     private enum HistoryWindowTabIndex: Int {
14         
15         case kaihatuHistory = 0
16         case kenzoHistory = 1
17         case dropHistory = 2
18     }
19     
20     @objc let manageObjectContext = LocalDataStore.default.context
21     
22     @IBOutlet var tabView: NSTabView!
23     @IBOutlet var kaihatsuTableVC: KaihatsuHistoryTableViewController!
24     @IBOutlet var kenzoTableVC: KenzoHistoryTableViewController!
25     @IBOutlet var dropShipTableVC: DropShipHistoryTableViewController!
26     
27     @IBOutlet var searchField: NSSearchField!
28     
29     private var currentSelection: HistoryTableViewController? {
30         
31         didSet {
32             window?.makeFirstResponder(currentSelection?.tableView)
33             
34             if let controller = currentSelection?.controller,
35                 let predicateFormat = currentSelection?.predicateFormat {
36                 
37                 searchField.bind(.predicate,
38                                  to: controller,
39                                  withKeyPath: NSBindingName.filterPredicate.rawValue,
40                                  options: [.predicateFormat: predicateFormat])
41             } else {
42                 
43                 searchField.unbind(.predicate)
44             }
45         }
46     }
47     
48     @objc var selectedTabIndex: Int = -1 {
49         
50         didSet {
51             guard let tabIndex = HistoryWindowTabIndex(rawValue: selectedTabIndex) else { return }
52             
53             switch tabIndex {
54             case .kaihatuHistory:
55                 currentSelection = kaihatsuTableVC
56                 
57             case .kenzoHistory:
58                 currentSelection = kenzoTableVC
59                 
60             case .dropHistory:
61                 currentSelection = dropShipTableVC
62             }
63         }
64     }
65     override var windowNibName: NSNib.Name {
66         
67         return .nibName(instanceOf: self)
68     }
69     
70     override func windowDidLoad() {
71         
72         super.windowDidLoad()
73         
74         let vcs: [NSViewController] = [kaihatsuTableVC, kenzoTableVC, dropShipTableVC]
75         zip(vcs, tabView.tabViewItems).forEach { $0.1.viewController = $0.0 }
76         
77         selectedTabIndex = 0
78     }
79     
80     @IBAction func delete(_ sender: AnyObject?) {
81         
82         currentSelection?.delete(sender)
83     }
84 }
85
86 @available(OSX 10.12.2, *)
87 private var objectForTouchBar: [Int: NSTouchBar] = [:]
88 private var object1ForTouchBar: [Int: NSButton] = [:]
89
90 @available(OSX 10.12.2, *)
91 extension HistoryWindowController {
92     
93     @IBOutlet var myTouchBar: NSTouchBar? {
94         
95         get { return objectForTouchBar[hashValue] }
96         set { objectForTouchBar[hashValue] = newValue }
97     }
98     
99     @IBOutlet var searchButton: NSButton? {
100         
101         get { return object1ForTouchBar[hashValue] }
102         set { object1ForTouchBar[hashValue] = newValue }
103     }
104     
105     override var touchBar: NSTouchBar? {
106         
107         get {
108             if let _ = myTouchBar {
109                 
110                 return myTouchBar
111             }
112             var topLevel: NSArray?
113             Bundle.main.loadNibNamed(NSNib.Name("HistoryWindowTouchBar"),
114                                      owner: self,
115                                      topLevelObjects: &topLevel)
116             
117             return myTouchBar
118         }
119         set {}
120     }
121     
122     @IBAction func selectSearchField(_ sender: AnyObject?) {
123         
124         window?.makeFirstResponder(searchField!)
125     }
126 }