1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
//
// MQDropActionView.m
// MySQL QueryBrowser
//
// Created by Alfredo Kojima on 05/6/9.
// Copyright 2005 MySQL AB. All rights reserved.
//
#import "MQDropActionView.h"
#import "MQActionBar.h"
#import <MySQLToolsCommon/MSchemaDataSource.h>
@implementation MQDropActionView
- (id)initWithFrame:(NSRect)frame
{
self= [super initWithFrame:frame];
if (self)
{
[self registerForDraggedTypes:[NSArray arrayWithObject:MSchemaItemPboardType]];
}
return self;
}
- (void)drawRect:(NSRect)rect
{
NSPoint pos;
[[NSColor whiteColor] set];
NSRectFill(rect);
rect.origin.x+= 1;
rect.size.width-= 2;
if (_highlight)
{
rect= NSInsetRect(rect, 1, 1);
[[NSColor alternateSelectedControlColor] set];
[NSBezierPath setDefaultLineWidth:2.0];
[NSBezierPath strokeRect:rect];
}
else
{
[[NSColor blackColor] set];
[NSBezierPath setDefaultLineWidth:1.0];
[NSBezierPath strokeRect:rect];
}
pos.x= (NSWidth(rect) - [_font widthOfString:_label]) / 2;
pos.y= [_font descender] + (NSHeight(rect) - ([_font ascender] + [_font descender])) / 2;
[_label drawAtPoint:pos
withAttributes:[NSDictionary dictionaryWithObject:_font
forKey:NSFontAttributeName]];
}
- (void)setText:(NSString*)text
{
if (_label != text)
{
[_label release];
_label= [text retain];
}
}
- (void)setFont:(NSFont*)font
{
_font= [font retain];
}
- (void)setTarget:(id)target
{
_target= target;
}
- (void)setDropAction:(SEL)action
{
_action= action;
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
id source= [[sender draggingSource] dataSource];
if ([source isKindOfClass:[MSchemaDataSource class]])
{
MSchemaItem *item= [source draggedItem];
if (item && [item type] == MTableItemType)
{
_highlight= YES;
[(id)[self superview] show];
[self setNeedsDisplay:YES];
//[_target performSelector:_action withObject:self withObject:item];
return NSDragOperationCopy;
}
}
return NSDragOperationNone;
}
- (void)draggingExited:(id <NSDraggingInfo>)sender
{
_highlight= NO;
[(id)[self superview] delayedHide];
[self setNeedsDisplay:YES];
// [_target performSelector:_action
// withObject:self
// withObject:nil];
}
- (void)draggingEnd:(id <NSDraggingInfo>)sender
{
_highlight= NO;
[(id)[self superview] delayedHide];
[self setNeedsDisplay:YES];
// [_target performSelector:_action
// withObject:self
// withObject:nil];
}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
id source= [[sender draggingSource] dataSource];
_highlight= NO;
[self setNeedsDisplay:YES];
if ([source isKindOfClass:[MSchemaDataSource class]])
{
MSchemaItem *item= [source draggedItem];
if (item && [item type] == MTableItemType)
{
[(id)[self superview] hide];
[_target performSelector:_action withObject:self withObject:item];
return YES;
}
}
return NO;
}
@end
|