Дискретное и непрерывное выделение

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

В некоторых случаях данные представлены в виде отдельных визуаль' ных объектов, каждым из которых можно манипулировать независи' мо от остальных. Пиктограммы на рабочем столе и векторные объекты в графических приложениях представляют собой как раз такие дан' ные. Выделяются эти объекты обычно независимо от того, как они со' относятся друг с другом в пространстве. Они представляют собой дис- кретные данные, и их выделение также дискретно. Дискретные дан' ные не обязательно однородны, и дискретное выделение не обязатель' но является непрерывным.

С другой стороны, некоторые приложения представляют свои данные в виде матрицы, состоящей из большого количества непрерывных фрагментов данных. Текст в текстовом редакторе или ячейки элек' тронной таблицы состоят из сотен и тысяч схожих небольших объек' тов, образующих единое целое. Эти объекты часто выделяются смеж' ными группами, и мы называем их непрерывными данными, а соот' ветствующее выделение – непрерывным.

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

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

как случайное, несвязное выделение в общем случае лишено смысла. Хотя теоретически возможно разрешить дискретное выделение, на' пример выделение нескольких абзацев, разбросанных по тексту, их визуализация и необходимость защититься от непреднамеренных не' желательных операций над ними породят проблем больше, чем прине' сут пользы.

С другой стороны, у дискретных данных нет присущего им порядка. И хотя дискретные объекты можно упорядочить многими различны' ми осмысленными способами (скажем, файлы можно отсортировать по дате их изменения), отсутствие сквозного внутреннего связующего признака означает, что пользователи, вероятно, захотят выполнять дискретное выделение (например, удерживая клавишу <Ctrl>, вразно' бой выбирать файлы из списка). Разумеется, пользователям может по' надобиться и непрерывное выделение по тому или иному организую' щему признаку (например, выбор старых файлов из конца списка, упорядоченного по времени). Полезность обоих подходов особенно оче' видна в приложениях для работы с векторной графикой (Illustrator или PowerPoint). В одних случаях пользователю требуется выполнить непрерывное выделение объектов, расположенных рядом, в других нужно выделить лишь один объект.

Взаимное исключение

Обычно при выделении предыдущее выделение снимается. Такое по' ведение называется взаимным исключением, поскольку одно выделе' ние исключает другое. Как правило, пользователь щелкает по объек' ту, тот становится выделенным и остается таковым, пока пользова' тель не выделит что'нибудь еще. Взаимное исключение – правило как для дискретного, так и для непрерывного выделения.

Некоторые приложения позволяют снять выделение с объекта повтор' ным щелчком по нему. Это может привести к курьезной ситуации, ко' гда ничего не выделено и при этом отсутствует точка ввода. Вы сами должны решить, приемлема ли подобная ситуация в вашем продукте.

Кумулятивное выделение

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




А вот в дискретном выделении от взаимного исключения можно отка' заться. Пользователь может выделить несколько независимых объек' тов, последовательно щелкая по ним. Это называется кумулятивным выделением. Например, список позволяет пользователю выделить столько элементов, сколько потребуется. Чтобы снять выделение с объ' екта, следует щелкнуть по нему еще раз. После того как все нужные объекты выделены, по завершающему глаголу выполняется действие над ними.

В большинстве систем с дискретным выделением по умолчанию реали' зовано взаимное исключение, а кумулятивное выделение можно вы' полнить только с помощью служебной клавиши. В Windows для не' прерывного выделения применяется в основном клавиша <Shift>, тогда как <Ctrl> применяется для дискретного выделения. Например, в гра' фических редакторах, щелкнув по объекту и выделив его, можно доба' вить к выделению еще один объект. Для этого необходимо щелкнуть по нему, удерживая нажатой клавишу <Shift>.

Интерфейсы, поддерживающие непрерывное выделение, в общем слу' чае не должны допускать кумулятивное выделение (либо обязаны пре' доставлять средство обзора, делающее кумулятивное выделение управляемым), однако должны позволять расширять существующее выделение. Для этих целей, опять же, применяются служебные кла' виши. В редакторе Word можно выделить фрагмент текста, если уста' новить курсор в начальную точку, а затем, удерживая клавишу <Shift>, щелкнуть в конечной точке.

В некоторых списках, а также в Проводнике системы Windows (в обо' их примерах данные дискретны) кумулятивное выделение выглядит несколько странно. Для выполнения «нормального» дискретного вы' деления задействуется клавиша <Ctrl>, но затем для расширения выде' ления используется <Shift>, словно это не дискретные, а непрерывные данные. В большинстве случаев такой выбор сбивает пользователя с толку, поскольку конфликтует с общепринятой идиомой дискретно' го кумулятивного выделения.

Групповое выделение

Операция щелчок'перетаскивание также является основой для груп' пового выделения. В случае непрерывных данных она приводит к рас' ширению выделения от точки, где пользователь нажал кнопку мыши, до точки, где он ее отпустил. Эта операция тоже может быть модифи' цирована служебными клавишами. Например, в редакторе Word щел' чок при нажатой клавише <Ctrl> выделяет целое предложение, так что перетаскивание при нажатой клавише <Ctrl> расширяет выделение предложениями. Монопольные приложения должны обогащать взаи' модействие такими вариантами выделения, когда это уместно. Опыт' ные пользователи в конце концов запоминают и применяют такие приемы, если они достаточно просты в исполнении.

В случае набора дискретных объектов щелчок и перетаскивание обыч' но означают перемещение объекта. Однако если щелкнуть в области между объектами, а не по какому'то конкретному объекту, такой щел' чок будет иметь специальный смысл – он создаст рамку выделения, изображенную на рис. 19.5.

 
  Дискретное и непрерывное выделение - student2.ru

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

Эта идиома знакома пользователям всех графических и многих текстовых редакторов. Пример на этом рисунке взят из Проводника. Рамка была протянута из левого верхнего угла вправо вниз

Рамка выделения динамически изменяет свой размер; ее верхний ле' вый угол находится в точке, где пользователь нажал на кнопку мыши, а правый нижний – в точке, где он отпустил кнопку. Когда пользова' тель отпускает кнопку мыши, все объекты, захваченные рамкой, вы' деляются как единая группа.

Вставка и замещение

Как мы установили, выделение показывает, какими объектами будет оперировать выполняемая далее функция. Если выполнение этой функции приводит к созданию или вставке новых объектов или данных (посредством клавиатурных сокращений или команды Вставить), эти но' вые объекты или данные каким'то образом добавляются к выделен' ным. При дискретном выделении, когда выделен один или несколько объектов, поступающие данные передаются выделенным объектам, ко' торые обрабатывают их соответствующим образом. Это может привести к замещению, при котором новые данные заменяют собой выделенный объект. В других случаях выделенный объект может воспринимать по' ступающие данные как входную информацию для некоторой заданной функции. Например, в PowerPoint, если выделена фигура, ввод с кла' виатуры означает создание текстовой аннотации к этой фигуре.

В то же время в непрерывном выделении поступающие данные всегда замещают выделенные. Когда вы набираете текст в редакторе или в поле ввода, вводимый текст заменяет выделенный. Непрерывное вы' деление обладает уникальной особенностью: оно может просто указы'

вать на место между двумя элементами непрерывных данных, а не на какой'то конкретный элемент. Это место называется точкой вставки.

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

В электронных таблицах также применяется непрерывное выделение, но реализовано оно немного иначе, чем в текстовых редакторах. Выде' ление является непрерывным, поскольку ячейки таблицы образуют матрицу данных, однако понятие места между двумя ячейками отсутст' вует. Один щелчок выделяет одну ячейку целиком. В настоящее время понятие точки вставки для электронной таблицы отсутствует, однако открывающиеся здесь для проектировщика интерфейса возможности весьма интересны (например, выделив горизонтальную линию между ячейками, пользователь мог бы начать ввод с клавиатуры, что приводи' ло бы к созданию новой строки и заполнению ячейки за одну операцию).

Вполне возможна комбинация этих двух идиом. Так, сортировщик слайдов1 в PowerPoint позволяет выделять как точку вставки, так и от' дельный слайд. Щелчок по слайду выделяет его, а щелчок между слай' дами приводит к появлению между ними мигающего знака вставки.

Если программа поддерживает точку вставки, объекты должны выде' ляться щелчком с перетаскиванием. Чтобы выделить хотя бы один символ в текстовом редакторе, пользователь должен протащить указа' тель мыши по этому символу. В результате пользователь выполняет много щелчков и операций перетаскивания в процессе нормальной ра' боты с программой. Побочный эффект этого – затрудняется передача любой идиомы перетаскивания. Это легко увидеть на примере редак' тора Word, где перетаскивание текста включает в себя первоначаль' ный щелчок и перетаскивание указателя мыши для выделения фраг' мента, перемещение указателя мыши внутрь выделенного фрагмента и последующий щелчок с перетаскиванием фрагмента на новое место. Чтобы выполнить аналогичную операцию в Excel, вам предстоит сна' чала найти специальную активную область (один'два пиксела шири' ной) на границе выделенной ячейки. Для перемещения дискретного выделения пользователь щелкает по объекту и перетаскивает его еди' ным движением. Чтобы облегчить бремя перетаскивания при выделе' нии, в текстовых редакторах часто предусмотрены альтернативные пути непосредственного манипулирования, например двойной щел' чок, выделяющий целое слово.

 
  Дискретное и непрерывное выделение - student2.ru

1 Представление документа, вызываемое в PowerPoint командой Сортировщик слайдов меню Вид.– Примеч. ред.


Наши рекомендации