The R Project SVN R-packages

Rev

Rev 5875 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5875 Rev 7824
Line 65... Line 65...
65
 
65
 
66
// -(void)mouseDown:(NSEvent *)theEvent
66
// -(void)mouseDown:(NSEvent *)theEvent
67
// {
67
// {
68
// 	// Submit pending changes of column names
68
// 	// Submit pending changes of column names
69
// 	if([[[NSApp keyWindow] firstResponder] isKindOfClass:[NSTextView class]])
69
// 	if([[[NSApp keyWindow] firstResponder] isKindOfClass:[NSTextView class]])
70
// 		[[_tableView delegate] textView:(NSTextView*)[[NSApp keyWindow] firstResponder] doCommandBySelector:@selector(insertNewline:)];
70
// 		[[self.tableView delegate] textView:(NSTextView*)[[NSApp keyWindow] firstResponder] doCommandBySelector:@selector(insertNewline:)];
71
// }
71
// }
72
// 
72
// 
73
-(void)mouseDown:(NSEvent *)theEvent
73
-(void)mouseDown:(NSEvent *)theEvent
74
{
74
{
75
	NSPoint location = [self convertPoint:[theEvent locationInWindow] fromView:nil];
75
	NSPoint location = [self convertPoint:[theEvent locationInWindow] fromView:nil];
76
	NSInteger clickedColumn = [self columnAtPoint:location];
76
	NSInteger clickedColumn = [self columnAtPoint:location];
77
 
77
 
78
	// Submit pending changes of column names
78
	// Submit pending changes of column names
79
	if([[[NSApp keyWindow] firstResponder] isKindOfClass:[NSTextView class]])
79
	if([[[NSApp keyWindow] firstResponder] isKindOfClass:[NSTextView class]])
80
		[[_tableView delegate] textView:(NSTextView*)[[NSApp keyWindow] firstResponder] doCommandBySelector:@selector(insertNewline:)];
80
		[[self.tableView delegate] textView:(NSTextView*)[[NSApp keyWindow] firstResponder] doCommandBySelector:@selector(insertNewline:)];
81
 
81
 
82
	// check if delegate implemented tableView:mouseDownInHeaderOfTableColumn:
82
	// check if delegate implemented tableView:mouseDownInHeaderOfTableColumn:
83
	if ([[_tableView delegate] respondsToSelector:@selector(tableView:mouseDownInHeaderOfTableColumn:)]) {
83
	if ([[self.tableView delegate] respondsToSelector:@selector(tableView:mouseDownInHeaderOfTableColumn:)]) {
84
		if(clickedColumn != -1)
84
		if(clickedColumn != -1)
85
			[[_tableView delegate] tableView:_tableView mouseDownInHeaderOfTableColumn:[[_tableView tableColumns] objectAtIndex:clickedColumn]];
85
			[[self.tableView delegate] tableView:self.tableView mouseDownInHeaderOfTableColumn:[[self.tableView tableColumns] objectAtIndex:clickedColumn]];
86
		if([[NSApp currentEvent] clickCount] > 1) {
86
		if([[NSApp currentEvent] clickCount] > 1) {
87
			// deselect clicked column for editing column name and return
87
			// deselect clicked column for editing column name and return
88
			[_tableView deselectAll:nil];
88
			[self.tableView deselectAll:nil];
89
			return;
89
			return;
90
		}
90
		}
91
	}
91
	}
92
 
92
 
93
	// resizing mode
93
	// resizing mode
94
	if ([_tableView allowsColumnResizing]) {
94
	if ([self.tableView allowsColumnResizing]) {
95
		NSInteger i, count=[[_tableView tableColumns] count];
95
		NSInteger i, count=[[self.tableView tableColumns] count];
96
 
96
 
97
		// ends editing
97
		// ends editing
98
		if ([_tableView editedColumn] != -1 || [_tableView editedRow] != -1)
98
		if ([self.tableView editedColumn] != -1 || [self.tableView editedRow] != -1)
99
			[[self window] endEditingFor:nil];
99
			[[self window] endEditingFor:nil];
100
 
100
 
101
		for (i = 1; i < count; ++i) {
101
		for (i = 1; i < count; ++i) {
102
			if (NSMouseInRect(location, [self _resizeRectBeforeColumn:i], [self isFlipped])) {
102
			if (NSMouseInRect(location, [self _resizeRectBeforeColumn:i], [self isFlipped])) {
103
				NSTableColumn *resizingColumn = [[_tableView tableColumns] objectAtIndex:i-1];
103
				NSTableColumn *resizingColumn = [[self.tableView tableColumns] objectAtIndex:i-1];
104
 
104
 
105
				if ([resizingColumn resizingMask] == NSTableColumnNoResizing)
105
				if ([resizingColumn resizingMask] == NSTableColumnNoResizing)
106
					return;
106
					return;
107
 
107
 
108
				_resizedColumn = i - 1;
108
				//FIXME: self.resizedColumn = i - 1;
109
				location=[self convertPoint:[theEvent locationInWindow] fromView:nil];
109
				location=[self convertPoint:[theEvent locationInWindow] fromView:nil];
110
				do {
110
				do {
111
					NSPoint newPoint;
111
					NSPoint newPoint;
112
					NSRect newRect;
112
					NSRect newRect;
113
					NSInteger q;
113
					NSInteger q;
Line 115... Line 115...
115
 
115
 
116
					theEvent=[[self window] nextEventMatchingMask:NSLeftMouseUpMask|NSLeftMouseDraggedMask];
116
					theEvent=[[self window] nextEventMatchingMask:NSLeftMouseUpMask|NSLeftMouseDraggedMask];
117
					newPoint=[self convertPoint:[theEvent locationInWindow] fromView:nil];
117
					newPoint=[self convertPoint:[theEvent locationInWindow] fromView:nil];
118
 
118
 
119
					newWidth=newPoint.x;
119
					newWidth=newPoint.x;
120
					for (q = 0; q < _resizedColumn; ++q) {
120
					for (q = 0; q < self.resizedColumn; ++q) {
121
						newWidth -= [[[_tableView tableColumns] objectAtIndex:q] width];
121
						newWidth -= [[[self.tableView tableColumns] objectAtIndex:q] width];
122
						newWidth -= [_tableView intercellSpacing].width;
122
						newWidth -= [self.tableView intercellSpacing].width;
123
					}
123
					}
124
 
124
 
125
					[resizingColumn setWidth:newWidth];
125
					[resizingColumn setWidth:newWidth];
126
 
126
 
127
					[_tableView tile];
127
					[self.tableView tile];
128
					newRect.origin=[_tableView convertPoint:newPoint fromView:self];
128
					newRect.origin=[self.tableView convertPoint:newPoint fromView:self];
129
					newRect.size=NSMakeSize(10,10);
129
					newRect.size=NSMakeSize(10,10);
130
					[_tableView scrollRectToVisible:newRect];
130
					[self.tableView scrollRectToVisible:newRect];
131
 
131
 
132
					location=newPoint;
132
					location=newPoint;
133
				} while ([theEvent type] != NSLeftMouseUp);
133
				} while ([theEvent type] != NSLeftMouseUp);
134
 
134
 
135
				[[self window] invalidateCursorRectsForView:self];
135
				[[self window] invalidateCursorRectsForView:self];
136
 
136
 
137
				_resizedColumn = -1;
137
				//self.resizedColumn = -1;
138
				return;
138
				return;
139
			}
139
			}
140
		}
140
		}
141
	}
141
	}
142
 
142
 
143
	// column selection including the chance to select non-continous columns via holding ⌘
143
	// column selection including the chance to select non-continous columns via holding ⌘
144
	if ([_tableView allowsColumnSelection]) {
144
	if ([self.tableView allowsColumnSelection]) {
145
		// extend/change selection
145
		// extend/change selection
146
		if ([theEvent modifierFlags] & NSCommandKeyMask) {
146
		if ([theEvent modifierFlags] & NSCommandKeyMask) {
147
			// deselect previously selected?
147
			// deselect previously selected?
148
			if ([_tableView isColumnSelected:clickedColumn])
148
			if ([self.tableView isColumnSelected:clickedColumn])
149
				[_tableView deselectColumn:clickedColumn];
149
				[self.tableView deselectColumn:clickedColumn];
150
			else if ([_tableView allowsMultipleSelection] == YES) {
150
			else if ([self.tableView allowsMultipleSelection] == YES) {
151
				// add to selection
151
				// add to selection
152
				[_tableView selectColumnIndexes:[NSIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:YES];
152
				[self.tableView selectColumnIndexes:[NSIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:YES];
153
			}
153
			}
154
		}
154
		}
155
		else if ([theEvent modifierFlags] & NSShiftKeyMask) {
155
		else if ([theEvent modifierFlags] & NSShiftKeyMask) {
156
			NSInteger firstColumn = [_tableView selectedColumn];
156
			NSInteger firstColumn = [self.tableView selectedColumn];
157
			NSInteger lastColumn  = clickedColumn;
157
			NSInteger lastColumn  = clickedColumn;
158
 
158
 
159
			if (firstColumn == -1)
159
			if (firstColumn == -1)
160
				firstColumn = 0;
160
				firstColumn = 0;
161
			if (firstColumn > lastColumn) {
161
			if (firstColumn > lastColumn) {
162
				lastColumn = firstColumn;
162
				lastColumn = firstColumn;
163
				firstColumn = clickedColumn;
163
				firstColumn = clickedColumn;
164
			}
164
			}
165
 
165
 
166
			[_tableView deselectAll:nil];
166
			[self.tableView deselectAll:nil];
167
			while (firstColumn <= lastColumn)
167
			while (firstColumn <= lastColumn)
168
				[_tableView selectColumnIndexes:[NSIndexSet indexSetWithIndex:firstColumn++] byExtendingSelection:YES];
168
				[self.tableView selectColumnIndexes:[NSIndexSet indexSetWithIndex:firstColumn++] byExtendingSelection:YES];
169
		}
169
		}
170
		else
170
		else
171
			[_tableView selectColumnIndexes:[NSIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:NO];
171
			[self.tableView selectColumnIndexes:[NSIndexSet indexSetWithIndex:clickedColumn] byExtendingSelection:NO];
172
	}
172
	}
173
 
173
 
174
}
174
}
175
 
175
 
176
@end
176
@end