66 int _visibilityPriority;
82 - (id)initWithItemIdentifier:(
CPString)anItemIdentifier
88 _itemIdentifier = anItemIdentifier;
93 _minSize = CGSizeMakeZero();
94 _maxSize = CGSizeMakeZero();
109 return _itemIdentifier;
148 return _paletteLabel;
157 _paletteLabel = aPaletteLabel;
167 if ([_view respondsToSelector:
@selector(toolTip)])
168 return [_view toolTip];
179 if ([_view respondsToSelector:
@selector(setToolTip:)])
180 [_view setToolTip:aToolTip];
190 if ([_view respondsToSelector:
@selector(
tag)])
200 - (void)setTag:(
int)aTag
202 if ([_view respondsToSelector:
@selector(setTag:)])
214 return [_view respondsToSelector:@selector(target)] ? [_view target] : nil;
224 - (void)setTarget:(
id)aTarget
229 else if ([_view respondsToSelector:
@selector(setTarget:)])
230 [_view setTarget:aTarget];
239 return [_view respondsToSelector:@selector(action)] ? [_view action] : nil;
248 - (void)setAction:(
SEL)anAction
253 else if ([_view respondsToSelector:
@selector(setAction:)])
254 [_view setAction:anAction];
262 if ([_view respondsToSelector:
@selector(isEnabled)])
263 return [_view isEnabled];
272 - (void)setEnabled:(BOOL)shouldBeEnabled
274 if (_isEnabled === shouldBeEnabled)
277 if ([_view respondsToSelector:
@selector(setEnabled:)])
278 [_view setEnabled:shouldBeEnabled];
280 _isEnabled = shouldBeEnabled;
288 if ([_view respondsToSelector:
@selector(image)])
289 return [_view image];
300 if ([_view respondsToSelector:
@selector(setImage:)])
301 [_view setImage:anImage];
308 if (_minSize.width === 0 && _minSize.height === 0 &&
309 _maxSize.width === 0 && _maxSize.height === 0)
311 var imageSize = [_image size];
313 if (imageSize.width > 0 || imageSize.height > 0)
327 if ([_view respondsToSelector:
@selector(setAlternateImage:)])
328 [_view setAlternateImage:anImage];
330 _alternateImage = anImage;
338 if ([_view respondsToSelector:
@selector(alternateIamge)])
339 return [_view alternateImage];
341 return _alternateImage;
366 if (_tag !== 0 && [_view respondsToSelector:
@selector(setTag:)])
386 - (void)setMinSize:(CGSize)aMinSize
388 if (!aMinSize.height || !aMinSize.width)
391 _minSize = CGSizeMakeCopy(aMinSize);
394 _maxSize = CGSizeMake(MAX(_minSize.width, _maxSize.width), MAX(_minSize.height, _maxSize.height));
409 - (void)setMaxSize:(CGSize)aMaxSize
411 if (!aMaxSize.height || !aMaxSize.width)
414 _maxSize = CGSizeMakeCopy(aMaxSize);
417 _minSize = CGSizeMake(MIN(_minSize.width, _maxSize.width), MIN(_minSize.height, _maxSize.height));
430 - (int)visibilityPriority
432 return _visibilityPriority;
445 - (void)setVisibilityPriority:(
int)aVisibilityPriority
447 _visibilityPriority = aVisibilityPriority;
452 var action = [
self action],
458 if ([target respondsToSelector:
@selector(validateToolbarItem:)])
460 var shouldBeEnabled = [
target validateToolbarItem:self];
461 if (_isEnabled !== shouldBeEnabled)
475 if (target && ![target respondsToSelector:action])
482 target = [CPApp targetForAction:action to:target from:self];
491 if ([target respondsToSelector:
@selector(validateToolbarItem:)])
493 var shouldBeEnabled = [
target validateToolbarItem:self];
494 if (_isEnabled !== shouldBeEnabled)
504 - (BOOL)autovalidates
506 return _autovalidates;
509 - (void)setAutovalidates:(BOOL)shouldAutovalidate
511 _autovalidates = !!shouldAutovalidate;
540 _itemIdentifier = [aCoder decodeObjectForKey:CPToolbarItemItemIdentifierKey];
542 _minSize = [aCoder decodeSizeForKey:CPToolbarItemMinSizeKey];
543 _maxSize = [aCoder decodeSizeForKey:CPToolbarItemMaxSizeKey];
545 [
self setLabel:[aCoder decodeObjectForKey:CPToolbarItemLabelKey]];
546 [
self setPaletteLabel:[aCoder decodeObjectForKey:CPToolbarItemPaletteLabelKey]];
547 [
self setToolTip:[aCoder decodeObjectForKey:CPToolbarItemToolTipKey]];
549 [
self setTag:[aCoder decodeObjectForKey:CPToolbarItemTagKey]];
550 [
self setTarget:[aCoder decodeObjectForKey:CPToolbarItemTargetKey]];
551 [
self setAction:CPSelectorFromString([aCoder decodeObjectForKey:CPToolbarItemActionKey])];
553 [
self setEnabled:[aCoder decodeBoolForKey:CPToolbarItemEnabledKey]];
555 [
self setImage:[aCoder decodeObjectForKey:CPToolbarItemImageKey]];
556 [
self setAlternateImage:[aCoder decodeObjectForKey:CPToolbarItemAlternateImageKey]];
558 [
self setView:[aCoder decodeObjectForKey:CPToolbarItemViewKey]];
561 [
self setAutovalidates:[aCoder decodeBoolForKey:CPToolbarItemAutovalidatesKey]];
569 [aCoder encodeObject:_itemIdentifier forKey:CPToolbarItemItemIdentifierKey];
571 [aCoder encodeObject:[
self label] forKey:CPToolbarItemLabelKey];
572 [aCoder encodeObject:[
self paletteLabel] forKey:CPToolbarItemPaletteLabelKey];
574 [aCoder encodeObject:[
self toolTip] forKey:CPToolbarItemToolTipKey];
576 [aCoder encodeObject:[
self tag] forKey:CPToolbarItemTagKey];
577 [aCoder encodeObject:[
self target]
forKey:CPToolbarItemTargetKey];
578 [aCoder encodeObject:[
self action] forKey:CPToolbarItemActionKey];
580 [aCoder encodeObject:[
self isEnabled] forKey:CPToolbarItemEnabledKey];
582 [aCoder encodeObject:[
self image] forKey:CPToolbarItemImageKey];
583 [aCoder encodeObject:[
self alternateImage] forKey:CPToolbarItemAlternateImageKey];
585 [aCoder encodeObject:[
self view] forKey:CPToolbarItemViewKey];
587 [aCoder encodeSize:[
self minSize] forKey:CPToolbarItemMinSizeKey];
588 [aCoder encodeSize:[
self maxSize] forKey:CPToolbarItemMaxSizeKey];
590 [aCoder encodeObject:[
self visibilityPriority] forKey:CPToolbarItemVisibilityPriorityKey];
591 [aCoder encodeBool:[
self autovalidates] forKey:CPToolbarItemAutovalidatesKey];
600 var copy = [[[
self class] alloc] initWithItemIdentifier:_itemIdentifier];
605 [
copy _setToolbar:_toolbar];
607 [
copy setLabel:_label];
608 [
copy setPaletteLabel:_paletteLabel];
620 [
copy setMinSize:_minSize];
621 [
copy setMaxSize:_maxSize];
638 switch (anItemIdentifier)