|         |      1 /* | 
|         |      2  * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved. | 
|         |      3  * | 
|         |      4  * Redistribution and use in source and binary forms, with or without | 
|         |      5  * modification, are permitted provided that the following conditions | 
|         |      6  * are met: | 
|         |      7  * 1. Redistributions of source code must retain the above copyright | 
|         |      8  *    notice, this list of conditions and the following disclaimer. | 
|         |      9  * 2. Redistributions in binary form must reproduce the above copyright | 
|         |     10  *    notice, this list of conditions and the following disclaimer in the | 
|         |     11  *    documentation and/or other materials provided with the distribution. | 
|         |     12  * | 
|         |     13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 
|         |     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
|         |     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 
|         |     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 
|         |     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 
|         |     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 
|         |     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 
|         |     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 
|         |     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
|         |     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
|         |     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
|         |     24  */ | 
|         |     25  | 
|         |     26 #import "TestViewerSplitView.h" | 
|         |     27  | 
|         |     28 @implementation TestViewerSplitView | 
|         |     29  | 
|         |     30 - (void)drawRect:(NSRect)rect | 
|         |     31 { | 
|         |     32     NSArray *subviews = [self subviews]; | 
|         |     33     int subviewCount = [subviews count]; | 
|         |     34     for (int x=0; x < subviewCount; x++) { | 
|         |     35         NSView *subview = [subviews objectAtIndex:x]; | 
|         |     36         [subview drawRect:rect]; | 
|         |     37 #if 0 | 
|         |     38         NSString *label = [subviewLabels objectAtIndex:0]; | 
|         |     39         [label drawAtPoint:[subview frame].origin withAttributes:NULL]; | 
|         |     40 #endif | 
|         |     41     } | 
|         |     42 } | 
|         |     43  | 
|         |     44 - (void)retileSubviews | 
|         |     45 { | 
|         |     46     NSRect bounds = [self bounds]; | 
|         |     47     NSArray *subviews = [self subviews]; | 
|         |     48     int subviewCount = [subviews count]; | 
|         |     49     if (!subviewCount) return; | 
|         |     50     float subviewWidth = bounds.size.width / subviewCount; | 
|         |     51      | 
|         |     52     for (int x=0; x < subviewCount; x++) { | 
|         |     53         [[subviews objectAtIndex:x] setFrame:NSMakeRect(x * subviewWidth, 0, subviewWidth, bounds.size.height)]; | 
|         |     54     } | 
|         |     55 } | 
|         |     56  | 
|         |     57 - (void)didAddSubview:(NSView *)subview | 
|         |     58 { | 
|         |     59     [super didAddSubview:subview]; | 
|         |     60     [self retileSubviews]; | 
|         |     61 } | 
|         |     62  | 
|         |     63 - (void)willRemoveSubview:(NSView *)subview | 
|         |     64 { | 
|         |     65     [super willRemoveSubview:subview]; | 
|         |     66     [self retileSubviews]; | 
|         |     67 } | 
|         |     68  | 
|         |     69 - (void)setFrame:(NSRect)newFrame | 
|         |     70 { | 
|         |     71     // ideally we also want to catch when the bounds changes without the | 
|         |     72     // frame changing, but we're not bothering with that now - ECS 7/29/05 | 
|         |     73     [super setFrame:newFrame]; | 
|         |     74     [self retileSubviews]; | 
|         |     75 } | 
|         |     76  | 
|         |     77 @end |