
- •1.1. Інтерфейс користувача: міст між людиною і комп'ютером
- •1.2. Основні принципи розробки користувальницького інтерфейсу
- •2.1. Життєвий цикл програмного продукту
- •2.2. Етапи проектування користувальницького інтерфейсу
- •3.1. Особливості графічного інтерфейсу
- •3.4. Взаємодія користувача з додатком
- •3.5. Загальні правила взаємодії з об'єктами
- •4. Вибрати команду Всщавить.
- •3.6.2. Операції створення нових об'єктів
- •4.1. Проектування піктограм
- •4.2.2. Основні операції з вікнами
- •93 Ніяке інше вікно не повинне стати активним перш, ніж користувач завершить переміщення даного вікна. 11еремегцение вікна має на увазі його активізацію.
- •4.2.5. Вибір моделі вікна
- •4.3.2. Панелі властивостей і контролю параметрів
- •4.3.3. Діалогові панелі
- •4.3.4. Інші типи вторинних вікон
- •5.2.3. Прапорці
- •5.3.1. Список одиничного вибору
- •5.3.4. Список, що модифікується
- •5.3.5. Дерево, що модифікується
- •5.4.1. Текстові поля
- •5.4.4. Комбінований список, що випадає
- •5.6.2. Заголовки стовпців
- •5.6.3. Етикетка вкладки
- •5.6.4. Смуги прокручування
- •5.6.8. Колекції
- •5.6.9. Область повідомлень
- •5.7. Вибір візуальних атрибутів відображуваної інформації
- •5.7.1. Композиція й організація
- •5.7.3. Шрифт
- •5.7.4. "Багатомірність" екрана
- •5.7.6. Візуалізація виконуваних операцій
- •5.8. Три випадки з життя guі
- •6.1. Вікно повідомлення
- •6.2.2. Спливаюча підказка
- •6.3. Проблемно-орієнтована допомога
- •6.5. Майстра
- •6.6. Засобу навчання користувача
- •Глава 7
- •7.3. Користувальницький інтерфейс систем реального часу
- •8.3. Засобу розробки web-документів
- •Глава 9
4. Вибрати команду Всщавить.
Команда Вирізувати видаляє обраний об'єкт і поміщає його (чи посилання на нього) у буфер обміну. Команда Копіювати створює копію обраного об'єкта (чи посилання на нього) і поміщає її в буфер обміну.
При використанні команди Вставити за замовчуванням передбачається, що пере-сылаемый об'єкт збереже усі властивості оригіналу. Однак може бути использова-на й альтернативна форма цієї команди для реалізації інших видів пересилання:
Уставити [<ім'я типу>] як [<ім'я типу> |в <ім'я об'єкта>\. Наприклад, можливий такий варіант команди:
Уставити {Осередок} як [ Слово} (передбачається, що Осередок і Слово є конвертованими типами).
Нижче приведені загальні формати команди Вставити (табл. 3.10).
Таб.ч і на .3.10. Формати команди Вставити
Формат команди Функція
Уставити (Paste) Вставляє об'єкт, що міститься в буфері обміну, зберігаючи усі властивості його оригіналу
Уставити[ім'я типу] (Paste [type name]) Вставляє об'єкт, що міститься в буфері обміну, як вкладений об'єкт OLE; такий об'єкт може бути активізований безпосередньо в позиції вставки.
Таблиця 3.10 продовження
Уставити[ім'я типу] як піктограму (Paste [type name] as Іcon) Вставляє об'єкт, що міститься в буфері обміну, як вкладений об'єкт OLE; об'єкт відображається як піктограма.
Уставити Посилання (Paste Lіnk) Створює посилання на об'єкт, що був скопійований у буфер обміну; ушивку вставки міститься копія вмісту об'єкта, що володіє всіма його властивостями, однак при цьому сохранаяется зв'язок з оригіналом, так що будь-яка його зміна приводить до зміни копії
Уставити Посилання на [ім'я об'єкта] (Paste Lіnk to [Object name]) Поміщає в крапку вставки зображення об'єкта, ко-торый був скопійований у буфер обміну, використовуючи технологію OLE; будь-які зміни вихідного об'єкта відбиваються на його копії
Уставити ярлик (Paste Shortcut) Поміщає в крапку вставки ярлик об'єкта, що був скопійований у буфер обміну, використовуючи технологію OLE; будь-які зміни вихідного об'єкта відбиваються на його копії
Спеціальна Вставка (Paste Specіal) Відображає на екрані спеціальне діалогове вікно, що дозволяє користувачу вибрати спосіб вставки об'єкта, що міститься в буфері обміну
Рис. 3.8. Вставка об'єкта як вкладеного об'єкта OLE
69
Нижче приведені малюнки, що пояснюють використання форматів команди Вста-вить, описаних у пунктах 2...5 табл. 3.10.
Рис.
3.9. Вставка об'єкта як вкладеного об'єкта
OLE; об'єкт буде відображений у виді
піктограми.
Рис. 3.10. Створюється посилання на об'єкт, що був скопійований у буфер обміну; у крапку вставки міститься копія вмісту об'єкта
Рис. 3.11. Створюється посилання на об'єкт, що був скопійований у буфер обміну; у крапку вставки міститься піктограма об'єкта
При виборі формату команди Вставити необхідно в першу чергу учиты-вать властивості приймача; для підвищення гнучкості роботи користувача йому може бути надана можливість коректування параметрів команди в зави-симости від ососбенностей об'єкта, що пересилається, і сутності приймача.
Практика показує, що для більшості додатків виявляється достатнім спільне використання стандартної команди Вставити і Спеціальної вставки.
Оскільки виконання операцій пересилання може привести до різних по-бочным ефектам, нижче описані деякі загальні сценарії поводження додатка при їхній реалізації.
o Якщо користувач виконує пересилання в приймач, для якого необходи
мо враховувати конкретну позицію вставки, варто замінити обраний об'єкт у
приймачі переданими даними. Наприклад, якщо виконується вставка в текст
(де положення обраного фрагмента відповідає позиції вставки), пересыла
емый об'єкт заміняє поточний вибір. Якщо ж у тексті-приймачі вибір не був
зроблений, крапка вставки визначається поточним положенням курсору.
o Для приймачів, де немає явної крапки вставки, варто помістити вставляе
мый об'єкт у крапку, обумовлену поточним контекстом, і відобразити його як выб
ранный. Як контекстну інформацію можна, наприклад, враховувати пози
цию покажчика миші, або ознака, по якому упорядковані в приймачі
наявні об'єкти (скажемо, за алфавітом).
71
o Якщо новий об'єкт автоматично зв'язується з поточним вибором у приймачі (наприклад, табличні дані і їхній графік, що відображає,), доцільно додати новий об'єкт до поточного вибору.
Виконання команди Вставити не повинне впливати на вміст буфера обме-на. Це дозволяє неодноразово повторно використовувати дані, що знаходяться в бу-фере. Разом з тим, необхідно пам'ятати, що наступне виконання команд чи Копіювати Вирізувати приводить до заміни вмісту буфера обміну.
МЕТОД ПРЯМОГО МАНІПУЛЮВАННЯ
Командний метод ефективний у тих випадках, коли операція пересилання жадає від користувача соответстсвующего керування джерелом і приймачем. Проте , при виконанні багатьох операцій пересилання пряме маніпулювання ока-зывается більш природним і швидким методом. При використанні прямого ма-нипулирования користувач вибирає і перетаскує об'єкт у бажану позицію, але оскільки цей метод вимагає визначених моторних навичок, варто уникати його використання як єдиний метод пересилання. У найбільш розвитих інтерфейсах підтримуються обидва методи: командний - для виконання основних операцій пересилання, а пряме маніпулювання - як прискорена техніка роботи користувача.
Пряме маніпулювання може застосовуватися для будь-якого візуального об'єкта. При цьому об'єкт, що як пересилається, так і приймач (наприклад, чи вікно піктограма) не обов'язково должены бути до дійсного часу активні. Наприклад, користувач може помістити об'єкт у неактивне вікно й у результаті виконання цієї операції воно автоматично буде активізовано. Якщо неактивний об'єкт не допускає пересилання за допомогою прямого маніпулювання, користувач повинний бути сповіщений про це за допомогою відповідної зворотного зв'язку.
Яким образом переданий об'єкт інтегрується і відображається в приймачі, визначається контекстом приймача. Раніше уже відзначалося, що результатом пере-сылки може бути як точна копія оригіналу, так і окремі його чи компоненти властивості, або перетворений об'єкт. Наприклад, додаток може містити засобу для копіювання властивостей об'єктів конкретного типу.
Стандартна реалізація техніки drag-and-drop
Стандартна реалізація техніки drag-and-drop заснована на використанні лівої кнопки миші. Як саме буде проінтерпретовано додатком перетаскування об'єкта, залежить від властивостей приймача і від того, яка операція пересилання використовується в якості визначеної. Як і у випадку командного методу, результат операції визначається також властивостями переміщуваного об'єкта (зокрема , переліком дозволених форматів об'єкта). Не рекомендується использо-
вать як визначену операцію таку, роторая може привести до уда-лению пли необоротної зміни об'єкта. Якщо ж необхідність застосування однієї з таких операцій обумовлена поточною ситуацією, варто вивести на екран повідомлення користувачу з проханням підтвердити наміру.
Використовуючи техніку >Загальний формат нестандартних кому
техніку drag-and-drop, користувач може безпосередньо пере-сылать об'єкти як між вікнами додатка, так і між вікнами системних ресурсів, такими, наприклад, як папки і принтери.
Найчастіше як визначену операцію для drag-and-drop ис-пользуется операція Перемістити (Move), але замість її може бути визначена будь-яка інша операція пересилання, наприклад чи Копіювати Зв'язати, чи навіть спеціалізована операція пересилання, така, наприклад, як До-бенкетувати Властивості.
Нестандартна реалізація техніки drag-and-drop
В основі нестандартної реалізації техніки drag-and-drop лежить використання правої кнопки миші. Особливість даного підходу полягає в наступному. Коли користувач клацає ПКМ на об'єкті-приймачі (чи на позиції, куди пересилається об'єкт), замість виконання визначеної операції відкривається спливаюче меню для об'єкта-приймача (на мал. 3.12 - для нової позиції). Це меню містить набір команд пересилання, дозволених для даної позиції, але з урахуванням особливостей об'єкта, що підлягає пересиланню.
Рнс. 3.12. Пересилання об'єкта при нестандартній реалізації техніки drag-and-drop
Той факт, що команди спливаючого меню відносяться до приймача, а не до пере-сылаемому об'єкта, повинний враховуватися й у назвах цих команд. Зокрема , якщо пересилається вміст об'єкта (дані), такими командами можуть бути: Перемістити сюди (Move Here), Копіювати сюди (Сміттю Млості). Якщо ж приймач підтримує пересилання тільки окремих компонентів об'єкта, чи вимагає його перетворення, назви команд повинні відбивати цю особливість приймача (наприклад, Копіювати властивості сюди).
Нестандартні команди пересилання
Команда Функція
Перемістити сюди (Move Here) Пересилає в зазначену позицію вміст обраного об'єкта (як дані)
Копіювати сюди (Сміттю Млості) Створює в зазначеній позиції копію вмісту обраного об'єкта
Створити зв'язок із приймачем (Lіnk Here) Створює канал зв'язку між обраним об'єктом і позицією-приймачем; вміст обраного об'єкта додається (можливо, після преобра-зования) до вмісту приймача, але сохраня-ется зв'язок із джерелом, так що вироблені в ньому зміни відбиваються в позкции-приемнике
Перемістити [ім'я типу] сюди (Move [type name] Here) чи Копіювати [ім'я типу] сюди (Copy [type name] Here) чи Переміщає копіює обраний об'єкт як об'єкт OLE, що відображається у своєму вихідному представленні і може бути активізований безпосередньо в позиції-приймачі
Створити для [ім'я типу] Зв'язок із приймачем (Lіnk [type name] Here) Створює зв'язаний об'єкт OLE, відображуваний у приймачі як зображення обраного об'єкта. Копія зв'язується з вихідним об'єктом таким чином, що будь-які зміни у вихідному об'єкті відбиваються позиції-приймачі
Перемістити [ім'я типу] сюди як піктограму (Move [type name] Here) as ton чи Копіювати [ім'я типу] сюди як піктограму (Copy [type name] Here) as ton чи Переміщає копіює обраний об'єкт як об'єкт OLE у зазначену позицію і відображає його як піктограму
Створити тут ярлик (Create Shortcut Here) Створює об'єкт OLE, зв'язаний з обраним об'єктом; новий об'єкт відображається як ярлик; будь-які зміни вихідного об'єкта відбиваються в позиції-приймачі
74
Якщо користувач, почавши перетаскувати об'єкт, повертає його у вихідну позицію, це варто інтерпретувати як скасування операції пересилання. Той же ефект забезпечує натискання користувачем клавіші <Esc> протягом виконання операції пересилання. Крім того, доцільно включити команду Скасувати в спливаюче меню, використовуване при нестандартній техніці пересилання.
Оскільки при виконанні операцій пересилання сполучається вибір об'єкта і його переміщення, необхідно установити угоду, що дозволяє користувачу розрізняти ці операції. Використовуване вашим додатком угода залежить від властивостей об'єктів додатка; у деяких випадках можуть бути передбачені різні засоби взаємодії користувача з об'єктом при виконанні вибору і пересилання. Найбільш загальний підхід заснований на тім, що ознакою виконуваної операції є вихідна позиція покажчика миші. Якщо покажчик розташований у межах існуючого вибору, то до обраного об'єкта застосовується операція пересилання; якщо ж у момент натискання Л КМ покажчик знаходиться поза областю вибору, те його наступне переміщення інтерпретується як операція вибору.
ОСОБЛИВОСТІ РЕАЛІЗАЦІЇ ПРОКРУЧУВАННЯ ПРИ ВИКОНАННІ ОПЕРАЦІЙ ПЕРЕСИЛАННЯ
Коли користувач перетаскує об'єкт усередині якої-небудь переміщуваної області (такий як чи вікно список) в іншу позицію, це може привести до того, що об'єкт виявиться за межами видимості. У цьому випадку доцільно використовувати можливість автоматичного прокручування області (яка відома також як автоскроллинг).
Разом з тим, при виконанні операцій пересилання шляхом прямого маніпулювання користувачу необхідно "витягти" об'єкт з одного вікна і помістити в інше. При цьому автоскроллинг не тільки не потрібний, він просто перешкодить користувачу виконати необхідну операцію.
Щоб розрізняти дві ці ситуації, можна аналізувати швидкість переміщення об'єкта. Наприклад, якщо користувач тягне об'єкт повільно до краю переміщуваної області, використовується автоскроллинг; якщо ж об'єкт переміщається швидко, виконується операція пересилання.
Для реалізації зазначеного підходу потрібно запам'ятати позицію покажчика в
початковий момент переміщення миші і потім реєструвати його положення че
рез рівні проміжки часу ( інтервал, щорекомендується - 100 миллисекунд).
Якщо ж додаток підтримує пересилання на основі OLE, то виміри через
рівні промежутки часу будуть некоректні. У цьому випадку варто запам'ятовувати
кожне нове положення покажчика в спеціальному масиві, досить великому,
щоб зберігати три останніх значення, заміняючи саме старе з них поточним. При
обчисленні швидкості покажчика використовуються координати принаймні двох
останніх його позицій. >
Щоб розрахувати швидкість переміщення, необхідно обчислити відстань між сусідніми позиціями покажчика і розділити його на величину інтервалу часу між моментами реєстрації. Відстань обчислюється як модуль різниці між координатами х и у двох сусідніх позицій:
R-(abs(x1-x2)+abs(y1-y2)).
Отримане значення варто помножити на 1024 і розділити на інтервал часу. Множник 1024 запобігає втраті точності, викликану целочисленным розподілом.
Читач, знайомий зі шкільним курсом геометрії, ймовірно може заперечити, що щире Декартово відстань визначається як квадратний корінь суми квадратів разностей координат: sqrt((x1-х2) Л2 + (у1 - у2) А2). Однак додаткові витрати часу на обчислення по цій формулі порівнянні з часом переміщення покажчика в- сусідню позицію, що і змушує використовувати замість її приведене вище вираження.
Варто також визначити гарячу зону автоскроллинга уздовж границь переміщуваної області і величину затримки прокручування. Як правило, ширина Гарячої зони встановлюється рівній подвоєній ширині вертикальної смуги чи прокручування подвоєній висоті горизонтальної смуги прокручування.
Отже, автоматичне прокручування повинне виконуватися при одночасному дотриманні трьох умов (мал. 3.13):
o у процесі переміщення об'єкта покажчик виявився в гарячій зоні вікна;
o швидкість переміщення об'єкта нижче визначеної (граничної) швидкості;
o видима область вікна може бути переміщена у відповідному напрямку.
Гранична швидкість, що рекомендується - 20 пикселей у секунду.
Величина прокручування залежить від типу переміщуваної інформації і припустимої відстані прокручування. Наприклад, при роботі з текстом вертикальне прокручування звичайно виконується построчно. Доцільно також погодити дискретність автоскроллянга з дискретністю переміщення, що передбачена для смуг прокручування.
Щоб забезпечити безупинне прокручування, необхідно виконати наступні дії. По-перше, вибрати частоту прокручування, наприклад, чотири рядки в секунду. По-друге, після початку автоскроллинга варто установити таймер на визначений інтервал (наприклад, на 100 миллисекунд). Коли встановлений інтервал мине, визначите величину прокручування за цей час. Якщо інтенсивність прокручування перевищує задану частоту, перемістите видиму область ще на один крок. Якщо ні, відновите таймер і повторите описану послідовність дій при наступній ініціалізації автоскроллинга.
o ? ? " " .
ЗВОРОТНИЙ ЗВ'ЯЗОК ПРИ ВИКОНАННІ ОПЕРАЦІЙ ПЕРЕСИЛАННЯ
Оскільки пересилання об'єктів є одним з найбільш розповсюджених дій користувача, наявність відповідної зворотного зв'язку є важливим показником якості інтерфейсу створюваного додатка.
Реалізація зворотного зв'язку при пересиланні на основі команд
Якщо при пересиланні об'єкта користувач вибирає команду Вирізувати, варто візуально видалити обраний об'єкт. Якщо в силу яких-небудь причин це недоцільно, можна відобразити обраний об'єкт спеціальним образом, щоб повідомити користувачу, що команда Вирізувати виконана, але пересилання об'єкта ще не закінчений.
\ Необхідно також відновлювати візуальний стан об'єкта, якщо користувач вибирає команду чи Вирізувати Копіювати для іншого об'єкта перш, ніж виконати команду Вставити для спочатку обраного об'єкта.
Команда Копіювати не вимагає спеціального зворотного зв'язку. Виконання команди Вставити також не вимагає ніякого додаткового зворотного зв'язку, крім як відображення переданого об'єкта в новій позиції. Проте , якщо при виконанні команди Вирізувати образ об'єкта у вихідній позиції був не вилучений, а замінений альтернативним представленням, необхідно його тепер "остаточно" видалити.
Реалізація зворотного зв'язку при прямому маніпулюванні
При переміщенні об'єкта в нову позицію за допомогою миші варто забезпечити користувача візуальним представленням виконуваної операції на всьому її протязі. При цьому варто звернути особливу увагу на наступні моменти:
77
o Об'єкт повинний відображатися як обраний увесь час, поки на ньому установлений
фокус уведення. Щоб указати, що об'єкт знаходиться в стані пересилання, для його зображення можуть бути використані відповідні візуальні ознаки. Наприклад, для візуалізації операції переміщення може бути використане системне контурне зображення об'єкта. Візуальний образ об'єкта у вихідній позиції варто зберігати доти , поки користувач не завершить операцію пересилання.
Зображення об'єкта, переміщуване разом з покажчиком, повинне бути "прозорим" і не заслоняти позицію вставки, як показано на мал. 3.14.
Рис. 3.14. Можливі способи представлення переміщуваних об'єктів
o Образ об'єкта у вихідній позиції повинний зберігатися незмінним до закінчення операції пересилання; разом з тим, його переміщуване зображення може змінюватися в залежності від типу виконуваної операції. Наприклад, якщо об'єкт буде вставлений як піктограма, те приперемещении покажчика на позицію вставки образобъекта повинний бути замінений його nHKToqіaMMoіі. Якщо об'єкт буде включена як година вмісту приймача, то представлення об'єкта повинне відбити це. Наприклад,
якщо об'єкт, що вставляється в документ, буде включений як таблиця, він може бытьпредставлен у виді прозорого силуету таблиці. І навпаки, якщо вихідний об'єкт -таблиця, але при вставці перетвориться в текст, відобразите його як умовне зображення тексту, наприклад, як прозорий силует декількох перших слів.
o Форма покажчика також повинна відповідати типу об'єкта- (позиції-)
приймача. Наприклад, якщо об'єкт, що перетаскується, повинний бути вставлений у текст
(безпосередньо між символами), відобразите покажчик у виді стандартного
текстового курсору, використовуваного при редагуванні тексту.
а) 6) в)
Рис. 3.15. Зображення покажчика: а) переміщення б) копіювання в) створення посилання
78
Крім того, доцільно доповнити зображення покажчика спеціальним символом, що пояснює зміст виконуваної операції пересилання; цей символ відображається біля правого нижнього кута покажчика, як показано на мал. 3.15, Символ "плюс" (+) використовується при виконанні операцій копіювання, а зображення стрілки - для операцій створення посилань.
o
Використовуйте візуальний зворотний
зв'язок, щоб указати приступність
потенційних приймачів. Вона може бути
реалізована па основі стандартних
засобів виділення вибору, а також
додаткових засобів, у тому числі анімації.
Якщо ж приймач недоступний для об'єкта,
що пересилається, на це можна вказати
за допомогою спеціального покажчика,
що нагадує за формою дорожній знак, що
замкнеться, (мал. 3.16.)
Рис. 3.16. Покажчик, що інформує про неприступність приймача
СПЕЦІАЛЬНІ КОМАНДИ ПЕРЕСИЛАННЯ
При виконанні деяких завдань визначена комбінація операцій пересилання може використовуватися настільки часто, що її зручніше замінити відповідною додатковою спеціалізованою командою. Прикладом такої комбінації є дублювання існуючого об'єкта, виконуване за допомогою двох операцій - Копіювати і Вставити. Замість них може бути використана спеціальна команда Дублювати. Нижче приведені деякі найбільш розповсюджені спеціалізовані команди пересилання (табл. 3.12).
Табл і на 3.12. Спеціалізовані команди пересилання
Команда Функція
Видалити (Delete) Видаляє об'єкт з утримуючого його контейнера. Якщо об'єкт- файл, то він пересилається в Кошик
Очистити (Clear) Видаляє вміст контейнера
Дублювати (Duplіcate) Створює одну копію обраного об'єкта
Печатка (Prіnt) Друкує обраний об'єкт на принтері, исполь-зуемом за замовчуванням
Відправити (Send To) Відображає список можливих напрямків пере-сылки обраного об'єкта і пересилає його відповідно до вибору користувача
79
І la перший погляд, команди Видалити й Очистити дають той самий ефект. Проте , кожна з них дійсно більш коректно працює по своєму прямому призначенню: Увалити - при видаленні одного (обраного) об'єкта, а Очистити - при очищенні контейнера.
АКСЕЛЕРАТОР^-КЛАВІШІ-АКСЕЛЕРАТОРИ ДЛЯ ОПЕРАЦІЙ ПЕРЕСИЛАННЯ
Перераховані нижче комбінації клавіш забезпечують прискорений доступ до операцій пересилання (табл. 3.13).
Таблиця 3.1.3. Акселератор^-клавіші-акселератори для операцій пересилання
Комбінація клавіш Функція
CTRL+X Виконує команду Вирізувати
CTRL-H: Виконує команду Копіювати
CTRL+V Виконує команду Вставити
CTRL-переміщення об'єкта > Заміняє визначену операцію пересилання опе-рацией Копіювати (якщо приймач її підтримує); мо-дификатор може використовуватися з будь-якою кнопкою миші
ESC Скасовує виконання операції пересилання (якщо вона ще не закінчена)
Через широке застосування приведених комбінацій клавіш для усього ин-терфейса, не рекомендується використовувати їх в інших цілях.