Разделение на уровни окна и типы Windows
Каждое окно помещается в экран определенным приложением, и каждому приложению обычно принадлежит множество окон. Windows имеет многочисленные характеристики. Они могут быть расположены на экране или вне экрана. Экранные окна помещаются в экран на уровнях, которыми управляет сервер окна.
Windows на экране упорядочивается по всей длине. Как листки бумаги, свободно сложенные вместе, окна впереди могут наложиться, или даже полностью покрыть, те позади них. Каждое окно имеет уникальную позицию в порядке. Когда два окна помещаются бок о бок, каждый все еще технически перед другим.
Если какое-либо окно могло бы быть перед каким-либо другим окном, то маленькие но важные окна — как меню и палитры инструментов — могли бы потеряться позади больших. Windows, которые требуют пользовательского действия, как панели внимания и раскрывающиеся списки, мог бы исчезнуть позади другого окна и остаться незамеченным. Для предотвращения этого все окна на экране организованы на уровни.
Когда два окна принадлежат тому же уровню, любой может быть впереди. Когда два окна будут принадлежать разным уровням, однако, тот в более высоком уровне всегда будет выше другого.
Экранные окна могут также перенести состояние: основной или ключевой. Внеэкранные окна скрыты или минимизированы на Прикреплении и не переносят ни одно состояние. Экранные окна, которые не являются ни основными, ни ключевые, неактивны.
Разделение на уровни окна
Каждое окно приложения и окно документа существуют в его собственном уровне, таким образом, могут быть чередованы документы из различных приложений. При щелчке по окну для выявления это не нарушает порядок разделения на уровни никакого другого окна.
Глубина окна в уровнях определяется тем, когда к окну в последний раз получили доступ. Когда пользователь щелкает по неактивному документу или выбирает его из Меню окна, только тот документ и любые открытые служебные окна, должны быть выявлены. Пользователи могут перенести на следующий период все окна приложения путем щелчка по его значку в Прикреплении или путем выбора Bring All to Front в Меню окна приложения. Эти действия должны перенести на следующий период все открытые окна приложения, поддержав их экранное расположение, размер, и разделив порядок на уровни в приложении. Для получения дополнительной информации см. Инструкции по Элементу UI: Меню в Инструкциях по Интерфейсу пользователя OS X.
Служебные окна всегда находятся в том же уровне: верхний слой. Они видимы только, когда их приложение активно.
Ключевые и главные окна
Windows имеет различные взгляды на основе того, как пользователь взаимодействует с ними. Передовой документ или окно приложения, которое является фокусом внимания пользователя, упоминаются как главное окно. Каждое приложение также имеет только одно главное окно в установленный срок. Это главное окно часто имеет ключевое состояние, также. Главное окно является главным фокусом пользовательских действий для приложения. Часто, пользовательские действия в модальном ключевом окне (обычно панель, такие как окно Font или окно Info) оказывают прямое влияние на главное окно.
Основные и ключевые окна являются оба активными окнами. Активные окна визуально отличны от неактивных окон в этом, их средства управления имеют цвет, в то время как средства управления в неактивных окнах не имеют цвета. Неактивные окна являются окнами, которые пользователь имеет открытый, но которые не находятся на переднем плане. Основные и ключевые окна всегда находятся на переднем плане, и их средства управления всегда имеют цвет. Если основное и ключевое окно является различными окнами, их отличает от друг друга вид их строк заголовка. Отметьте визуальные различия между основными, ключевыми, и неактивными окнами на рисунке 1.
Хороший пример различия между ключевыми и главными окнами может быть замечен в большинстве приложений Mac хорошего поведения. Выбор «Save As...» в текстовом документе, например, выводит на экран панель с полем для введения имени документа и выпадающего меню расположений для сохранения его. Панель представляет ключевое окно. Это примет Ваш ввод с клавиатуры (имя файла), но будет непосредственно влиять на главное окно под ним (путем сохранения его к расположению, которое Вы указали). Как только Вы сохраняете документ, панель сохранения исчезает, главное окно становится ключевым снова и примет ввод с клавиатуры еще раз.
Ключевое окно
Ключевое окно реагирует на ввод данных пользователем, является ли с клавиатуры, мыши или альтернативных устройств ввода данных, для приложения и основным получателем сообщений из меню и панелей. Обычно, окно сделано ключевым, когда пользователь щелкает по нему. Каждое приложение может иметь только одно ключевое окно в установленный срок.
Пользователи ожидают видеть, что их действия с клавиатурой и мышью вступают в силу не только в определенном приложении, но также и в определенном окне того приложения. Каждое пользовательское действие связано с окном сервером окна и AppKit. Перед действием должен знать пользователь, какое окно будет затронуто; не должно быть никаких неожиданностей.
Так как мышь управляет указателем, для пользователя довольно просто определить, с каким окном действие мыши связано. Это - любое окно, указатель закончен. Но клавиатура не имеет указателя, таким образом, нет никакого естественного способа определить, где появятся введенные символы.
Для маркировки ключевого окна для пользователей AppKit выделяет свою строку заголовка. Можно думать о выделении как своего рода указатель для клавиатуры. Это смещается от окна до окна, когда изменяется ключевое окно. Состояние ключевого окна также перемещается от приложения до приложения, когда изменяется активное приложение. Только одно окно на экране отмечено за один раз, и это находится в активном приложении. На Рабочем столе существует всего одно ключевое окно. Даже система, имеющая два экрана, но только одна клавиатура, имеет самое большее одно ключевое окно.
Так как ключевое окно принадлежит активному приложению, его выделенная строка заголовка имеет побочный эффект помощи показать, какое приложение в настоящее время активно. Ключевое окно является наиболее заметно отмеченным окном в активном приложении, делая его «ключевым» во втором смысле: это - основной фокус внимания пользователя на экран.
Главное окно
Главное окно является стандартным окном, где в настоящее время работает пользователь. Главное окно является не всегда ключевым окном. Существуют времена, когда окно кроме главного окна берет фокус устройства ввода данных, в то время как главное окно все еще остается фокусом внимания пользователя и пользовательских действий, выполненных в панелях и меню. Например, когда лицо использует инспектора, диалоговое окно Находки или окна Fonts или Colors, документ является главным окном, и другое окно является ключевым окном. Панель Find требует, чтобы пользователь предоставил информацию путем ввода его. Так как панель является местом назначения нажатий клавиш пользователя, она отмечена как ключевое окно. Но панель является просто инструментом, через который пользователи могут выполнить работу в другом окне — главное окно. В основанном на документе приложении главное окно является окном для текущего документа.
Каждый раз, когда стандартное окно становится ключевым окном, это также становится главным окном. Когда сдвиги состояния ключевого окна от стандартного окна до панели, состояние главного окна остается со стандартным окном.
Так, чтобы пользователи могли выбрать главное окно, когда это не ключевое окно, Набор Приложения выделяет свою строку заголовка и окрашивает кнопки окна. Если главное окно является также ключевым окном, оно имеет только выделение ключевого окна. Команда меню могла бы влиять или на ключевое окно или на главное окно, в зависимости от команды. Например, команда Paste может использоваться для введения текста в панели Find. Но команда Save сохраняет документ, выведенный на экран в главном окне, и команда Bold поворачивает текущий выбор в полужирном главном окне. Поэтому пользовательские действия в панели или меню связаны и с ключевым окном и с главным окном:
Действие сначала связано с ключевым окном.
Если ключевое окно является панелью, и оно не может обработать действие, действие затем связано с главным окном.
Обратите внимание на то, что этот порядок очередности отражается в способе, которым выделяются окна: ключевое окно всегда отмечается, но главное окно отмечено только, когда это не ключевое окно. Главное окно всегда находится в том же приложении как ключевое окно, активное приложение.
Изменение состояния окна
Windows, которые являются уже экранными автоматически, изменяет их состояние как ключевое или главное окно на основе действий пользователя с мышью и о том, как представления, по которым щелкают, обрабатывают те события от нажатия мыши. Можно также установить ключевые и главные окна программно путем отправки соответствующих окон a makeKeyWindow
или makeMainWindow
сообщение. Установка ключевых и главных окон программно особенно полезна при создании нового окна. Поскольку создание ключа окна часто объединяется с упорядочиванием окна к передней стороне экрана, NSWindow
класс определяет удобный метод, makeKeyAndOrderFront:
, это выполняет обе операции.
Не все окна подходят как ключевые или главные окна. Например, окно, просто выводящее на экран информацию и не содержащее объектов, которые должны реагировать на события или сообщения действия, может полностью воздержаться от когда-либо становления ключевым окном. Точно так же окно, действующее как плавающая палитра элементов, только вытащенных действиями мыши, никогда не должно быть ключевым окном. Такое окно может быть определено как подкласс NSWindow
это переопределяет методы canBecomeKeyWindow
и canBecomeMainWindow
возвратиться NO
вместо значения по умолчанию YES
. Определение окна этот путь предотвращает его от когда-либо становления ключевым или главным окном. Несмотря на то, что NSWindow
класс определяет эти методы, только подклассы NSPanel
обычно отказывайтесь принимать состояние ключевого или главного окна.