2 // HMShipMasterDetailWindowController.swift
5 // Created by Hori,Masaki on 2017/01/05.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 class HMShipMasterDetailWindowController: NSWindowController {
12 override var windowNibName: String! {
13 return "HMShipMasterDetailWindowController"
15 override func windowDidLoad() {
18 // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
21 let managedObjectContext = HMServerDataStore.default().managedObjectContext
22 let fleetManager: HMFleetManager = {
23 let appDelegate = NSApplication.shared().delegate as! HMAppDelegate
24 return appDelegate.fleetManager
26 let specNames: [String] = {
28 "name", "shortTypeName",
29 "slot_0", "slot_1", "slot_2", "slot_3", "slot_4",
30 "onslot_0", "onslot_1", "onslot_2", "onslot_3", "onslot_4",
31 "leng", "slot_ex", "id"
35 @IBOutlet var shipController: NSArrayController!
36 @IBOutlet var fleetMemberController: NSArrayController!
37 @IBOutlet weak var shipsView: NSTableView!
38 @IBOutlet weak var fleetMemberView: NSTableView!
39 @IBOutlet weak var sally: NSTextField!
41 dynamic var selectedShip: HMKCShipObject? {
42 didSet { buildSpec() }
44 dynamic var spec: [[String: AnyObject]] = []
45 var equipments: NSArray?
48 private func buildSpec() {
49 guard let selectedShip = selectedShip else { return }
50 spec = specNames.flatMap { (s:String) -> [String: AnyObject]? in
51 guard let v = selectedShip.value(forKeyPath: s) else { return nil }
52 var d = [String:AnyObject]()
53 d["name"] = s as AnyObject?
54 d["value"] = v as AnyObject?
57 equipments = selectedShip.equippedItem.array as NSArray?
60 @IBAction func applySally(_ sender: AnyObject?) {
61 guard let i = selectedShip?.objectID else { return }
62 guard let store = HMServerDataStore.oneTimeEditor(),
63 let ship = store.object(with: i) as? HMKCShipObject
65 ship.sally_area = sally.integerValue as NSNumber
69 extension HMShipMasterDetailWindowController: NSTableViewDelegate {
70 func tableViewSelectionDidChange(_ notification: Notification) {
71 guard let tableView = notification.object as? NSTableView else { return }
73 [(shipsView, shipController), (fleetMemberView, fleetMemberController)]
74 .filter { $0.0 == tableView }
76 guard let selectedObjects = controller?.1.selectedObjects as? [HMKCShipObject],
77 selectedObjects.count != 0 else { return }
78 selectedShip = selectedObjects[0]