Eclipse. Podręcznik Programisty

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 52

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Eclipse. Podrcznik
programisty
Autor: Praca zbiorowa
Tumaczenie: Adam Bochenek (wstp, rozdz. 1 18),
Piotr Rajca (rozdz. 19 27), Jaromir Senczyk (rozdz. 28 34)
ISBN: 83-7361-691-8
Tytu oryginau: Java Developers Guide to Eclipse
Format: B5, stron: 784

Poznaj moliwoci rodowiska Eclipse


Korzystanie ze rodowiska Eclipse
Tworzenie programw w Javie w rodowisku Eclipse
Rozbudowa moliwoci Eclipse za pomoc dodatkowych moduw
Eclipse to nie tylko doskonae zintegrowane rodowisko do tworzenia aplikacji
w jzyku Java. To take platforma do tworzenia i integracji narzdzi programistycznych,
umoliwiajca zbudowanie kompletnego warsztatu pracy zarwno dla pojedynczego
programisty, jak i dla caego zespou pracujcego nad wsplnym projektem.
Idea rodowiska Eclipse zostaa zainicjowana przez giganty rynku IT firmy,
ktre zdecydoway si na stworzenie uniwersalnego narzdzia, umoliwiajcego
dostosowanie sposobu pracy z nim do wymaga rnych typw projektw.
Eclipse to narzdzie zbudowane w oparciu o potrzeby programistw.
Ksika Eclipse. Przewodnik programisty opisuje nie tylko rodowisko Eclipse
i sposoby zastosowania go w codziennej pracy twrcy oprogramowania. Przedstawia
rwnie metody rozbudowania go o dodatkowe moduy zwikszajce jego moliwoci
i przydatno do konkretnego zadania. Autorzy ksiki, wykorzystujc swoje
dowiadczenie zarwno w stosowaniu, jak i w nauczaniu Eclipse, pokazuj, jak mona
dostosowywa platform w celu zwikszenia efektywnoci i wydajnoci pracy oraz jak
unika najczciej pojawiajcych si bdw i problemw.
Podstawowe wiadomoci o Eclipse interfejs, konfiguracja
i poczenie z innymi aplikacjami
Pakiet Java Development Tools
Testowanie i usuwanie bdw aplikacji stworzonych za pomoc Eclipse
Praca zespoowa wsppraca Eclipse z systemem CVS
Zarzdzanie konfiguracj Eclipse
Architektura rodowiska Eclipse
Tworzenie moduw rozszerzajcych
Okna dialogowe, kreatory i widoki
Architektura projektw
Tworzenie pakietw i systemw pomocy dla uytkownikw
Wykorzystanie technologii COM i OLE
Dodatkowe wiczenia przedstawiaj sposoby wykonania najbardziej typowych zada
zwizanych z obsug rodowiska Eclipse.

Spis treci
O Autorach ...................................................................................... 17
Przedmowa...................................................................................... 19
Wstp ............................................................................................. 21
Geneza ksiki................................................................................................................. 21
Cele ................................................................................................................................. 21
Czytelnicy ....................................................................................................................... 22
Organizacja...................................................................................................................... 23
Konwencje stosowane w ksice..................................................................................... 24
Zawarto pyty CD-ROM .............................................................................................. 24

Cz I

Eclipse jako rodowisko programistyczne........................25

Rozdzia 1. Poznajemy Eclipse ........................................................................... 27


Eclipse a nowe wyzwania twrcw aplikacji .................................................................. 28
Czym waciwie jest Eclipse?.......................................................................................... 30
Eclipse jako narzdzie do tworzenia aplikacji w Javie.............................................. 30
Eclipse jako platforma integracyjna .......................................................................... 32
Eclipse jako spoeczno........................................................................................... 34
Licencja CPL................................................................................................................... 35
Pobranie i instalacja......................................................................................................... 36
Pierwszy rzut oka na rodowisko .................................................................................... 36
Organizacja projektw..................................................................................................... 38
Sw kilka do uytkownikw IBM VisualAge................................................................ 39
Podsumowanie ................................................................................................................ 39
Bibliografia ..................................................................................................................... 40

Rozdzia 2. Uywamy Eclipse ............................................................................. 41


Pierwsze kroki ................................................................................................................. 41
Ojej! .......................................................................................................................... 42
Tworzenie pierwszego projektu ................................................................................ 42
Organizacja interfejsu uytkownika .......................................................................... 45
Parametry rodowiska ............................................................................................... 46
Posugiwanie si interfejsem uytkownika...................................................................... 47
Podstawowe operacje ................................................................................................ 48
Lista zada ................................................................................................................ 53
Fiszki (ang. bookmarks)............................................................................................ 55
System pomocy ......................................................................................................... 55

Eclipse. Podrcznik programisty


Zarzdzanie skadnikami projektw ................................................................................ 60
Przestrze projektw................................................................................................. 60
Inne waciwoci projektw ...................................................................................... 66
Import i eksport zasobw .......................................................................................... 68
Przenoszenie zasobw............................................................................................... 70
Edytor........................................................................................................................ 71
Drukowanie............................................................................................................... 71
Konfiguracja Eclipse ....................................................................................................... 71
Perspektywy .............................................................................................................. 72
Wiele kopii Eclipse ................................................................................................... 74
Konfiguracja JRE ...................................................................................................... 75
Eclipse a inne aplikacje ............................................................................................. 76
System pomocy ......................................................................................................... 79
Wydajno................................................................................................................. 81
Inne parametry konfiguracyjne........................................................................................ 82
Pozycja Workbench .................................................................................................. 83
Pozycja External Tools ............................................................................................. 84
wiczenia........................................................................................................................ 84
Podsumowanie ................................................................................................................ 85

Rozdzia 3. Java Development Tools................................................................... 87


Pierwsze kroki z JDT ...................................................................................................... 88
Interfejs uytkownika JDT ........................................................................................ 88
Podstawowe operacje ................................................................................................ 89
Wyszukiwanie........................................................................................................... 91
Pisanie kodu rdowego................................................................................................. 93
Asystent wprowadzania............................................................................................. 96
Generowanie kodu .................................................................................................... 99
Nawigacja wrd komunikatw o bdach.............................................................. 101
Szybka naprawa bdw.......................................................................................... 101
Refaktoring ............................................................................................................. 102
Przegldanie dokumentacji projektu ....................................................................... 105
Szablony kodu......................................................................................................... 106
Wydzielenie acuchw tekstowych ....................................................................... 108
Generowanie dokumentacji Javadoc ....................................................................... 111
Korzystanie z alternatywnego JRE.......................................................................... 112
Uruchamianie programw ............................................................................................. 114
Polecenie Run ......................................................................................................... 115
Konfiguracja uruchomieniowa ................................................................................ 116
Strona brudnopisu ................................................................................................... 117
Skadniki projektw JDT............................................................................................... 118
Dalsze szczegy dotyczce projektw ................................................................... 118
Tworzenie projektw Java ...................................................................................... 120
Tworzenie folderw ................................................................................................ 123
Tworzenie klas i interfejsw ................................................................................... 123
Import projektw Java............................................................................................. 124
Lokalna historia plikw rdowych Java ............................................................... 124
Poprawa wydajnoci narzdzi JDT................................................................................ 125
Inne cechy widokw i perspektyw JDT......................................................................... 126
Filtrowanie zawartoci widokw............................................................................. 126
Przegldarka pakietw ............................................................................................ 127
Widok hierarchii ..................................................................................................... 127
Widok Tasks ........................................................................................................... 128
Widok Search.......................................................................................................... 129

Spis treci

5
Perspektywa Java Type Hierarchy .......................................................................... 129
Perspektywa Java Browsing.................................................................................... 130
wiczenia...................................................................................................................... 131
Podsumowanie .............................................................................................................. 131

Rozdzia 4. ledzenie dziaania aplikacji ........................................................... 133


Perspektywa Debug....................................................................................................... 134
Podstawowe operacje .................................................................................................... 135
Wstawienie punktu kontrolnego.............................................................................. 135
Rozpoczcie sesji usuwania bdw........................................................................ 135
Sterowanie wykonywaniem programu .................................................................... 135
Analiza biecego stanu programu.......................................................................... 136
Dodatkowe moliwoci debugera.................................................................................. 137
Wyraenia ............................................................................................................... 137
Modyfikacja wartoci zmiennej .............................................................................. 138
Edytor w perspektywie Debug ................................................................................ 138
ledzony cel (ang. debug target) ............................................................................. 139
Punkty kontrolne ........................................................................................................... 140
Punkty kontrolne dotyczce wyjtku....................................................................... 143
Punkty kontrolne dotyczce metody ....................................................................... 143
Punkty kontrolne dotyczce pola ............................................................................ 144
Widok konsoli......................................................................................................... 144
Konfiguracja uruchomieniowa debugera....................................................................... 144
Podczanie kodu rdowego ....................................................................................... 145
Modyfikacja kodu na gorco...................................................................................... 146
Zdalne usuwanie bdw ............................................................................................... 147
wiczenia...................................................................................................................... 149
Podsumowanie .............................................................................................................. 149

Rozdzia 5.

Eclipse a praca zespoowa ............................................................... 151


Obsuga CVS w Eclipse ................................................................................................ 152
Podstawy pracy zespoowej w Eclipse .......................................................................... 154
Obsuga pracy zespoowej w Eclipse ...................................................................... 154
Organizacja pracy zespoowej................................................................................. 155
CVS dla pocztkujcych................................................................................................ 155
Najwaniejsze pojcia CVS .................................................................................... 156
Wersje skadnikw projektu.................................................................................... 156
Aktualizacja ............................................................................................................ 157
Zatwierdzanie zmian ............................................................................................... 157
Zarzdzanie wersjami projektu ............................................................................... 157
Rozgazianie projektu............................................................................................ 158
Numery wersji w ramach gazi projektu................................................................ 159
Pliki binarne ............................................................................................................ 159
Interfejs obsugi CVS z poziomu Eclipse ......................................................................... 159
Perspektywa CVS Repository Exploring ................................................................ 159
Widok CVS Repositories ........................................................................................ 160
Widok CVS Resource History ................................................................................ 163
Widok CVS Console ............................................................................................... 163
Wygld elementw projektw znajdujcych si w repozytorium ........................... 164
Polecenia menu Team ............................................................................................. 165
Widok Synchronize................................................................................................. 165
Rwnolega modyfikacja plikw............................................................................. 167
Typowe scenariusze ...................................................................................................... 168
Zmiana nazwy, przesunicie i usunicie skadnika projektu ................................... 168
Wycofanie zmiany .................................................................................................. 169
Gazie projektu ...................................................................................................... 170

Eclipse. Podrcznik programisty


Inne funkcje................................................................................................................... 171
Plik aktualizacyjny .................................................................................................. 171
Zestaw projektw .................................................................................................... 171
Odczanie i ponowne definiowanie poczenia...................................................... 172
wiczenia...................................................................................................................... 172
Podsumowanie .............................................................................................................. 173
Bibliografia ................................................................................................................... 173

Rozdzia 6. Zarzdzanie konfiguracj Eclipse.................................................... 175


Struktura instalacji Eclipse ............................................................................................ 176
Katalog macierzysty Eclipse ................................................................................... 176
Rola pluginw ......................................................................................................... 177
Rola pakietw ......................................................................................................... 177
Meneder aktualizacji ............................................................................................. 178
Identyfikacja zainstalowanych pakietw................................................................. 178
Meneder aktualizacji wprowadzenie....................................................................... 180
rda instalacji i aktualizacji pakietw.................................................................. 180
Podgld biecej konfiguracji ................................................................................. 182
Widok Install Configuration.................................................................................... 183
Widok Preview........................................................................................................ 184
Widok Feature Updates........................................................................................... 185
Procesy dotyczce konfiguracji ..................................................................................... 185
Pierwsze uruchomienie Eclipse............................................................................... 186
Kolejne uruchomienia platformy............................................................................. 186
Ustalenie konfiguracji domylnej............................................................................ 187
Lista domylnych pakietw..................................................................................... 188
Wspdzielenie instalacji Eclipse............................................................................ 189
wiczenia...................................................................................................................... 189
Podsumowanie .............................................................................................................. 190

Cz II

Rozbudowa Eclipse.......................................................191

Rozdzia 7. Architektura Eclipse ...................................................................... 193


Punkty rozszerzenia....................................................................................................... 194
Platforma Eclipse .......................................................................................................... 197
Szablony skadnikw interfejsu uytkownika ............................................................... 197
Biblioteka Standard Widget Toolkit........................................................................ 198
Biblioteka JFace ...................................................................................................... 199
Obszar roboczy ....................................................................................................... 202
Dostp do przestrzeni projektw i zasobw ............................................................ 203
Podsumowanie .............................................................................................................. 204
Bibliografia ................................................................................................................... 204

Rozdzia 8. Podstawy tworzenia pluginw......................................................... 205


Pierwsze kroki ............................................................................................................... 206
Scenariusze integracji.............................................................................................. 207
Rozpowszechnianie wasnego narzdzia................................................................. 209
Rozszerzenia i punkty rozszerzenia............................................................................... 209
Podstawowe kroki implementacji pluginu..................................................................... 212
Plik manifestu pluginu ............................................................................................ 214
Klasa pluginu .......................................................................................................... 216
Instalacja pluginu .................................................................................................... 218
rodowisko PDE ........................................................................................................... 219
Edytor i widoki PDE ............................................................................................... 220
Platforma testowa.................................................................................................... 222

Spis treci

7
Tworzenie i uruchomienie pluginu.......................................................................... 223
Praca na jednym stanowisku a praca zespoowa ..................................................... 225
wiczenia...................................................................................................................... 225
Podsumowanie .............................................................................................................. 225
Bibliografia ................................................................................................................... 226

Rozdzia 9. rda akcji ................................................................................... 227


Punkty rozszerzenia definiujce rda akcji................................................................. 228
Podstawy definiowania rde akcji .............................................................................. 229
Interfejs programowy obsugujcy akcje................................................................. 229
rda akcji w pliku manifestu................................................................................ 231
Dodanie akcji do menu i listwy narzdziowej......................................................... 232
Filtrowanie wywietlanych akcji............................................................................. 234
Filtrowanie zwizane z typem obiektu .................................................................... 234
Filtrowanie oparte na warunkach ............................................................................ 235
Dodawanie akcji do menu i listwy narzdziowej obszaru roboczego............................ 237
Menu i listwa narzdziowa niezalena od perspektywy............................................... 239
Dodawanie akcji do menu i listwy narzdziowej widoku.............................................. 239
Dodawanie akcji zwizanej z edytorem......................................................................... 241
Dodawanie akcji do menu kontekstowego widoku i edytora......................................... 241
Menu kontekstowe widoku ..................................................................................... 242
Menu kontekstowe edytora ..................................................................................... 242
Menu kontekstowe elementu widoku...................................................................... 243
Podsumowanie .............................................................................................................. 244
Bibliografia ................................................................................................................... 244

Rozdzia 10. Biblioteka Standard Widget Toolkit ................................................ 245


Struktura aplikacji SWT ................................................................................................ 246
Podstawowe komponenty SWT..................................................................................... 248
Okrelanie stylu komponentu.................................................................................. 249
Obsuga zdarze ............................................................................................................ 250
Rozmieszczenie komponentw za pomoc menederw ukadu .................................. 252
Meneder ukadu FillLayout ................................................................................... 254
Meneder ukadu RowLayout ................................................................................. 254
Meneder ukadu GridLayout ................................................................................. 255
Meneder ukadu FormLayout ................................................................................ 258
Obsuga bdw............................................................................................................. 261
Konieczno zwalniania zasobw ................................................................................. 262
Wtki obsugujce interfejs uytkownika i pozostae zadania....................................... 263
Pakiety SWT ................................................................................................................. 265
wiczenia...................................................................................................................... 266
Podsumowanie .............................................................................................................. 267
Bibliografia ................................................................................................................... 267

Rozdzia 11. Okna dialogowe i kreatory............................................................. 269


Okna dialogowe powszechny element aplikacji ....................................................... 269
Punkt wyjcia, czyli szablon ................................................................................... 270
Punkty rozszerzenia dla okien dialogowych i kreatorw ............................................... 271
Okna dialogowe oglnego zastosowania................................................................. 274
Tworzenie wasnej strony parametrw .......................................................................... 275
Definicja rozszerzenia dotyczcego strony parametrw .............................................. 276
Implementacja strony parametrw .......................................................................... 277
Przygotowanie interfejsu uytkownika strony......................................................... 278
Okrelenie sposobu zapisu i odczytu wasnoci ...................................................... 279

Eclipse. Podrcznik programisty


Ustalenie domylnych wartoci parametrw ........................................................... 280
Dodawanie kodu zarzdzajcego wartociami parametrw .................................... 281
Obsuga zdarze na stronie parametrw.................................................................. 284
Edytor pl jako typ strony parametrw ................................................................... 284
Tworzenie wasnej strony waciwoci.......................................................................... 287
Definicja rozszerzenia dotyczcego strony waciwoci ......................................... 288
Implementacja klasy strony..................................................................................... 290
Definicja wygldu strony ........................................................................................ 291
Kod odpowiadajcy za logik strony ...................................................................... 291
Zasady przyporzdkowywania waciwoci............................................................ 293
Implementacja wasnego okna dialogowego Properties.......................................... 293
Kreatory tworzenia nowych zasobw, importu oraz eksportu....................................... 294
Definicja rozszerzenia ............................................................................................. 295
Implementacja klasy kreatora.................................................................................. 296
Implementacja strony (stron) kreatora..................................................................... 297
Dopasowanie wygldu strony (stron) kreatora ........................................................ 299
Nawigacja wrd stron kreatora .............................................................................. 300
Predefiniowane strony kreatora............................................................................... 301
Wywoywanie kreatora z poziomu kodu rdowego ............................................. 304
Zapis cech okna dialogowego ................................................................................. 304
wiczenia...................................................................................................................... 305
Podsumowanie .............................................................................................................. 305
Bibliografia ................................................................................................................... 306

Rozdzia 12. Widoki........................................................................................... 307


Architektura i dziaanie widoku .................................................................................... 307
Podstawowe etapy implementacji widoku..................................................................... 311
Definicja wygldu widoku ...................................................................................... 311
Dodanie rozszerzenia w pliku plugin.xml ............................................................... 312
Utworzenie klasy widoku........................................................................................ 312
Definicja dostawcy treci ........................................................................................ 313
Definicja dostawcy prezentacji ............................................................................... 315
Poczenie przegldarki z modelem ........................................................................ 316
Synchronizacja modelu i widoku ............................................................................ 317
Obsuga zdarze polegajcych na wyborze elementu ............................................. 318
Filtrowanie widoku ................................................................................................. 319
Sortowanie widoku ................................................................................................. 321
Dodawanie opcji widoku......................................................................................... 322
Obsuga polece globalnych ................................................................................... 326
Dekoratory .............................................................................................................. 326
Wsppraca midzy widokami ...................................................................................... 328
Widok Properties..................................................................................................... 328
wiczenia...................................................................................................................... 332
Podsumowanie .............................................................................................................. 333
Bibliografia ................................................................................................................... 333

Rozdzia 13. Edytory.......................................................................................... 335


Architektura i zachowanie edytora ................................................................................ 335
Podstawowe etapy implementacji edytora..................................................................... 336
Definicja wygldu edytora ...................................................................................... 337
Definicja kreatora odpowiadajcego za tworzenie nowych zasobw
danego typu (opcjonalnie) .................................................................................... 337
Deklaracja rozszerzenia dodana do pliku manifestu plugin.xml ............................. 338

Spis treci

9
Utworzenie klasy edytora........................................................................................ 339
Ustanowienie modelu odpowiadajcego za edytowane dane .................................. 340
Definicja dostawcy treci ........................................................................................ 341
Definicja dostawcy prezentacji ............................................................................... 341
Obsuga modyfikacji treci znajdujcej si w edytorze................................................ 341
Obsuga zapisu treci edytora.................................................................................. 341
Poczenie edytora z modelem ................................................................................ 342
Synchronizacja modelu i edytora ............................................................................ 342
Obsuga zaznaczania fragmentu treci .................................................................... 343
Dodawanie akcji edytora......................................................................................... 343
Poczenie edytora z widokiem Outline ........................................................................ 347
wiczenia...................................................................................................................... 349
Podsumowanie .............................................................................................................. 349
Bibliografia ................................................................................................................... 349

Rozdzia 14. Perspektywy.................................................................................. 351


Perspektywy .................................................................................................................. 351
Tworzenie perspektywy .......................................................................................... 352
Rozszerzanie perspektywy ............................................................................................ 353
wiczenia...................................................................................................................... 354
Podsumowanie .............................................................................................................. 354
Bibliografia ................................................................................................................... 354

Rozdzia 15. Obsuga zasobw przestrzeni projektw .......................................... 355


Pojcia podstawowe ...................................................................................................... 355
Model fizyczny ....................................................................................................... 356
Model logiczny ....................................................................................................... 357
Wsppraca modelu zasobw i systemu plikw ...................................................... 358
API przestrzeni projektw............................................................................................. 359
Katalog gwny przestrzeni projektw.................................................................... 360
Kontenery zasobw (ang. resource containers) ....................................................... 361
Synchronizacja modelu i systemu plikw ............................................................... 361
Obiekt projektu ....................................................................................................... 363
Obiekt zasobu.......................................................................................................... 364
Obiekt cieki.......................................................................................................... 365
Obiekty folderu i pliku ............................................................................................ 368
Przegldanie drzewa zasobw................................................................................. 369
Wasnoci zasobw ....................................................................................................... 370
Wasnoci tymczasowe ........................................................................................... 371
Wasnoci trwae ..................................................................................................... 371
Obsuga zdarze przestrzeni projektw......................................................................... 372
ledzenie zmian za pomoc API przestrzeni projektw.......................................... 373
Dodanie suchacza zdarze ..................................................................................... 374
Przegldanie informacji o zmienionych zasobach................................................... 376
Szczegy modyfikacji zasobu ................................................................................ 378
Zarzdzanie zdarzeniami modyfikacji zasobw ...................................................... 379
Korzystanie ze zdarze w celu zapisywania dodatkowych danych ............................... 380
Zdarzenia zwizane z zapisem ................................................................................ 380
Definicja obiektu zapisu danych ............................................................................. 381
wiczenia...................................................................................................................... 383
Podsumowanie .............................................................................................................. 383
Bibliografia ................................................................................................................... 384

10

Eclipse. Podrcznik programisty

Rozdzia 16. Natura projektu i przeksztacanie zasobw ........................................ 385


Dodanie nowych funkcji przetwarzajcych projekt....................................................... 385
Rozszerzanie obsugi zasobw przestrzeni projektw............................................. 386
Projekt i jego opis ................................................................................................... 386
Definiowanie i implementacja natury............................................................................ 388
Tworzenie natury rozszerzajcej konfiguracj projektu .......................................... 388
Dodawanie natury do projektu ................................................................................ 389
Relacje pomidzy natur a budowniczym ............................................................... 391
Obrazek symbolizujcy natur projektu.................................................................. 392
Implementacja budowniczego ....................................................................................... 393
Proces transformacji zasobw ................................................................................. 393
Kiedy korzysta z budowniczego? .......................................................................... 394
Definicja budowniczego realizujcego transformacj przyrostow ........................ 396
wiczenia...................................................................................................................... 399
Podsumowanie .............................................................................................................. 400
Bibliografia ................................................................................................................... 400

Rozdzia 17. Znaczniki zasobw......................................................................... 401


Pojcie znacznika .......................................................................................................... 401
Nadawanie cech zasobom za pomoc znacznikw........................................................ 403
Tworzenie nowych znacznikw .................................................................................... 404
Znaczniki pomocy i asystenta wprowadzania................................................................ 406
wiczenia...................................................................................................................... 406
Podsumowanie .............................................................................................................. 407
Bibliografia ................................................................................................................... 407

Rozdzia 18. rda akcji uzupenienie ........................................................... 409


Przykady rde akcji i ich obsuga.............................................................................. 409
Dodatkowe wskazwki.................................................................................................. 421
Podsumowanie .............................................................................................................. 424

Rozdzia 19. Zaawansowane tworzenie pluginw ................................................ 425


adowarka klas pluginw.............................................................................................. 425
Wykrywanie w czasie dziaania i opnione adowanie pluginw................................ 426
Ziarnisto pluginw.................................................................................................. 428
Fragmenty pluginw...................................................................................................... 429
Fragmenty i pakiety jzykowe ................................................................................ 430
Fragmenty jako zawarto zalena od platformy .................................................... 430
Podsumowanie .............................................................................................................. 431
Bibliografia ................................................................................................................... 432

Rozdzia 20. Tworzenie nowych punktw rozszerze


w jaki sposb inni mog rozbudowywa Twoje pluginy? .............. 433
Przegld architektury Eclipse raz jeszcze ................................................................. 434
Zalenoci pomidzy punktami rozszerzenia i rozszerzeniami ............................... 434
Rejestr pluginw oficjalna lista aktywnych pluginw, rozszerze
i punktw rozszerze ............................................................................................ 436
Jak definiowa nowe punkty rozszerze?...................................................................... 437
Wybr istniejcego kodu, ktry inni bd mogli rozbudowywa lub konfigurowa...437
Deklarowanie nowego punktu rozszerzenia ............................................................ 439
Definiowanie interfejsu okrelajcego oczekiwane zachowanie ............................. 440
Przetwarzanie informacji dotyczcych punktu rozszerzenia,
zgromadzonych w rejestrze pluginw................................................................... 443
Wywoywanie odpowiednich metod zgodnie ze zdefiniowanym wczeniej
kontraktem (interfejsem)......................................................................................... 445

Spis treci

11
Jak skorzysta z opartego na schematach kreatora nowych rozszerze? ....................... 447
Dlaczego warto definiowa schemat? ..................................................................... 448
Edytor schematw................................................................................................... 448
wiczenia...................................................................................................................... 449
Podsumowanie .............................................................................................................. 450
Bibliografia ................................................................................................................... 450

Rozdzia 21. W razie problemw ........................................................................ 451


Diagnostyka pluginw informacje systemowe i konfiguracyjne .............................. 453
Obiekty stanu kolektor stanu (ang. status collector) ................................................. 453
Przykad wykorzystania obiektu MultiStatus .......................................................... 454
Obsuga wyjtkw wykrywanie bdw................................................................... 455
Okna dialogowe bdw dostarczanie szczegowego stanu
w komunikatach o bdach.......................................................................................... 455
Przykad okna dialogowego bdu .......................................................................... 456
ledzenie wykonywania narzdzie diagnostyki dziaania ........................................ 457
Przykad zastosowania mechanizmw ledzenia..................................................... 459
Wykorzystanie ledzenia w rodowisku produkcyjnym ................................................ 460
Diagnostyka obszerny dziennik bdw ................................................................... 461
Rejestracja bdw zapisywanie informacji w dzienniku bdw............................. 461
Dodawanie komunikatw o bdach ....................................................................... 462
wiczenia...................................................................................................................... 462
Podsumowanie .............................................................................................................. 462

Rozdzia 22. Tworzenie pakietw ....................................................................... 463


Wszystko na temat pakietw ......................................................................................... 464
Typy pakietw......................................................................................................... 464
Okrelanie struktury przy uyciu pakietw ............................................................. 465
Definicja pakietu ........................................................................................................... 466
Manifest pakietu...................................................................................................... 466
Okrelanie wymaganych pluginw oraz pakietw wewntrznych .......................... 467
Reguy dopasowujce pluginy na podstawie numeru wersji ................................... 470
Obsuga serwisowa pakietw .................................................................................. 471
Identyfikacja pakietw .................................................................................................. 472
Treci identyfikujce pakietw i pluginw ............................................................. 472
Okrelanie pakietu gwnego .................................................................................. 473
Prezentacja w interfejsie uytkownika informacji identyfikujcych pakiet i produkt ....474
Rozszerzanie moliwoci Eclipse.................................................................................. 476
Tworzenie pakietu nadajcego si do instalacji....................................................... 477
Tworzenie wasnego produktu opierajcego si na platformie Eclipse ................... 478
Tworzenie rozszerze do innych produktw........................................................... 479
Udostpnianie pakietw instalowanych za pomoc menedera aktualizacji ........... 480
Zastosowanie PDE do tworzenia i rozpowszechniania pakietw ............................ 482
wiczenia...................................................................................................................... 485
Podsumowanie rozdziau............................................................................................... 485
Bibliografia ................................................................................................................... 485

Rozdzia 23. Dostarczanie pomocy ..................................................................... 487


Integracja dokumentacji ................................................................................................ 488
Tworzenie dokumentacji w formacie HTML .......................................................... 490
Deklarowanie rozszerzenia ..................................................................................... 490
Tworzenie plikw spisu treci................................................................................. 491
Dokumentacja doczona do Eclipse....................................................................... 494

12

Eclipse. Podrcznik programisty


Tworzenie pomocy kontekstowej .................................................................................. 494
Deklarowanie rozszerzenia pomocy kontekstowej.................................................. 495
Definiowanie zawartoci okienka Infopop .............................................................. 495
Kojarzenie okienka Infopop z kontekstem interfejsu uytkownika......................... 495
Uruchamianie systemu pomocy w innych programach ................................................. 497
Dostosowywanie systemu pomocy do wasnych wymaga........................................... 498
wiczenia...................................................................................................................... 499
Podsumowanie .............................................................................................................. 499
Bibliografia ................................................................................................................... 499

Rozdzia 24. Wspdziaanie z technologiami OLE i ActiveX................................. 501


Obsuga technologii COM............................................................................................. 502
Bezporednie dokumenty OLE ............................................................................... 503
Bezporednie elementy sterujce ActiveX .............................................................. 503
Obsuga kontenera COM............................................................................................... 503
Tworzenie obiektu OleFrame.................................................................................. 504
Tworzenie obiektu OleClientSite ............................................................................ 504
Aktywacja obiektu OLE.......................................................................................... 505
Deaktywacja obiektu OLE ...................................................................................... 506
Obsuga edytorw OLE........................................................................................... 506
Tworzenie obiektu OleControlSite.......................................................................... 507
Aktywacja obiektu OleControlSite ......................................................................... 508
Automatyzacja OLE dostp do rozszerzonych zachowa ........................................ 508
Polecenie exec......................................................................................................... 508
Interfejs IDispatch................................................................................................... 510
Metody .................................................................................................................... 511
Wywoanie bez parametrw.................................................................................... 511
Typy Variant ........................................................................................................... 512
Wywoanie z przekazaniem parametrw................................................................. 513
Waciwoci ............................................................................................................ 513
Suchacze zdarze oraz suchacze zdarze dotyczcych waciwoci..................... 515
wiczenia...................................................................................................................... 516
Podsumowanie .............................................................................................................. 516
Bibliografia ................................................................................................................... 517

Rozdzia 25. Wsppraca z bibliotek Swing ....................................................... 519


Wprowadzenie do zagadnie integracji biblioteki Swing i SWT .................................. 520
Integracja uruchamiania i edycji ............................................................................. 520
Tryby wywoa ....................................................................................................... 521
Zwikszanie atrakcyjnoci produktw .................................................................... 522
Przykadowy edytor ABCEditor wywoanie wewntrzprocesowe ..................... 523
Szczegy implementacji wywoanie wewntrzprocesowe ................................ 523
wiczenia...................................................................................................................... 527
Podsumowanie .............................................................................................................. 528
Bibliografia ................................................................................................................... 528

Rozdzia 26. Rozbudowa narzdzi do pisania programw w Javie ......................... 529


Do czego suy JDT?..................................................................................................... 530
Model elementw Javy.................................................................................................. 532
Wykorzystanie moliwoci JDT.................................................................................... 534
Klasa JavaCore........................................................................................................ 534
Klasa JavaUI ........................................................................................................... 538
Klasa ToolFactory................................................................................................... 539

Spis treci

13
Kompilacja kodu rdowego Javy................................................................................ 540
Analiza kodu rdowego Javy...................................................................................... 540
Abstrakcyjne drzewo skadni .................................................................................. 541
Szczegowa analiza kodu rdowego Javy........................................................... 546
Operacje na kodzie rdowym Javy ............................................................................. 550
Proste modyfikacje kodu rdowego elementw Javy ............................................... 550
Bardziej zoone modyfikacje kodu rdowego .................................................... 551
W jakich miejscach JDT rozbudowuje moliwoci Eclipse?......................................... 554
Rozbudowa interfejsu uytkownika JDT....................................................................... 554
Dodawanie akcji do widokw ................................................................................. 555
Dodawanie akcji do edytora .................................................................................... 557
Rozbudowa menu kontekstowego elementw Javy ................................................ 558
Rozbudowa menu kontekstowych konkretnego widoku lub edytora ...................... 558
Rozbudowa akcji globalnych .................................................................................. 559
Stosowanie okien dialogowych JDT ....................................................................... 559
wiczenia...................................................................................................................... 560
Podsumowanie .............................................................................................................. 560
Bibliografia ................................................................................................................... 560

Rozdzia 27. Tworzenie edytora tekstw przy uyciu komponentu JFace Text ...... 561
Standardowe funkcje edytora tekstw ........................................................................... 562
Edycja i przegldanie tekstu.................................................................................... 562
Standardowe opcje menu i przyciski paska narzdzi............................................... 563
Standardowa reprezentacja znacznikw.................................................................. 563
Konfiguracja edytora punkty dostosowywania......................................................... 564
Czym jest asystent wprowadzania? ......................................................................... 564
Czym jest kolorowanie skadni?.............................................................................. 565
Czym jest formatowanie zawartoci? ...................................................................... 566
Inne moliwoci dostosowywania edytora .............................................................. 566
Tajniki wykorzystania edytora tekstw ......................................................................... 567
Klasa AbstractTextEditor........................................................................................ 567
Klasa TextViewer.................................................................................................... 568
Zalenoci klasy AbstractTextEditor ...................................................................... 569
Klasa Document...................................................................................................... 569
Klasa DocumentProvider ........................................................................................ 571
Zalenoci typu model-widok-kontroler ................................................................. 572
Klasa DocumentPartitioner ..................................................................................... 572
Klasa SourceViewerConfiguration.......................................................................... 573
Jak stworzy prosty edytor kodu rdowego? .............................................................. 574
Etap 1. Tworzenie prostego edytora........................................................................ 574
Etap 2. Dodawanie asystenta wprowadzania........................................................... 580
Etap 3. Dodawanie kolorowania skadni ................................................................. 584
Etap 4. Definiowanie formatowania zawartoci ...................................................... 589
wiczenia...................................................................................................................... 592
Podsumowanie .............................................................................................................. 592
Bibliografia ................................................................................................................... 592

Cz III wiczenia ......................................................................593


Rozdzia 28. wiczenie 1. Obsuga Eclipse ......................................................... 595
Punkt 1. Pierwszy projekt.............................................................................................. 595
Punkt 2. Edytory i widoki.............................................................................................. 600
Punkt 3. Posugiwanie si zasobami.............................................................................. 607

14

Eclipse. Podrcznik programisty


Punkt 4. Perspektywy .................................................................................................... 610
Punkt 5. Posugiwanie si wieloma oknami Eclipse...................................................... 612
Punkt 6. System pomocy ............................................................................................... 614

Rozdzia 29. wiczenie 2. Posugiwanie si narzdziami Java Development Tools .... 619
Punkt 1. Hello World .................................................................................................... 620
Punkt 2. Mechanizm Quick Fix..................................................................................... 621
Punkt 3. Tworzenie kodu............................................................................................... 628
Punkt 4. Refaktoring...................................................................................................... 632
Punkt 5. Konfiguracje uruchomieniowe ........................................................................ 639
Punkt 6. Kod JRE 1.4 .................................................................................................... 645

Rozdzia 30. wiczenie 3. Uruchamianie programw w jzyku Java ..................... 649


Punkt 1. ledzenie ......................................................................................................... 650
Punkt 2. ledzenie wtkw............................................................................................ 657
Punkt 3. ledzenie zdalnych programw.......................................................................... 661

Rozdzia 31. wiczenie 4. Eclipse i CVS............................................................. 665


Konfiguracja wiczenia ................................................................................................. 666
Tworzenie projektu w lokalnej przestrzeni projektw ............................................ 666
Punkt 1. Pierwsze kroki................................................................................................. 668
Okrelenie preferencji pracy zespoowej i systemu CVS ........................................ 668
Zdefiniowanie pooenia repozytorium CVS .......................................................... 669
Przekazanie projektu pod kontrol systemu CVS ................................................... 670
Umieszczenie zawartoci projektu w systemie CVS............................................... 673
Tworzenie wersji projektu....................................................................................... 674
Punkt 2. Aktualizacja, zatwierdzanie zmian i rozwizywanie konfliktw..................... 675
Modyfikacja kodu projektu ..................................................................................... 675
Przekazywanie zmian do systemu CVS .................................................................. 677
Wprowadzanie dodatkowych zmian w projekcie .................................................... 678
Rozwizywanie konfliktw w systemie CVS ......................................................... 679
Punkt 3. Rozgazianie i scalanie .................................................................................. 682
Proces rozgaziania i scalania w Eclipse................................................................ 682
Aktualizacja projektu i umieszczenie zmian w nowej gazi systemu CVS............ 683
Scalanie zmian przeprowadzonych w nowej gazi z gazi HEAD...................... 686
Podsumowanie wiczenia.............................................................................................. 689

Rozdzia 32. wiczenie 5. Modyfikacje konfiguracji


za pomoc menedera aktualizacji.................................................. 691
Punkt 1. Instalacja nowych pakietw ............................................................................ 691
Punkt 2. Wyczanie pakietw ...................................................................................... 695
Punkt 3. Aktualizacje oczekujce i bezporednie modyfikacje konfiguracji ...................... 696
Punkt 4. Wyszukiwanie nowych lub zaktualizowanych pakietw................................. 698

Rozdzia 33. wiczenie 6. Tworzenie moduw rozszerze ...................................703


Konfiguracja wiczenia ................................................................................................. 704
Przebieg wiczenia.................................................................................................. 705
Punkt 1. Hello, World w pi minut lub nawet szybciej ............................................ 705
Punkt 2. Hello, World krok po kroku......................................................................... 707
Punkt 3. Wykorzystanie uruchomieniowego obszaru roboczego .................................. 717
Punkt 4. ledzenie dziaania pluginw w uruchomieniowym obszarze roboczym........... 719
Punkt 5. Eksploracja (a czasami take poprawianie) kodu platformy Eclipse............... 722
Punkt 6. Usuwanie typowych problemw.......................................................................... 724
Podsumowanie wiczenia.............................................................................................. 727

Spis treci

15

Rozdzia 34. wiczenie 7. Tworzenie i instalowanie pakietw Eclipse.................. 729


Koncepcja wiczenia..................................................................................................... 729
Konfiguracja wiczenia........................................................................................... 730
Sposb wykonania wiczenia.................................................................................. 731
Punkt 1. Zadania twrcy pakietw Eclipse.................................................................... 731
Tworzenie plikw JAR dla wybranych pluginw ................................................... 731
Umieszczanie funkcji dostarczanych przez pluginy w pakiecie .............................. 735
Dodawanie informacji o marce produktu i pakietu ................................................. 741
Przygotowanie dystrybucji pakietu ......................................................................... 742
Wyodrbnienie pakietu instalacyjnego z przestrzeni projektw
i implementacja rda aktualizacji ...................................................................... 744
Punkt 2. Zadania uytkownika platformy Eclipse ......................................................... 745
Instalacja nowego pakietu jako rozszerzenia istniejcego produktu ....................... 746
Dodawanie pakietu do istniejcej konfiguracji produktu ze rda aktualizacji...... 750
Punkt 3. Zadania twrcy produktu ................................................................................ 750
Implementacja produktu.......................................................................................... 751
Uruchamianie i kontrola instalacji wasnego produktu................................................ 751
Podsumowanie wiczenia.............................................................................................. 752

Dodatki .......................................................................................753
Skorowidz...................................................................................... 755

Roz dzi a 11 . Okna dia logowe i kreator y

Rozdzia 11.

Okna dialogowe
i kreatory
W niniejszym rozdziale zajmiemy si wieloma typami okienek dialogowych i kreatorw
dostpnych w Eclipse. Dowiemy si, jak z nich korzysta i jak je rozszerza, by stay si
czci tworzonych przez nas narzdzi. Skoncentrujemy si na oknach dialogowych,
za pomoc ktrych da si rozbudowa rodowisko Eclipse. Bd wrd nich okienka
suce do okrelania waciwoci obiektw, strony definiujce parametry rodowiska,
a take kreatory wywoywane w celu stworzenia nowych zasobw lub obsugi procesu
ich eksportu bd importu. Kady kreator jest bowiem rodzajem okna dialogowego.
Przy konstruowaniu nowych okienek dialogowych stosujemy istniejce szablony, co
zwiksza nasz wydajno i jednoczenie podnosi stopie integracji wszystkich elementw rodowiska. Uytkownik przyzwyczaja si do pewnego standardowego sposobu wykonywania typowych operacji.
Tak wic korzystanie z dostarczonych w ramach Eclipse klas przyspiesza proces tworzenia nowych narzdzi, jednak celem nadrzdnym jest zachowanie spjnoci i przestrzeganie zasad, ktre pozwalaj na tak wysoki stopie wsppracy rnych skadnikw Eclipse.

Okna dialogowe
powszechny element aplikacji
Okna dialogowe to bardzo typowy skadnik wikszoci aplikacji. Ich definicja znajduje
si w rnych miejscach kodu rdowego Eclipse. Oczywicie, wikszo z nich peni
w rodowisku dokadnie okrelon funkcj i nie jest dostpna dla twrcw narzdzi.

Cz II Rozbudowa Eclipse

270

W lepszym zrozumieniu zasad posugiwania si oknami dialogowymi dostarczonymi


wraz z Eclipse pomoe nam analiza roli, jak peni one w ramach interfejsu uytkownika, i technik ich implementacji oraz doczania do wasnych moduw.
Istniej dwa podstawowe sposoby dodania okienka dialogowego do Eclipse w ramach
pluginu, ktry rozszerza moliwoci rodowiska:
 Definicja okna dialogowego doczonego jako rozszerzenie i korzystajcego

z istniejcego, standardowego szablonu dostosowanego do naszych potrzeb.


Dodajemy go do ktrego z dostpnych punktw rozszerzenia.
 Definicja wasnego okienka penicego pewn specyficzn dla naszego

narzdzia funkcj. Wywoywane jest ono z wntrza moduu.


Okna dialogowe bdce rozszerzeniem istniejcego schematu konstruuje si bardzo
atwo, nie wymagaj one pisania duej iloci kodu. Na przykad stworzenie nowego
kreatora typu New File (czyli odpowiedzialnego za dodanie nowego zasobu), polega
na wykonaniu piciu prostych krokw, ktrymi s: dodanie rozszerzenia, wygenerowanie klasy, zdefiniowanie kilku pl, metody, a w niej szeciu wierszy kodu. Dodanie
nowej strony parametrw rodowiska za pomoc odpowiedniego kreatora wymaga
jeszcze mniejszej liczby etapw, w ktrych definiujemy jedn metod i cztery wiersze
kodu. W dalszej czci rozdziau opiszemy dokadnie, jak to zrobi, zaprezentujemy
take ilustrujce to przykady.

Punkt wyjcia, czyli szablon


Okna dialogowe, a szczeglnie zbudowane na ich podstawie kreatory realizujce pewne
zadania stanowi jeden z najwaniejszych skadnikw budowanych przez nas nowych
moduw.
Istniej rne rodzaje okienek dialogowych: su one do wyboru pewnej wartoci, szukania i zastpowania fragmentu tekstu, wywietlania komunikatw o bdach czy prezentacji
waciwoci. Wiele z nich wykorzystujemy bezporednio w naszym kodzie, inne budujemy za pomoc mechanizmu dziedziczenia. Dodatkowo trzy typy okien dialogowych mog by do aplikacji dodane na zasadzie rozszerzenia. W ten sposb rodowisko moemy rozbudowa o now stron okienka parametrw, nowy kreator zasobw
lub okno suce do importu lub eksportu. W tabeli 11.1 przedstawiamy pakiety, w ktrych znajdziemy okna dialogowe i kreatory mogce stanowi podstaw naszych nowych
rozwiza.
Istnieje wiele zalenoci midzy klasami znajdujcymi si w pakietach 
 
oraz 
  -- klasy 
  dziedzicz po klasach zdefiniowanych w 
  . Biblioteka JFace ma charakter zbioru klas o charakterze bardziej uniwersalnym. Na ich podstawie implementowane s klasy typowe dla
interfejsu uytkownika Eclipse, odpowiadajce konkretnym funkcjom i zadaniom.

Rozdzia 11. Okna dialogowe i kreatory

271

Tabela 11.1. Pakiety wykorzystywane przy budowie wasnych okien dialogowych i kreatorw
Nazwa pakietu

Opis


  

Pakiet zawiera definicj klasy  , ktra jest podstaw wszystkich


okienek dialogowych. Znajdziemy tu rwnie obsug okienek sucych
do wywietlania komunikatw czy te informowania uytkownika
o stopniu zaawansowania wykonywanych operacji.


  

Implementacja klas odpowiedzialnych za tworzenie kreatorw.


Tutaj znajdziemy definicj samego kreatora, a take klas
reprezentujc jego stron.


 

Implementacja typowych dla Eclipse specjalizowanych


okien dialogowych, takich jak strona parametrw rodowiska,
strona waciwoci, okienko suce do wyboru i zapisywania plikw,
wyboru elementw z listy itp.


 

   


Klasy reprezentujce kreatory importu i eksportu.


 




Kreator odpowiadajcy za tworzenie nowych zasobw.





Klasy SWT:  ,   oraz  .


Reprezentuj one elementy zdefiniowane po stronie systemu
operacyjnego; maj charakter elementw oglnego przeznaczenia.

Punkty rozszerzenia dla okien dialogowych i kreatorw


Tabela 11.2 zawiera list punktw rozszerzenia, ktre pozwalaj na doczenie do obszaru
roboczego Eclipse wasnych okien dialogowych i kreatorw.
Tabela 11.2. Punkty rozszerzenia obsugujce dodawanie okien dialogowych i kreatorw
Typ dodawanego elementu

Punkt rozszerzenia

Strona parametrw rodowiska


   

Strona waciwoci obiektu lub zasobu


   

Kreator nowego zasobu


 

Kreator importu


  

Kreator eksportu


  

Uycie tych punktw rozszerzenia powoduje, e nasz dodatkowy element (okno dialogowe, kreator czy strona waciwoci) zostaje zintegrowany z platform Eclipse.

Rozszerzanie okienka parametrw rodowiska


i waciwoci zasobu lub obiektu
W Eclipse wystpuj dwa szczeglne typy zintegrowanych okienek dialogowych. Jest
to okno suce do definiowania parametrw rodowiska (Preferences) oraz okienko
dialogowe wywietlajce waciwoci obiektw lub zasobw (Properties). Rysunek
11.1 przedstawia podstawow struktur i moliwoci tych elementw. Doczenie do
kadego z okienek tego typu nowej strony z waciwociami polega na dodaniu rozszerzenia w odpowiednim punkcie.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

271

Cz II Rozbudowa Eclipse

272
Rysunek 11.1.
Struktura okna
dialogowego
skadajcego si
ze stron waciwoci

Struktura okien dialogowych w obu przypadkach jest taka sama, co wida na rysunku
11.1. Zauwa, e okno waciwoci moe odwoywa si do cech zasobu, cho nie jest
to wcale obowizkiem. Moemy w nim operowa na dowolnym zestawie danych, ktre
w jakikolwiek dotycz zasobu lub innego wskazanego obiektu.
Wszystkie doczone do platformy moduy mog wstawia wasne strony do wsplnego
okienka parametrw rodowiska, ktre stanowi jeden z waniejszych elementw obszaru
roboczego. Jest to najlepszy przykad moliwoci integracyjnych Eclipse, poniewa
strony definiowane przez rne narzdzia staj si czci pojedynczego okienka. Okienko
to posiada odpowiednie mechanizmy obsugujce nawigacj wrd tych stron, pozwala
take na ich adowanie i aktywacj dopiero w momencie, gdy s niezbdne. Zawarto
poszczeglnych stron rni si midzy sob, inny jest te zestaw wartoci, ktre s tam
wywietlane i nastpnie zapamitywane. Jednak dziki temu, e przestrzegamy pewnych
oglnych regu, z punktu widzenia uytkownika mamy cay czas do czynienia z jednolitym
rodowiskiem. Nie ma te wtpliwoci, w ktrym miejscu naley szuka ustawie
dotyczcych parametrw systemu. Oczywicie, istniej rwnie pewne parametry
zwizane z dziaaniem poszczeglnych widokw, takie jak biecy filtr czy kolejno
sortowania. Tych nie znajdziemy w okienku parametrw rodowiska, ale wrd opcji
poszczeglnych widokw.
Na bardzo podobnej zasadzie funkcjonuj okienka dialogowe suce do definiowania
waciwoci zasobu lub obiektu. Tak naprawd istnieje jedno takie okno w rodowisku
Eclipse, cho wystpuje ono w wielu wariantach. Wywoywane jest w rnych miejscach,
zwizane moe by z dowolnym widokiem. Typowym rozwizaniem jest jednak dodanie nowej strony do okna wywoywanego z widoku Navigator lub Package Explorer.
W ramach kadej strony definiujemy nowe wasnoci oraz sposb ich zapisywania za
pomoc API obsugujcego przestrze projektw (piszemy o tym w punkcie Wasnoci
zasobw, w rozdziale 15.).
Obsug okna dialogowego waciwoci moemy te doczy do wasnego widoku.
Wolno nam te zdefiniowa odpowiednie strony zwizane z danym rodzajem obiektu lub
zasobu, ktre bd dostpne rwnie dla twrcw innych moduw.
Strony okna dialogowego parametrw i waciwoci dodawane s do rodowiska Eclipse
wycznie za pomoc punktw rozszerzenia. Stanowi one mog wycznie fragment
okrelonych z gry okienek dialogowych. Nie powinnimy prbowa wykorzystywa
ich w innym celu.
Proponujemy rozway taki scenariusz, w ktrym cechy okrelajce parametry rodowiska lub wasnoci obiektu posiadaj pewn warto domyln, z dopuszczeniem
jej modyfikacji.

Rozdzia 11. Okna dialogowe i kreatory

273

Kreatory doczane w punktach rozszerzenia


Kreator uywany jest przez uytkownika do przeprowadzania pewnych nieco bardziej
zoonych operacji. Zadania takie skadaj si najczciej z kilku krokw, kady z nich
wykonywany jest w ramach kolejnej, osobnej strony. Rysunek 11.2 przedstawia podstawy konstrukcji kreatora.
Rysunek 11.2.
Struktura kreatora

Kreator moe by traktowany przez nas jako kontroler, ktry zarzdza skadajcymi
si na niego stronami. One odpowiadaj za ksztat interfejsu uytkownika, sam kreator
natomiast za nawigacj i nadzr caego procesu. Dlatego kada ze stron jest odpowiednio
identyfikowana. Oprcz tego, e definiujemy kad stron, wpyw mamy take na tytu
i inne elementy dekoracyjne kreatora.
Kreatory s narzdziami o wiele bardziej elastycznymi ni strony waciwoci. Moemy
dodawa je do rodowiska za pomoc punktw rozszerzenia, ale te wywoywa samodzielnie z wntrza wasnych moduw. Jeli korzystamy z pierwszego wariantu,
mamy moliwo obsugi trzech typowych sytuacji i miejsc:
 Menu File/New, gdzie tworzymy nowy zasb.
 Menu File/Import, za pomoc ktrego importujemy zasoby do rodowiska.
 Menu File/Export, skd eksportujemy zasoby na zewntrz Eclipse.

Kreator wywoany moe te by z dowolnego miejsca naszego pluginu, jeli tylko zaistnieje taka potrzeba. Nietrudno sobie wyobrazi sytuacj, gdy edytor lub widok wymaga wprowadzenia pewnego zestawu danych, ktrego rczna edycja jest zbyt skomplikowana. Wtedy z pomoc przychodzi nam odpowiednio skonstruowany kreator.
Przykadem moe by widok Properties wchodzcy w skad perspektywy PDE. Moemy w nim rcznie wpisa nazw klasy rozszerzenia, ale istnieje take wariant, w ktrym
z widoku wywoujemy odpowiedni kreator. Pomoe nam on w wykonaniu tej czynnoci, pozwalajc skorzysta z klasy ju istniejcej bd uatwiajc wygenerowanie
nowej.
W kreatorze, podobnie jak w kadym okienku dialogowym, moemy oczywicie korzysta z odpowiednich ustawie i zapisywa stan interakcji z uytkownikiem. Zapisywane mog by wartoci, ktre uytkownik wprowadzi wczeniej, lub lista ostatnio
wybranych elementw. Dziki temu da si w pewnych sytuacjach przewidzie czynnoci, ktre uytkownik bdzie chcia wykona. Przykadem jest tutaj kreator importu
zapamitujcy miejsce, z ktrego ostatnio pobieralimy pliki, lub te kreator nowych
zasobw, ktry podpowiada nam ostatnio wprowadzone w nim wartoci.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

273

Cz II Rozbudowa Eclipse

274

Okna dialogowe oglnego zastosowania


W bibliotekach doczonych do Eclipse znajdziemy implementacj gotowych okien
dialogowych, ktre su do wykonywania wielu czsto powtarzanych czynnoci i mog
zosta bez problemu uyte wewntrz naszych moduw. Ich definicje zawieraj si
w kilku warstwach skadajcych si na interfejs uytkownika Eclipse: SWT, JFace czy
te w klasach definiujcych obszar roboczy.
Pakiet 


oferuje nam dwa typowe okna dialogowe:
 , suce do przegldania i wyboru katalogu.
 , za pomoc ktrego wskazujemy plik do otwarcia lub do zapisu danych.

Te dwa okna dialogowe s elementami sterujcymi SWT. Oznacza to, e korzystaj


z odpowiadajcych im obiektw zdefiniowanych na poziomie konkretnego systemu operacyjnego i mog si midzy sob rni. Dziki temu jednak maj na kadej platformie, na ktrej dziaa aplikacja, naturalny dla uytkownika wygld. Natomiast interfejs
programowy, z ktrego korzystamy (czyli API), jest identyczny.
W tabeli 11.3 znajdziemy list okienek dialogowych, ktre zdefiniowane s w pakiecie

 
. Moemy z nich korzysta w samodzielnie tworzonych na-

rzdziach.
Tabela 11.3. Okna dialogowe zdefiniowane w pakiecie org.eclipse.jface.dialogs
Nazwa klasy

Opis



 

Wywietla typowe okienko komunikatu. Moe zawiera ilustrujcy kategori


komunikatu obrazek. Do dyspozycji mamy nastpujce moliwoci: 
(brak obrazka),  (bd),    (informacja), 
 (pytanie)
oraz   (ostrzeenie).
Okienko dialogowe pozwalajce uytkownikowi na wprowadzenie
pojedynczego acucha znakw.
Z tego okienka dialogowego korzystamy w sytuacji, gdy wykonujemy
dugotrwa operacj i chcemy o stanie jej zaawansowania informowa
uytkownika na bieco. Od nas zaley, czy zadanie to zdecydujemy
si uruchomi w osobnym wtku. Jeli tak, moemy obsuy funkcj
przerwania tego zadania przez uytkownika. Wszystkie te opcje mog
by obsuone przez opisywane okno.
Okno dialogowe suce do wywietlania komunikatu o bdzie. Posiada cz,
w ktrej mog znale si szczegowe informacje o zaistniaej sytuacji.

  


 

 

Rwnie pakiet 


 
oferuje nam zbir okien dialogowych, ktre
potrafi wesprze budowany przez nas modu:
 
 pozwala uytkownikowi wybra elementy znajdujce

si na licie.
 
  suy do wyboru jednego elementu z listy zasobw.
 pozwala wybiera elementy tworzce struktur

drzewa. Podczas selekcji moemy korzysta z mechanizmw filtrowania


i kontroli poprawnoci.

Rozdzia 11. Okna dialogowe i kreatory

275

 
odpowiada typowemu oknu dialogowemu Zapisz jako.

Wskazujemy plik (take taki, ktry jeszcze nie istnieje), do ktrego chcemy
zapisa zawarto obiektu.
Przedstawilimy tylko wybrane okna dialogowe zdefiniowane w pakiecie. Naszym zdaniem s one najbardziej przydatne. Radzimy, by w sytuacji, gdy potrzebne jest nowe
okienko dialogowe, sprawdzi, czy w wymienionych pakietach nie istnieje ju klasa,
ktra spenia nasze wymagania. Jeli jednak stwierdzimy, e konieczne jest zbudowanie
wasnego okienka, warto jego implementacj oprze na jednej z wymienionych klas
bazowych:
 
 

 
 

 
 


Proponujemy rwnie, by opiera si w miar moliwoci na komponentach dostarczanych w ramach SWT i nie tworzy na przykad wasnej implementacji okienka sucego do otwarcia pliku. Stracimy bowiem cechy charakterystyczne dla natywnych w danym systemie aplikacji.

Tworzenie wasnej strony parametrw


Strona parametrw pozwala nam definiowa opcje dotyczce ktrego z zainstalowanych
moduw. Informacje te zapisywane s jako lokalne dane dotyczce wybranego pluginu.
Rysunek 11.3 przedstawia struktur okienka parametrw i zawarte w nim strony. Wida
na nim take sposb, w jaki strona komunikuje ze swym magazynem danych (ang.
preference store).
Rysunek 11.3.
Struktura
okienka parametrw
systemu i zawartej
w nim strony

Okno dialogowe parametrw rodowiska wywietla wszystkie dostpne strony; zarzdza


tym modu zwany menederem stron. Kada z nich skada si z pojedynczego komponentu typu  
, ktry staje si aktywnym obiektem po wskazaniu w drzewie
pozycji odpowiadajcej danej stronie. Przypominamy, e  
 to klasa zdefiniowana
w bibliotece SWT (szczegy znajduj si w rozdziale 10.). Stanowi ona kontener zawierajcy inne elementy sterujce, zdefiniowane przez nas podczas projektowania strony.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

275

Cz II Rozbudowa Eclipse

276

Aktywna strona korzysta z klasy pluginu w celu znalezienia miejsca, w ktrym zapamitujemy wartoci naszych waciwoci (jest to tzw. magazyn danych).
Za komunikacj z magazynem danych odpowiada klasa pluginu. Sama strona parametrw
nie zarzdza zapisywaniem wartoci. To klasa pluginu ma dostp do aktualnej przestrzeni
projektw, w ktrej znajduje si przypisany jej folder sucy do przechowywania
biecych danych. Jest to zawsze folder lokalny, nie repozytorium. Domylne wartoci
parametrw mog by zdefiniowane wewntrz pluginu. O wprowadzonych przez uytkownika zmianach informowa mog zdarzenia pynce od poszczeglnych elementw
interfejsu uytkownika. Wartoci parametrw zapisywane s lokalnie, ale mog by
importowane i eksportowane, tak wic istnieje moliwo przenoszenia ich pomidzy
rnymi przestrzeniami projektw.
W magazynie danych zwizanym ze stron parametrw moemy przechowywa
wartoci, ktre nigdy nie bd widoczne dla uytkownika. Moemy take zapisywa wasnoci zdefiniowane w jednej czci narzdzia, a odczytywa je w drugiej.
Wszystkie one bd wzite pod uwag w czasie wykonywania operacji eksportu oraz
importu.

Za wikszo czynnoci zwizanych z dodawaniem strony parametrw odpowiada szkielet, z ktrego zwykle korzystamy. Naszym podstawowym zadaniem jest definicja znajdujcych si w niej pl. Oto lista kolejnych etapw tworzenia wasnej strony parametrw:
1. Definicja rozszerzenia dotyczcego strony parametrw.
2. Implementacja strony parametrw.
3. Przygotowanie interfejsu uytkownika strony.
4. Okrelenie sposobu zapisu i odczytu wasnoci.
5. Ustalenie domylnych wartoci parametrw.
6. Dodanie kodu zarzdzajcego wartociami parametrw.
7. Obsuga zdarze na stronie parametrw.

Oto szczegowy opis przedstawionych krokw.

Definicja rozszerzenia dotyczcego strony parametrw


Now stron parametrw definiujemy, dodajc do pliku manifestu punkt rozszerzenia
o nazwie 
  !
. Okrelamy tam wartoci trzech atrybutw:
nazw strony, jej identyfikator oraz nazw klasy zawierajcej implementacj. Opcjonalnie
moemy poda kategori na tej podstawie strony parametrw mog tworzy struktur
hierarchiczn widoczn po lewej stronie okna parametrw. Poniej znajduje si przykad,
w ktrym definiujemy dwie strony parametrw. Wystpuje midzy nimi zaleno polegajca na tym, e druga z nich jest elementem wza, ktry stanowi pierwsza.

 !"
   
"#
 
 !"$%& '   ( 
"

Rozdzia 11. Okna dialogowe i kreatory

277



!"
  
   "
!"
  
  "#
) #
)
#

 !"
   
"#
 
 !"$%& ' &  ( 
"
 !"
  
  "


!"
  
&   "
!"
  

 "#
) #
)
#

Powysze punkty rozszerzenia tworz dwie strony parametrw. W drugim z nich wystpuje atrybut  okrela on stron, ktra jest elementem w stosunku do danej
nadrzdnym. Dlatego te druga ze stron znajduje si na drugim poziomie hierarchii.
Od momentu, kiedy punkty rozszerzenia zostan zdefiniowane, w okienku dialogowym
parametrw rodowiska pojawi si odpowiadajce im pozycje. Nie bdzie mia znaczenia fakt, e klasy zawierajce implementacje stron jeszcze nie istniej. Na zawarto
drzewa znajdujcego si po lewej stronie okna parametrw wpyw maj atrybuty zdefiniowane w punktach rozszerzenia. Klasa z implementacj wymagana jest dopiero w chwili,
gdy uytkownik dany element wskae.

Implementacja strony parametrw


Klasa zawierajca kod obsugujcy stron parametrw musi implementowa interfejs
"#$%&!!. Najlepiej skorzysta z typu bazowego o nazwie !'
!. Pocztkowa posta naszej definicji wygenerowana przez narzdzia wchodzce
w skad PDE wyglda nastpujco:
    

   


*+,   )..
. /
*
.)
    01 2
)..
. 3
   4
.)
 0*+, *+,1 2

)..
. 3
   4 5

.)


 5  5
05 
 1 
 6
2

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

277

Cz II Rozbudowa Eclipse

278

Naszym zadaniem jest wzicie odpowiedzialnoci za wygld strony oraz zapis wartoci,
pozostae operacje zwizane ze wspprac z elementami obszaru roboczego bierze na
siebie klasa, po ktrej dziedziczymy.
Interfejs uytkownika definiowany jest za pomoc metody  
. To tutaj
okrelamy wygld strony i wstawiamy do niej wymagane komponenty.
Wszystkie czynnoci inicjalizacyjne zwizane z tworzeniem strony umieszczamy w metodzie . Zostanie ona wywoana tylko raz, gdy po raz pierwszy wejdziemy na dan
stron w oknie parametrw. Jeli chcemy, aby metoda  zostaa uyta ponownie,
naley zamkn okno parametrw i wywoa je po raz kolejny.
Nastpn czynnoci jest implementacja funkcji przypisanych standardowych przyciskom,
ktre pojawiaj si na kadej stronie parametrw. Polega ona na pokryciu odpowiadajcych
przyciskom metod. List przyciskw i metod prezentujemy w tabeli 11.4.
Tabela 11.4. Metody odpowiadajce przyciskom widocznym w okienku parametrw
Nazwa przycisku

Metoda

OK

 (*01

Apply

 7 01

Restore Defaults

  
01

Cancel

 5 01

Metod ($ pokrywamy w celu zdefiniowania czynnoci obsugujcych zapis


aktualnych wartoci parametrw. Jest ona wywoywana w odpowiedzi na kliknicie
przycisku OK oraz Apply. Przycisk Restore Defaults moe by uyty w celu przywrcenia wartoci domylnych naszych parametrw. Zdefiniowane s one na poziomie
pluginu i magazynu danych, ktry mu odpowiada (piszemy o tym w punkcie Ustalenie
domylnych wartoci parametrw). W wikszoci przypadkw nie ma koniecznoci
implementowania pozostaych metod.
Przyciski Restore Defaults oraz Apply pojawiaj si zwykle na stronie parametrw.
Moemy z nich jednak zrezygnowa: wystarczy w tym celu pokry metod  '
 )  w ten sposb, by zwracaa warto 
.
W momencie, gdy mamy ju punkty rozszerzenia oraz projekt klasy implementujcej
stron parametrw, przechodzimy do definiowania jej wygldu oraz sposobu, w jaki
zarzdza bdziemy wprowadzonymi wartociami.

Przygotowanie interfejsu uytkownika strony


W celu zdefiniowania wygldu strony pokrywamy metod  
, w ktrej
wstawiamy kolejne elementy sterujce tworzce zawarto okienka. Obiektem w stosunku do nich nadrzdnym jest przekazany do metody parametr  typu  
.
Szczegy dotyczce programowania z uyciem komponentw SWT opisalimy w rozdziale 10.

Rozdzia 11. Okna dialogowe i kreatory

279

Metoda zaprezentowana poniej dodaje do strony etykiet oraz list rozwijan.




5  5
05 
 1 5 
  
 !
 5 
0 8 &'9(%%16
%:  :  !
 %: 016
:  
  ! 6
:  :  ! ;6
:  %, ! ;6
: 
 ! ;6
 

: 0: 16
: +  + !
 : +0 
8 &'<(<16
 +
'0" * 8  8 + 
 ="16
5+ + !
 5+0 
8 &'<(<16
+

0
 &>?
-"7 "8 " "8 "9+"216
+
'0"
"16
2


  
6

Metoda  


zwraca obiekt typu , na podstawie ktrego wyliczany
jest rozmiar strony i jej ukad w okienku parametrw. Rezultat naszej pracy zobaczymy po wskazaniu odpowiedniej pozycji w oknie dialogowym parametrw, tak jak na
rysunku 11.4.
Rysunek 11.4.
Okno dialogowe
parametrw
rodowiska
zawierajce
now stron

Okrelenie sposobu zapisu i odczytu wasnoci


Zadaniem zdecydowanej wikszoci stron parametrw jest wywietlenie i moliwo
edycji zbioru wartoci. Aktualny ich stan zapisywany jest w magazynie danych, ktrego
lokalizacj okrela zwizany ze stron plugin i ktry znajduje si w odpowiednim folderze naszej przestrzeni projektw. Poszczeglne czynnoci zwizane z odczytem i zapisem
wartoci nie s skomplikowane:
 Plugin udostpnia nam obiekt zawierajcy metody  i
 obsugujce odczyt
i zapis wartoci (jest to zwykle obiekt klasy ! lub !
).
 Ustalamy domylne wartoci parametrw dla danej strony.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

279

Cz II Rozbudowa Eclipse

280

 Uywamy tego obiektu w implementacji naszej strony parametrw.


 Sprawdzamy, czy zawarto obiektu jest poprawnie zapisywana na dysku

po zamkniciu Eclipse.
Eclipse oferuje dwa sposoby zapisywania parametrw. W obu przypadkach obiekt, z ktrego korzystamy, otrzymujemy za pomoc funkcji zawartych w klasie pluginu.
 Uywamy klasy %
*"!  i obiektu !.
 Korzystamy z klasy !  i obiektu !
.

Obiekty typu ! i !


obsuguj nastpujce funkcje:
 Zapis i odczyt pary klucz-warto.
 Ustawianie i pobieranie wartoci domylnych dla poszczeglnych kluczy.
 Zapis wartoci odpowiadajcych typom prostym (%,  %, , ,
 i ).
 Obsuga obiektw suchaczy, ktre odbieraj zdarzenia zwizane ze zmian

wartoci.
Dlaczego mamy a dwa sposoby utrwalania wartoci parametrw? Z przyczyn historycznych. API %
*"!  i implementacja ! pochodz z pierwszej wersji Eclipse. Z wariantu tego korzysta moemy tylko wtedy, gdy klasa pluginu
dziedziczy po %
*"! . To z kolei wymaga doczenia pluginu 
 
do sekcji +, 
- pliku manifestu. W tym podejciu magazyn danych zosta tak
zaprojektowany, by zapewni moliwo zapisu ustawianych przez uytkownika parametrw widocznych w oknie Preferences.
API !  i implementacja obiektu !
pojawiy si w Eclipse 2.0. Nie korzystamy w tym wypadku z pluginu 
 , opieramy si na funkcjach zawartych w module 
 . Dziki nim moliwociami zapisu i odczytu parametrw dysponuje kada aplikacja Eclipse, ktra dziedziczy po klasie ! 
(zamiast %
*"! ), w szczeglnoci nieposiadajca wasnego interfejsu uytkownika (nie jest wymagany plugin 
 ). Wikszo istniejcych pluginw
implementuje oglny interfejs %
*"! . Jeli jednak chcielibymy zbudowa
lekki, pozbawiony czci interfejsu modu i korzysta w nim z zapisu i odczytu pewnych
waciwoci, warto postawi na implementacj abstrakcyjnej klasy ! .

Ustalenie domylnych wartoci parametrw


Domylne wartoci parametrw definiowane s wewntrz pluginu. Istnieje wiele wariantw metody
 , ktra suy do ich okrelania i zapewnia obsug rnych
typw. Jeli dla danej waciwoci zdefiniowano warto domyln, jest ona zwracana
podczas wywoania metody typu  (chyba e wczeniej zostaa zmodyfikowana przez
uytkownika). Moemy take do wartoci domylnych odwoywa si bezporednio.
Jeli nasza klasa pluginu dziedziczy po %
*"! , w celu ustalenia wartoci
domylnych naley pokry jedn z zaprezentowanych poniej metod:

Rozdzia 11. Okna dialogowe i kreatory

281

 . !
/"!
0
 . ! !
/0

Metody te wywoywane s w momencie, gdy prosimy plugin o udostpnienie obiektu


! lub !
.
Gdy korzystamy z obiektu !, pokrywamy metod . '
!
klasy %
*"! .



   
0 &
1 )) * @ 
 *A B  AC AB


 0"  D*"8 " E "16
2

Gdy natomiast zamierzamy uy obiektu !


, pokrywamy metod .'
 ! !
klasy %
*"! .


    
01 )) * @ 
 *A B  AC AB
 
01
 0
"  D*"8
" E "16
2

Dodawanie kodu
zarzdzajcego wartociami parametrw
Okrelenie sposobu, w jaki zapisywane bd dane znajdujce si na stronie parametrw, wymaga kilku czynnoci. Konieczne jest uzyskanie dostpu do obiektu, ktry
wykorzystamy do utrwalania waciwoci. Opcjonalnie kojarzymy go ze stron parametrw, pobieramy wartoci w celu wywietlenia, obsugujemy ewentualne danie
przywrcenia wartoci domylnych, w kocu doczamy funkcjonalno zwizan z zapisem danych. Kolejne punkty zawieraj szczegowy opis wszystkich tych etapw.

Pobranie referencji do magazynu danych


Referencj do obiektu penicego funkcj magazynu danych uzyskamy, wywoujc
jedn z poniszych metod:
 &
!  
 01 &016
 

!  
 01 
016

Lista metod typu


 i , za pomoc ktrych realizowany jest dostp do poszczeglnych parametrw, w obu przypadkach jest taka sama. Jako twrca moduu moesz
zdecydowa, czy dostp do parametrw bdzie moliwy za porednictwem jednej lub
drugiej klasy. Wyjtkiem jest tu metoda definiujca wartoci domylne. Moemy zdefiniowa nawet strony parametrw, ktre posuguj si rnymi wariantami dostpu
w obrbie jednego pluginu. Przy posugiwaniu si klas !!
(co zostanie opisane nieco dalej), moemy korzysta wycznie z obiektu typu !'
.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

281

Cz II Rozbudowa Eclipse

282

Teraz, gdy uzyskalimy dostp do magazynu danych pluginu, definiujemy reguy dotyczce wartoci.

Podczenie magazynu danych do strony parametrw


Gdy uzyskamy dostp do zdefiniowanego w ramach pluginu obiektu !,
moemy bezporednio przypisa go do strony parametrw. Suy do tego metoda
!'
, a ca operacj najlepiej przeprowadzi w ramach wspominanej ju wczeniej metody  wywoywanej podczas pierwszego odwoania do strony.
'  ! ' 016
 0   
 7+
 F1 7+
 F  ! 07+
 F1 6
 
 &0 &0116
2

Dziki takiemu przyporzdkowaniu kod zawarty na stronie i odpowiadajcy za wywietlanie oraz pniejsze zapisanie wartoci moe posugiwa si metod !'
 i w ten sposb, z pominiciem obiektu pluginu, moe odwoywa si bezporednio do magazynu danych. Pozwala to zdefiniowa klas strony parametrw stanowic
wzorzec, w ktrym podczenie do magazynu danych odbywa si bdzie na poziomie
konstruktora.
W hierarchii klas dotyczcych strony parametrw nie znajdziemy natomiast funkcji,
ktra obsugiwayby w ten sam sposb obiekt typu !
. Jeli chcielibymy
skorzysta z podobnego mechanizmu, w klasie implementujcej stron parametrw naley samodzielnie zdefiniowa odpowiednie pole i metody.

Pobieranie wartoci parametrw


Zadaniem strony parametrw jest wywietlenie biecych ustawie aplikacji. Uytkownik dziki temu moe je przeglda i modyfikowa. Do pobierania wartoci stosujemy metody z rodziny ; kada z nich odpowiada innemu typowi. Tak wic acuchy znakowe odczytujemy metod , a wartoci logiczne ).
Oto przykad pobrania wasnoci typu , ktr nastpnie wstawiamy do elementu
sterujcego:
 

 



 

+
'0 &01&0"  D*"116
 

 




+
'0' 01 
01&0"  D*"11
6

Wartoci pobieramy zwykle raz, w ramach tworzenia interfejsu uytkownika strony.


Moe zdarzy si jednak taka sytuacja, e t sam waciwo umiecimy na wicej
ni jednej stronie parametrw. W takim wypadku konieczna jest operacja odwieania
podczas zmiany stron. Nie polecamy takiego rozwizania, jednak czasami jestemy do
tego zmuszeni. W takim przypadku kod odpowiadajcy za ponowne pobranie i wywietlenie wartoci umieci moemy w metodzie
1
%.

Rozdzia 11. Okna dialogowe i kreatory

283

Przywracanie wartoci domylnych


Za pomoc znajdujcego si na stronie parametrw przycisku Restore Defaults uytkownik moe przywrci wartoci domylne. Poniej prezentujemy kod, ktry stanowi przykad implementacji takiej operacji. Zakadamy w nim, e nasz plugin zawiera
ju definicj wartoci domylnych:
 

 



 

+
'0 &01 &0"+D D*"116
 

 




+
'0
' 01
 
01
 &0"+D D*"116

Zapis wartoci parametrw


Gdy uytkownik kliknie przycisk Apply lub OK, odczytujemy biece wartoci widoczne na ekranie i na ich podstawie modyfikujemy waciwoci znajdujce si w magazynie danych. Kod, ktry to realizuje, znajduje si w metodzie ($. Jest ona
wywoywana w odpowiedzi na kliknicie zarwno przycisku Apply, jak te OK.
Istnieje tylko jedna metoda,
1 , suca do ustawiania wartoci parametru. Jednak
zdefiniowano kilka jej wariantw, a to za spraw koniecznoci obsugi wielu typw zapisywanych danych (%,  %, , ,  i ). Metod zawsze wywoujemy z dwoma parametrami, z ktrych pierwszy stanowi klucz, a drugi warto.
Oto przykad:
 

 



 

 &01
E 0
"+D D*"8
+'0116
 

 




' 01 
01
E 0
"+D D*"8
+'0116

Metoda
1  nie powoduje jednak zapisu wartoci na dysk. Magazyn danych zarzdzany przez plugin jest automatycznie utrwalany podczas zamykania Eclipse. Gdy
plugin dziedziczy po klasie %
*"! , zajmuje si tym metoda
& . Istnieje jednak sposb na natychmiastowe zapisanie wartoci. Naley w tym celu wywoa
zdefiniowan na poziomie pluginu metod o nazwie
! !
. Tak postpujemy, gdy nasz modu dziedziczy po klasie ! .
Moemy rwnie osobno zaimplementowa metod  , ktra wywoywana
bdzie po klikniciu przycisku Apply. Naley jednak pamita, e stanowi ona jedynie
uzupenienie, a nie alternatyw dla metody ($ ( ($ bdzie i tak wywoana
po klikniciu Apply).

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

283

Cz II Rozbudowa Eclipse

284

Obsuga zdarze na stronie parametrw


Jeli chcemy na bieco obserwowa zmiany zachodzce na stronie parametrw i od
razu na nie reagowa, dodajemy swj obiekt bdcy suchaczem zdarze. Operacja ta
dotyczy moe zarwno wariantu korzystajcego z !, jak te !'

. Implementacja obiektu odpowiadajcego na zdarzenia pochodzce ze strony parametrw zaley od sposobu magazynowania danych. Obiekt nasuchujcy zostanie poinformowany o zdarzeniu zwizanym ze zmian waciwoci.
Naszym zadaniem jest ustalenie na podstawie parametrw zdarzenia, czy stan danego
parametru ma wpyw na inne wartoci, i ewentualne podjcie odpowiednich, zgodnych
z logik aplikacji czynnoci. Ponisze fragmenty kodu pokazuj, jak za pomoc suchacza zdefiniowanego w postaci klasy wewntrznej wypisa identyfikator wasnoci.
 

 



 

'
 01
 &01
  5, :
0
  5, :
01   5, 0 5, G G1 &
 0"  
 , "16
&
 0G 0116
26
216
 

 




'
 01
 
01
  5, :
0

  
 5, :
01   5, 0
 
 5, G G1 &
 0"  
 , "16
&
 0G 0116
26
216

Edytor pl jako typ strony parametrw


Gdy zdecydujemy si na stworzenie strony parametrw, ktra dziedziczy po klasie
!!, scenariusz dalszego postpowania jest nastpujcy:
 Implementacja interfejsu uytkownika strony za pomoc komponentw

biblioteki SWT i JFace.


 Pobranie poszczeglnych parametrw stanowicych stan pocztkowy strony.
 Pokrycie metod obsugujcych zapis wasnoci oraz powrt do wartoci

domylnych.

Rozdzia 11. Okna dialogowe i kreatory

285

Istnieje jednak inne podejcie. Moemy zbudowa stron opierajc si na wzorcu noszcym nazw edytora pl. W takim przypadku proces definiowania strony przebiega
inaczej:
1. Dodajemy rozszerzenie dotyczce strony.
2. Tworzymy klas, ktra dziedziczy po !!
i implementuje interfejs "#$%&!!. Zawiera ona

w sobie obsug edytora pl.


3. Definiujemy bezparametrowy konstruktor. W nim okrelamy ukad edytora pl,
wywoujc konstruktor klasy bazowej i przekazujc mu parametr 2" lub .
4. Doczamy do strony parametrw obiekt bdcy magazynem danych
(w tym przypadku musi to by obiekt typu !).
5. Implementujemy metod 
, ktra tworzy i dodaje do strony
odpowiednie pola (obiekty dziedziczce po klasie ).

Klasa !! sama zajmuje si takimi operacjami, jak obsuga,


zapis i odczyt wartoci. Dodawanie gotowych komponentw typu  jest zadaniem atwiejszym ni budowanie kompletnego interfejsu uytkownika od pocztku
i zapewnienie poprawnej jego wsppracy z obiektem penicym funkcj magazynu
danych.
Poniej przedstawiona zostaa implementacja strony parametrw opartej na klasie
!!, ktra wywouje konstruktor klasy bazowej z parametrem
2" i podcza obiekt magazynu danych:
   


   


*+,   -

   01 


0H%16


 0"       I"16
 &
 ! ' 01
 &016

 &0
16
2




Obiekty odpowiadajce kolejnym polom strony rwnie zawieraj w sobie podstawow


funkcjonalno i wsppracuj z innymi skadnikami tworzcymi szablon. Stanowi one
okrelone komponenty interfejsu uytkownika, aduj wartoci, obsuguj ich zapis
oraz przywracanie wartoci domylnych. Za szczegy zwizane z logik przetwarzania
odpowiada ju implementacja klasy reprezentujcej nasz wasn stron, ktra dziedziczy po !!.
W tabeli 11.5 prezentujemy rodzaje elementw, ktre mona wstawi do strony edytora pl.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

285

Cz II Rozbudowa Eclipse

286

Tabela 11.5. Typy obiektw, ktre mog by skadnikami strony edytora pl


Rodzaj pola

Opis

9 

Pole obsugujce warto typu + .

% H 

Kilka wartoci widocznych jako lista pl opcji.



Pole suce do edycji wartoci typu .

5

W ten sposb obsugujemy wybr koloru.

&

Element, w ktrym wprowadzamy acuch tekstowy.

&9

Abstrakcyjne pole suce do wprowadzania wartoci bdcej acuchem


znakw, wyposaone w przycisk pozwalajcy doda obsug
(np. okno dialogowe) zwizan z edycj pola.

:


Abstrakcyjny element zarzdzajcy wyborem wartoci z listy. Wywietla


poszczeglne wartoci, przyciski suce do dodawania nowych i usuwania
istniejcych oraz przyciski Up i Down zmieniajce ich kolejno.

 ,

Pole zwizane z wyborem cieki dostpu. Zbudowane w oparciu


o klas :
.



Pole obsugujce parametry bdce ciek katalogu. Po klikniciu


przycisku 5,  pojawia si standardowe okno dialogowe zawierajce
list folderw.



W tym polu zawarta jest obsuga wyboru pliku wraz z pen ciek
dostpu. Standardowe okno dialogowe wywoujemy przyciskiem 5, .



W ten sposb obsugujemy wybr czcionki.

   Pole implementuje zaleno midzy wartociami znajdujcymi si

w dwch magazynach danych: rdowym i docelowym. Kada zmiana,


ktra zachodzi w pierwszym, pociga za sob modyfikacj drugiego.
*+,5, '


Pole podobne do poprzedniego. rdowym magazynem danych


s tutaj ustawienia obszaru roboczego.

Poniej znajduje si przykad implementacji metody 


, w ktrej do
strony dodajemy trzy pola rnego typu:


  
01 )) 
  AC   & 
 *
))
J@B   *   J AA8
))  J K,  *  

5 
 !
 50
"5(:(%D/L"8 "5(:(%D/LD: +"8
 0116
9  

 !
 9 0
"9((:7<D/L"8 "9((:7<D/LD: +"8


&'<(<8
 0116
 

 !
 0
":D/L"8 ":D/LD: +"8
8  0116



0

 &>? -". "8 "."8 ". " 216

Rozdzia 11. Okna dialogowe i kreatory

287

0
16
0

16
0

16

Zaprezentowany kod definiuje stron, ktrej ksztat prezentujemy na rysunku 11.5 (oczywicie, strona jest w rzeczywistoci elementem okna dialogowego parametrw systemu).
Rysunek 11.5.
Strona bdca
edytorem pl

Tworzenie wasnej strony waciwoci


Po zdobyciu odpowiednich dowiadcze w budowie stron parametrw (Preferences)
przechodzimy do stron waciwoci (Properties). Implementacja obu tych skadnikw
rodowiska Eclipse ma wiele wsplnych elementw.
Rol okienka dialogowego waciwoci jest prezentacja i ewentualna modyfikacja cech
obiektu, ktremu przypisane jest omawiane okno. W wielu widokach, takich jak Navigator, Package Explorer czy Error Log, po wskazaniu danego obiektu i wybraniu z menu
polecenia Properties wywietli si okienko zawierajce list cech charakterystycznych
dla tego wanie elementu. Chocia now stron waciwoci moemy doda do kadego okienka typu Properties, najczciej wiemy j z okrelonym typem zasobu lub
obiektem z danym zasobem zwizanym. Dlatego te typowym miejscem, do ktrego j
doczamy, jest okienko Properties widoku nawigatora i przegldarki pakietw. Moliwo powizania okrelonego zbioru wasnoci z danym zasobem jest duym uatwieniem dla uytkownika. Z jego punktu widzenia rodowisko dostosowuje si na bieco
do wykonywanych przez niego czynnoci. Rysunek 11.6 prezentuje struktur okna dialogowego Properties i osadzonych w nim stron. Widzimy tam rwnie sposb, w jaki strona waciwoci wsppracuje z zasobem wskazanym tu przed wywoaniem okienka.
Rysunek 11.6.
Struktura okna
dialogowego
waciwoci
i znajdujcych
si tam stron

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

287

Cz II Rozbudowa Eclipse

288

Jak wida na rysunku, okno dialogowe Properties prezentuje uytkownikowi pewien


zbir stron waciwoci zarzdzanych przez obiekt bdcy ich menederem. Kada
strona waciwoci stanowi pojedynczy panel, ktry staje si aktywnym i widocznym
elementem interfejsu po wskazaniu odpowiadajcej mu pozycji w drzewie zawierajcym list dostpnych stron. Strona posiada dostp do wskazanego zasobu bd innego
obiektu. Jeli jest to zasb, za pomoc API zwizanego z przestrzeni projektu moemy
odwoywa si do przypisanych mu parametrw. Ich zbir jest przechowywany w magazynie danych, ktrym zarzdza Eclipse. Magazyn danych stanowi wartoci, ktre znajduj
si w przestrzeni projektw, nie s natomiast wysyane do repozytorium.
Pozostae komponenty pokazane na rysunku 11.6 s czci szablonu, na podstawie ktrego tworzymy wasne rozszerzenie. Rwnie w tym przypadku w wielu czynnociach
mog wyrczy nas klasy bdce szkieletem dla naszych wasnych rozwiza. Stworzenie
typowej strony waciwoci skada si z czterech etapw:
1. Definicja rozszerzenia dotyczcego strony waciwoci.
2. Implementacja klasy strony.
3. Definicja wygldu strony.
4. Napisanie kodu, ktry odpowiada za jej logik.

Poniej zamieszczamy dokadny opis tych punktw.

Definicja rozszerzenia
dotyczcego strony waciwoci
Pierwszym krokiem do dodania nowej strony waciwoci jest zdefiniowanie w pliku
manifestu rozszerzenia typu 
   !
. W ramach tej operacji naley:
 Nada stronie nazw oraz identyfikator.
 Okreli rodzaj obiektu lub zasobu, z ktrym now stron chcemy poczy.
 Wskaza klas zawierajc implementacj strony.
 Opcjonalnie doczy ikonk widoczn na stronie.
 Zdefiniowa (rwnie opcjonalnie) filtr pozwalajcy precyzyjnie okreli

warunki, jakie musz zosta spenione, by strona zostaa wczona do okna


dialogowego Properties.
W ten sposb doczamy stron do okna dialogowego wywoywanego w celu edycji
waciwoci wskazanego typu zasobw.
Atrybut %  

okrela rodzaj skadnika, z ktrym strona bdzie zwizana. Mamy


tu na myli oglny typ elementu, tzn. plik, folder lub projekt wskazany w widoku Navigator. Wymienionym w poprzednim zdaniu typom elementw odpowiadaj kolejno
interfejsy ", " oraz "! .
Zaprezentowana poniej definicja rozszerzenia dotyczy strony waciwoci, ktra pojawi
si, gdy wskazanym elementem bdzie plik o rozszerzeniu .java. Jej implementacja znajdzie si w klasie 3! !. Zostanie ona doczona do okienka dialogowego

Rozdzia 11. Okna dialogowe i kreatory

289

Properties w chwili, gdy plik tego typu wskaemy w widoku Navigator. Nie pojawi
si natomiast po jego wskazaniu w przegldarce pakietw widok ten traktuje zawarte
w nim obiekty jako elementy jzyka Java a nie pliki.

 !"
   
"#
 
+ 5

!"

"
 !"M G   
"
 !". G "


!"
  
M G   "
!"
  

"#
) #
)
#

Jednak zakadamy, e jeli definiujemy stron dla plikw typu .java, chcielibymy mc
j zobaczy w okienku waciwoci, ktre otworzymy podczas pracy w przegldarce
pakietw. Tam jednak ten sam plik traktowany jest jako zasb innego rodzaju, ktrym
jest tzw. jednostka kompilacji (ang. compilation unit). Rozwizanie tego problemu
jest moliwe i polega na tym, e korzystamy z atrybutu  %, wskazujcego na to,
e dany obiekt moe zosta potraktowany jako okrelony zasb, tak by mona byo
skorzysta z funkcji sucych do zapisu i odczytu jego waciwoci. Przypisanie '
 %45 5 pozwoli nam zobaczy stron waciwoci zarwno w widoku Navigator, jak te Package Explorer.

 !"
   
"#
 
+ 5

!"

"
  +!""
 !"M G %
  
"
 !". G "


!"
  
M G   "
!"
  

"#
) #
)
#

Widok Package Explorer nie wywietla plikw, tylko obiekty (elementy typu IJavaElemet) zdefiniowane wewntrz moduu JDT. Tak wic to, co dla widoku Navigator
jest plikiem typu .java (odpowiada skadnikowi typu "), dla przegldarki pakietw
(ktra wchodzi w skad JDT) jest jednostk kompilacji (interfejs "  *).
Jednak wskazany element moe zosta odpowiednio przystosowany i traktowany jako
typ "
 , udostpniajc tym samym metody  i
, za pomoc ktrych uzyskujemy dostp do jego parametrw.
Gdybymy chcieli, by nasza strona zostaa doczona wycznie do okienka Properties widoku Package Explorer, moglibymy atrybutowi %  

przypisa warto 


 "  *.
Moemy take wyposay nasze rozszerzenie w mechanizm filtrowania elementw,
z ktrymi chcemy zwiza nowo dodan stron. W tym celu naley do wza + wstawi element +455 455-, definiujc w ten sposb dodatkowe warunki. List opcji filtrowania prezentuje tabela 11.6.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

289

Cz II Rozbudowa Eclipse

290
Tabela 11.6. Opcje filtrowania strony waciwoci
Typ obiektu

Nazwa

Wartoci

Zasoby




Rozszerzenie, np. .txt lub .java.

 

Nazwa zasobu.

,

cieka dostpu (dozwolony jest znak ).

 < 

Identyfikator natury projektu.

 (

Czy zasb jest tylko do odczytu ( lub 


).

 

Identyfikator natury projektu.

 

Czy projekt jest otwarty ( lub 


).

Projekty

Implementacja klasy strony


Klasa, ktra odpowiada za obsug strony waciwoci, implementowa powinna interfejs "#$%&! !. Moemy oczywicie definiowa j od podstaw samodzielnie, znacznie wygodniej jednak bdzie skorzysta z klasy bazowej ! !.
 M G   

   


*+,   )..
. 3
   4 5

.)


 5  5
05 
 1 
 6
2
2

Jeli uywamy klasy, ktra stanowi szablon strony, moemy pomin kodowanie standardowych operacji i skoncentrowa si wycznie na jej cechach indywidualnych, takich
jak wygld czy odpowiednie zarzdzanie wartociami.
Jeli strona ma charakter czysto informacyjny, wymagane jest pokrycie wycznie metody
 
. Dodajemy w niej elementy sterujce; komponentem w stosunku do nich
nadrzdnym jest przekazany metodzie parametr typu  
. Gdy jedynie wywietlamy wasnoci obiektu warto pokry metod   )  i zwrci
w niej warto 
 w ten sposb ukryjemy zbdne przyciski Restore Defaults
oraz Apply. Pozostan tylko przyciski OK i Cancel, ktre su do zamknicia okna
dialogowego Properties.
Gdy strona waciwoci dopuszcza, oprcz wywietlania, rwnie modyfikacj cech danego zasobu, czeka nas jeszcze nieco pracy. Operacje te w duym stopniu zwizane bd
z obsug przyciskw, ktre wraz z odpowiadajcymi im metodami przedstawiamy
w tabeli 11.7.
Mamy w tym momencie definicj punktu rozszerzenia oraz szkielet klasy obsugujcej
stron waciwoci. Kolejne punkty powicimy analizie kodu rdowego, ktry odpowiada za jej wygld i logik.

Rozdzia 11. Okna dialogowe i kreatory

291

Tabela 11.7. Metody pokrywane w czasie implementacji strony


Nazwa przycisku

Metoda

OK

 (*01

Apply

 7 01

Restore Defaults

  
01

Cancel

 5 01

Definicja wygldu strony


W celu dodania do strony elementw sterujcych pokrywamy metod  
.
W przykadzie zaprezentowanym poniej komponentami tymi s etykieta oraz dwa pola
wyboru:


5  5
05 
 1 5 
  
 !
 5 
0 8 &'<(<16
H:  :  !
 H: 016
 

: 0: 16
: +  + !
 : +0 
8 &'<(<16
 +
'0"5,

  
 
"16
9 9 !
 90 
8 &'5N5/16
9
'0"%  & "16
9
&0% & 0116
9   9 !
 90 
8 &'5N5/16
  9
'0"   "16
  9
&0   & 0116
2


  
6

Warto pl wyboru odpowiada parametrom zasobu. Wynik dziaania metody  '

widzimy na rysunku 11.7.
Rysunek 11.7.
Interfejs uytkownika
strony waciwoci

Kod odpowiadajcy za logik strony


API suce do obsugi przestrzeni projektw (szczegy w rozdziale 15. Obsuga
zasobw przestrzeni projektw) zawiera funkcje pozwalajce odczytywa i zapisywa
parametry danego zasobu. Interfejs "
  definiuje zbir metod z wyranie zazna-

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

291

Cz II Rozbudowa Eclipse

292

czonym podziaem na te, ktre ustalaj wasnoci zasobu na stae, i na te, ktre robi to
tylko na czas trwania biecej sesji.

&

 0$  <  *8 (+  G 16


&

 0$  <  *16



 0$  <  *8 & G 16


 0$  <  *16

Warto parametru 6 7, ktry okrela nazw wasnoci, skada si w tym


przypadku z dwch czci. Pierwsza z nich zwyczajowo okrela nazw pluginu, druga
to nazwa wasnoci. Te z nich, ktre obowizuj tylko na czas trwania sesji, przechowywane s wycznie w pamici. Wasnoci majce charakter trway zapisywane s
na dysku, w aktualnej przestrzeni projektw. Te pierwsze mog by reprezentowane
przez obiekt dowolnego typu, waciwoci utrwalane na dysku to wycznie acuchy
znakowe (typ ).
Poniej widzimy fragment kodu pobierajcy wartoci, ktre okrela bd pocztkowy
stan strony waciwoci:

   $  <   ! "#$ %&#' & !

 $  < 0"
"8 ""16



 % & 01 %
 
 ! 0%
1 016
 &  E  !

(

 

 ) ! "#$ %&#' &*6
 00  E  O! 1 PP  E  
0"'"11

 6


 
6
2  05  1 )) +
J  B*
2

 
6
2

Teraz natomiast przedstawiamy przykad implementacji metody ($, w ktrej


zapisywana warto konwertowana jest do typu :

  (*01
% & 09&0116

  
  (*016
2


% & 0
 G 1 %
 
 ! 0%
1 016
  0G 1 



 0
%H<D%(%'LD/L8 "'"16
2

-

Rozdzia 11. Okna dialogowe i kreatory

293





 0
%H<D%(%'LD/L8 " 
"16

2
2   05  1 -2

Metoda ($ jest wywoywana w odpowiedzi na kliknicie przycisku OK. Jest


ona rwnie domyln czci  .

Zasady przyporzdkowywania waciwoci


Podstawowym zadaniem strony waciwoci i prezentowanych na niej wartoci jest
moliwo przypisania okrelonej cechy do konkretnego, pojedynczego zasobu. Korzystamy przy tym z API, ktre zawiera funkcje dotyczce przestrzeni projektw. Czasami
jednak definiujemy wasno dotyczc nie pojedynczego pliku, ale wszystkich zasobw
danego typu. Moemy wtedy zastosowa rozwizanie polegajce na tym, e warto
widoczna na stronie waciwoci zapisywana bdzie w magazynie parametrw caego
systemu przy pomocy jednej pary klucz-warto. Tak jak dzieje si w przypadku wartoci
widocznych w okienku parametrw systemu. Implementacja takiego wariantu nie jest
skomplikowana, klasa strony waciwoci dziedziczy po klasie strony parametrw. Moemy wic z jej poziomu odwoywa si do wsplnego dla caej przestrzeni projektw
magazynu danych.
Jednak w takim momencie naley zweryfikowa to podejcie i upewni si, czy jest to
suszna decyzja projektowa. Moemy zada sobie przecie pytanie, czy w sytuacji, gdy
mamy do czynienia z jedn, globaln wartoci, jej miejscem nie powinno by okienko
parametrw rodowiska i strona zwizana z ktrym z narzdzi?
Musimy by przekonani co do przesanek takiego rozwizania. A uytkownik intuicyjnie powinien kojarzy dan opcj z okienkiem waciwoci zasobu. Jeli tak nie jest,
edycj wartoci naley przenie do dialogu Preferences.

Implementacja
wasnego okna dialogowego Properties
Dotychczas zakadalimy, e rozszerza bdziemy okno dialogowe Properties zwizane
z widokiem Navigator, wspominalimy te o wywietlaniu waciwoci elementw zawartych w widoku Package Explorer, gdzie dokonalimy pewnego rodzaju rzutowania
zasobu typu " na obiekt widziany jako jednostka kompilacji.
Jednak swoj stron waciwoci doczy moemy do dowolnego okienka dialogowego
Properties, jeli tylko znamy typ obiektw wywietlanych w widoku, z ktrym jest ono
zwizane. W takich przypadkach czsto dokonujemy operacji adaptacji zasobw do typu
obiektw znajdujcych si w widoku. W tym przypadku konieczne jest, aby obiekty
prezentowane w widoku implementoway interfejs " %.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

293

Cz II Rozbudowa Eclipse

294

Kreatory tworzenia nowych zasobw,


importu oraz eksportu
Definiujc odpowiednie rozszerzenie i posugujc si dostpnym szablonem, w prosty
sposb jestemy w stanie skonstruowa kreator odpowiadajcy za tworzenie nowych
zasobw, a take za ich import i eksport. Rysunek 11.8 przedstawia struktur kreatora
oraz zawartych w nim stron i ich relacje z klas #., ktra stanowi ramy caego
rozwizania.
Rysunek 11.8.
Struktura kreatora
i zawartych
w nim stron

Kreator reprezentuje pewn, zoon zwykle z paru krokw, operacj. Skada si on


z kilku stron, kada z nich odpowiada jednemu etapowi zadania. Bardzo czsto przejcie do kolejnej strony zaley od tego, czy poprawnie wypeniono stron poprzedni.
Gdy kompletna jest ostatnia z nich, koczy si dziaanie kreatora i wywoywana jest
metoda 
&.
Nowy kreator dodajemy do rodowiska za pomoc punktu rozszerzenia. Zostaje on automatycznie wstawiony w ramy standardowego okna dialogowego. Zarzdza ono zestawem stron oraz zawiera elementy pozwalajce na nawigacj.
Kreator wystpuje przede wszystkim w roli kontrolera. To on decyduje, ktra strona jest
w danym momencie wywietlana, czy mona przej do nastpnej itp. Uytkownik za
posuguje si przyciskami Next i Back ich zadaniem jest wykonanie operacji przejcia
do etapu nastpnego lub poprzedniego. Nie zawsze przyciski te s aktywne, zaley to
od liczny stron, aktualnego stanu kreatora i kompletnoci wprowadzonych danych. Wasne
kreatory budujemy w oparciu o istniejcy schemat, dodajc rozszerzenie w pliku manifestu, projektujc kolejne strony oraz piszc kod odpowiadajcy za sterowanie i obsug
zadania. Oto lista czynnoci, ktre skadaj si na proces tworzenia wasnego kreatora:
1. Definicja rozszerzenia.
2. Implementacja klasy kreatora.
3. Implementacja strony (stron) kreatora.
4. Dopasowanie wygldu strony (stron) kreatora.
5. Napisanie kodu, ktry odpowiada za sposb dziaania.

Kroki te, a take dodatkowe zagadnienia zwizane z dostosowaniem kreatora do naszych


potrzeb, s tematem kolejnych punktw.

Rozdzia 11. Okna dialogowe i kreatory

295

Definicja rozszerzenia
Istniej trzy rodzaje rozszerze, ktre moemy wykorzysta w celu dodania do rodowiska nowego kreatora. Odpowiadaj one operacji stworzenia nowego zasobu, procesowi
importu oraz eksportu.
 
 #.

 
  #.

 
 8 #.

Oto przykad punktu rozszerzenia, w ktrym doczamy do rodowiska kreator importu:




!" "
!"
  
"#
 
 !"$%&   "


!"
 
  "
!"
 
 "#
) #
)
#

Za pomoc przedstawionych punktw rozszerzenia wstawiamy nowe pozycje w trzech


dobrze znanych uytkownikowi Eclipse miejscach:
 
 #.
dodaje now opcj umieszczan wrd tych,

ktre s widoczne po wybraniu polecenia File/New/Projects i File/New/Other.


 
  #.
to nowy kreator dostpny po wskazaniu opcji

File/Import.
 
 8 #.


9%$
 &''

File/Export....
Kade z wymienionych polece menu wywietla okienko dialogowe, w ktrym moemy wybra jedn pozycj z dostpnej listy kreatorw. Opcja Projects uwzgldnia
tylko te punkty rozszerze, w definicji ktrych atrybut   ma warto  .
Rwnie przy okazji definiowania rozszerzenia moemy poda informacje na temat
kategorii i w ten sposb odpowiednio zorganizowa dostpne opcje.


!""
 !"
  
"
!"
 
"#
 
 !"5   5 "
!"
 
 "#
) #
 
 !"7 <   "
 !"
 
 "


!"
 
$%&< "
!"
 
"#

 #

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

295

Cz II Rozbudowa Eclipse

296

7    ,    &   ,




   +  G  + 



)
 #
) #
)
#

Na rysunku 11.9 prezentujemy okno dialogowe, w ktrym wida zdefiniowan now


kategori oraz przyporzdkowany jej kreator (wraz z krtkim opisem). Definicja tego
rozszerzenia znajduje si powyej.
Rysunek 11.9.
Nowy kreator
zasobw

Okno dialogowe z rysunku 11.9, suce do wyboru kreatora, samo te jest obiektem
tego typu i posiada przyciski pozwalajce na nawigacj. Po dokonaniu okrelonego wyboru i akceptacji wywoywany jest z niego kolejny, zdefiniowany oddzielnie kreator
zajmujcy si ju bezporednio tworzeniem nowego projektu bd zasobu.

Implementacja klasy kreatora


Podstaw konstrukcji kreatora jest klasa dziedziczca po klasie #. i implementujca
odpowiedni interfejs (zalenie od typu kreatora, ktrego dotyczy). To ona peni funkcj
kontrolera. Lista interfejsw, ktre odpowiadaj typom punktw rozszerzenia, znajduje
si w tabeli 11.8.
Tabela 11.8. Punkty rozszerzenia suce do wstawienia kreatora
Punkt rozszerzenia

Interfejs


 

< 


  

  


  

  

Rozdzia 11. Okna dialogowe i kreatory

297

Narzdzia wchodzce w skad PDE generuj dla kadego typu rozszerzenia inny szkielet
klasy. Przykad zamieszczony poniej dotyczy kreatora, ktry odpowiada za stworzenie
nowego zasobu. Klasa kontrolera nosi nazw 67#., implementuje interfejs
"7#.:
 $%&< 

  


<  )..
. /
*
.)
 $%&< 01 2
)..
. 3
  4  
,
.)

  
,01 
 
6
2

)..
. 3
  4
.)
 0
*+, *+,8
&&
1 2

Naszym zadaniem jest zdefiniowanie i dodanie klas reprezentujcych strony kreatora,


napisanie kodu, ktry odpowie za logik moduu, oraz implementacja metody '

&, ktra zwraca warto   na znak, e proces zakoczy si sukcesem.

Implementacja strony (stron) kreatora


Implementacja strony kreatora nie jest czynnoci skomplikowan i polega na stworzeniu
klasy dziedziczcej po #.!, w ktrej pokrywamy metod   odpowiadajc za ksztat strony.
  505 
 1 5 
  
 !
 5 
0 8 &'<(<16
%:  :  !
 %: 016
:  
  ! 6
:  :  ! ;6
:  %, ! ;6
: 
 ! ;6
 

: 0: 16

: +  + !
 : +0 
8 &'<(<16
 +
'0"& 

  ="16
5+ + !
 5+0 
8 &'<(<16
+

0

 &>? -"7 "8 "  "8 "N+" 216

50 
16

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

297

Cz II Rozbudowa Eclipse

298

W powyszym kodzie metoda


  zostaa uyta w celu wskazania obiektu bdcego kontenerem zawierajcym elementy sterujce strony. Jest to podejcie nieco
inne od tego, ktre poznalimy podczas prezentacji analogicznej metody  

sucej do definiowania zawartoci strony parametrw.


Kolejne strony wstawiamy do kreatora, pokrywajc jego metod !
. W nastpnym przykadzie do kreatora 67#. dodajemy stron, ktrej odpowiada klasa
 #.!.
  
01 &    
  !

 &   0"
  "16

 
'0"'  , 
   "16

 

 0
"
   , 
   "16
 0
 16
2

Do naszego kreatora moemy wstawia take strony zdefiniowane wewntrz Eclipse


(piszemy o tym w punkcie Predefiniowane strony kreatora).

Po zdefiniowaniu klasy bdcej kontrolerem kreatora, klasy strony kreatora i poczeniu


ich w jedn cao moemy ju wyprbowa, jak dziaa nasza konstrukcja. W tym celu
w oknie dialogowym sucym do tworzenia nowych zasobw wskazujemy dodan
przed chwil pozycj i rozpoczynamy dziaanie kreatora (rysunek 11.10).
Rysunek 11.10.
Podstawowa
implementacja
kreatora
i jego strony

Na rysunku wida tytu i opis pierwszej jego strony. Jeli zdecydujemy, e strona w czasie
dziaania moe sygnalizowa bdy (np. niepoprawne wartoci), komunikat taki pojawi
si w miejscu, w ktrym znajduje si opis. W obu przypadkach korzystamy bowiem z tego
samego elementu sterujcego.

Rozdzia 11. Okna dialogowe i kreatory

299

Dopasowanie wygldu strony (stron) kreatora


Kolejnym krokiem, ktry naley wykona, jest dopasowanie kreatora do zadania, za
ktre odpowiada.
Polega to na okrelaniu szczegw dotyczcych jego wygldu. Chodzi tu zarwno
o wstawienie tytuu, ikonki czy paska postpu, jak te o obsug wartoci z nim zwizanych
(nie zawsze jest to konieczne).
W przypadku interfejsu uytkownika najlepszym miejscem na wykonanie wspomnianych czynnoci inicjalizacyjnych jest metoda . Wywoamy w niej metod
'
#, ktra umieci okrelony tekst w linii tytuowej okienka. Funkcja
'
 !"
  wstawi do kreatora ikonk widoczn na kadej stronie (za
wyjtkiem sytuacji, gdy strona sama odpowiada za sw ikonk i korzysta w tym celu
z metody
"
 ).
Przykad implementacji metody  prezentujemy poniej:
 0
*+, *+,8 &&
1 -

'0"5
   '"16

   


 0
 
 0"
 "116

<


016

A kolejny fragment kodu, czyli metoda "


 , pokazuje nam, jak pobra
ikonk z folderu przypisanego pluginowi:

 
   
 0
&  G ,1 -

&  , ! "


)"6
 '  ! ' 016
F%: 
 F%: ! 
 01
 F%:016
F%:  !
 F%:0
 F%:8  , Q  G ,16

  
  F%:016
2   0  F%:  1 )) '  
R  C

 6
2

Kilka powyszych operacji zmienia wygld naszego kreatora widzimy to na rysunku 11.11.
Jeszcze raz przypomnimy, e metoda
"
  zdefiniowana w klasie reprezentujcej stron pozwala nam uy tam ikonki innej ni zdefiniowanej globalnie
dla caego kreatora.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

299

Cz II Rozbudowa Eclipse

300
Rysunek 11.11.
Dostosowana
strona kreatora

Nawigacja wrd stron kreatora


Kiedy kreator skada si z wicej ni jednej strony, odziedziczony z szablonu kod powoduje, e przycisk Next staje si aktywny. Reguy zwizane ze sprawdzeniem, czy mona
przej do kolejnej strony, rwnie s skadnikiem klasy bazowej. Za porzdek okrelajcy stron poprzedni i nastpna odpowiada kolejno ich dodawania w czasie definiowania kreatora. Na logik odpowiadajc za zachowanie kreatora mamy jednak wpyw;
wystarczy w tym celu skorzysta z metody 
!  , ktra informuje o statusie
strony. Dopki nie uznamy w niej, e strona jest kompletna, nie przejdziemy do nastpnej.
Korzystamy z tej moliwoci w przypadkach, gdy poprawnie wprowadzone, pene dane
s warunkiem powodzenia caej operacji.
Oto scenariusz, ktry odpowiada najbardziej typowej sytuacji, gdy wewntrz metody
!
dodajemy kilka stron:
 Do kolejnych stron przechodzimy, posugujc si przyciskiem Next.
 Przycisk Next jest aktywny, gdy bieca strona nie jest ostatni i jednoczenie

ma status strony kompletnej.


 Przycisk Finish aktywny staje si dopiero w momencie, gdy wszystkie strony

uwaane s za kompletne.

Krok w przd
Jeli istnieje pole, ktre musi zosta obowizkowo wypenione, lub jeli na stronie znajduj si elementy, wrd ktrych jeden musi zosta wybrany, strona nie powinna by
uznana za kompletn przed wprowadzeniem przez uytkownika odpowiednich wartoci.
Dopiero wtedy metoda 
!   moe zwrci warto  . Powysza regua
dotyczy take sprawdzania poprawnoci danych. Powrt do stron, ktre zostay ju wy-

Rozdzia 11. Okna dialogowe i kreatory

301

wietlone, powinien mie miejsce jedynie wtedy, gdy uytkownik chce zmieni ktr
w wprowadzonych wartoci. Niedopuszczalna jest natomiast sytuacja, gdy na kolejnych
stronach dowiadujemy si, e dane wprowadzone wczeniej s niepoprawne bd niekompletne. Zasady zdefiniowane w kodzie obsugi kreatora powinny wyklucza tak
moliwo. Zawarto poszczeglnych stron musi odpowiada logice procesu, ktry
obsugujemy.

Zatwierdzanie operacji
Metody 
!   zdefiniowane dla kadej z dodanych do kreatora stron okrelaj,
czy wszystkie z nich naley odwiedzi przed zakoczeniem caego procesu. Domylnie
metoda 
!   zwraca warto  , w takim przypadku uytkownik moe
praktycznie w dowolnym momencie skorzysta z przycisku Finish i zakoczy prac
kreatora. Przycisk ten zwizany jest bezporednio z metod 
&, a ta domylnie
zwraca warto  , gdy wszystkie strony s kompletne.
Gdy przycisk Finish jest aktywny, wciskajc go, powodujemy wywoanie metody

&. Jej zadaniem jest wykonanie wszystkich operacji zwizanych z koczeniem dziaania kreatora i zwrcenie wartoci  , gdy proces si powid wtedy
dopiero kreator zostanie zamknity. Warto 
 powoduje, e jest on dalej aktywny.
Kreator mona tak skonfigurowa, by wywietla i obsugiwa pasek postpu. Moe
mie to znaczenie w przypadku wykonywania operacji dugotrwaych.

Wybr nastpnej strony


Gdy kolejno wywietlanych stron jest wynikiem biecej wartoci wprowadzonych
danych lub decyzji uytkownika, kod odpowiedzialny za nawigacj znale si moe
w metodzie 78! kontrolera lub poszczeglnych stron.

Predefiniowane strony kreatora


Istnieje pewien zbir gotowych stron zwizanych z typowymi operacjami, takimi jak
tworzenie projektu, pliku czy folderu. Mog by one czci projektowanego przez nas
kreatora, co wicej, wolno nam je dostosowa do wasnych potrzeb.
Gdy spojrzymy na klasy bdce rozszerzeniem typu #.!, bdziemy w stanie
dosy szybko zorientowa si, jakimi moliwociami dysponuje w tej dziedzinie Eclipse
i z jakich elementw moemy skorzysta we wasnych aplikacjach. Oto kilka klas, ktre
mog si nam przyda:
 #.8! " !
 #.7 !
 #.7:!
 #.7!  !
 #.7! !

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

301

Cz II Rozbudowa Eclipse

302

Oprcz tego moemy rozway wykorzystanie kolejnych klas, ktre zawiaduj procesem importu i eksportu:
 #.8 ! (nie zalecana, lepiej uywa #.8 
 !)
 #.8 
 !
 #." ! (nie zalecana, lepiej uywa #.
 " !)
 #.
 " !
 #.!

Gdy zamierzamy rozbudowywa zestaw narzdzi sucych do tworzenia aplikacji w jzyku Java, do dyspozycji mamy strony zwizane z dodawaniem podstawowych elementw kadego programu pisanego w tym jzyku:
 3  %  !
 7!$#.!
 7 

#.!
 7"#.!
Zaleca si korzystanie z klasy 3  %  ! zamiast 73'
! #.!. Jest to opisane w dokumentacji.

Dwie ponisze klasy stanowi mog natomiast typ bazowy dla tworzonych przez nas stron:
 7 #.!
 7 #.!

Wrd wymienionych stron znajdziemy takie, ktre mog by bezporednio uyte w ramach nowego kreatora oraz takie, ktre maj charakter klas bazowych i wymagaj szczegowej implementacji (niektre z nich mog wystpi jednoczenie w obu rolach).
Na przykad, jeli chcemy w ramach nowego kreatora obsuy operacj dodania nowego
pliku, moemy skorzysta z gotowej strony o nazwie #.7 !.
Wymaga to bdzie zdefiniowania w klasie bdcej kontrolerem kreatora pola, ktre zapamita warto parametru
 przekazanego metodzie  (bdzie on pniej
potrzebny przy tworzeniu wspomnianej strony). Oto ilustrujcy takie dziaanie fragment kodu:


&&
6

 <5    6

 0
*+, *+,8 &&
1  
 !
6
2

  
01 -

Rozdzia 11. Okna dialogowe i kreatory

303

  !

  <5  0"  "8
16
 0 16

W ten sposb zbudujemy kreator, w ktrym znajdzie si strona obsugujca operacj dodania pliku. Wystarczy w tym momencie zdefiniowa odpowiedni metod '

&, ktra zostanie wywoana po klikniciu przycisku Finish:

  
,01   <016

 6
2

Ale moemy zdecydowa si na inne rozwizanie, w ktrym na bazie istniejcej klasy


stworzymy swj typ, a w nim wasny wygld strony i kod odpowiedzialny za jej
dziaanie. W takim przypadku definiujemy podklas klasy #.7 !
i pokrywamy wybrane metody:
 <  


  <5   
  505 
 1 
 50 16
5 
  
 ! 05 
15016
: +  + !
 : +0 
8 &'<(<16
 +
'0"5,

  
 
"16
9 +S !
 90 
8 &'5N5/16
+S
'0"*  "16
2

Na rysunku 11.12 widzimy rezultat naszej pracy.


Rysunek 11.12.
Wasny interfejs
uytkownika
strony kreatora

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

303

Cz II Rozbudowa Eclipse

304

Wywoywanie kreatora z poziomu kodu rdowego


Kreatory mog by wywoywane z dowolnego miejsca tworzonego przez nas moduu.
Proces ich definiowania pozostaje ten sam, zmienia si natomiast sposb uycia. Nie korzystamy ju z punktw rozszerzenia i pliku manifestu, zamiast tego stworzone przez nas
obiekty wstawiamy do okna dialogowego #. i otwieramy je samodzielnie.
Poniej znajduje si przykad, w ktrym kreator jest tworzony i wywoywany w kodzie
aplikacji, a jego parametrem jest wskazany wczeniej zasb.
'    !
 ' 016
 0*+,018 &16
     !

   0
*+,017G*+,01&,018  16
  016

Zapis cech okna dialogowego


Istnieje mechanizm pozwalajcy na zapis ustawie dotyczcych kadego okienka dialogowego. Podczas tworzenia wasnych narzdzi czsto z niego korzystamy. Obsuga cech
okna dialogowego przypomina nieco magazyn danych zwizany ze stron parametrw.
Take tutaj posugujemy si obiektem, do ktrego dostp uzyskujemy za porednictwem
pluginu. Oferuje nam on zbir funkcji typu  i , za pomoc ktrych odczytujemy
i zapisujemy waciwoci. Za ich utrwalenie odpowiada natomiast sam plugin.
W tabeli 11.9 znajdziemy przykad kodu korzystajcego z opisywanego rozwizania
wraz z odpowiadajc mu reprezentacj danych w pliku dialog_setting.xml, ktry jest
zapisywany w katalogu odpowiadajcym pluginowi.
Tabela 11.9. Zapis cech okna dialogowego
Kod rdowy

Zapisane dane

 &

 !
  01
 &
016

X G
!"TU" !"F'YZ"X#

  !"*+,"#
+
   
,-./

  -0
 *!" 
" G !" 
")#
 *!"" G !"T")#
 *!"
" G !"E ")#
 *!"+" G !"SU[")#
 *!"" G !"VUUUUUUUU")#
 *!"  " G !"WUZ")#

 *!"
7 "#
 G !" ")#
 G !"+")#
 G !"")#
)
#
)
#
)
#

&>?
:
 ! -" "8 "+"8 ""26
 &
& !

 <&0
"E 
&"16
& 0""8 T16
& 0"+"8 SUUUUUUUUU16
& 0""8 VUUUUUUUU16
& 0"  "8 WUUUUUUUU16
& 0" 
"8 
16
& 0"
"8 "E "6
& 0"
7 "8
:
16

Rozdzia 11. Okna dialogowe i kreatory

305

W praktyce z mechanizmu tego korzystamy w przypadku zapisu wprowadzonych ostatnio w oknie dialogowym danych, budowania listy wybranych dotychczas pozycji itp.
Wybr naley do nas, a zakres moliwoci jest szeroki tym bardziej, e zapisywane
dane moemy organizowa w sekcje. Kada z nich moe np. odpowiada innemu oknu
dialogowemu moduu.

wiczenia
Niniejszy rozdzia powicilimy dodawaniu do wasnych moduw okienek dialogowych. Omwilimy rne warianty takiej operacji. Teraz radzimy przyjrze si przykadom znajdujcym si na pytce CD, tworzcym projekt com.ibm.lab.soln.dialogs.
Opisany tam plugin definiuje kilka rozszerze, za pomoc ktrych doczamy stron
waciwoci, dwie strony parametrw rodowiska oraz dwa kreatory. Pojawia si te kilka
opcji menu, ktre odpowiadaj nowym akcjom.
Strona waciwoci pozwala nam przypisa do kadego zasobu wskazanego w widoku
Navigator i Package Explorer dwie cechy. S to wartoci typu  i ).
W oknie dialogowym parametrw systemu pojawiaj si dwie strony. Ukad pierwszej
z nich zaprojektowany jest w caoci przez nas, druga korzysta z edytora pl. Strona prosta
zawiera dwie opcje. Edytor pl demonstruje uycie kilku wariantw wstawianych do niego
obiektw. Dziki nim w atwy sposb edytowa mona wartoci rnego typu.
W przykadzie znajdziemy rwnie dwa kreatory. Pierwszy uywa gotowego elementu
obsugujcego tworzenie plikw oraz dwch stron, ktre pokazuj, w jaki sposb realizowa sprawdzanie poprawnoci wprowadzonych danych i wpywa tym samym na
proces nawigacji. Drugi kreator zawiera pocztkowo tylko jedn stron, pozostae s
dodawane dynamicznie, ich ukad zaley od uytkownika. W obu przypadkach kreator
dodaje folder oraz plik.
Do rodowiska dodajemy rwnie trzy akcje znajdujce si w menu. Za ich pomoc
wywoujemy kreator bezporednio z wntrza naszego pluginu. Okrelamy take, czy doda
do strony waciwoci suchacza zdarze, ktry zmiany wprowadzane w okienku bdzie
wywietla rwnie w konsoli.

Podsumowanie
Po lekturze niniejszego rozdziau umiesz ju doczy do swego moduu okno dialogowe,
zarwno korzystajce z dostpnych punktw rozszerzenia, jak te wywoywane z wntrza pluginu. Przedstawilimy proces dodawania nowych stron w oknach dialogowych
waciwoci oraz parametrw. Opisalimy szczegy definiowania wasnych kreatorw, sucych do tworzenia nowych zasobw oraz do wykonywania operacji importu
i eksportu. Ale nie ograniczylimy si wycznie do rozwiza ju przewidzianych
pokazalimy, jak stworzy od podstaw wasne okienko dialogowe wywoywane
w dowolnym fragmencie narzdzia.

D:\PDF\Eclipse. Podrcznik programisty\r11.doc

305

Cz II Rozbudowa Eclipse

306

Ta wiedza jest niezbdna w sytuacji, gdy zamierzamy rozszerza rodowisko Eclipse.


I to zarwno korzystajc z przewidzianych w ramach platformy scenariuszy, jak rwnie
w sposb bardziej indywidualny.

Bibliografia
Cooper Ryan, Simplifying Preference Pages with Field Editors,
http://www.eclipse.org, 21 sierpnia 2002.

You might also like