programowanie w oparciu o platformę netbeans w praktyce Adam Kędziora. Netbeans innovators grants. Mechanizm lookup jako panorama firm. Węzły w netbeans. Mechanizm lookup jako torba z narzędziami. Dwa slowa o kółkach i kwadratach. Gdzie stawiać pierwsze kroki a gdzie się uczyć.
Netbeans Innovators Grants Konkurs organizowany przez suna Każdy mógł uczestniczyć Proste zasady Wystawilismy 2 projekty Przeszedł projekt bardziej na czasie Niestety nie udało się skończyć na czas Jak bedziecie mieli okazje - startujcie
Netbeans Innovators Grants
Netbeans Innovators Grants
Mechanizm lookup jako panorama firm Piszemy generator kodu obiektów Nie wiemy jakie obiekty docelowo bedą Chcemy też by w razie czego mozna bylo generować kod w oparciu o bardziej ogólny generator Chcemy dać mozliwość tworzenia nowych obiektów jak i generatorów kodu Używamy globalnego lookup
Mechanizm lookup jako panorama firm Definiujemy interfejs Generator public interface Generator { public boolean cangenerate(object c); public void generate(stringbuilder sb,object o); } Potrzebujemy sprytnego sposobu by odszukać implementacje tego interfejsu samo utworzenie klas to przecież za mało!
Mechanizm lookup jako panorama firm Kod do wyszukiwania bedzie wyglądał tak: private static Lookup.Result<Generator> generators = Lookup.getDefault().lookupResult(Generator.class); public static void generatenext(object o){ for(generator g: generators.allinstances()){ if(g.cangenerate(o)){ g.generate(sb, o); return; } } throw new UnsupportedOperationException("There is no generator for this object"+o.class.getname()); } Widziecie już jak ładnie znajduje się konkretne generatory
Mechanizm lookup jako panorama firm Kicha, nie widzicie ;] Potrzebujemy nasze obiekty jakoś wrzucić do tego lookupa Netbeans zapewnia nam mechanizm rejestracji Tworzymy plik nazywający sie tak samo jak pełna nazwa klasy naszego interfejsu w katalogu META-INF/services w Jarze (lub folderze głównym builda) umieszczamy linia po linii pełne nazwy klas implementujacych ten interfejs Możemy dodać kolejność odpytywania!
Mechanizm lookup jako panorama firm Plik bedzie wyglądal mniej więcej tak: pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.object.circlegenerator #position=1 pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.object.framegenerator #position=4 pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.object.canvasgenerator #position=3 pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.object.ellipsegenerator #position=2 pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.object.rectanglegenerator #position=1 pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.object.polygongenerator #position=2 pl.edu.amu.wmi.kino.visualjavafx.javafxcodegenerators.object.groupgenerator #position=3
Mechanizm lookup jako panorama firm I bedzie mniej więcej tu :
Węzly w netbeans Węzły to warstwa prezentacji dla danych! Węzły nie są stałe tworzone są bardzo często Świetnie nadają się do obrazowania drzewiastych stróktur Łatwo tworzy się je z zwykłych JavaBeans Posiadają własny lookup
Węzły w netbeans Przyklad użycia:
Mechanizm lookup jako torba z narzędziami Załóżmy, ze mamy węzly jakiegoś typu Chcemy by mozna było czasem do nich dodawać jakąś funkcjonalność a czasem ją odejmować Nie możemy tego zrobić przez typy bo typ obiektu nie może zmienić sie w czasie Mozemy za to rozwiązac to przez mechanizm lookup
Mechanizm lookup jako torba z narzędziami Najprostszy pszykład: protected InstanceContent ic = new InstanceContent(); private Lookup lookup = new AbstractLookup(ic); Manipulujemy teraz zawartoscią poprzez ic.add(object o) ic.remove(object o)
Mechanizm lookup jako torba z narzędziami Przyklad użycia: Posiadamy zaznaczony węzeł zdarzenia przypisanego do kwadratu Ale na edytorze nie widnieje zdarzenie Odpytyjemy po kolei rodziców węzła o to, czy posiadają w lookup obiekt odpowiedzialny za rysowanie
Mechanizm lookup jako torba z narzędziami Przyklad z netbeansa: Mamy węzeł dokumentu Jeżeli zmienimy cokolwiek w dokumencie możemy go zapisać W tym momencie w lookup tego węzła pojawia się obiekt SaveCookie W ten sposób mozna pisac menu kontekstowe zależne od stanu obiektu
Dwa słowa o kółkach i kwadratach W zbiorze bibliotek które dostajemy w netbeans platform istnieje visual library Pozwala ona na tworzenie płótna na ktorym umieszczamy jakieś obiekty graficzne, następnie bez problemu mozemy umozliwić na przyklad przesuwanie ich czy zmiane rozmiaru Te obiety są również nazywane węzlami niestety poza nazwa nie mają nic wspólnego z węzłami z netbeans platform.
Dwa słowa o kółkach i kwadratach Pracując z visual library musimy pamietać o kilku rzeczach 1. nasze płótno ma własny uklad współżędnych 2. uklad ten nie jest zależny od tego jaki kawalek płótna oglądamy 3. przy liczbie powiązanych krawędziami obiektów przekraczającej 50 możemy sobie co najwyzej pomarzyć o sprawnym dzialaniu
Gdzie stawiać pierwsze kroki a gdzie się uczyć Pierwsze kroki: Najlepiej zacząć od przykładów i tutoriali ze strony netbeans platform: http://platform.netbeans.org/tutorials/index.html Jednak daleko się niestety na tychtutorialach nie zajdzie :(
Gdzie stawiać pierwsze kroki a gdzie się uczyć Książka Plugging into netbeans platform Znakomite źródło informacji o tym jak cała platforma działa W zasadzie jedyne opracowanie tego typu jakie udało mi sie znaleść Polecam wersję niemiecką jezeli ktoś nie ma problemow z tym jezykiem jest w niej opisane nieco więcej
Gdzie stawiać pierwsze kroki a gdzie się uczyć Javadoc Bardzo dobrze napisane przykaldy uzycia poszczególnych bibliotek Trzeba skorzystać z javadoc dostępnego w necie a nie tylko tego wpisanego w kod Korzystanie z visual library w nietrywialny sposób jest niewykonalne bez dokladnego studiowania dokumentów z javadoc!
Gdzie stawiać pierwsze kroki a gdzie sie uczyć Kod netbeans Warto ściągnąć źrodla na dysk i zarejestrowac je sobie w ide w menu tools>netbeans platforms w zakladce sources Gdy tylko bedziecie potrzebowali przykladu użycia lub kodu danej metody netbeans pozwoli wam nawigować w prosty sposob z menu kontekstowego