Таблицы в интерфейсах
Иногда в интерфейсах нам нужно выводить таблицу каких-нибудь объектов. Всем знакомый пример — Проводник:
Стандартный контрол для вывода таблиц подразумевает возможность сортировки объектов по любой из колонок, причём в двух направлениях. В большинстве случаев в Проводнике мы просто пользуемся сортировкой по алфавиту и не обращаем внимания на то, как выделен выбранный вариант сортировки. Но мы знаем, что если ткнуть в заголовок какой-нибудь другой колонки, то всё пересортируется по ней:
Если ткнуть в уже выбранный столбец, то сортировка изменит направление:
Обратите внимание, что выбранное направление сортировки обозначается стрелочкой сразу после названия. Эта стрелочка на удивление бессмысленна: по ней невозможно понять, как же в действительности отсортированы файлы. Чтобы это понять, нужно смотреть на сами файлы. Почему стрелка в верх означает прямую сортировку по алфавиту, а стрелка вниз обратную — загадка. Мне кажется логичным обозначать наоборот: если файлы расположены сверху вниз (т. е. по алфавиту), то и стрелку рисуем вниз. В случае с сортировкой по атрибутам или ещё какой-нибудь экзотике всё ещё туманнее.
Проблема, конечно же, в том, что такая таблица сделана на универсальном контроле, который должен работать с абсолютно любыми данными. Что можно улучшить?
Во-первых, вообще перестанем считать сортировку по алфавиту сортировкой. Просто файлы так сами по себе идут, если их не сортировать (пользователю нет дела до того, что файлы на диске лежат как попало, да ещё и фрагментированы).
Фон под именами файлов убран — и так понятно, что они идут по алфавиту. На название колонки Имя тыкнуть нельзя — в этом нет никакого смысла. Названия других колонок чуть больше выделяются своей выпуклостью, подсказывая пользователю, что на них можно ткнуть.
Во-вторых, перестанем думать, что для любой сортировки нужно два варианта — снизу вверх и сверху вниз.
Но как определить, для какой сортировки нужно переворачивание? Очень просто. Когда файлы идут по алфавиту, но вверх ногами, у нас есть ощущение, что они идут снизу вверх. Это противоестественно и глупо. Значит, такой сортировки быть не должно. Если же файлы отсортированы по дате, то для нас может иметь и вариант «новые сверху» и вариант «старые сверху» (т. е. в хронологическом порядке). В обоих случаях мы считаем, что файлы идут сверху вниз. Это просто два разных способа сортировки (а то, что они завязаны на одну колонку, — просто техническая деталь), значит, в этом случае возможность переключения нужна.
Теперь заголовок колонки человеческим языком говорит о том, как отсортированы файлы. Он выделен жирным, а сами даты изображены на контрастном фоне, благодаря чему сортировка выделяется как «особое» отображение папки — перейдя вдругую папку, человек не растеряется, обраружив, что на диске C: после папки Windows исчезла папка Work. Повторяющиеся значения выбранного поля приглушаются, чтобы было проще следить за их изменением. Сменить сортировку на «Старые сверху» можно привычным способом.
Естественно, при изменении сортировки файлов, они должны плавно перелетать туда-сюда, меняясь местами, причём так, чтобы файлы, летящие вверх, пролетали над файлами, летящими вниз.
В комментариях предлагаю обсудить, какие ещё возможны улучшения.