File: MQTableView.m

package info (click to toggle)
mysql-admin 1.2.5rc-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 80,944 kB
  • ctags: 43,103
  • sloc: sql: 295,916; pascal: 256,535; cpp: 74,487; ansic: 68,881; objc: 26,417; sh: 16,867; yacc: 10,755; java: 9,917; xml: 8,453; php: 2,806; python: 2,068; makefile: 1,252; perl: 3
file content (166 lines) | stat: -rw-r--r-- 3,564 bytes parent folder | download | duplicates (2)
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
//
//  MQTableView.m
//  MySQL QueryBrowser
//
//  Created by Alfredo Kojima on 4/29/05.
//  Copyright 2005 MySQL AB. All rights reserved.
//

#import "MQTableView.h"
#import "MQResultSetCell.h"

@implementation MQTableView

- (void)drawRect:(NSRect)aRect
{
  [super drawRect:aRect];
  if (_highlight)
  {
    [[NSColor alternateSelectedControlColor] set];
    [NSBezierPath setDefaultLineWidth:4];
    [NSBezierPath strokeRect:aRect];
  }  
}

#if 0
- (void)drawGridInClipRect:(NSRect)aRect
{
  NSRange columns= [self columnsInRect:clipRect];
  NSRange rows= [self rowsInRect:clipRect];
  
  [[self gridColor] set];
  
  //XXX
}
#endif

- (void)mouseDown:(NSEvent*)event
{
  NSPoint point= [self convertPoint:[event locationInWindow]
                           fromView:nil];
  theColumn= [self columnAtPoint:point];
  [self setNeedsDisplay];
  [super mouseDown:event];
  
  [[self delegate] performSelector:@selector(tableViewWasClicked:) withObject:self];
}

- (void)keyDown:(NSEvent *)theEvent
{
  if ([theEvent type] == NSKeyDown)
  {
    unichar key= [[theEvent characters] characterAtIndex:0];
    
    if (key == NSLeftArrowFunctionKey)
    {
      if (theColumn > 1) // we don't want to select the indicator
        theColumn--;
      [self setNeedsDisplay];
      [self scrollColumnToVisible:theColumn];
    }
    else if (key == NSRightArrowFunctionKey)
    {
      if (theColumn < [self numberOfColumns]-1)
        theColumn++;
      [self setNeedsDisplay];
      [self scrollColumnToVisible:theColumn];
    }
  }
  [super keyDown:theEvent];
}

- (void)editColumn:(int)columnIndex row:(int)rowIndex withEvent:(NSEvent *)theEvent select:(BOOL)flag
{
  theColumn= [self editedColumn];
  [self setNeedsDisplay];
  [super editColumn:columnIndex row:rowIndex withEvent:theEvent select:flag]; 
}


// highlighting is done in the cell itself because the highlight is drawn
// before the cell, so the cell's background color will be drawn over the 
// selection highlight

- (id)_highlightColorForCell:(NSCell *)cell
{
  return nil;
}

- (int)lastClickedColumn
{
  return theColumn;
}

- (void)selectCellAtRow:(unsigned int)row
                 column:(unsigned int)column
{
  theColumn= column;
  [self selectRow:row byExtendingSelection:NO];
}


- (void)setDragHandlers:(NSDictionary*)handlers
                 target:(id)target
{
  if (_handlers != handlers)
  {
    _handlerTarget= target;
    [_handlers release];
    _handlers= [handlers retain];
  }
}


- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
//  _highlight= YES;
//  [self setNeedsDisplay];
  return NSDragOperationCopy;
}

- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender
{
  return NSDragOperationCopy;
}

- (void)draggingExited:(id <NSDraggingInfo>)sender
{
//  _highlight= NO;
//  [self setNeedsDisplay];
}

- (void)concludeDragOperation:(id <NSDraggingInfo>)sender
{
  _highlight= NO;
  [self setNeedsDisplay];  
}

- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
{
  return YES;
}


- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
  NSPasteboard *pboard= [sender draggingPasteboard];
  NSArray *types= [pboard types];
  unsigned int i, c= [types count];

  for (i= 0; i < c; i++)
  {
    id type= [types objectAtIndex:i];
    NSString *handler= [_handlers objectForKey:type];
    if (handler)
    {
      if ([_handlerTarget performSelector:NSSelectorFromString(handler)
                               withObject:self
                               withObject:sender])
        return YES;
      break;
    }
  }
  return NO;
}

@end