import Cocoa
-class ResourceViewController: NSViewController {
- class func keyPathsForValuesAffectingShipNumberColor() -> Set<String> {
- return ["maxChara", "shipCount", "minimumColoredShipCount"]
+final class ResourceViewController: NSViewController {
+
+ @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
+
+ switch key {
+
+ case #keyPath(shipNumberColor): return [#keyPath(maxChara), #keyPath(shipCount), #keyPath(minimumColoredShipCount)]
+
+ default: return []
+
+ }
}
- let managedObjectContext = ServerDataStore.default.managedObjectContext
+ @objc let managedObjectContext = ServerDataStore.default.context
deinit {
- unbind("maxChara")
- unbind("shipCount")
+
+ unbind(NSBindingName(#keyPath(maxChara)))
+ unbind(NSBindingName(#keyPath(shipCount)))
}
- @IBOutlet var shipController: NSArrayController!
- @IBOutlet var basicController: NSObjectController!
+ @IBOutlet private var shipController: NSArrayController!
+ @IBOutlet private var basicController: NSObjectController!
- dynamic var maxChara: Int = 0
- dynamic var shipCount: Int = 0
- dynamic var shipNumberColor: NSColor {
+ @objc dynamic var maxChara: Int = 0
+ @objc dynamic var shipCount: Int = 0
+ @objc dynamic var shipNumberColor: NSColor {
+
if shipCount > maxChara - minimumColoredShipCount {
- return NSColor.orange
+
+ return .orange
}
- return NSColor.controlTextColor
+
+ return .controlTextColor
}
- dynamic var minimumColoredShipCount: Int {
- get { return UserDefaults.standard.minimumColoredShipCount }
- set { UserDefaults.standard.minimumColoredShipCount = newValue }
+
+ @objc dynamic var minimumColoredShipCount: Int {
+
+ get { return UserDefaults.standard[.minimumColoredShipCount] }
+ set { UserDefaults.standard[.minimumColoredShipCount] = newValue }
}
- override var nibName: String! {
- return "ResourceViewController"
+
+ override var nibName: NSNib.Name {
+
+ return .nibName(instanceOf: self)
}
override func viewDidLoad() {
+
super.viewDidLoad()
- bind("maxChara", to: basicController, withKeyPath: "selection.max_chara", options: nil)
- bind("shipCount", to: shipController, withKeyPath: "arrangedObjects.@count", options: nil)
+ bind(NSBindingName(#keyPath(maxChara)), to: basicController, withKeyPath: "selection.max_chara", options: nil)
+ bind(NSBindingName(#keyPath(shipCount)), to: shipController, withKeyPath: "arrangedObjects.@count", options: nil)
}
}