Любой basis.ui.Node может выбран (selected), если это не переопределено (например, свойством selectable). По умолчанию это состояние не синхронизируется с другими. Для того чтобы состояние синхронизировать с другими узлами используется экземпляр класса basis.dom.wrapper.Selection (наследник basis.data.Dataset). Этот экземпляр задается некоторому узлу свойством selection, и он создает контекст выделения (contextSelection) для дочерних узлов. Этот же контекст задают дочерние узлы для своих дочерних узлов, если у них не указан свой Selection.

Selection — это набор, в котором хранятся выбранные узлы. У него есть режимы: он может быть одиночным, т.е содержать всегда максимум только один узел, или множественным, т.е содержать сразу несколько узлов. Режимом управляет булево свойство multiple, по умолчанию оно false (одиночный режим).

В качестве значения для selection может быть задан как экземпляр basis.dom.wrapper.Selection, так и конфиг для него. Если не нужно задавать особых свойств можно передать пустой объект или значение true.

Можно явно добавлять узлы в selection и удалять из него, используя методы набора add, remove, set, clear. Или же использовать методы самих узлов: метод select для выбора узла и метод unselect для снятия выделения.

Метод select принимает булево значение в качестве единственного аргумента, которое определяет как должно добавление в selection. Если оно false, то перед добавлением узла в набор, он очищается. В противном случае этого не происходит. Если вызов метода select осуществляет на пользовательское действие, то второй аргумент будет true, если пользователь удерживает клавишу ctrl или command. Этот аргумент имеет значение только при множественном выделении.