2 // ShipMasterDetailWindowController.swift
5 // Created by Hori,Masaki on 2017/01/05.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 class ShipMasterDetailWindowController: NSWindowController {
12 let managedObjectContext = ServerDataStore.default.managedObjectContext
13 let fleetManager: FleetManager = {
14 return AppDelegate.shared.fleetManager
17 "name", "shortTypeName",
18 "slot_0", "slot_1", "slot_2", "slot_3", "slot_4",
19 "onslot_0", "onslot_1", "onslot_2", "onslot_3", "onslot_4",
20 "leng", "slot_ex", "id"
23 @IBOutlet var shipController: NSArrayController!
24 @IBOutlet var fleetMemberController: NSArrayController!
25 @IBOutlet weak var shipsView: NSTableView!
26 @IBOutlet weak var fleetMemberView: NSTableView!
27 @IBOutlet weak var sally: NSTextField!
29 override var windowNibName: String! {
30 return "ShipMasterDetailWindowController"
33 dynamic var selectedShip: Ship? {
34 didSet { buildSpec() }
36 dynamic var spec: [[String: AnyObject]] = []
38 var equipments: NSArray?
40 private func buildSpec() {
41 guard let selectedShip = selectedShip else { return }
42 spec = specNames.flatMap { (s: String) -> [String: AnyObject]? in
43 guard let v = selectedShip.value(forKeyPath: s) else { return nil }
44 var d = [String: AnyObject]()
45 d["name"] = s as AnyObject?
46 d["value"] = v as AnyObject?
49 equipments = selectedShip.equippedItem.array as NSArray?
52 @IBAction func applySally(_ sender: AnyObject?) {
53 let store = ServerDataStore.oneTimeEditor()
54 guard let i = selectedShip?.objectID,
55 let ship = store.object(with: i) as? Ship
57 ship.sally_area = sally.integerValue as NSNumber
61 extension ShipMasterDetailWindowController: NSTableViewDelegate {
62 func tableViewSelectionDidChange(_ notification: Notification) {
63 guard let tableView = notification.object as? NSTableView else { return }
65 (shipsView, shipController),
66 (fleetMemberView, fleetMemberController)
68 .filter { $0.0 == tableView }
70 guard let selectedObjects = controller?.1.selectedObjects as? [Ship],
71 selectedObjects.count != 0 else { return }
72 selectedShip = selectedObjects[0]