Bläddra i källkod

【BOTA】KMBotaTableView补充细节

tangchao 1 år sedan
förälder
incheckning
4546e7c842

+ 34 - 73
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMBotaTableView.swift

@@ -27,16 +27,9 @@ import Cocoa
     @objc optional func tableView(_ aTableView: NSTableView, typeSelectHelper aTypeSelectHelper: SKTypeSelectHelper, updateSearchString searchString: String)
 }
 
-class KMBotaTableView: NSTableView, SKTypeSelectHelperDelegate {
+class KMBotaTableView: NSTableView {
    
     var kmTrackingAreas: NSMutableSet?
-    
-    /*
-     @interface SKTableView : NSTableView <SKTypeSelectDelegate> {
-         SKTypeSelectHelper *typeSelectHelper;
-     }
-     @property (nonatomic, retain) SKTypeSelectHelper *typeSelectHelper;
-     */
     var supportsQuickLook = false
     var typeSelectHelper: SKTypeSelectHelper?
     weak var botaDelegate: KMBotaTableViewDelegate? {
@@ -65,7 +58,9 @@ class KMBotaTableView: NSTableView, SKTypeSelectHelperDelegate {
     
     func setTypeSelectHelper(_ newTypeSelectHelper: SKTypeSelectHelper) {
         if typeSelectHelper != newTypeSelectHelper {
-            typeSelectHelper?.delegate = nil
+            if self.isEqual(to: self.typeSelectHelper?.delegate) {
+                typeSelectHelper?.delegate = nil
+            }
             typeSelectHelper = newTypeSelectHelper
             typeSelectHelper?.delegate = self
         }
@@ -81,8 +76,7 @@ class KMBotaTableView: NSTableView, SKTypeSelectHelperDelegate {
         super.reloadData()
         
         self._rebuildTrackingAreas()
-//        [typeSelectHelper rebuildTypeSelectSearchCache];
-        typeSelectHelper?.rebuildTypeSelectSearchCache()
+        self.typeSelectHelper?.rebuildTypeSelectSearchCache()
     }
     
     // MARK: - Tracking
@@ -253,70 +247,10 @@ class KMBotaTableView: NSTableView, SKTypeSelectHelperDelegate {
             self.noteHeightOfRows(withIndexesChanged: IndexSet(0..<self.numberOfRows))
         }
     }
-    func typeSelectHelperSelectionStrings(_ typeSelectHelper: SKTypeSelectHelper) -> NSArray {
-        return self.botaDelegate?.tableView?(self, typeSelectHelperSelectionStrings: typeSelectHelper) ?? NSArray()
-    }
-    
-    func typeSelectHelperCurrentlySelectedIndex(_ typeSelectHelper: SKTypeSelectHelper) -> Int {
-        return self.selectedRowIndexes.last ?? 0
-    }
-    
-    func typeSelectHelper(_ typeSelectHelper: SKTypeSelectHelper, selectItemAtIndex itemIndex: Int) {
-        self.selectRowIndexes(NSIndexSet(index: itemIndex) as IndexSet, byExtendingSelection: false)
-        self.scrollRowToVisible(itemIndex)
-    }
     
-    func typeSelectHelper(_ typeSelectHelper: SKTypeSelectHelper, didFailToFindMatchForSearchString searchString: String) {
-        self.botaDelegate?.tableView?(self, typeSelectHelper: typeSelectHelper, didFailToFindMatchForSearchString: searchString)
+    override func dragImageForRows(with dragRows: IndexSet, tableColumns: [NSTableColumn], event dragEvent: NSEvent, offset dragImageOffset: NSPointPointer) -> NSImage {
+        return super.dragImageForRows(with: dragRows, tableColumns: tableColumns[0..<1].shuffled(), event: dragEvent, offset: dragImageOffset)
     }
-    
-    func typeSelectHelper(_ typeSelectHelper: SKTypeSelectHelper, updateSearchString searchString: String) {
-        self.botaDelegate?.tableView?(self, typeSelectHelper: typeSelectHelper, updateSearchString: searchString)
-    }
-    
-    /*
-     - (void)setTypeSelectHelper:(SKTypeSelectHelper *)newTypeSelectHelper {
-         if (typeSelectHelper != newTypeSelectHelper) {
-             if ([typeSelectHelper delegate] == self)
-                 [typeSelectHelper setDelegate:nil];
-             [typeSelectHelper release];
-             typeSelectHelper = [newTypeSelectHelper retain];
-             [typeSelectHelper setDelegate:self];
-         }
-     }
-
-     - (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset{
-            return [super dragImageForRowsWithIndexes:dragRows tableColumns:[[self tableColumns] subarrayWithRange:NSMakeRange(0, 1)] event:dragEvent offset:dragImageOffset];
-     }
-
-     #pragma mark SKTypeSelectHelper datasource protocol
-
-     - (NSArray *)typeSelectHelperSelectionStrings:(SKTypeSelectHelper *)aTypeSelectHelper {
-         if ([[self delegate] respondsToSelector:@selector(tableView:typeSelectHelperSelectionStrings:)])
-             return [[self delegate] tableView:self typeSelectHelperSelectionStrings:aTypeSelectHelper];
-         return nil;
-     }
-
-     - (NSUInteger)typeSelectHelperCurrentlySelectedIndex:(SKTypeSelectHelper *)aTypeSelectHelper {
-         return [[self selectedRowIndexes] lastIndex];
-     }
-
-     - (void)typeSelectHelper:(SKTypeSelectHelper *)aTypeSelectHelper selectItemAtIndex:(NSUInteger)itemIndex {
-         [self selectRowIndexes:[NSIndexSet indexSetWithIndex:itemIndex] byExtendingSelection:NO];
-         [self scrollRowToVisible:itemIndex];
-     }
-
-     - (void)typeSelectHelper:(SKTypeSelectHelper *)aTypeSelectHelper didFailToFindMatchForSearchString:(NSString *)searchString {
-         if ([[self delegate] respondsToSelector:@selector(tableView:typeSelectHelper:didFailToFindMatchForSearchString:)])
-             [[self delegate] tableView:self typeSelectHelper:aTypeSelectHelper didFailToFindMatchForSearchString:searchString];
-     }
-
-     - (void)typeSelectHelper:(SKTypeSelectHelper *)aTypeSelectHelper updateSearchString:(NSString *)searchString {
-         if ([[self delegate] respondsToSelector:@selector(tableView:typeSelectHelper:updateSearchString:)])
-             [[self delegate] tableView:self typeSelectHelper:aTypeSelectHelper updateSearchString:searchString];
-     }
-
-     */
 }
 
 // MARK: - Private Methods
@@ -365,6 +299,8 @@ extension KMBotaTableView {
     }
 }
 
+// MARK: - NSMenuItemValidation
+
 extension KMBotaTableView: NSMenuItemValidation {
     func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
         if menuItem.action == #selector(delete) {
@@ -384,3 +320,28 @@ extension KMBotaTableView: NSMenuItemValidation {
         return true
     }
 }
+
+// MARK: - SKTypeSelectHelperDelegate
+
+extension KMBotaTableView: SKTypeSelectHelperDelegate {
+    func typeSelectHelperSelectionStrings(_ typeSelectHelper: SKTypeSelectHelper) -> NSArray {
+        return self.botaDelegate?.tableView?(self, typeSelectHelperSelectionStrings: typeSelectHelper) ?? NSArray()
+    }
+    
+    func typeSelectHelperCurrentlySelectedIndex(_ typeSelectHelper: SKTypeSelectHelper) -> Int {
+        return self.selectedRowIndexes.last ?? NSNotFound
+    }
+    
+    func typeSelectHelper(_ typeSelectHelper: SKTypeSelectHelper, selectItemAtIndex itemIndex: Int) {
+        self.selectRowIndexes(NSIndexSet(index: itemIndex) as IndexSet, byExtendingSelection: false)
+        self.scrollRowToVisible(itemIndex)
+    }
+    
+    func typeSelectHelper(_ typeSelectHelper: SKTypeSelectHelper, didFailToFindMatchForSearchString searchString: String) {
+        self.botaDelegate?.tableView?(self, typeSelectHelper: typeSelectHelper, didFailToFindMatchForSearchString: searchString)
+    }
+    
+    func typeSelectHelper(_ typeSelectHelper: SKTypeSelectHelper, updateSearchString searchString: String) {
+        self.botaDelegate?.tableView?(self, typeSelectHelper: typeSelectHelper, updateSearchString: searchString)
+    }
+}