Оптимальный интерфейс

advertisement
Оптимальный интерфейс
Ставится задача разработать универсальную методику разрабатывать интерфейс к
объектной модели.
Предположим, мы умеем отличать «встроенные» объекты от внешних.
Таким образом, объект представляется набором свойств скалярного либо векторного типа
(возможностью матричных индексаторов пренебрегаем).
Для каждого типа свойства у нас зарегистрирован соответствующий визуальный редактор,
т.е. компонент.
Теперь возникает задача оптимально расположить эти редакторы в ограниченном
пространстве.
Пространство комбинаций
Идея в том, чтобы уложить набор редакторов в дерево. Узлами этого дерева являются
визуальные контейнеры, а листьями – редакторы. Контейнеры могут быть следующими:
- набор закладок. Отнимает площадь под закладки (чем больше страниц – тем сильнее), но
«укладывает» свое содержимое «один под другим»
- горизонтальный набор редакторов
- вертикальное деление на группы
- горизонтальное деление на колонки
Стоит рассмотреть возможность повторного размещения редактора свойства в этом
дереве.
Критерии оптимальности
Удобство интерфейса определяется количеством избыточной навигации. Для каждого
варианта дерева можно посчитать попарное «расстояние» между любыми двумя
свойствами, при этом учитываются
- нажатия Tab
- клики
- скроллинг
Пока неясно, как именно учитывать альтернативную навигацию – например, если брать
минимум, то наличие комбинации клавиш, привязанной к редактору свойства, сделает
дистанцию до него из любого места равной 1.
Если у нас есть статистика переходов между свойствами (матрица N*N), то ее можно
использовать для «взвешивания» попарных расстояний и минимизировать функцию Opt =
sum(Dist[i, j]*Freq[i, j]).
В отсутствие статистики переходов можно попытаться
а) оптимизировать дерево, исходя из равноправия переходов. Проблема: очевидно,
появится множество вариантов с одинаковой стоимостью.
б) ввести категории свойств, и считать, что переходы чаще всего делаются внутри
категории.
Download