File: MQDropActionView.m

package info (click to toggle)
mysql-gui-tools 5.0r14%2BopenSUSE-2.1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 116,956 kB
  • ctags: 48,715
  • sloc: sql: 341,918; pascal: 276,698; ansic: 91,020; cpp: 90,451; objc: 33,236; sh: 29,481; yacc: 10,756; xml: 10,589; java: 10,079; php: 2,806; python: 2,092; makefile: 1,783; perl: 4
file content (143 lines) | stat: -rw-r--r-- 3,079 bytes parent folder | download | duplicates (3)
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