ツールバーのデリゲートとしてメッセージを処理する
identifierに対応するNSToolbarItemを返す
ツールバーからtoolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:メッセージを受け取ったら、itemIdentifierに応じたNSToolbarItemを返します。辞書に登録する際にitemIdentifierとキーを一致させておいたので、itemIdentifierをキーとしてオブジェクトを探し、それを返せばOKです。
ToolbarController.m
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar
itemForItemIdentifier:(NSString *)itemIdentifier
willBeInsertedIntoToolbar:(BOOL)flag
{
return [toolbarItems objectForKey:itemIdentifier];
}
デフォルトでツールバーに表示する項目を返す
デフォルトでツールバーに表示する項目のidentifierをNSArrayに入れて返します。ユーザによるカスタマイズをサポートしていないので(そもそもカスタマイズするほど項目がありません)、ここで返した項目が常にツールバーに表示される事になります。
ちなみにNSToolbarSeparatorItemIdentifierは区切り線の事です。
ToolbarController.m
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
{
return [NSArray arrayWithObjects:
@"randomize",@"export",
NSToolbarSeparatorItemIdentifier,
@"pictureWidth",@"pictureHeight",
NSToolbarSeparatorItemIdentifier,
@"editor",nil];
}
カスタマイズしてツールバーに表示する事のできる項目を返す
ユーザがカスタマイズしてツールバーに表示する事のできる全ての項目のidentifierをNSArrayに入れて返します。ユーザによるカスタマイズをサポートしていないので使われないのですが、将来に備えて一応実装しておきます。ちなみにツールバーをカスタマイズしたい場合はNSWindowにrunToolbarCustomizationPalette:メッセージを送ればいい様です。
ToolbarController.m
- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
{
return [NSArray arrayWithObjects:
@"randomize",@"export",
@"pictureWidth",@"pictureHeight",
@"editor",nil];
}
ツールバー項目の有効、無効を切替える
メニュー項目の有効、無効を切替えるのと同じ事がツールバー項目でもできます。ToolbarControllerでは判断できないので、ウィンドウコントローラに下駄を預ける事にします。
ToolbarController.m
- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem
{
return [windowController validateToolbarItem:theItem];
}