Багатовіконний однодокументний інтерфейс. Модальні вікна

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é, при виконанні якої вікна певної програми оптимально групуються на робочому просторі екрану.