- Viewers - класи для інкапсуляції завдань надання даних для відображення, їх фільтрації, сортування і т.п.
- Actions and contributions - вводять семантику опису користувацьких дій і того, як вони повинні бути доступні користувачеві.
- Image and font registries - надають класи для управління ресурсами, такими як зображення і шрифти.
- Dialogs and wizards - фреймворк для побудови складного діалогової взаємодії з користувачем.
- Field assist - надає можливості для реалізації допоміжної функціональності для полів, такий як відображення статусу поля або підказки про вміст.
У першій частині буде розглянуто створення простого вікна з використанням JFace, додавання до нього меню, статусного рядка і панелі інструментів.
Налаштування проекту
Для того, щоб розробляти графічні додатки з використанням JFace в Eclipse, необхідно підключити jar-файли SWT і JFace.- У разі, якщо в Eclipse встановлено PDE, то це можна зробити, вказавши в налаштуваннях проекту використовувати бібліотеку SWT, і поставити галочку для підтримки JFace.
- Якщо ж PDE не встановлено, то необхідно підключити jar-файли до проекту вручну. Знайти їх можна в директорії plugins Екліпса, називаються вони org.eclipse.swt _ *. Jar і org.eclipse.jface _ *. Jar
створення вікна
Вікно додатка в JFace успадковується від класу ApplicationWindow, що надає можливості для створення меню, панелей управління і рядки статусу.
Найпростіший варіант створення вікна наведено в наступному прикладі:
Створення вмісту вікна
Для того, щоб створити якийсь вміст вікна, необхідно перевизначити метод Control createContents (Composite parent) класу ApplicationWindow. Метод повинен повертати компонент, який буде вмістом вікна.
У цьому ж методі можна встановити і заголовок вікна, викликавши метод setText (String text) шелла, доступного за викликом getShell ()
У цьому прикладі таким компонентом буде просто мітка білого кольору, в реальних додатках таким компонентом є який-небудь композит.
Додавання статусного рядка
Додавання до вікна додатка статусного рядка реалізується не просто, а дуже просто. Для цього треба всього-на-всього викликати захищений метод addStatusBar (). Напевно, найбільш підходящим місцем для такого виклику є конструктор вікна, або який-небудь метод його ініціалізації.
Для того, щоб відобразити текст у статусному рядку необхідно викликати метод setStatus (String status), аргументом якого і є та сама рядок, яку необхідно відобразити.
створення меню
Для створення рядка меню в JFace необхідно, викликати метод addMenuBar (), як і для створення рядка статусу.Але потім необхідно додати пункти меню на панель. Здійснюється це таким чином:
- Розділ меню описується класом MenuManager. У конструкторі йому може бути передана рядок - ім'я розділу, де символ "" означає, що наступний за ним символ буде ключем при навігації з допомогою клавіші Alt. Додається розділ меню на панель за допомогою конструкції getMenuBar (). Add (menu).
- Пункт меню описується класом Action. Сам клас є абстрактним, пункт меню повинен бути успадкований від нього і перевизначати метод void run (), в якому розміщується код, що виконується при виборі пункту меню користувачем. Насправді, метод можна і не перевизначати, але тоді, навіщо цей пункт меню потрібен? =) Ім'я пункту може бути задано шляхом передачі в конструктор, або викликом методу void setText (String text). Після створення пункт меню додається в розділ викликом методу add у об'єкта розділу меню. Наприклад: menu.add (menuItem)
- Підміню створюються дуже просто: Необхідно в один розділ меню методом add додати інший розділ. От і все.
У наступному прикладі ми створюємо розділ меню File і один пункт Hello в ньому, вибір якого викликає появу тексту в статусному рядку вікна. Код створення меню я оформив в один метод, який викликається з конструктора вікна:
Створення панелі інструментів
Для того, щоб створити панель інструментів у вікні необхідно в конструкторі вікна викликати метод addToolBar (int style), в який передати стиль компонента панелі.
Для доступу до створеної панелі використовується метод getToolBarManager (). Для додавання дії на панель використовується метод add панелі, куди передається дію.
У найпростішому випадку створення панелі і додавання на неї кнопки буде виглядати:
Створення декількох переміщуються панелей інструментів
Замість однієї панелі інструментів можна створити набір переміщуваних панелей (CoolBar). Для цього необхідно:- Замість методу addToolBar викликати метод addCoolBar
- Для доступу до набору панелей використовується метод getCoolBarManager ()
- Створити панель інструментів, на яку можна буде додавати дії. Для цього необхідно створити новий екземпляр класу ToolBarManager, який буде представляти панель і викликати метод add у CoolBarManager, передавши туди панель.
- На створену панель можна додавати дії
Приклад коду, що створює дві плаваючі панелі:
Важливо! Вікно додаток може мати або одну панель управління або набір переміщуваних, спроба створення і того і іншого призведе до помилки!
Можливі проблеми
Тут будуть описані деякі проблеми, з якими можна зіткнутися:- При додаванні пунктів меню після запуску програми вони не з'являються - щоб зміни меню після створення вікна відобразилися на ньому, необхідно викликати метод getMenuBarManager (). Update (true) - вказати оновити панель меню.