Już kiedyś pisałem o tym w jaki sposób instaluje się wtyczki w Eclipsie, jednak w najnowszej wersji stary mechanizm instalacji oraz aktualizacji wtyczek (tzw. Update Manager) został zastąpiony nowym mechanizmem o nazwie P2. Dla przeciętnego użytkownika (i na takim się dzisiaj skupimy) zmiana ta niesie głównie trochę inny interfejs użytkownika, a także łatwiejsze zarządzanie i aktualizację zainstalowanych już wtyczek.
Eclipse dość często wykorzystywany jest do pisania projektów w C i C++, dlatego też jako przykład pokażę Wam w jaki sposób zainstalować wtyczkę CDT, która umoliwia właśnie programowania w C/C++ za pomocą Eclipse'a.
Zaczynamy od wybrania opcji Help -> Software Updates:
Powinno się nam pokazać mniej więcej takie okno, w którym wybieramy zakładkę Available Software:
Z listy wybieramy Ganymede Update Site i dalej zaznaczamy Eclipse C / C++ Development Platform oraz Eclipse C / C++ Development Tools, na koniec klikamy przycisk Install:
Eclipse sam sprawdzi zależności wybranych przez nas wtyczek i poprosi nas o potwierdzenie, które elementy mają zostać zainstalowane:
Klikamy Finish i czekamy, aż Eclipse pobierze odpowiednie wtyczki i zainstaluje je w naszym środowisku:
Na koniec zostaniemy zapytani, czy chcemy ponownie uruchomić Eclipse:
Klikamy Yes i możemy już swobodnie korzystać z nowych wtyczek, w tym przypadku z narzędzi CDT.
Myśli, porady, tutoriale na temat środowiska Eclipse (i nie tylko)...
środa, 27 sierpnia 2008
Jak instalować wtyczki w Eclipse 3.4 (Ganymede)?
poniedziałek, 16 czerwca 2008
Co nowego nas czeka w Eclipse Ganymede 3.4?
Jak już pisałem wielkimi krokami zbliża się premiera Eclipse Ganymede, czyli wersji 3.4. Pora chyba przyjrzeć się, czego można się spodziewać, gdy ściągniemy już nową wersję tego środowiska. Poniższy wybór nowej funkcjonalności jest całkowicie subiektywny, więc czekam na Wasze propozycje i opinię w komentarzach.
Java IDE (projekt JDT)
- Pojawił się mechanizm...okruchów (?), czyli po angielsku breadcrumb, który ułatwia nawigowanie po strukturze projektu. Jak zauważycie, gdy macie otwarty edytor Javy to na pasku narzędzi pojawia się taki oto przycisk:
Po wciśnięciu tego przycisku do naszego edytora u góry zostaje dołożony mniej więcej taki pasek:
Co ten pasek nam daje? Otóż po pierwsze pokazuje gdzie w strukturze projektu się znajdujemy. Po drugie bez korzystania z eksploratora projektów (ang. Package Explorer) możemy w prosty sposób przemieszczać się między elementami na różnych poziomach (projektu, folderu, pakietu, klasy oraz elementów klasy):

- Opcja Search->Occurences in File (Ctrl + Shift + U) używa różnych kolorów do oznaczania operacji odczyty i zmiany wartości szukanej zmiennej:

- W podobny sposób jak powyżej oznaczane są wyszukane elementy w edytorze Javy - opcja Mark Occurences (Alt + Shift + O). Kolory możemy zmienić w preferencjach General->Editors->Text Editors->Annotations.
- Quick Assist (dostępny pod skrótem Ctrl+1) ma teraz dodatkowe podpowiedzi:
- Podpowiedzi metod statycznych klas jeszcze niezaimportowanych:

- Liczby mogą być teraz kolorowane tak jak nam się to podoba (preferencje Java->Editor->Syntax Coloring):


- Ostrzeganie o używaniu null'a

- W nieposortowanych widokach, np. w widoku Outline, możliwe jest przesuwanie elementów kodu (pól/metod), a zmiany te zostaną odzwierciedlone w strukturze kodu.
- Jeśli macie komputery z wieloma procesorami, to powinniście zauważyć przyspieszenie czasu kompilacji.
- Dotychczasowy mechanizm aktualizacji oraz instalacji nowych wtyczek (czyli Update Manager) został wymieniony na mechanizm o nazwie P2. Nowe podejście dość znacznie różni się od tego co było wcześniej, więc jeszcze przed premierą Eclipse Ganymede w oddzielnym poście opisać zmiany i pokazać jak korzystać z P2.
- Pełne wsparcie SWT dla Windowsa 64-bitowego
- TextLayout oraz StyledText z SWT dają możliwość zmiany koloru przekreślenia oraz udostępniają rożne style podkreślenia
- Nowe projekty mogą od razu podczas ich tworzenia być dodawane do Zbiorów Roboczych:

- Ulepszone możliwości drukowania:
- Drukowanie numerów linii
- Nie drukuje się już tło
- Każda strona wydruku ma w nagłówku nazwę pliku
- W stopce pojawia się numer strony
- Przy prezentacji wyniku wyszukiwania podawany jest numer linii

- Mamy możliwość eksportu oraz importu konfiguracji uruchomienia (ang. launch configuration), dostępne przez menu File->Export->Run/Debug oraz File->Import->Run/Debug


- Pojawił się nowy widok Markers, który agreguje informacje z widoków Problems, Tasks oraz Bookmarks.
- Widoki można od teraz zamykać klikając na nagłówku środkowym klawiszem myszy.
- Jeśli chcemy zaznaczyć wiele linii w edytorze tekstowym (nie tylko dla plików Java) możemy skorzystać z nowego mechanizmu: klikamy trzymając Shift na numerze linii od której chcemy zacząć zaznaczanie, następnie klikamy z Shiftem na numerze linii, na której chcemy skończyć zaznaczanie.
- Pojawiło się narzędzie o nazwie Plugin Spy. Pisałem już o tym jakiś czas temu, więc chyba nie ma potrzeby żebym się o tym rozpisywał.
- Widok Plug-in Registry pozwala wykonywać dodatkowe operacje na wtyczkach, takie jak:
- Jacek Pospychala wprowadził świetne zmiany do widoku Error Log. Po pierwsze dodał możliwość filtrowania, a po drugie dodał grupowanie informacji według sesji:

- W edytorze punktów rozszerzeń (ang. extension points) można teraz łatwo zmieniać ich nazwy

- Pojawił się specjalny edytor do tworzenia pomocy kontekstowej:


- W konfiguracji uruchomienia (ang. launch configuration) dla aplikacji Eclipse (ang. Eclipse application) na zakładce Plug-ins można teraz w łatwy sposób filtrować dostępne wtyczki:

- Punkty rozszerzeń mogą być oznaczane jako wewnętrzne (ang. internal):
Każdy kto będzie chciał z takiego punktu skorzystać zostanie ostrzeżony, że ten punkt rozszerzeń został oznaczony jako wewnętrzny.
Pełną listę zmian znajdziecie tutaj.
Zatem uwaga - Eclipse Ganymede nadchodzi!
poniedziałek, 21 kwietnia 2008
Eclipse Modeling Framework (EMF), część III
Ostatnio wygenerowaliśmy kod, a w tej części tutoriala spróbujemy z tego kody skorzystać.
- W projekcie FamilyTree stwórzmy pakiet familytree.main (klikamy prawym przyciskiem na katalog src i wybieramy New->Package). W pliku plugin.xml wchodzimy na zakładkę Dependencies i w sekcji Required Plug-ins klikamy przycisk Add i w nowym oknie wpisujemy org.eclipse.emf.ecore.xmi (jest to dodatkowy plugin, który pozwoli nam na prosty zapis instancji naszego modelu do pliku) i zatwierdźcie wybór klikając OK.
- Ściągamy TEN plik z klasą ModelMain, kopiujemy go do nowego pakietu i otwieramy w edytorze. W klasie znajdziecie m.in. następujące trzy metody:
- createModel - tworzy kilka elementów modelu
- saveModel - zapisuje model do pliku
- loadModel - wczytuje model z pliku oraz wypisuje na konsolę znalezione dzieci zapisanej do pliku rodziny
- Uruchommy kod, klikając prawym przyciskiem myszy na edytorze i wybierając Run As-> Java Application.
- Zobaczmy teraz jak działa powiadamianie o zmianach. W klasie ModelMain odkomentujmy metodę listenForChanges oraz jej wywołanie w metodzie main. W metodzie listenForChanges pokazany jest przykład prostego nasłuchiwania na zmiany w modelu. W naszym przypadku nasłuchujemy na zmiany obiektu son, zauważmy że gdy zostajemy powiadomieni o zmianie to mamy łatwy dostęp do wartości przed zmianą, jak i do wartości po zmianie. Uruchommy kod (tak jak w poprzednim punkcie), aby zobaczyć efekt.
Na tym dzisiaj kończymy, w kolejnej części zobaczymy jak uruchomić wygenerowany przez EMF'a edytor i jak nim operować.
Eclipse Modeling Framework (EMF), część II
W poprzedniej części tutoriala udało nam się stworzyć model, teraz przyszedł czas na wygenerowanie kodu.
- Mając stworzony model możemy wygenerować z niego model implementacyjny. Z menu kontekstowego dla folderu model w naszym projekcie wybieramy New->Other->EMF Model. Podajemy nazwę (kończącą się na genmodel), np. My.genmodel, klikamy Next. Na kolejnej stronie wybieramy co będzie podstawą naszego modelu implementacyjnego, w naszym przypadku będzie to model Ecore, który chwilę wcześniej stworzyliśmy, wskazujemy nasz plik klikając na przycisk Browse Workspace. Klikamy Next, a później Finish. Powinien pojawić się plik My.genmodel oraz otworzyć się nowy edytor właśnie z tym plikiem.
- Jeśli przypatrzymy się nowemu plikowi w edytorze to zobaczymy, że nie różni się on za bardzo od pliku My.ecore, który edytowaliśmy poprzednio. Rożnica leży w atrybutach poszczególnych elementów (wystarczy spojrzeć do widoku Properties dla którejś z klas). Plik genmodel przechowuje szczegóły dotyczące kodu, który za chwilę będziemy generować.
- Przyszedł czas na generowanie kodu. W edytorze pliku My.genmodel klikamy na najwyższy węzeł i wybieramy Generate All. Po chwili zauważymy, że w katalogu src naszego projektu pojawił się kod oraz że zostały stworzone trze nowe projekty FamilyTree.edit, FamilyTree.editor, i FamilyTree.tests. Po co nam te dodatkowe projekty?
- projekt editor zawiera wspominany na samym początku edytor instancji naszego modelu
- projekt edit zawiera klasy umożliwiające sprawną edycję elementów wyświetlanych w edytorze
- projekt tests zawiera szkielety testów dla wygenerowanego kodu
- Spójrzmy na chwilę do katalogu src projektu FamilyTree. Znajdziemy tam trzy pakiety:
- familytree - zawiera interfejsy odpowiadające klasom zdefiniowanym w naszym modelu. Dodatkowo znajdziemy tam dwie klasy FamilytreeFactory oraz FamilyTreePackage. Ta pierwsza (jak sama nazwa wskazuje) pozwala nam w łatwy sposób tworzyć obiekty modelu, ta druga natomiast zawiera stałe oraz specjalne metody dostępu do niektórych elementów modelu.
- familytree.impl - zawiera implementację klas zdefiniowanych w naszym modelu
- familytree.util - zawiera klasy pomocnicze do operacji na naszym modelu
- Najważniejsze elementy w wygenerowanym kodzie w projekcie FamilyTree to interfejsy oraz implementacje naszych klas z modelu. Jeśli przypatrzymy im się bliżej to zobaczymy, że w każdym interfejsie pojawiły się metody pozwalające na dostęp do pól klas, a w klasach pojawiły się odpowiednie pola oraz implementacje metod. Warto zauważyć, że przy każdym wygenerowanym elemencie w komentarzy JavaDoc znajduje się adnotacja @generated. Jeśli do jakiejś metody wprowadzimy zmiany, których nie chcemy stracić po ponownej generacji kodu to powinniśmy adnotację tę zmienić na @generated NOT, a w przypadku metod dodawanych przez nas do kodu nie powinniśmy takiej adnotacji w ogóle dodawać
- Spójrzmy na metody getName oraz setName w klasie IndividualImpl:
Jak widzimy kod get’a po prostu udostępnia wartość odpowiedniego pola, natomiast metoda set’a oprócz ustawienia nowej wartości wysyła powiadomienie o zmianie tej wartości do wszystkich obiektów nasłuchujących na tę zmianę.
public String getName() {
return name;
}
public void setName(String newName) {
String oldName = name;
name = newName;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
FamilytreePackage.INDIVIDUAL__NAME, oldName, name));
}
Na tym dzisiaj kończymy. W kolejnej części zobaczymy, jak w prosty sposób korzystać z wygenerowanego kodu i z zalet, które daje nam EMF.
poniedziałek, 28 stycznia 2008
Jak instalować wtyczki w Eclipsie? (cz.I)
Każdy z nas stykając się pierwszy raz z Eclipsem zastanawiał się w jaki sposób można dodać do niego jakąś zewnętrzną wtyczkę (ang. plug-in). Właśnie dlatego postanowiłem trochę o tym napisać. Jak doświadczeni użytkownicy Eclipse'a doskonale wiedzą, są dwa podstawowe sposoby instalacji nowych wtyczek, w tym wpisie skupię się na instalacji za pomocą menadżera aktualizacji (ang. update manager). Udało mi się stworzyć film pokazujący kolejne kroki, jakie trzeba wykonać, aby zainstalować prostą wtyczkę, jaką jest klient SVN'a dla Eclipse'a o nazwie Subclipse. Do samego menadżera aktualizacji dostajemy się przez Help->Software Updates->Find and Install... Następnie dodajemy adres strony aktualizacji (ang. update site) i przechodzimy dalej. Na filmie możecie zauważyć, że w pewnym momencie pojawia się informacja o błędzie, wynika ona stąd, że nie mamy jednej w wymaganych wtyczek o nazwie Buckminster. Jak się okazuje ta część Subclipe'a, która wymaga tej problematycznej wtyczki jest opcjonalna, więc odznaczamy ją i przechodzimy dalej. Akceptujemy licencję oraz dokonujemy wyboru miejsca instalacji (możemy zostawić wartości domyślne). Wtyczka zostanie ściągnięta, musimy na koniec potwierdzić, że chcemy ją zainstalować. Pozostaje nam ponowne uruchomienie Eclipse'a i wtyczka Subclipse powinna już być widoczna.
Update: W Eclipse 3.4 zmienił się mechanizm do zarządzania wtyczkami. Zapraszam do przeczytania tego posta, w którym zobaczycie jak instalować wtyczki w najnowszym Eclipsie.
wtorek, 4 grudnia 2007
Trzymając rękę na Pulsie
Od jakiegoś czasu zbieram się, żeby napisać o tym w jaki sposób instaluje się wtyczki dla Eclipse'a. Aż tu nagle w zeszłym tygodniu trafiłem na projekt Pulse. Pulse pozwala nam ściągać wybrane przez nas konfiguracje Eclipse'a bez zbędnego martwienia się o zależności między wtyczkami i instalowania wszystkiego oddzielnie.
Co jeszcze jest ciekawego w Pulsie? Po pierwsze: jest darmowy! Możemy go używać, jako użytkownik anonimowy (wówczas są pewne ograniczenia) lub też zarejestrować się podając swój adres e-mail (rejestracja oczywiście też jest darmowa). Po drugie po zarejestrowaniu możemy tworzyć własne profile Eclipse'a (złożone z różnych wtyczek) i współdzielić je z innymi użytkownikami Pulse'a - dzięki czemu cały nasz zespół będzie zawsze korzystał z tego samego Eclipse'a i z tych samych wtyczek.
Sam co prawda jeszcze nie miałem zbyt dużo czasu, aby przetestować to rozwiązanie, ale wygląda ciekawie i chyba warto dać mu szansę. Zapraszam zatem do ściągania i testowania! A jeśli jeszcze nie jesteście przekonani to możecie obejrzeć demo.


