@objc let managedObjectContext = BookmarkManager.shared.manageObjectContext
- @IBOutlet var tableView: NSTableView!
- @IBOutlet var bookmarkController: NSArrayController!
- @IBOutlet var contextMenu: NSMenu!
- @IBOutlet var popover: NSPopover!
+ @IBOutlet private var tableView: NSTableView!
+ @IBOutlet private var bookmarkController: NSArrayController!
+ @IBOutlet private var contextMenu: NSMenu!
+ @IBOutlet private var popover: NSPopover!
weak var delegate: BookmarkListViewControllerDelegate?
var editorController: BookmarkEditorViewController?
let clickedRow = tableView.clickedRow
- guard let bookmarks = bookmarkController.arrangedObjects as? [Any] else { return }
- guard case 0..<bookmarks.count = clickedRow else { return }
+ guard let bookmarks = bookmarkController.arrangedObjects as? [Any] else {
+
+ return
+ }
+ guard case 0..<bookmarks.count = clickedRow else {
+
+ return
+ }
editorController?.representedObject = bookmarks[clickedRow]
popover.show(relativeTo: tableView.rect(ofRow: clickedRow), of: tableView, preferredEdge: .minY)
let clickedRow = tableView.clickedRow
- guard let bookmarks = bookmarkController.arrangedObjects as? [Any] else { return }
- guard case 0..<bookmarks.count = clickedRow else { return }
+ guard let bookmarks = bookmarkController.arrangedObjects as? [Any] else {
+
+ return
+ }
+ guard case 0..<bookmarks.count = clickedRow else {
+
+ return
+ }
bookmarkController.remove(atArrangedObjectIndex: clickedRow)
}
func reorderingBoolmarks() {
- guard let objects = bookmarkController.arrangedObjects as? [Bookmark] else { return }
+ guard let objects = bookmarkController.arrangedObjects as? [Bookmark] else {
+
+ return
+ }
var order = 100
objects.forEach {
+
$0.order = order
order += 100
}
func tableViewSelectionDidChange(_ notification: Notification) {
- guard let tableView = notification.object as? NSTableView else { return }
- guard let bookmarks = bookmarkController.arrangedObjects as? [Bookmark] else { return }
+ guard let tableView = notification.object as? NSTableView else {
+
+ return
+ }
+ guard let bookmarks = bookmarkController.arrangedObjects as? [Bookmark] else {
+
+ return
+ }
let selection = tableView.selectedRow
tableView.deselectAll(nil)
- guard case 0..<bookmarks.count = selection else { return }
+ guard case 0..<bookmarks.count = selection else {
+
+ return
+ }
delegate?.didSelectBookmark(bookmarks[selection])
}
func tableView(_ tableView: NSTableView, pasteboardWriterForRow row: Int) -> NSPasteboardWriting? {
- guard let objects = bookmarkController.arrangedObjects as? [NSPasteboardWriting] else { return nil }
+ guard let objects = bookmarkController.arrangedObjects as? [NSPasteboardWriting] else {
+
+ return nil
+ }
return objects[row]
}
func tableView(_ tableView: NSTableView, draggingSession session: NSDraggingSession, willBeginAt screenPoint: NSPoint, forRowIndexes rowIndexes: IndexSet) {
- guard let first = rowIndexes.first else { return }
- guard let last = rowIndexes.last else { return }
+ guard let first = rowIndexes.first else {
+
+ return
+ }
+ guard let last = rowIndexes.last else {
+
+ return
+ }
draggingRange = first...last
}
proposedRow row: Int,
proposedDropOperation dropOperation: NSTableView.DropOperation) -> NSDragOperation {
- guard dropOperation == .above else { return [] }
- guard !(draggingRange ~= row) else { return [] }
- guard let tableView = info.draggingSource() as? NSTableView, tableView == self.tableView else { return [] }
+ guard dropOperation == .above else {
+
+ return []
+ }
+ guard !(draggingRange ~= row) else {
+
+ return []
+ }
+ guard let tableView = info.draggingSource() as? NSTableView, tableView == self.tableView else {
+
+ return []
+ }
return .move
}
return target.order
}()
- guard let items = info.draggingPasteboard().pasteboardItems else { return false }
+ guard let items = info.draggingPasteboard().pasteboardItems else {
+
+ return false
+ }
let store = BookmarkManager.shared.editorStore
- items.enumerated().forEach {
+ store.sync {
+
+ items.enumerated().forEach {
+
+ guard let data = $0.element.data(forType: .bookmarkItem) else {
+
+ return
+ }
+ guard let uri = NSKeyedUnarchiver.unarchiveObject(with: data) as? URL else {
+
+ return
+ }
+ guard let bookmark = store.object(of: Bookmark.self, forURIRepresentation: uri) else {
+
+ return
+ }
+
+ bookmark.order = targetOrder + $0.offset + 1
+ }
- guard let data = $0.element.data(forType: .bookmarkItem) else { return }
- guard let uri = NSKeyedUnarchiver.unarchiveObject(with: data) as? URL else { return }
- guard let oID = managedObjectContext.persistentStoreCoordinator?.managedObjectID(forURIRepresentation: uri) else { return }
- guard let bookmark = store.object(of: Bookmark.entity, with: oID) else { return }
+ store.save()
- bookmark.order = targetOrder + $0.offset + 1
+ self.bookmarkController.rearrangeObjects()
+ self.reorderingBoolmarks()
+ self.bookmarkController.rearrangeObjects()
}
- store.save(errorHandler: store.presentOnMainThread)
- bookmarkController.rearrangeObjects()
- reorderingBoolmarks()
- bookmarkController.rearrangeObjects()
+ tableView.reloadData()
return true
}