Как работают панели инструментов

NSToolbar и NSToolbarItem классы предоставляют Вам стандартный способ вывести на экран панель инструментов для названного окна ниже его строки заголовка. Эти классы также предоставляют пользователям стандартный способ настроить панели инструментов и сохранить те настройки. Это - то, на что похожа панель инструментов:

  Панель инструментов Figure 1 Example
Example toolbar

Для создания панели инструментов необходимо создать делегата, предоставляющего важную информацию:

При создании NSToolbar Вы даете ему идентификатор. NSToolbar предполагает, что все панели инструментов с тем же идентификатором являются тем же, и автоматически синхронизирует изменения. Например, возьмите почтовое приложение. Ваше приложение сочиняет, панели инструментов окон имели бы ту же строку идентификатора. Так, когда Вы переупорядочиваете элементы на одной панели инструментов, изменения автоматически распространяют любому другому, сочиняют, окна в настоящее время открываются.

Большинство панелей инструментов будет содержать простые активируемые по щелчку элементы то действие кнопки Мне нравится. Самый простой элемент панели инструментов определяется его значком, меткой, метка палитры (используемый в настроить листе), цель, действие и подсказка. Большинство панелей инструментов может быть представлено с помощью этих простых элементов. При необходимости в чем-то более сложном на панели инструментов вызвать setView: на элементе панели инструментов для обеспечения пользовательского представления. Например, Вы могли создать элемент панели инструментов, содержащий всплывающее меню или текстовое поле и кнопку.

Существует несколько стандартных идентификаторов элемента панели инструментов, о которых знает NSToolbar. NSToolbarSeparatorItemIdentifier стандартный вертикальный разделитель строки. NSToolbarSpaceItemIdentifier фиксированное пространство ширины. NSToolbarFlexibleSpaceItemIdentifier пространство переменной ширины. Кроме того, существуют NSToolbarShowColorsItemIdentifier, NSToolbarShowFontsItemIdentifier, NSToolbarPrintItemIdentifier, и NSToolbarCustomizeToolbarItemIdentifier. Эти элементы доступны только идентификатором.

Если необходимо изменить действие, отправленное стандартным товаром, запишите a toolbarWillAddItem: метод уведомления.

Когда пользователь настраивает панель инструментов окна приложения, та настройка сохраняется как пользовательская настройка. Когда приложение запускается вместо набора по умолчанию элементов панели инструментов, указанных разработчиком, специализированная панель инструментов используется после того.

Конфигурации панели инструментов

Существуют виды панелей инструментов, и существуют отдельные объекты панели инструментов. Своего рода панель инструментов представлена строкой, названной идентификатором панели инструментов. При создании NSToolbar, Вы предоставляете идентификатор панели инструментов, таким образом, Ваш делегат панели инструментов будет знать, что новый экземпляр должен быть того вида. Например, рассмотрите Почтовое заявление, имеющее два вида окон, сообщения и Почтового ящика. Каждому нужен его собственный вид панели инструментов: одно подходящее для просмотра сообщения и одного подходящего для перечисления сообщений в почтовом ящике. Для реализации этого пользовательского интерфейса приложение имеет два идентификатора панели инструментов, "Message", и "Mailbox". Каждое окно сообщения имеет свой собственный отличный объект панели инструментов, но все объекты панели инструментов окна сообщения имеют тот же идентификатор: "Message". При изменении панели инструментов на окне (или через пользовательский интерфейс, или программно) Вы изменяете конфигурацию панели инструментов такой панели инструментов, не только того экземпляра. Так, при настройке панели инструментов на одном окне сообщения новая конфигурация автоматически распространяет на панели инструментов на всех других окнах сообщения, в настоящее время открываются. Если панель инструментов будет скрыта в каком-либо окне сообщения, то это останется скрытым, но когда это будет показано снова, это похоже на другие своего вида.

Идентификатор панели инструментов фиксируется при создании объекта, но можно изменить другие атрибуты его с setAllowsUserCustomization:, setAutosavesConfiguration:, и setDisplayMode:.

Элементы панели инструментов

Каждый элемент в NSToolbar является экземпляром NSToolbarItem. Видимые части элемента панели инструментов являются его содержанием, его текстовой меткой и ее представлением формы меню.

Содержание элемента панели инструментов является или NSImage или NSView. Элемент, содержание которого является NSImage, вызывают элементом изображения. Элемент, содержание которого является NSView, вызывают элементом представления. Поле поиска, показанное на рисунке 1, является элементом представления, другие - элементы изображения.

Печать является стандартным товаром, предоставленным NSToolbar. Другие элементы являются пользовательскими элементами, предоставленными этим приложением. Синий текст является элементом пользовательского изображения. Стиль шрифта и Размер шрифта являются пользовательскими элементами представления.

В два различных раза используется представление меню: когда панель инструментов выведена на экран с помощью меток только и когда окно является слишком маленьким для показа полной панели инструментов, и некоторые элементы выведены на экран в меню переполнения.

NSWindow и панель инструментов

NSWindow имеет много методов для поддержки NSToolbar: методы toolbar и setToolbar: для присоединения панели инструментов на окно; toggleToolbarShown: метод является действием для пункта меню Hide Toolbar / Show Toolbar; runToolbarCustomizationPalette: метод действия для пункта меню Customize Toolbar.

Интерфейсный Разработчик предопределяет меню View приложения с пунктами меню Show Toolbar и Customize Toolbar и подключает эти элементы с toggleToolbarShown: и runToolbarCustomizationPalette: через Первого Респондента. NSWindow проверяет и пункты меню панели инструментов и переключается, заголовок прежнего пункта меню между “Показывают, что Панель инструментов” и “Скрывает Панель инструментов” для соответствия реальному положению панели инструментов.