import Cocoa
-class ResourceViewController: NSViewController {
- class func keyPathsForValuesAffectingShipNumberColor() -> Set<String> {
- return [#keyPath(maxChara), #keyPath(shipCount), #keyPath(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.context
+ @objc let managedObjectContext = ServerDataStore.default.context
deinit {
- unbind(#keyPath(maxChara))
- unbind(#keyPath(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(#keyPath(maxChara), to: basicController, withKeyPath: "selection.max_chara", options: nil)
- bind(#keyPath(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)
}
}