Mirosław Ochodek Sponsorzy: JFace Jak jeszcze szybciej tworzyć interfejsy? ECESIS Eclipse Community Education Project An Eclipse Technology Research Subproject
UCWorkbench Team Eclipse Summer School (2) Plan JFace and SWT Rejestry Dialogi Przeglądarki Akcje
UCWorkbench Team Eclipse Summer School (3) JFace and SWT JFace jest nadbudówką dla SWT Dostarcza klasy wspierające Umożliwia łatwiejszą separację widoku od modelu Operating system Windowing system JNI SWT JFace
UCWorkbench Team Eclipse Summer School (4) Rejestry Klasy dla zarządzania zasobami (SWT) FontRegistry ImageRegistry JFaceColors JFaceResources
UCWorkbench Team Eclipse Summer School (5) FontRegistry FontRegistry fontRegistry = JFaceResources.getFontRegistry() FontData mainFont = new FontData("Arial", 18, SWT.NORMAL); fontRegistry.put("mainFont", new FontData[]{mainFont}); Label label = new Label(parent, SWT.HORIZONTAL); label.setText("This is main font"); label.setFont(fontRegistry.get("mainFont"));
UCWorkbench Team Eclipse Summer School (6) Dialogi Tworzenie dialogów w SWT/JFace SWT – tworzenie okien dialogowych krok po kroku (kontrolka za kontrolką...) JFace – szybkie i łatwe tworzenie dialogów Dialogi to najczęściej proste okna mające dużo wspólnych cech JFace dostarcza klasy z obszarami gotowymi do wypełniania
UCWorkbench Team Eclipse Summer School (7) InputDialog final InputDialog inputDialog = new InputDialog(parent.getShell(), "Title", "Message!", "input text here", null); final Button button = new Button(parent, SWT.PUSH); button.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { super.widgetSelected(e); if (inputDialog.open() == Dialog.OK) { button.setText(inputDialog.getValue()); } });
UCWorkbench Team Eclipse Summer School (8) TitleAreaDialog Składa się z: Title line Message area (jak również error area, image) OK and Cancel buttons Przed przypisaniem obrazków, tekstu wywołaj metodę create()
UCWorkbench Team Eclipse Summer School (9) TitleAreaDialog final TitleAreaDialog titleAreaDialog = new TitleAreaDialog(parent.getShell()); titleAreaDialog.create(); titleAreaDialog.setTitle("Title"); titleAreaDialog.setMessage("first line\nsecond line"); final Button button = new Button(parent, SWT.PUSH); button.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { super.widgetSelected(e); if (titleAreaDialog.open() == Dialog.OK){ button.setText("OK was pressed!"); } });
UCWorkbench Team Eclipse Summer School (10) Twój własny Dialog Podklasuj jedną z klas JFace Dialogs (zwróć uwagę, że są także SWT Dialogs) Przeciąż jedną z metod: createDialogArea(Composite parent) createButtonBar(Composite parent) createButtonsForButtonBar(Composite parent) createButton(Composite parent, int id, String label,boolean defaultButton) setReturnCode(int code)
UCWorkbench Team Eclipse Summer School (11) IAction W JFace niektóre widgety mogą być budowane za pomocą akcji (eg. Manus) IAction może mieć: Unikalne ID setId() Tekst wyświetlany w różnych miejscach (np. menu) setText() Tooltip tekst – setToolTipText() Ikony ( setImageDescriptor(), setDisableImageDescriptor()) Akcje można aktywować i dezaktywować Metoda run(), zawiera kod wykonywalny
UCWorkbench Team Eclipse Summer School (12) Viewers Jak zarządzać SWT Tree z klasami Person i House jako węzłami: Person Name Surname PESEL Houses House Address Residents Czy mogę zamienić osoby z domami? Co jeśli będę chciał wyświetlać tylko imię?
UCWorkbench Team Eclipse Summer School (13) Viewers SWT Tree ContentProvider LabelProvider John Smith (20)
UCWorkbench Team Eclipse Summer School (14) Viewers
UCWorkbench Team Eclipse Summer School (15) JFace – ale to nie koniec Dziękuje Wizards, Property pages, Text Viewers (editors) Zostaną zaprezentowane osobno