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
|
//
// MAccessoryScrollView.m
// MySQLGUICommon
//
// Created by Alfredo Kojima on 9/3/04.
// Copyright 2004 MySQL AB. All rights reserved.
//
#import "MAccessoryScrollView.h"
@implementation MAccessoryScrollView
- (void)dealloc
{
[_vAccessoryViews release];
[_hAccessoryViews release];
[super dealloc];
}
- (void)addVerticalAccessoryView:(NSView*)view
{
if (!_vAccessoryViews)
_vAccessoryViews= [[NSMutableArray alloc] init];
[_vAccessoryViews addObject:view];
[self tile];
}
- (void)addHorizontalAccessoryView:(NSView*)view
{
if (!_hAccessoryViews)
_hAccessoryViews= [[NSMutableArray alloc] init];
[_hAccessoryViews addObject:view];
[self tile];
}
- (void)tile
{
int i;
NSRect rect;
NSScroller *hscroller= [self horizontalScroller];
NSScroller *vscroller= [self verticalScroller];
float x, y;
// 1st do the default arrangement
[super tile];
// now arrange our accessory views
rect= [vscroller frame];
y= rect.origin.y;
for (i= 0; i < [_vAccessoryViews count]; i++)
{
NSView *view= [_vAccessoryViews objectAtIndex:i];
float h= NSHeight([view frame]);
[view setFrame:NSMakeRect(NSMinX(rect), y, NSWidth(rect), h)];
[view setNeedsDisplay:YES];
y+= h;
}
rect.size.height-= (y - rect.origin.y);
rect.origin.y= y;
[vscroller setFrame:rect];
[vscroller setNeedsDisplay];
rect= [hscroller frame];
x= rect.origin.x;
for (i= 0; i < [_hAccessoryViews count]; i++)
{
NSView *view= [_hAccessoryViews objectAtIndex:i];
float w= NSWidth([view frame]);
[view setFrame:NSMakeRect(x, NSMinY(rect), w, NSHeight(rect))];
[view setNeedsDisplay:YES];
x+= w;
}
rect.size.width-= (x - rect.origin.x);
rect.origin.x= x;
[hscroller setFrame:rect];
[hscroller setNeedsDisplay];
}
- (void)removeAccessoryViews
{
[_vAccessoryViews makeObjectsPerformSelector:@selector(removeFromSuperview)];
[_vAccessoryViews removeAllObjects];
[_hAccessoryViews makeObjectsPerformSelector:@selector(removeFromSuperview)];
[_hAccessoryViews removeAllObjects];
}
@end
|