И ещё кое-что про документ.

Джеф Раскин в 1984 году представил компьютер Canon Cat, и ряд идей, среди которых былавот такая:
> -- Цитата:
> Отказ от разбиения задач по приложениям.Пользователь должен работать в едином интерфейсе. Это дело системы — решать, какой модуль подключать в тот или иной момент. Так, например, если пользователь печатает на компьютере текст, значит, необходимо подключать модуль со словарем и функции текстового процессора, а если чуть дальше пользователь пишет формулу — уже нужен вычислительный модуль.
В своей книге "Интерфейс" Раскин болеедетально описал эти вещи:> -- Цитата:
> Программное обеспечение вместо того, чтобы состоять из операционной системы и набора приложений, рассматривается человекоориентированным интерфейсом как набор команд, некоторые из которых являются трансформаторами, автоматически вызываемыми в тех случаях, когда тип данных, предусмотренных командой, не соответствует типу данных выбранного объекта. При этом может быть вызвано более одного трансформатора. Предположим, что с помощью одного трансформатора производится конвертация из А в В, а с помощью другого — из B в С. Если команда предусматривает обработку данных типа С, а данные выборки представляют собой тип А, то перед выполнением команды должны быть запущены два трансформатора. Если необходимых трансформаторов не имеется, никаких изменений с выборкой не производится. Пользователю при необходимости выдается специальное сообщение, а выборка остается без изменений.
А теперь смотрим, что делается у Вирта, "Проект Оберон":> -- Цитата:
> Важной целью разработки системы Оберон была расширяемость. Это простота наращивания системы новыми средствами путем добавления модулей, которые могут использовать уже существующие ресурсы. Это (что так же важно) и сокращение системы до тех необходимых средств, которые в настоящее время и на самом деле используются. Например, редактору документов, работающему с документами без рисунков, не нужно загружать обширный графический редактор рабочей станции, работающей автономно, не нужно загружать обширное сетевое программное обеспечение, а офисной системе не нужны ни компилятор, ни ассемблер.
Не знаю, пересекались ли Вирт с Раскиным в конце 80-х, но мыслят они "на одной волне". И, конечно, поведение меню и команд в Блэкбоксе очень сильно напоминает то, о чём писал Раскин. Короче, мы в Блэкбоксе имеем две важных вещи, этоДокументиКоманда. Многие команды исполняются для текущего фокуса (выделения). Это приводит нас к документации Блэкбокса по модулю Controllers:> -- Цитата:
> Сообщение диспетчера - это сообщение, которое посылается вдоль  в иерархии отображений - пути фокуса. Каждое отображение на таком пути само решает, когда оно является терминалом этого пути, то есть, текущим фокусом, или когда сообщение следует переслать одному из внедренных отображений. BlackBox поддерживает два пути фокуса, называемых целевым и передним фокусом. Оба пути могут слиться в один. Целевой путь указывает, какое отображение является целью команд в диалогах. Передний путь указывает, какое отображение редактируется, с помощью мыши, клавиатуры или меню.
Отсюда становится понятно, почему в объект Окна Windows.Window агрегирован только один-единственный объект Документа Documents.Document и почему дерево фреймов Окна начинается только с одного, корневого фрейма. Сигналы от пользователя попадают только в один документ, именно тот, с которым пользователь работает. Внутри этого документа есть Фокус, с которым может работать какая-нибудь Команда. Поскольку мы ведём речь очеловеко-ориентированном интерфейсе, то это означает, что человек не способен одновременно работать с несколькими Командами. Именно поэтому фокус один и дерево фреймов растёт из одного корня (чтобы человек посылал сигналы только в локус своего внимания). И это обстоятельство необходимо учитывать при разработке оконной системы.

P.S. Речь идёт об идеях 1980-х годов. А что нам из этого принесло развитие веба в XXI веке? Форматированные странички? Вебдванольные приложения? Облачный офис? По-моему, предложенный Раскиным подход к человекоориентированному интерфейсу до сих пор не реализован в полной мере.