Багатовіконний однодокументний інтерфейс. Модальні вікна
MDI
Графічний інтерфейс на основі multiple document interface (або MDI) - являє собою вікна, розташовані під одним загальним вікном (як правило, за винятком модальних вікон), на відміну від вікон, розташованих окремо один від одного (SDI). Скорочення MDI зазвичай не розшифровується. Запитання: який тип інтерфейсу переважний - MDI або SDI - часто стає предметом обговорень в співтоваристві розробників і користувачів програмного забезпечення. Очевидно, що SDI більш зручний при роботі з декількома додатками різних типів. Розробники широко використовують обидва типи інтерфейсу, а часто і інтерфейс змішаного типу. Наприклад, Microsoft міняла інтерфейс Microsoft Office від SDI до MDI, а потім повернулася назад до SDI, хоча ступінь реалізації включає і перше, і друге.
Серед недоліків MDI часто вказували відсутність наочної інформації про відкритих вікнах, для перегляду поточного списку відкритих вікон в додатку користувачеві було необхідно вибрати в меню пункт «відкриті вікна / window list», або подібний йому. Останнім часом в додатках стали з'являтися панелі завдань і вкладки для відображення відкритих вікон в MDI. Такий тип інтерфейсу іноді називають: «Tabbed document interface» (TDI), хоча фактично це різновид MDI, після поширення якої критиків помітно поменшало.
Майже всі конструктори і редактори додатків на сьогоднішній день надають принаймні одне рішення для створення MDI-інтерфейсу. Так, наприклад, в бібліотеці для створення графічного інтерфейсу на мові Java, під назвою Swing, тобто клас javax.swing.JDesktopPane, який створює контейнери для окремих фреймів (клас javax.swing.JInternalFrame). В іншому популярному наборі елементів інтерфейсу - GTK + - такої можливості немає.
Переваги
В інтерфейсі типу MDI (як і в TDI) загальна панель меню і панель інструментів для всіх дочірніх вікон, що зменшує захаращеність екрану елементами інтерфейсу та збільшує його корисну площу.
Всі вікна програми можна ховати / показувати, згортати / розгортати і проводити з ними інші маніпуляції, як з одним вікном.
Дочірні вікна можна розміщувати «черепицею» або «каскадом» в головному вікні.
Збільшення швидкості і економія пам'яті при роботі в одному вікні, швидкість перемикання між дочірніми вікнами також вище, ніж між рівноправними в середовищі операційної системи.
У деяких додатках передбачені «гарячі комбінації клавіш» для швидкої навігації, зокрема, для перемикання між вікнами. Це ще більше підвищує швидкість і зручність роботи з додатком, так як не задіюються додаткові ресурси операційної системи.
Логічне рішення, якщо вікна - частини одного проекту.
Недоліки
Скрутно (найчастіше, неможливо) виводити вміст різних дочірніх вікон на різні монітори.
Також неможливо виводити їх вміст на різні віртуальні робочі столи.
MDI може утруднити паралельну роботу з різними додатками, так як перемикання між зовнішніми вікнами різних програм і дочірніми вікнами однієї незручно.
Плаваючі панелі інструментів одного додатка можуть перекривати робоче вікно іншого, загороджуючи огляд, а іноді і збиваючи користувача з пантелику - яка панель до якому додатку ставиться.
Користувачеві потрібно звикати до обох типів інтерфейсу, так як введення MDI не скасовує повністю використання SDI, який закладений в більшості операційних систем.
Багато віконні системи (3D Desktop, Exposé) дозволяють з комфортом перемикатися між програмами. Подібне перемикання між вікнами документів, як правило, не працює.
Хаос на «робочому столі» програми, коли відкрито одночасно декілька документів.
SDI
Single document interface (або SDI) - спосіб організації графічного інтерфейсу додатків в окремих вікнах. Не існує «фонового» або «батьківського» вікна, що містить меню або панелі інструментів, по відношенню до активного - кожне вікно несе в собі ці елементи. Такі додатки, що дозволяють редагувати більше одного документа одночасно, наприклад, текстові процесори, можуть створювати в користувача враження, що запущена не одна копія програми, а декілька.
Зазвичай, кожне з вікон відображається окремо на панелі задач операційної системи, іноді панель завдань дозволяє групувати записи про вікна, що належать одній програмі. Наприклад, в операційній системі Mac OS X передбачена функція Exposé, при виконанні якої вікна певної програми оптимально групуються на робочому просторі екрану.