//
import Cocoa
+import Doutaku
private protocol Markable {
// Subbclass MUST override these.
var predicateFormat: String { fatalError("Subbclass MUST implement.") }
- func objects(of predicate: NSPredicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
+ func objects(of predicate: Predicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
fatalError("Subbclass MUST implement.")
}
let store = LocalDataStore.oneTimeEditor()
- guard let controller = controller else { return }
- guard let selection = controller.selectedObjects as? [NSManagedObject] else { return }
+ guard let controller = controller else {
+
+ return
+ }
+ guard let selection = controller.selectedObjects as? [NSManagedObject] else {
+
+ return
+ }
let selectedIndex = controller.selectionIndex
store.sync {
+
selection
.compactMap(store.exchange)
.forEach(store.delete)
@IBAction func addMark(_ sender: AnyObject?) {
- guard let clickedRow = tableView?.clickedRow else { return }
- guard let items = controller?.arrangedObjects as? [HistoryObject] else { return }
- guard case 0..<items.count = clickedRow else { return }
+ guard let clickedRow = tableView?.clickedRow else {
+
+ return
+ }
+ guard let items = controller?.arrangedObjects as? [HistoryObject] else {
+
+ return
+ }
+ guard case 0..<items.count = clickedRow else {
+
+ return
+ }
let clickedObject = items[clickedRow]
- let predicate = NSPredicate(#keyPath(KenzoMark.date), equal: clickedObject.date)
+ let predicate = Predicate(\KenzoMark.date, equalTo: clickedObject.date)
let store = LocalDataStore.oneTimeEditor()
store.sync {
override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
- guard let itemTag = MenuItemTag(rawValue: menuItem.tag) else { return false }
+ guard let itemTag = MenuItemTag(rawValue: menuItem.tag) else {
+
+ return false
+ }
switch itemTag {
+
case .delete:
+
return controller.selectionIndex != -1
case .addMark:
+
menuItem.isEnabled = false
- guard let clickedRow = tableView?.clickedRow else { return false }
- guard let items = controller?.arrangedObjects as? [Markable] else { return false }
- guard case 0..<items.count = clickedRow else { return false }
+ guard let clickedRow = tableView?.clickedRow else {
+
+ return false
+ }
+ guard let items = controller?.arrangedObjects as? [Markable] else {
+
+ return false
+ }
+ guard case 0..<items.count = clickedRow else {
+
+ return false
+ }
menuItem.isEnabled = true
if items[clickedRow].mark {
final class KaihatsuHistoryTableViewController: HistoryTableViewController {
override var predicateFormat: String { return "name contains $value" }
- override func objects(of predicate: NSPredicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
+ override func objects(of predicate: Predicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
return try store.objects(of: KaihatuHistory.entity, predicate: predicate)
}
final class KenzoHistoryTableViewController: HistoryTableViewController {
override var predicateFormat: String { return "name contains $value" }
- override func objects(of predicate: NSPredicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
+ override func objects(of predicate: Predicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
return try store.objects(of: KenzoHistory.entity, predicate: predicate)
}
final class DropShipHistoryTableViewController: HistoryTableViewController {
override var predicateFormat: String { return "shipName contains $value" }
- override func objects(of predicate: NSPredicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
+ override func objects(of predicate: Predicate?, in store: LocalDataStore) throws -> [NSManagedObject] {
return try store.objects(of: DropShipHistory.entity, predicate: predicate)
}