aboutsummaryrefslogtreecommitdiffstats
path: root/Source/TableContent.m
diff options
context:
space:
mode:
Diffstat (limited to 'Source/TableContent.m')
-rw-r--r--Source/TableContent.m41
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];