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