00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 @import "CPImageView.j"
00024 @import "CPTabViewItem.j"
00025 @import "CPView.j"
00026
00027 #include "CoreGraphics/CGGeometry.h"
00028
00029
00030
00031
00032
00033
00034
00035 CPTopTabsBezelBorder = 0;
00036
00037
00038
00039
00040
00041
00042
00043
00044 CPNoTabsBezelBorder = 4;
00045
00046
00047
00048
00049
00050 CPNoTabsLineBorder = 5;
00051
00052
00053
00054
00055
00056 CPNoTabsNoBorder = 6;
00057
00058 var CPTabViewBezelBorderLeftImage = nil,
00059 CPTabViewBackgroundCenterImage = nil,
00060 CPTabViewBezelBorderRightImage = nil,
00061 CPTabViewBezelBorderColor = nil,
00062 CPTabViewBezelBorderBackgroundColor = nil;
00063
00064 var LEFT_INSET = 7.0,
00065 RIGHT_INSET = 7.0;
00066
00067 var CPTabViewDidSelectTabViewItemSelector = 1,
00068 CPTabViewShouldSelectTabViewItemSelector = 2,
00069 CPTabViewWillSelectTabViewItemSelector = 4,
00070 CPTabViewDidChangeNumberOfTabViewItemsSelector = 8;
00071
00082 @implementation CPTabView : CPView
00083 {
00084 CPView _labelsView;
00085 CPView _backgroundView;
00086 CPView _separatorView;
00087
00088 CPView _auxiliaryView;
00089 CPView _contentView;
00090
00091 CPArray _tabViewItems;
00092 CPTabViewItem _selectedTabViewItem;
00093
00094 CPTabViewType _tabViewType;
00095
00096 id _delegate;
00097 unsigned _delegateSelectors;
00098 }
00099
00100
00101
00102
00103 + (void)initialize
00104 {
00105 if (self != CPTabView)
00106 return;
00107
00108 var bundle = [CPBundle bundleForClass:self],
00109
00110 emptyImage = [[CPImage alloc] initByReferencingFile:@"" size:CGSizeMake(7.0, 0.0)],
00111 backgroundImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/CPTabViewBezelBackgroundCenter.png"] size:CGSizeMake(1.0, 1.0)],
00112
00113 bezelBorderLeftImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/CPTabViewBezelBorderLeft.png"] size:CGSizeMake(7.0, 1.0)],
00114 bezerBorderImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/CPTabViewBezelBorder.png"] size:CGSizeMake(1.0, 1.0)],
00115 bezelBorderRightImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/CPTabViewBezelBorderRight.png"] size:CGSizeMake(7.0, 1.0)];
00116
00117 CPTabViewBezelBorderBackgroundColor = [CPColor colorWithPatternImage:[[CPNinePartImage alloc] initWithImageSlices:
00118 [
00119 emptyImage,
00120 emptyImage,
00121 emptyImage,
00122
00123 bezelBorderLeftImage,
00124 backgroundImage,
00125 bezelBorderRightImage,
00126
00127 bezelBorderLeftImage,
00128 bezerBorderImage,
00129 bezelBorderRightImage
00130 ]]];
00131
00132 CPTabViewBezelBorderColor = [CPColor colorWithPatternImage:bezerBorderImage];
00133 }
00134
00135
00136
00137
00138 + (CPColor)bezelBorderColor
00139 {
00140 return CPTabViewBezelBorderColor;
00141 }
00142
00143 - (id)initWithFrame:(CGRect)aFrame
00144 {
00145 self = [super initWithFrame:aFrame];
00146
00147 if (self)
00148 {
00149 _tabViewType = CPTopTabsBezelBorder;
00150 _tabViewItems = [];
00151 }
00152
00153 return self;
00154 }
00155
00156 - (void)viewDidMoveToWindow
00157 {
00158 if (_tabViewType != CPTopTabsBezelBorder || _labelsView)
00159 return;
00160
00161 [self _createBezelBorder];
00162 [self layoutSubviews];
00163 }
00164
00165
00166 - (void)_createBezelBorder
00167 {
00168 var bounds = [self bounds];
00169
00170 _labelsView = [[_CPTabLabelsView alloc] initWithFrame:CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), 0.0)];
00171
00172 [_labelsView setTabView:self];
00173 [_labelsView setAutoresizingMask:CPViewWidthSizable];
00174
00175 [self addSubview:_labelsView];
00176
00177 _backgroundView = [[CPView alloc] initWithFrame:CGRectMakeZero()];
00178
00179 [_backgroundView setBackgroundColor:CPTabViewBezelBorderBackgroundColor];
00180
00181 [_backgroundView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
00182
00183 [self addSubview:_backgroundView];
00184
00185 _separatorView = [[CPView alloc] initWithFrame:CGRectMakeZero()];
00186
00187 [_separatorView setBackgroundColor:[[self class] bezelBorderColor]];
00188 [_separatorView setAutoresizingMask:CPViewWidthSizable | CPViewMaxYMargin];
00189
00190 [self addSubview:_separatorView];
00191 }
00192
00193
00194
00195
00196
00197 - (void)layoutSubviews
00198 {
00199 if (_tabViewType == CPTopTabsBezelBorder)
00200 {
00201 var backgroundRect = [self bounds],
00202 labelsViewHeight = [_CPTabLabelsView height];
00203
00204 backgroundRect.origin.y += labelsViewHeight;
00205 backgroundRect.size.height -= labelsViewHeight;
00206
00207 [_backgroundView setFrame:backgroundRect];
00208
00209 var auxiliaryViewHeight = 5.0;
00210
00211 if (_auxiliaryView)
00212 {
00213 auxiliaryViewHeight = CGRectGetHeight([_auxiliaryView frame]);
00214
00215 [_auxiliaryView setFrame:CGRectMake(LEFT_INSET, labelsViewHeight, CGRectGetWidth(backgroundRect) - LEFT_INSET - RIGHT_INSET, auxiliaryViewHeight)];
00216 }
00217
00218 [_separatorView setFrame:CGRectMake(LEFT_INSET, labelsViewHeight + auxiliaryViewHeight, CGRectGetWidth(backgroundRect) - LEFT_INSET - RIGHT_INSET, 1.0)];
00219 }
00220
00221
00222 [_contentView setFrame:[self contentRect]];
00223 }
00224
00225
00230 - (void)addTabViewItem:(CPTabViewItem)aTabViewItem
00231 {
00232 [self insertTabViewItem:aTabViewItem atIndex:[_tabViewItems count]];
00233 }
00234
00241 - (void)insertTabViewItem:(CPTabViewItem)aTabViewItem atIndex:(unsigned)anIndex
00242 {
00243 if (!_labelsView && _tabViewType == CPTopTabsBezelBorder)
00244 [self _createBezelBorder];
00245
00246 [_tabViewItems insertObject:aTabViewItem atIndex:anIndex];
00247
00248 [_labelsView tabView:self didAddTabViewItem:aTabViewItem];
00249
00250 if ([_tabViewItems count] == 1)
00251 [self selectFirstTabViewItem:self];
00252
00253 if (_delegateSelectors & CPTabViewDidChangeNumberOfTabViewItemsSelector)
00254 [_delegate tabViewDidChangeNumberOfTabViewItems:self];
00255 }
00256
00261 - (void)removeTabViewItem:(CPTabViewItem)aTabViewItem
00262 {
00263 [_tabViewItems removeObjectIdenticalTo:aTabViewItem];
00264
00265 [_labelsView tabView:self didRemoveTabViewItem:aTabViewItem];
00266
00267 if (_delegateSelectors & CPTabViewDidChangeNumberOfTabViewItemsSelector)
00268 [_delegate tabViewDidChangeNumberOfTabViewItems:self];
00269 }
00270
00271
00276 - (int)indexOfTabViewItem:(CPTabViewItem)aTabViewItem
00277 {
00278 return [_tabViewItems indexOfObjectIdenticalTo:aTabViewItem];
00279 }
00280
00285 - (int)indexOfTabViewItemWithIdentifier:(CPString)anIdentifier
00286 {
00287 var index = 0,
00288 count = [_tabViewItems count];
00289
00290 for (; index < count; ++index)
00291 if ([[_tabViewItems[index] identifier] isEqual:anIdentifier])
00292 return index;
00293
00294 return index;
00295 }
00296
00300 - (unsigned)numberOfTabViewItems
00301 {
00302 return [_tabViewItems count];
00303 }
00304
00308 - (CPTabViewItem)tabViewItemAtIndex:(unsigned)anIndex
00309 {
00310 return _tabViewItems[anIndex];
00311 }
00312
00316 - (CPArray)tabViewItems
00317 {
00318 return _tabViewItems;
00319 }
00320
00321
00326 - (void)selectFirstTabViewItem:(id)aSender
00327 {
00328 var count = [_tabViewItems count];
00329
00330 if (count)
00331 [self selectTabViewItemAtIndex:0];
00332 }
00333
00338 - (void)selectLastTabViewItem:(id)aSender
00339 {
00340 var count = [_tabViewItems count];
00341
00342 if (count)
00343 [self selectTabViewItemAtIndex:count - 1];
00344 }
00345
00350 - (void)selectNextTabViewItem:(id)aSender
00351 {
00352 if (!_selectedTabViewItem)
00353 return;
00354
00355 var index = [self indexOfTabViewItem:_selectedTabViewItem],
00356 count = [_tabViewItems count];
00357
00358 [self selectTabViewItemAtIndex:index + 1 % count];
00359 }
00360
00365 - (void)selectPreviousTabViewItem:(id)aSender
00366 {
00367 if (!_selectedTabViewItem)
00368 return;
00369
00370 var index = [self indexOfTabViewItem:_selectedTabViewItem],
00371 count = [_tabViewItems count];
00372
00373 [self selectTabViewItemAtIndex:index == 0 ? count : index - 1];
00374 }
00375
00380 - (void)selectTabViewItem:(CPTabViewItem)aTabViewItem
00381 {
00382 if ((_delegateSelectors & CPTabViewShouldSelectTabViewItemSelector) && ![_delegate tabView:self shouldSelectTabViewItem:aTabViewItem])
00383 return;
00384
00385 if (_delegateSelectors & CPTabViewWillSelectTabViewItemSelector)
00386 [_delegate tabView:self willSelectTabViewItem:aTabViewItem];
00387
00388 if (_selectedTabViewItem)
00389 {
00390 _selectedTabViewItem._tabState = CPBackgroundTab;
00391 [_labelsView tabView:self didChangeStateOfTabViewItem:_selectedTabViewItem];
00392
00393 [_contentView removeFromSuperview];
00394 [_auxiliaryView removeFromSuperview];
00395 }
00396 _selectedTabViewItem = aTabViewItem;
00397
00398 _selectedTabViewItem._tabState = CPSelectedTab;
00399
00400 _contentView = [_selectedTabViewItem view];
00401 [_contentView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
00402
00403 _auxiliaryView = [_selectedTabViewItem auxiliaryView];
00404 [_auxiliaryView setAutoresizingMask:CPViewWidthSizable];
00405
00406 [self addSubview:_contentView];
00407
00408 if (_auxiliaryView)
00409 [self addSubview:_auxiliaryView];
00410
00411 [_labelsView tabView:self didChangeStateOfTabViewItem:_selectedTabViewItem];
00412
00413 [self layoutSubviews];
00414
00415 if (_delegateSelectors & CPTabViewDidSelectTabViewItemSelector)
00416 [_delegate tabView:self didSelectTabViewItem:aTabViewItem];
00417 }
00418
00423 - (void)selectTabViewItemAtIndex:(unsigned)anIndex
00424 {
00425 [self selectTabViewItem:_tabViewItems[anIndex]];
00426 }
00427
00431 - (CPTabViewItem)selectedTabViewItem
00432 {
00433 return _selectedTabViewItem;
00434 }
00435
00436
00441 - (void)setTabViewType:(CPTabViewType)aTabViewType
00442 {
00443 if (_tabViewType == aTabViewType)
00444 return;
00445
00446 _tabViewType = aTabViewType;
00447
00448 if (_tabViewType == CPNoTabsBezelBorder || _tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder)
00449 [_labelsView removeFromSuperview];
00450 else if (![_labelsView superview])
00451 [self addSubview:_labelsView];
00452
00453 if (_tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder)
00454 [_backgroundView removeFromSuperview];
00455 else if (![_backgroundView superview])
00456 [self addSubview:_backgroundView];
00457
00458 [self layoutSubviews];
00459 }
00460
00464 - (CPTabViewType)tabViewType
00465 {
00466 return _tabViewType;
00467 }
00468
00469
00473 - (CGRect)contentRect
00474 {
00475 var contentRect = CGRectMakeCopy([self bounds]);
00476
00477 if (_tabViewType == CPTopTabsBezelBorder)
00478 {
00479 var labelsViewHeight = [_CPTabLabelsView height],
00480 auxiliaryViewHeight = _auxiliaryView ? CGRectGetHeight([_auxiliaryView frame]) : 5.0,
00481 separatorViewHeight = 1.0;
00482
00483 contentRect.origin.y += labelsViewHeight + auxiliaryViewHeight + separatorViewHeight;
00484 contentRect.size.height -= labelsViewHeight + auxiliaryViewHeight + separatorViewHeight * 2.0;
00485
00486 contentRect.origin.x += LEFT_INSET;
00487 contentRect.size.width -= LEFT_INSET + RIGHT_INSET;
00488 }
00489
00490 return contentRect;
00491 }
00492
00497 - (void)setDelegate:(id)aDelegate
00498 {
00499 if (_delegate == aDelegate)
00500 return;
00501
00502 _delegate = aDelegate;
00503
00504 _delegateSelectors = 0;
00505
00506 if ([_delegate respondsToSelector:@selector(tabView:shouldSelectTabViewItem:)])
00507 _delegateSelectors |= CPTabViewShouldSelectTabViewItemSelector;
00508
00509 if ([_delegate respondsToSelector:@selector(tabView:willSelectTabViewItem:)])
00510 _delegateSelectors |= CPTabViewWillSelectTabViewItemSelector;
00511
00512 if ([_delegate respondsToSelector:@selector(tabView:didSelectTabViewItem:)])
00513 _delegateSelectors |= CPTabViewDidSelectTabViewItemSelector;
00514
00515 if ([_delegate respondsToSelector:@selector(tabViewDidChangeNumberOfTabViewItems:)])
00516 _delegateSelectors |= CPTabViewDidChangeNumberOfTabViewItemsSelector;
00517 }
00518
00519
00520
00521 - (void)mouseDown:(CPEvent)anEvent
00522 {
00523 var location = [_labelsView convertPoint:[anEvent locationInWindow] fromView:nil],
00524 tabViewItem = [_labelsView representedTabViewItemAtPoint:location];
00525
00526 if (tabViewItem)
00527 [self selectTabViewItem:tabViewItem];
00528 }
00529
00530 @end
00531
00532 var CPTabViewItemsKey = "CPTabViewItemsKey",
00533 CPTabViewSelectedItemKey = "CPTabViewSelectedItemKey",
00534 CPTabViewTypeKey = "CPTabViewTypeKey",
00535 CPTabViewDelegateKey = "CPTabViewDelegateKey";
00536
00537 @implementation CPTabView (CPCoding)
00538
00539 - (id)initWithCoder:(CPCoder)aCoder
00540 {
00541 if (self = [super initWithCoder:aCoder])
00542 {
00543 _tabViewType = [aCoder decodeIntForKey:CPTabViewTypeKey];
00544 _tabViewItems = [];
00545
00546
00547 [self _createBezelBorder];
00548
00549 var items = [aCoder decodeObjectForKey:CPTabViewItemsKey];
00550 for (var i = 0; items && i < items.length; i++)
00551 [self insertTabViewItem:items[i] atIndex:i];
00552
00553 var selected = [aCoder decodeObjectForKey:CPTabViewSelectedItemKey];
00554 if (selected)
00555 [self selectTabViewItem:selected];
00556
00557 [self setDelegate:[aCoder decodeObjectForKey:CPTabViewDelegateKey]];
00558 }
00559
00560 return self;
00561 }
00562
00563 - (void)encodeWithCoder:(CPCoder)aCoder
00564 {
00565 var actualSubviews = _subviews;
00566 _subviews = [];
00567 [super encodeWithCoder:aCoder];
00568 _subviews = actualSubviews;
00569
00570 [aCoder encodeObject:_tabViewItems forKey:CPTabViewItemsKey];;
00571 [aCoder encodeObject:_selectedTabViewItem forKey:CPTabViewSelectedItemKey];
00572
00573 [aCoder encodeInt:_tabViewType forKey:CPTabViewTypeKey];
00574
00575 [aCoder encodeConditionalObject:_delegate forKey:CPTabViewDelegateKey];
00576 }
00577
00578 @end
00579
00580
00581 var _CPTabLabelsViewBackgroundColor = nil,
00582 _CPTabLabelsViewInsideMargin = 10.0,
00583 _CPTabLabelsViewOutsideMargin = 15.0;
00584
00585
00586 @implementation _CPTabLabelsView : CPView
00587 {
00588 CPTabView _tabView;
00589 CPDictionary _tabLabels;
00590 }
00591
00592 + (void)initialize
00593 {
00594 if (self != [_CPTabLabelsView class])
00595 return;
00596
00597 var bundle = [CPBundle bundleForClass:self];
00598
00599 _CPTabLabelsViewBackgroundColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices:
00600 [
00601 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelsViewLeft.png"] size:CGSizeMake(12.0, 26.0)],
00602 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelsViewCenter.png"] size:CGSizeMake(1.0, 26.0)],
00603 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelsViewRight.png"] size:CGSizeMake(12.0, 26.0)]
00604 ] isVertical:NO]];
00605 }
00606
00607 + (float)height
00608 {
00609 return 26.0;
00610 }
00611
00612 - (id)initWithFrame:(CGRect)aFrame
00613 {
00614 self = [super initWithFrame:aFrame];
00615
00616 if (self)
00617 {
00618 _tabLabels = [];
00619
00620 [self setBackgroundColor:_CPTabLabelsViewBackgroundColor];
00621
00622 [self setFrameSize:CGSizeMake(CGRectGetWidth(aFrame), 26.0)];
00623 }
00624
00625 return self;
00626 }
00627
00628 - (void)setTabView:(CPTabView)aTabView
00629 {
00630 _tabView = aTabView;
00631 }
00632
00633 - (CPTabView)tabView
00634 {
00635 return _tabView;
00636 }
00637
00638 - (void)tabView:(CPTabView)aTabView didAddTabViewItem:(CPTabViewItem)aTabViewItem
00639 {
00640 var label = [[_CPTabLabel alloc] initWithFrame:CGRectMakeZero()];
00641
00642 [label setTabViewItem:aTabViewItem];
00643
00644 _tabLabels.push(label);
00645
00646 [self addSubview:label];
00647
00648 [self layoutSubviews];
00649 }
00650
00651 - (void)tabView:(CPTabView)aTabView didRemoveTabViewItem:(CPTabViewItem)aTabViewItem
00652 {
00653 var index = [aTabView indexOfTabViewItem:aTabViewItem],
00654 label = _tabLabels[index];
00655
00656 [_tabLabels removeObjectAtIndex:index];
00657
00658 [label removeFromSuperview];
00659
00660 [self layoutSubviews];
00661 }
00662
00663 -(void)tabView:(CPTabView)aTabView didChangeStateOfTabViewItem:(CPTabViewItem)aTabViewItem
00664 {
00665 [_tabLabels[[aTabView indexOfTabViewItem:aTabViewItem]] setTabState:[aTabViewItem tabState]];
00666 }
00667
00668 - (CPTabViewItem)representedTabViewItemAtPoint:(CGPoint)aPoint
00669 {
00670 var index = 0,
00671 count = _tabLabels.length;
00672
00673 for (; index < count; ++index)
00674 {
00675 var label = _tabLabels[index];
00676
00677 if (CGRectContainsPoint([label frame], aPoint))
00678 return [label tabViewItem];
00679 }
00680
00681 return nil;
00682 }
00683
00684 - (void)layoutSubviews
00685 {
00686 var index = 0,
00687 count = _tabLabels.length,
00688 width = (_CGRectGetWidth([self bounds]) - (count - 1) * _CPTabLabelsViewInsideMargin - 2 * _CPTabLabelsViewOutsideMargin) / count,
00689 x = _CPTabLabelsViewOutsideMargin;
00690
00691 for (; index < count; ++index)
00692 {
00693 var label = _tabLabels[index],
00694 frame = _CGRectMake(x, 8.0, width, 18.0);
00695
00696 [label setFrame:frame];
00697
00698 x = _CGRectGetMaxX(frame) + _CPTabLabelsViewInsideMargin;
00699 }
00700 }
00701
00702 - (void)setFrameSize:(CGSize)aSize
00703 {
00704 if (CGSizeEqualToSize([self frame].size, aSize))
00705 return;
00706
00707 [super setFrameSize:aSize];
00708
00709 [self layoutSubviews];
00710 }
00711
00712 @end
00713
00714 var _CPTabLabelBackgroundColor = nil,
00715 _CPTabLabelSelectedBackgroundColor = nil;
00716
00717
00718 @implementation _CPTabLabel : CPView
00719 {
00720 CPTabViewItem _tabViewItem;
00721 CPTextField _labelField;
00722 }
00723
00724 + (void)initialize
00725 {
00726 if (self != [_CPTabLabel class])
00727 return;
00728
00729 var bundle = [CPBundle bundleForClass:self];
00730
00731 _CPTabLabelBackgroundColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices:
00732 [
00733 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelBackgroundLeft.png"] size:CGSizeMake(6.0, 18.0)],
00734 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelBackgroundCenter.png"] size:CGSizeMake(1.0, 18.0)],
00735 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelBackgroundRight.png"] size:CGSizeMake(6.0, 18.0)]
00736 ] isVertical:NO]];
00737
00738 _CPTabLabelSelectedBackgroundColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices:
00739 [
00740 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelSelectedLeft.png"] size:CGSizeMake(3.0, 18.0)],
00741 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelSelectedCenter.png"] size:CGSizeMake(1.0, 18.0)],
00742 [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"CPTabView/_CPTabLabelSelectedRight.png"] size:CGSizeMake(3.0, 18.0)]
00743 ] isVertical:NO]];
00744 }
00745
00746 - (id)initWithFrame:(CGRect)aFrame
00747 {
00748 self = [super initWithFrame:aFrame];
00749
00750 if (self)
00751 {
00752 _labelField = [[CPTextField alloc] initWithFrame:CGRectMakeZero()];
00753
00754 [_labelField setAlignment:CPCenterTextAlignment];
00755 [_labelField setFrame:CGRectMake(5.0, 0.0, CGRectGetWidth(aFrame) - 10.0, 20.0)];
00756 [_labelField setAutoresizingMask:CPViewWidthSizable];
00757 [_labelField setFont:[CPFont boldSystemFontOfSize:11.0]];
00758
00759 [self addSubview:_labelField];
00760
00761 [self setTabState:CPBackgroundTab];
00762 }
00763
00764 return self;
00765 }
00766
00767 - (void)setTabState:(CPTabState)aTabState
00768 {
00769 [self setBackgroundColor:aTabState == CPSelectedTab ? _CPTabLabelSelectedBackgroundColor : _CPTabLabelBackgroundColor];
00770 }
00771
00772 - (void)setTabViewItem:(CPTabViewItem)aTabViewItem
00773 {
00774 _tabViewItem = aTabViewItem;
00775
00776 [self update];
00777 }
00778
00779 - (CPTabViewItem)tabViewItem
00780 {
00781 return _tabViewItem;
00782 }
00783
00784 - (void)update
00785 {
00786 [_labelField setStringValue:[_tabViewItem label]];
00787 }
00788
00789 @end