|
@@ -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)
|
|
|
+ }
|
|
|
+}
|