Miesięczne archiwa: Kwiecień 2011

Zaawansowane formularze XForms w projekcie GWT

Nieodłączną częścią każdej aplikacji czy to strony internetowej są formularze. Często w ich skład wchodzi kilka zwykłych pól tekstowych wraz z przyciskiem wysyłającym formularz, ale zdarzają się też bardziej rozbudowane twory. Sam HTML udostępnia większość popularnych typów pól formularzy, jednak obsługę zdarzeń i akcji musimy pisać sami. Ogromnym ułatwieniem są tu możliwości GWT, dostarczające nam takie same kontrolki jak w HTML’u, do których w łatwy sposób można podpinać handlery i obsługiwać wszelkie zdarzenia. Jeśli to za mało, z pomocą przychodzą biblioteki typu GXT czy SmartGWT dokładające olbrzymie ilości własnych elementów formularzy. Niewątpliwą zaletą GWT i bibliotek pomocniczych są szerokie możliwości wczytywania danych do formularzy oraz poszczególnych ich pól (np. listy rozwijanej): dane możemy pobierać poprzez RPC, ładować z wystawionego przez serwlet XML’a lub JSON’a, bądź w jakikolwiek inny sposób możliwy do oprogramowania w GWT. Wydawałoby się, że więcej już nie trzeba!

W praktyce okazuje się, że formularze pisane w GWT mają jedną zasadniczą wadę – nie są tworzone dynamicznie. Z góry określamy, jakie pola znajdą się na stronie i jakie dane zostaną do nich załadowane. Możemy generować dynamicznie kod czystego HTML’a, tracimy tu jednak zalety łatwej w oprogramowaniu obsługi zdarzeń. Możemy też napisać kod, który będzie tworzył dynamicznie formularz w GWT, jednak sami musimy stworzyć potrzebne struktury danych oraz niezbędne parsery i generatory. Jeśli skończy się na formularzach złożonych z pól tekstowych, prostych list wyboru, checkbox’ów, przycisków radio, czy innych podstawowych elementów, to jesteśmy w domu. Gorzej, jeśli dynamicznie chcemy też generować układy elementów formularza (elementy w poziomie lub w pionie, zakładki, kolejne strony formularza). Dokładamy jeszcze do tego obsługę zdarzeń na wszystkich elementach i tworzenie własnych akcji i już mamy robotę na kilka długich tygodni :)

Czytaj więcej »

Tworzenie stron mobilnych w JQuery Mobile i GWT

Aplikacje oraz strony internetowe tworzone pod urządzenia mobilne zdobywają coraz większą popularność. Wzrastająca liczba urządzeń wraz z zwiększającymi się stale możliwościami umożliwiają projektowanie ładnych, dynamicznych interfejsów użytkownika. Na rosnące zapotrzebowanie odpowiedzią są liczne frameworki ułatwiające tworzenie mobilnych stron i aplikacji. Część z nich przeznaczona jest na pojedyncze platformy (jak iOS), niektóre pozwalają budować aplikacje wieloplatformowe. Sencha Touch, PhoneGap, Rhodes, JQuery Mobile, to tylko niektóre z nich. Niestety zdecydowana większość to biblioteki JavaScript’owe i tylko niewiele z nich się pod tym względem wyróżnia.

Jako że tematyką blogu jest głównie GWT, postanowiłem sprawdzić, czy istnieją już gotowe rozwiązania umożliwiające na pisanie stron mobilnych w Javie. Na pierwszy ogień poszła Sencha Touch, z tego względu iż na co dzień wykorzystuję bibliotekę Ext GWT tej samej firmy, która to wywodzi się z biblioteki Ext JS napisanej w JavaScripcie. Pomyślałem, że może firma zrobi ten sam manewr z Sencha Touch i przepisze swoją JavaScriptową bibliotekę na Javę. Niestety takiej implementacji nie znalazłem, jednak na forum Senchy można zaobserwować rosnący ruch zwolenników GWT czekających na taką wersję. Rokowania na przyszłość są, bieżących rozwiązań nie ma.

Czytaj więcej »

Repozytorium projektów

Zawsze przychodzi taki moment, kiedy mamy coraz to więcej kodów źródłowych od różnych aplikacji, tworzymy kopie zapasowe przed każdą większą zmianą, a czas potrzebny na przywrócenie poprzednich wersji kodu wydłuża się coraz bardziej. Jak zapewne wiesz, z pomocą przychodzą repozytoria plików, które starają się maksymalnie uprościć zarządzanie i utrzymywanie naszych wypocin. Dzięki wersjonowaniu pozwalają na „przeniesienie się” do dowolnego momentu w czasie i podpatrzenie wszelkich modyfikacji, które popełniliśmy. Każda taka modyfikacja opatrzona jest numerem rewizji, dzięki której można jednoznacznie stwierdzić, z którą wersją mamy do czynienia. Zalet repozytoriów jest jeszcze wiele i jeśli miałeś okazję już z jakiegoś korzystać, na pewno je znasz.

Jako że na cele blogu powstaje coraz to więcej kodu, postanowiłem zebrać wszystko w jedno miejsce i udostępnić Tobie w postaci repozytorium SVN. Czemu SVN? Ano dlatego, że najlepiej go znam i wydaje się też najlepszą propozycją dla początkujących programistów (a zakładam, że możesz być jednym z nich). Świat się jednak na SVN’ie nie kończy i istnieje wiele innych typów repozytoriów, jak chociażby coraz modniejszy ostatnio GIT. Jeśli jesteś wyznawcą GIT’a, pewnie czujesz się nieco zawiedziony. Wiedz jednak, że sam powoli zaczynam zgłębiać jego tajniki i jeśli spodoba mi się bardzo, postawię drugie repozytorium. Może też pokuszę się o jakieś krótkie porównanie oraz opis integracji SVN’a z GIT’em (tak, można to zrobić!).

Wracając jednak do tematu, repozytorium utworzone specjalnie na cele niniejszego blogu znajduje się pod wymownym adresem: svn.yuppy.pl. Logowanie w trybie „tylko do odczytu” jest anonimowe. Dodatkowo repozytorium można przeglądać przez klienta webowego WebSVN. Po dodatkowe informacje na temat zawartości repozytorium odsyłam na oddzielną stronę. Jeśli będziesz miał jakiekolwiek problemy z połączeniem się lub w ogóle nie wiesz jak to zrobić, pisz do mnie. Zachęcam Cię do korzystania i przeglądania kodów źródłowych, bo przecież to z nich można się nauczyć najwięcej!