Визуальная обратная связь процесса перетаскивания
Как уже говорилось, интерфейс должен визуально намекать на отзыв' чивость – либо статически, своим внешним видом, либо активно, реа' гируя на проходящий по нему курсор средствами анимации. Идея, что объекты можно перетаскивать, легко усваивается идиоматически. Единожды изучив поведение приложения, пользователь уже не забу' дет, что пиктограмма, выделенный текст или иной объект допускают непосредственное манипулирование. Однако он может забыть детали, и поэтому очень важно обеспечить обратную связь после начала пере' таскивания. Новичку или пользователю, редко применяющему эту операцию, иногда требуется также дополнительная помощь (напри' мер, в виде текстовых подсказок, встроенных в интерфейс). Всепро' щающие взаимодействия и функция отмены вдохновляют пользовате' лей бесстрашно экспериментировать с идиомами непосредственного взаимодействия.
Как только пользователь щелкает кнопкой мыши по объекту, этот объект становится источником на всё время операции перетаскива' ния. Пока пользователь перемещает мышь, удерживая кнопку, кур' сор может проходить над множеством разнообразных объектов. Следу' ет ясно давать понять, какие из этих объектов представляют собой ос' мысленные цели перетаскивания. Пока кнопка не отпущена, такие объекты являются потенциальными целями. В операции перетаски' вания может быть только один источник и одна цель, но потенциаль' ных целей может быть множество.
Единственная задача любой потенциальной цели состоит в визуальной индикации того факта, что горячая точка указателя мыши находится на ней. В свою очередь, это означает, что потенциальная цель примет к обработке объект'источник (или хотя бы адекватно отреагирует), если пользователь отпустит кнопку мыши. Подобная индикация по приро' де своей является активной визуальной подсказкой.
Потенциальные цели должны визуально демонстрировать свою готовность принимать объекты.
Самым ненадежным способом визуальной индикации готовности к об' работке объекта'источника является изменение внешнего вида курсо' ра. Первоочередная задача курсора – представлять перетаскиваемый объект, поэтому индикацию готовности принять объект'источник луч' ше оставить потенциальной цели.
Курсор при перетаскивании должен визуально ассоцииро- ваться с объектом-источником.
Важно избегать путаницы в отношении этих двух визуальных функ' ций. К сожалению, Microsoft допускает такую путаницу в Windows: здесь курсор почему'то используется для индикации объектов, кото' рые не являются потенциальными целями. Такое решение, по'види' мому, было принято для облегчения написания кода приложений, а не из каких'то соображений проектирования. Гораздо проще изменить форму курсора, чем сделать так, чтобы потенциальные цели отобража' ли свою готовность принять объект. Однако задача указателя мыши – представлять объект'источник, а не потенциальную цель.
Будто нарочно пытаясь окончательно запутать ситуацию, Microsoft ис' пользует курсорную индикацию посредством зловещего перечеркнуто' го кружка – универсальное обозначение запрета. Данный символ – не' приятная идиома, поскольку напоминает пользователям о том, чего они не могут делать. Это негативная обратная связь. Пользователь лег' ко может истолковать этот знак как «Не отпускайте кнопку мыши, иначе случится нечто непоправимое» вместо «Если вы отпустите кноп' ку мыши, ничего не произойдет». Сочетание знака запрета с неумест' ной курсорной подсказкой – неудачная комбинация двух слабых иди' ом; ее следует избегать, что бы ни писала по этому поводу компания Microsoft в своих руководствах по стилю.
Когда пользователь в конце концов отпустит кнопку мыши, текущая потенциальная цель становится целью. Если же пользователь отпус' тит кнопку где'то между потенциальными целями или на недопусти' мой потенциальной цели, то никакой цели не будет и операция пере' таскивания закончится безрезультатно. Отсутствие звукового сигнала или визуальной активности будет удачной индикацией такого завер' шения операции. Это не отмена операции, поэтому нет надобности вы' водить индикатор отмены.