2 // StrengthenListItemCellView.swift
5 // Created by Hori,Masaki on 2017/01/02.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 final class StrengthenListItemCellView: NSTableCellView {
13 @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
17 case #keyPath(secondsShipList),
18 #keyPath(requiredEquipment01), #keyPath(requiredEquipment02), #keyPath(requiredEquipment03),
19 #keyPath(targetEquipment), #keyPath(remodelEquipment),
20 #keyPath(needsScrewString01), #keyPath(needsScrewString02), #keyPath(needsScrewString03):
22 return [#keyPath(objectValue)]
28 private var item: StrengthenListEnhancementItem? {
30 return objectValue as? StrengthenListEnhancementItem
33 @objc var secondsShipList: String? {
35 return item?.secondsShipNames.joined(separator: ", ")
38 @objc var requiredEquipment01: RequiredEquipment? {
40 return item?.requiredEquipments.requiredEquipments.first
43 @objc var requiredEquipment02: RequiredEquipment? {
45 guard let req = item?.requiredEquipments.requiredEquipments, req.count > 1 else { return nil }
50 @objc var requiredEquipment03: RequiredEquipment? {
52 guard let req = item?.requiredEquipments.requiredEquipments, req.count > 2 else { return nil }
57 @objc var targetEquipment: String? {
58 return item?.targetEquipment
61 @objc var remodelEquipment: String? {
63 return item?.remodelEquipment
66 @objc var needsScrewString01: String? {
68 return needsScrewString(screw: requiredEquipment01?.screw, ensureScrew: requiredEquipment01?.ensureScrew)
71 @objc var needsScrewString02: String? {
73 return needsScrewString(screw: requiredEquipment02?.screw, ensureScrew: requiredEquipment02?.ensureScrew)
76 @objc var needsScrewString03: String? {
78 return needsScrewString(screw: requiredEquipment03?.screw, ensureScrew: requiredEquipment03?.ensureScrew)
81 private func needsScrewString(screw: Int?, ensureScrew: Int?) -> String? {
83 guard let screw = screw else { return nil }
84 guard let ensureScrew = ensureScrew else { return nil }
85 guard ensureScrew != 0 else { return nil }
87 let screwString = (screw == -1) ? "-" : "\(screw)"
88 let ensureScrewString = (ensureScrew == -1) ? "-" : "\(ensureScrew)"
90 return "\(screwString)/\(ensureScrewString)"
94 extension StrengthenListItemCellView: StrengthenListCellType {
96 static var cellIdentifier: NSUserInterfaceItemIdentifier {
98 return NSUserInterfaceItemIdentifier("ItemCell")
101 static func estimateCellHeightForItem(item: StrengthenListItem, tableView: NSTableView) -> CGFloat {