Подсветка, указание и выделение
Подсветка (highlighting) означает, что с помощью каких-либо средств отображенному на экране объекту придается заметное отличие. Функция подсветки заключается в том, чтобы пользователь мог, пассивно наблюдая изображение на экране, определить, что некоторый объект получил от системы особый статус. Семантика этого статуса зависит от типа объекта и от команд, которые пользователь может применить к данному объекту. Для зрячих пользователей выделение обычно визуально. В качестве визуальных методов выделения может использоваться обращение яркости, изменение цвета или контраста, подчеркивание, мигание или любое другое периодическое изменение, добавление к объекту статичной или анимированной рамки. В качестве не визуальных методов выделения может использоваться набор разных голосов или изменение интонации.
Когда пользователь наводит курсор на какие-то объекты, они должны быть подсвечены. Типичным объектом в текстах является символ. Подсветка единичного объекта при перемещении курсора без каких-то других действий со стороны пользователя (как, например, нажатие на кнопку мыши) является указанием (indication). С помощью указания пользователь может в любой момент знать, на какие объекты он указывает с точки зрения системы. В очень многих современных системах пользователь должен догадываться о том, что будет выделено или активировано при нажатии на кнопку ГУВ. Если догадка неверна, пользователю придется сделать другую попытку, что приводит к потере времени и сил. Указание может быть особенно полезным, когда объекты, которые пользователь хочет выделить, имеют небольшие размеры или расположены близко друг к другу, или перекрывают друг друга, или их границы неясны. Указание необходимо в тех случаях, когда интерфейс разработан в соответствии с принципом видимости.
Подсвечивание, используемое для указания, не должно быть слишком контрастным или ярким, чтобы движение курсора не вызывало раздражение. В некоторых случаях полезно, чтобы указание объектов не происходило, если скорость перемещения курсора превышает определенное пороговое значение.
Следует обратить внимание на то, что чем меньше объект (т.е. чем меньше визуальный угол указанного объекта), тем больший контраст должен использоваться для его указания— однако это вопрос эргономический.
Указание недостаточно используется в современных системах. Активное использование указания в разработке интерфейса позволяет существенно сократить количество щелчков мышью в сравнении с современными интерфейсами. По сути дела, указание часто может заменить клик мышью, и вместо двойного щелчка можно делать только один, как при выборе ссылки в броузере. Допустим, что пользователь хочет убрать неактивное окно с экрана. В каждом окне имеется кнопка Закрыть. Для этого как в операционной системе Windows, так в Macintosh пользователь должен сначала щелкнуть по окну, чтобы сделать его активным, и только потом нажать на кнопку Закрыть. Этот лишний щелчок, который делается для активизации того окна, которое пользователь, на самом деле, хочет закрыть, вызывает особое раздражение. Но если бы окно можно было активизировать всего лишь перемещением к нему курсора, то для закрытия окна одного нажатия на кнопку мыши было бы достаточно. Конечно, если вы разработаете систему, в которой активизация происходит только в определенных местах или при определенных условиях, то тем самым вы создадите модальное противоречие, которое будет только сбивать пользователей с толку. Активизация должна происходить системно. Поскольку такой подход становится более известным, спрос на него со стороны пользователей увеличит его распространение.
Выделение (selecting) — это процесс, с помощью которого пользователь указывает, что один или несколько объектов имеют особый статус, который может быть воспринят системой. Как результат процесса получается выборка
(selection). Обычно пользователь делает выборку с целью применения к ней в ближайшем времени команды. В отличие от менее постоянного указания, выделение, обозначающее выборку, является более устойчивым и сохраняется, даже если пользователь отведет курсор в сторону.
Пользователь может выделить объект, щелкнув по кнопке ГУВ, указывающего на него. Кроме того, пользователь может сделать выделение расположенных рядом объектов с помощью вырисовывания прямоугольника или другой фигуры, при этом все объекты, которые окажутся в области фигуры, будут выбраны. Другим удобным способом отбора является создание многоугольника или произвольной фигуры. В этом случае все объекты, оказавшиеся внутри фигуры, будут выбраны после того, как пользователь замкнет ее границу. После того как выбор сделан, предыдущая выборка должна стать старой выборкой (old selection). (В большинстве современных систем старая выборка просто-напросто отменяется (deselect).) Этот процесс может быть многократно повторен, поэтому пользователь может создать дополнительно к первой старой выборке вторую старую выборку, третью и т.д. — вплоть до n-й старой выборки. У математика здесь, скорее всего, возникнет желание назвать текущую выборку нулевой старой выборкой. Выделение, с помощью которого обозначается выборка, должно быть более заметным и отличаться от того, которое используется для указания. Выделенные старые выборки также должны хорошо отличаться друг от друга — возможно, с уменьшением визуального контраста для более старых выборок. Для легкого распознавания старых выборок они могут иметь буквенно-цифровые обозначения.
Выборка может включать как отдельный объект на экране, так и геометрическую область, или же быть составной из различных выборок. В большинстве современных интерфейсов пользователь делает составные выборки — в том числе и разрывные — из набора отдельных выборок, для чего необходимо сделать начальную выборку. Затем, как правило, пользователь может нажать клавишу <Shift> и, удерживая ее и находясь, таким образом, в квазирежиме, щелкнуть по другим объектам, чтобы присоединить их к общей выборке или отсоединить их от нее.
Однако этот способ имеет три недостатка. Во-первых, команда для создания составных выборок является невидимой.
Во-вторых, при создании большой составной выборки легко допустить ошибку (например, если пользователь случайно отпустит клавишу <Shift> и щелкнет по следующему объекту, вся сложная выборка, которая была создана к этому моменту, будет потеряна). В-третьих, механизм используется как «переключатель»: один и тот же жест служит как для отмены выделения (если объект был уже выделен), так и для установки выделения (если объект был не выделен). Первая проблема заключается в отсутствии видимости и может быть легко решена с помощью, например, экранной подсказки. Вторая проблема заключается в том, что при составлении выборки имеется большой риск совершения ошибки. Более удобный способ создания сложных выборок состоит в наличии специальной команды, с помощью которой текущая выборка определяется как объединение старого и текущего выделения. Такая команда позволила бы пользователю сосредоточиться на создании выборки, не заботясь о том, что было выбрано до этого. Только после подтверждения текущего выделения она может быть добавлена к составной выборке. Возможность обращения к старым выборкам и обозначения каждой из них особой подсветкой позволяет применять команды с множеством аргументов, как, например, использование двух аргументов для команды взаимозамены двух выборок. Сравните метод перестановки двух участков текста, который вы используете сейчас, с другим методом: создание двух выборок и затем применение команды перестановки. В большинстве существующих сегодня систем команды Отменить (Undo) и Повторить (Redo) нельзя применить к процессу создания выборок. Это не совсем оправданно, поскольку ошибки при создании выборок случаются довольно часто. Необходимым элементом любого человекоориентированного интерфейса являются универсально применимые команды Отменить и Повторить. Число или уровни допустимой отмены выполненных команд должны ограничиваться только лишь объемом доступной памяти. Команды Отменить и Повторить должны быть всепроникающими и применяться к любой операции, которая логически может быть повторена или отменена.
Также эти команды должны быть обратными друг другу (инверсивными) — опять же в той мере, насколько это логически возможно. Это означает, что выполнение команды Повторить после команды Отменить или выполнение команды Отменить после команды Повторить не должно приводить к изменениям в содержании. Очевидно, что эти команды не должны применяться к самим себе. Операторы Отменить и Повторить являются основополагающими, и их функция настолько важна, что в будущих системах для них должна быть предусмотрена специальная клавиша. Команда Повторить должна назначаться следующим образом: Shift↓Undo↓↑↑. На клавише должны быть ясно обозначены два слова: Отменить (Undo) и Повторить (Redo) (рис. 5.1). Такая клавиша могла бы с большей пользой заменить собой вызывающую много проблем клавишу <Caps Lock>.
Рис. 5.1. Клавиша Отменить/Повторить (Undo/Redo) Что касается третьей проблемы, то в разделе 3.2, посвященном переключателям, я уже говорил, что в челокекоориентированном интерфейсе переключатели вообще не должны использоваться. В данном случае простым решением проблемы могло бы быть использование одной команды или квазирежима для добавления объекта к выборке, а другой команды или квазирежима — для удаления объекта из выборки. При попытке добавить к выборке объект, который там уже имеется, или удалить из выборки объект, которого в ней нет, сама выборка останется неизменной. Интерфейс обычно имеет одну точку, в которой, как предусматривают разработчики, должен проходить процесс взаимодействия между пользователем и системой — точку фокуса. Например, если вы печатаете слепым методом и набираемый вами текст появляется на экране, то место, где появляется текст, является фокусом и часто совпадает с локусом вашего внимания. Если вы не владеете методом слепого набора, то ваш локус внимания будет перемещаться между клавиатурой и дисплеем. В интерфейсах в каждый момент обычно имеется только один курсор. Его позиция определяется с помощью ГУВ, клавиш управления курсором или команд (например, Найти (Find)). Локус внимания всегда находится на каком-то физическом, ментальном или отображаемом объекте.То же самое можно сказать и о системном фокусе. Например, в существующих текстовых процессорах при перемещении курсора внутрь документа (действие, которое само по себе не должно быть необходимым) он может быть расположен между двумя буквами, и, таким образом, может показаться, что никакой объект не является фокусом системы. На самом деле в фокусе находятся две буквы — та, которая слева и может быть удалена командой Delete28, и та, которая справа и где появится следующая введенная буква. Когда процессом взаимодействия управляет человек, в фокусе обычно находится текущая выборка. Если же система отвечает на действие пользователя или внешней системы, в фокусе обычно находится результат действия.