Professional Documents
Culture Documents
Eclipse. Podręcznik Programisty
Eclipse. Podręcznik Programisty
Eclipse. Podręcznik Programisty
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
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
Spis treci
5
Perspektywa Java Type Hierarchy .......................................................................... 129
Perspektywa Java Browsing.................................................................................... 130
wiczenia...................................................................................................................... 131
Podsumowanie .............................................................................................................. 131
Rozdzia 5.
Cz II
Rozbudowa Eclipse.......................................................191
Spis treci
7
Tworzenie i uruchomienie pluginu.......................................................................... 223
Praca na jednym stanowisku a praca zespoowa ..................................................... 225
wiczenia...................................................................................................................... 225
Podsumowanie .............................................................................................................. 225
Bibliografia ................................................................................................................... 226
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
10
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
12
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
14
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
Spis treci
15
Dodatki .......................................................................................753
Skorowidz...................................................................................... 755
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
271
Tabela 11.1. Pakiety wykorzystywane przy budowie wasnych okien dialogowych i kreatorw
Nazwa pakietu
Opis
Punkt rozszerzenia
Kreator importu
Kreator eksportu
Uycie tych punktw rozszerzenia powoduje, e nasz dodatkowy element (okno dialogowe, kreator czy strona waciwoci) zostaje zintegrowany z platform Eclipse.
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.
273
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.
273
Cz II Rozbudowa Eclipse
274
rzdziach.
Tabela 11.3. Okna dialogowe zdefiniowane w pakiecie org.eclipse.jface.dialogs
Nazwa klasy
Opis
si na licie.
suy do wyboru jednego elementu z listy zasobw.
pozwala wybiera elementy tworzce struktur
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.
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.
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.
)..
. 3
4
5
.)
5
5
05
1
6
2
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
279
6
279
Cz II Rozbudowa Eclipse
280
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 !
.
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 !.
281
.!
/"!
0
.!!
/0
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.
281
Cz II Rozbudowa Eclipse
282
Teraz, gdy uzyskalimy dostp do magazynu danych pluginu, definiujemy reguy dotyczce wartoci.
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.
+
'0&01&0" D*"116
+
'0'
01
01&0" D*"11
6
283
+
'0&01
&0"+DD*"116
+
'0
'
01
01
&0"+DD*"116
&01
E
0
"+DD*"8
+'0116
'
01
01
E
0
"+DD*"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).
283
Cz II Rozbudowa Eclipse
284
'
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
domylnych.
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
*+,
-
0"
I"16
&
! '
01
&016
&0
16
2
285
Cz II Rozbudowa Eclipse
286
Opis
9
% H
5
&
&9
:
,
W tym polu zawarta jest obsuga wyboru pliku wraz z pen ciek
dostpu. Standardowe okno dialogowe wywoujemy przyciskiem 5,
.
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
287
Cz II Rozbudowa Eclipse
288
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
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 '
%455 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 %
289
Cz II Rozbudowa Eclipse
290
Tabela 11.6. Opcje filtrowania strony waciwoci
Typ obiektu
Nazwa
Wartoci
Zasoby
Nazwa zasobu.
,
<
(
Projekty
.)
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.
291
Metoda
OK
(*01
Apply
7 01
Restore Defaults
01
Cancel
5 01
6
Warto pl wyboru odpowiada parametrom zasobu. Wynik dziaania metody '
widzimy na rysunku 11.7.
Rysunek 11.7.
Interfejs uytkownika
strony waciwoci
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
6
2 05 1 )) +
J
B*
2
6
2
293
0
%H<D%(%'LD/L8 "
"16
2
2 05 1 -2
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 " %.
293
Cz II Rozbudowa Eclipse
294
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 #.
!"
"
!"
"#
)
#
)
#
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 <
"
!"
"
!"
$%&<
"
!"
"#
#
295
Cz II Rozbudowa Eclipse
296
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.
Interfejs
<
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
:
+
+ !
:
+0
8 &'<(<16
+
'0"&
="16
5+ + !
5+0
8 &'<(<16
+
0
&>? -"7
"8 "
"8 "N+" 216
50
16
297
Cz II Rozbudowa Eclipse
298
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.
299
'0"5
'"16
<
016
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.
299
Cz II Rozbudowa Eclipse
300
Rysunek 11.11.
Dostosowana
strona kreatora
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-
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.
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 -
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
<5
505
1
50
16
5
! 05
15016
:
+
+ !
:
+0
8 &'<(<16
+
'0"5,
"16
9 +S !
90
8 &'5N5/16
+S
'0"* "16
2
303
Cz II Rozbudowa Eclipse
304
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
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.
305
Cz II Rozbudowa Eclipse
306
Bibliografia
Cooper Ryan, Simplifying Preference Pages with Field Editors,
http://www.eclipse.org, 21 sierpnia 2002.