diff options
Diffstat (limited to 'Source/TableContent.m')
-rw-r--r-- | Source/TableContent.m | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Source/TableContent.m b/Source/TableContent.m index 5ebb15f9..3f8c9596 100644 --- a/Source/TableContent.m +++ b/Source/TableContent.m @@ -43,6 +43,7 @@ #import "SPTextAndLinkCell.h" #import "QLPreviewPanel.h" #import "SPFieldEditorController.h" +#import "SPTooltip.h" @implementation TableContent @@ -1789,6 +1790,46 @@ #pragma mark - #pragma mark TableView delegate methods +/** + * Show the table cell content as tooltip + * - for text displays line breaks and tabs as well + * - if blob data can be interpret as image data display the image as transparent thumbnail + * (up to now using base64 encoded HTML data) + */ +- (NSString *)tableView:(NSTableView *)aTableView toolTipForCell:(SPTextAndLinkCell *)aCell rect:(NSRectPointer)rect tableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row mouseLocation:(NSPoint)mouseLocation +{ + + if([[aCell stringValue] length] < 1) return nil; + + NSPoint pos = [NSEvent mouseLocation]; + pos.y -= 20; + + // Get the original data for trying to display the blob data as an image + id theValue = NSArrayObjectAtIndex(NSArrayObjectAtIndex(tableValues, row), [[aTableColumn identifier] intValue]); + if ([theValue isKindOfClass:[NSData class]]) { + NSImage *image = [[NSImage alloc] initWithData:theValue]; + if(image) { + int imageWidth = [image size].width; + if (imageWidth > 100) imageWidth = 100; + [SPTooltip showWithObject:[NSString stringWithFormat: + @"<IMG WIDTH='%d' SRC=\"data:image/auto;base64,%@\">", + imageWidth, + [[image TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0]] + atLocation:pos + ofType:@"html" + displayOptions:[NSDictionary dictionaryWithObjectsAndKeys:@"transparent", @"transparent", nil]]; + } + [image release]; + return nil; + } + + // Show the cell string value as tooltip (including line breaks and tabs) + if([[aCell stringValue] length] > 1) + [SPTooltip showWithObject:[aCell stringValue] atLocation:pos]; + + return nil; +} + - (int)numberOfRowsInTableView:(NSTableView *)aTableView { return [tableValues count]; |