[ Pobierz całość w formacie PDF ]
trów, wymaga kilku czynności. Konieczne jest uzyskanie dostępu do obiektu, który
wykorzystamy do utrwalania właściwości. Opcjonalnie kojarzymy go ze stroną para-
metrów, pobieramy wartości w celu wyświetlenia, obsługujemy ewentualne żądanie
przywrócenia wartości domyślnych, w końcu dołączamy funkcjonalność związaną z zapi-
sem danych. Kolejne punkty zawierają szczegółowy opis wszystkich tych etapów.
Pobranie referencji do magazynu danych
Referencję do obiektu pełniącego funkcję magazynu danych uzyskamy, wywołując
jedną z poniższych metod:
Lista metod typu i , za pomocą których realizowany jest dostęp do poszcze-
gólnych parametrów, w obu przypadkach jest taka sama. Jako twórca modułu możesz
zdecydować, czy dostęp do parametrów będzie możliwy za pośrednictwem jednej lub
drugiej klasy. Wyjątkiem jest tu metoda definiująca wartości domyślne. Możemy zde-
finiować nawet strony parametrów, które posługują się różnymi wariantami dostępu
w obrębie jednego pluginu. Przy posługiwaniu się klasą
(co zostanie opisane nieco dalej), możemy korzystać wyłącznie z obiektu typu
.
D:\PDF\Eclipse. Podręcznik programisty\r11.doc 281
282 Część II f& Rozb dowa Eclipse
Teraz, gdy uzyskaliśmy dostęp do magazynu danych pluginu, definiujemy reguły doty-
czące wartości.
Podłączenie magazynu danych do strony parametrów
Gdy uzyskamy dostęp do zdefiniowanego w ramach pluginu obiektu ,
możemy bezpośrednio przypisać go do strony parametrów. Służy do tego metoda
, a całą operację najlepiej przeprowadzić w ramach wspominanej już wcze-
śniej metody wywoływanej podczas pierwszego odwołania do strony.
Dzięki takiemu przyporządkowaniu kod zawarty na stronie i odpowiadający za wyświe-
tlanie oraz pózniejsze zapisanie wartości może posługiwać się metodą
i w ten sposób, z pominięciem obiektu pluginu, może odwoływać się bezpośred-
nio do magazynu danych. Pozwala to zdefiniować klasę strony parametrów stanowiącą
wzorzec, w którym podłączenie do magazynu danych odbywać się będzie na poziomie
konstruktora.
W hierarchii klas dotyczących strony parametrów nie znajdziemy natomiast funkcji,
która obsługiwałyby w ten sam sposób obiekt typu . Jeśli chcielibyśmy
skorzystać z podobnego mechanizmu, w klasie implementującej stronę parametrów na-
leży samodzielnie zdefiniować odpowiednie pole i metody.
Pobieranie wartości parametrów
Zadaniem strony parametrów jest wyświetlenie bieżących ustawień aplikacji. Użyt-
kownik dzięki temu może je przeglądać i modyfikować. Do pobierania wartości sto-
sujemy metody z rodziny ; każda z nich odpowiada innemu typowi. Tak więc łań-
cuchy znakowe odczytujemy metodą , a wartości logiczne .
Oto przykład pobrania własności typu , którą następnie wstawiamy do elementu
sterującego:
Wartości pobieramy zwykle raz, w ramach tworzenia interfejsu użytkownika strony.
Może zdarzyć się jednak taka sytuacja, że tę samą właściwość umieścimy na więcej
niż jednej stronie parametrów. W takim wypadku konieczna jest operacja odświeżania
podczas zmiany stron. Nie polecamy takiego rozwiązania, jednak czasami jesteśmy do
tego zmuszeni. W takim przypadku kod odpowiadający za ponowne pobranie i wy-
świetlenie wartości umieścić możemy w metodzie .
Rozdział 11. f& Okna dialogowe i kreatory 283
Przywracanie wartości domyślnych
Za pomocą znajdującego się na stronie parametrów przycisku Restore Defaults użyt-
kownik może przywrócić wartości domyślne. Poniżej prezentujemy kod, który stano-
wi przykład implementacji takiej operacji. Zakładamy w nim, że nasz plugin zawiera
już definicję wartości domyślnych:
Zapis wartości parametrów
Gdy użytkownik kliknie przycisk Apply lub OK, odczytujemy bieżące wartości wi-
doczne na ekranie i na ich podstawie modyfikujemy właściwości znajdujące się w ma-
gazynie danych. Kod, który to realizuje, znajduje się w metodzie . Jest ona
wywoływana w odpowiedzi na kliknięcie zarówno przycisku Apply, jak też OK.
Istnieje tylko jedna metoda, , służąca do ustawiania wartości parametru. Jednak
zdefiniowano kilka jej wariantów, a to za sprawą konieczności obsługi wielu typów zapi-
sywanych danych ( , , , , i ). Metodę zawsze wy-
wołujemy z dwoma parametrami, z których pierwszy stanowi klucz, a drugi wartość.
Oto przykład:
Metoda nie powoduje jednak zapisu wartości na dysk. Magazyn danych za-
rządzany przez plugin jest automatycznie utrwalany podczas zamykania Eclipse. Gdy
plugin dziedziczy po klasie , zajmuje się tym metoda . Ist-
nieje jednak sposób na natychmiastowe zapisanie wartości. Należy w tym celu wywołać
zdefiniowaną na poziomie pluginu metodę o nazwie . Tak po-
stępujemy, gdy nasz moduł dziedziczy po klasie .
Możemy również osobno zaimplementować metodę , która wywoływana
będzie po kliknięciu przycisku Apply. Należy jednak pamiętać, że stanowi ona jedynie
uzupełnienie, a nie alternatywę dla metody ( będzie i tak wywołana
po kliknięciu Apply).
D:\PDF\Eclipse. Podręcznik programisty\r11.doc 283
284 Część II f& Rozb dowa Eclipse
Obsługa zdarzeń na stronie parametrów
Jeśli chcemy na bieżąco obserwować zmiany zachodzące na stronie parametrów i od
razu na nie reagować, dodajemy swój obiekt będący słuchaczem zdarzeń. Operacja ta
dotyczyć może zarówno wariantu korzystającego z , jak też
. Implementacja obiektu odpowiadającego na zdarzenia pochodzące ze strony pa-
rametrów zależy od sposobu magazynowania danych. Obiekt nasłuchujący zostanie po-
informowany o zdarzeniu związanym ze zmianą właściwości.
Naszym zadaniem jest ustalenie na podstawie parametrów zdarzenia, czy stan danego
parametru ma wpływ na inne wartości, i ewentualne podjęcie odpowiednich, zgodnych
z logiką aplikacji czynności. Poniższe fragmenty kodu pokazują, jak za pomocą słu-
chacza zdefiniowanego w postaci klasy wewnętrznej wypisać identyfikator własności.
Edytor pól jako typ strony parametrów
Gdy zdecydujemy się na stworzenie strony parametrów, która dziedziczy po klasie
, scenariusz dalszego postępowania jest następujący:
Implementacja interfejsu użytkownika strony za pomocą komponentów
biblioteki SWT i JFace.
Pobranie poszczególnych parametrów stanowiących stan początkowy strony.
Pokrycie metod obsługujących zapis własności oraz powrót do wartości
domyślnych.
Rozdział 11. f& Okna dialogowe i kreatory 285
Istnieje jednak inne podejście. Możemy zbudować stronę opierającą się na wzorcu no-
szącym nazwę edytora pól. W takim przypadku proces definiowania strony przebiega
inaczej:
1. Dodajemy rozszerzenie dotyczące strony.
2. Tworzymy klasę, która dziedziczy po
i implementuje interfejs . Zawiera ona
w sobie obsługę edytora pól.
3. Definiujemy bezparametrowy konstruktor. W nim określamy układ edytora pól,
wywołując konstruktor klasy bazowej i przekazując mu parametr lub .
4. Dołączamy do strony parametrów obiekt będący magazynem danych
(w tym przypadku musi to być obiekt typu ).
5. Implementujemy metodę , która tworzy i dodaje do strony
odpowiednie pola (obiekty dziedziczące po klasie ).
Klasa sama zajmuje się takimi operacjami, jak obsługa,
zapis i odczyt wartości. Dodawanie gotowych komponentów typu jest za-
[ Pobierz całość w formacie PDF ]