更新履歴
広告
PRサイト
関連サイト

ツールバーのデリゲートとしてメッセージを処理する


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];
}


ページの先頭へ戻る