wtorek, 30 czerwca 2009

Windows Seven pierwsze wrażenia.

Ostatnio również postanowiłem dołączyć do grona testerów nowego systemu operacyjnego Microsoftu, czyli Windows Seven (Windows 7). Muszę przyznać, że po kilku godzinach po zainstalowaniu moje wrażenia są dość pozytywne, ale może przejdźmy do szczegółów:

  • Po pierwsze Windows Seven bez większych problemów można zainstalować nawet na starszym sprzęcie, ja zainstalowałem nowy system na ponad 5-cio letnim komputerze stacjonarnym, brakujące sterowniki w większości doinstalowały się z witryny Windows Update i system działa pod względem sprzętowym bez zarzutu.
  • Zużycie pamięci jest umiarkowane. "Czysty system" po uruchomieniu zajmuje ok. 500 MB. Trochę gorzej jest z zajętością procesora, która wyraźnie skacze co pewien czas. Nie jest to jakimś specjalnym mankamentem, ale muszę przyznać, że pod Windowsem XP raczej się tak nie działo.
  • Spodobała mi się nowa koncepcja paska zadań, który jest teraz jakby połączeniem starego pasa zadań z paskiem szybkiego uruchamiania. W nowym Windows każda uruchomiona lub przypięta do paska aplikacja jest symbolizowana za pomocą przycisku z ikoną. Przyciski te nazywane są kostkami. Pod każdą kostką ukrywać się mogą wszystkie okna powiązane z daną aplikacją. Przyznam, że dzięki takiemu rozwiązaniu lepiej niż w poprzednich systemach można zapanować nad dużą liczbą okien. Rozwiązanie więc mimo, że dotąd nie spotykane jest łatwe, intuicyjne i ładnie wygląda :).
  • Pod nowym systemem nadal działa OPC. To akurat nie nowość, ale przyznam, że musiałem sprawdzić, czy po nowym systemem nie będzie problemów z tą technologią.
  • Na koniec chciałby wspomnieć, że bardzo spodobał mi się motyw "Landscapes" dla interfejsu Aero

To na razie koniec moich wrażeń, po kilku godzinach użytkowania. Postaram się napisać coś więcej, jak pojawią się kolejne refleksje (tym razem już po wielu godzinach użytkowania systemu).

Kierunek: w głąb formatu "docx"

Chyba każdy kto próbował tworzyć "programistycznie" dokumenty docx (z wykorzystaniem OpenXML Format SDK lub bez SDK) na pewno spotkał się z problemem, że nie wiadomo jakich elementów użyć i jak je poustawiać, by uzyskać oczekiwany efekt. Niestety w dokumentacji opisane są co oznaczają poszczególne elementy, ale brakuje przykładów lub dokładniejszych opisów ich wykorzystania. Na szczęście jest pewna pomoc, którą można wykorzystać.

Przypomnijmy sobie jak zbudowany jest oparty o format Open XML? Przecież jest to zestaw plików (głównie XML), który następnie jest spakowany przy pomocy standardowego algorytmu zip, co w efekcie daje plik wynikowy. Dlatego można dowolnemu plikowi opartemu o ten format zmienić rozszerzenie (lub dodać kolejne) na zip, a następnie rozpakować zawartość tak spreparowanego archiwum. Tak na marginesie dodam, że w przypadku formatu rywala, czyli ODF (Open Document Format) idea pakowania algorytmem zip jest dokładnie taka sama.

Zobaczmy na przykład pliku Test.docx, któremu dodałem rozszerzenie zip i w efekcie otrzymałem plik Test.docx.zip, którego zawartość przedstawiona jest poniżej:

Test.docx.zip
|   [Content_Types].xml
|
+---docProps
|       app.xml
|       core.xml
|
+---word
|   |   document.xml
|   |   fontTable.xml
|   |   numbering.xml
|   |   settings.xml
|   |   styles.xml
|   |   webSettings.xml
|   |
|   +---media
|   |       image1.gif
|   |       image2.gif
|   |       image3.gif
|   |       image4.gif
|   |       image5.gif
|   |       image6.gif
|   |
|   +---theme
|   |       theme1.xml
|   |
|   \---_rels
|           document.xml.rels
|
\---_rels
        .rels

Najbardziej oczywiście interesującym nas plikiem będzie plik: word\document.xml, który będzie zawierał właściwy dokument. Plik ten w przypadku formatu Word 2007 (docx) jest zgodny z językiem WordProcessingML. Właśnie tam możemy znaleźć informacje na temat układu elementów XML, które w efekcie dają efekt, jaki widzimy podczas edycji tego dokumentu w edytorze Word.

Reasumując gdy nie wiemy jakich elementów użyć (i jak je poukładać) by uzyskać dokument Word o zadanej strukturze, można tą strukturę stworzyć przy pomocy edytora Word , a następnie "rozpakować" plik i podejrzeć jak to jest zrobione, Być może dla niektórych czytelników to banał, ale przyznam, że sam z tej metody korzystam. Jest ona prosta i skuteczna.

czwartek, 25 czerwca 2009

Tworzenie dokumentacji

Tworzenie dokumentacji

Dziś zajmę się dość powszechnym wydaje się problemem, a mianowicie tworzeniem dokumentacji dla oprogramowania. Zwykle owa dokumentacja powstaje dopiero pod koniec tworzenia oprogramowania, nie ma na nią za wiele czasu i oczywiście "chcemy to zrobić tak, by się nie narobić" :). W takim momencie chyba każdemu przychodzi na myśl wykorzystanie jakiegoś edytora (np. Microsoft Word lub OpenOffice Writer). Dlaczego? Bo łatwo i wiele osób wie jak Word'a obsługiwać, jak sformatować tekst, jest automatyczne sprawdzanie pisowni, łatwo dać komuś kto może to sprawdzić pod względem poprawności językowej (nie trzeba być "informatykiem" by obsługiwać Word'a). Gorzej gdy pojawia się konieczność udostępnienia tej dokumentacji w innej postaci. Problemu w zasadzie nie ma jeżeli chcemy przygotować dokumentację w formacie PDF (jest wiele narzędzi, które to umożliwiają, do tego w najnowszego Word'a lub zawsze w OpenOffice Writer'rze jest możliwość eksportu do PDF). Niestety format PDF nie zawsze jest dobrym rozwiązaniem, a dużo popularniejsze są formaty typu "CHM" (Microsoft Compiled HTML Help), strona internetowa, czy dokumentacja zgodna z formatem MSDN'a. Tylko jak coś takiego przygotować?

Help authoring tools

W tym miejscu należy wesprzeć się dodatkowymi narzędziami, które pomogą nam przygotować naszą dokumentację. Narzędzia takie określane są wspólnym mianem "Help authoring" (HAT). Wydaje się, że jest dość ich spora ilość, ale jak się przyjrzeć tym rozwiązaniom bliżej, to albo są one mało wygodne, nie spełniają wymagań, albo kosztowne. W dodatku bardzo często wykorzystują one dziwne formaty plików do zapisywania przygotowanej dokumentacji. Ja ponieważ lubię wybierać darmowe alternatywy (najlepiej z otwartym kodem źródłowym) zwróciłem uwagę na dwa formaty opracowane specjalnie na potrzeby tworzenia dokumentacji elektronicznej.

Pierwszym formatem na który zwróciłem uwagę był DocBook. Jest to otwarty format oparty o XML, w którym można tworzyć dokumentację. Zawiera w sobie definicje specjalnych konstrukcji, które upraszczają późniejsze generowanie dokumentacji. Dodatkowo można znaleźć różnego rodzaju narzędzia, które w automatyczny sposób wygenerują na podstawie plików zgodnych ze składnią DocBook dokumentację w postaci CHM, strony internetowej, czy PDF. Jeżeli ktoś ma ochotę bliżej przyjrzeć się dokumentacji wykonywanej przy użyciu DocBook'a, to zapraszam zajrzeć do pliku pomocy aplikacji TortoiseSVN (pisałem o tym narzędziu w poprzednim post'cie).

Kolejnym formatem, na który warto zwrócić uwagę to MAML, czyli Microsoft Assistance Markup Language.

MAML i przyjaciele

MAML jest językiem opartym o XML i przygotowanym przez Microsoft. Podobnie jak DocBook zawiera w swojej składni elementy umożliwiające przygotowywanie dokumentacji elektronicznej. Są dostępne narzędzia pozwalające wygenerować z MAML'a help'a w postaci CHM, strony internetowej, czy helpa zgodnego z dokumentacją dla Visual Studio i MSDN. Co ciekawe (przede wszystkim dla nas - programistów .NET) można łatwo wygenerować dokumentację kodu źródłowego w tym formacie (wystarczy tylko we właściwościach projektu w Visual Studio zaznaczyć "ptaszkiem" odpowiednie okienko).

Przejdźmy jednak do narzędzi. Najbardziej znanym i liczącym się jest SandCastle oraz jego niemal nieodłączny pomocnik SandCastle Help File Builder (SHBF). To na prawdę ciekawy tandem. Efekty ich działania można zobaczyć (tutaj lub tutaj). Jak łatwo zauważyć dokumentacja przypomina trochę tą znaną z MSDN'a. Można łatwo integrować dokumentację razem z dokumentacją kodu źródłowego. Dzięki wykorzystaniu różnych transformat, np. przygotowanych własnoręcznie transformat można przygotować na prawdę dopasowaną do potrzeb dokumentację.

Przykład fragmentu pliku dokumentacji napisanej w MAML można zobaczyć poniżej:

<?xml version="1.0" encoding="utf-8"?>
<topic id="61c575da-62ae-4651-81df-addc48148450" revisionNumber="1">
  <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">     <introduction>       <para>Required introduction</para>     </introduction>     <section address="Section1">       <title>Optional section title</title>       <content>         <para>Add one or more sections with content</para>       </content>     </section>     </relatedTopics>   </developerConceptualDocument> </topic>

Wracamy do skomplikowanej edycji

W tym momencie chyba jednak trzeba wrócić do problemu z początku: "Jak przenieść przygotowany tekst w jakimś edytorze tekstowym (np. Word czy Writer), do pewnego formatu w jaki przygotowywany będzie system pomocy?". Niestety nie mam jeszcze tutaj gotowej odpowiedzi. Problem polega na tym, że edytory tekstu (w szczególności Word i Writer) ukierunkowane są "na wizualizację tekstu", natomiast formaty, z których można dobrze wygenerować system pomocy ukierunkowane są "na treść".

Spotkałem się z pewnymi próbami, które miały zamieniać tekst z popularnych edytorów na inny format, jednak zawsze nie działało to w sposób optymalny. Do takich przykładów zaliczyć można przygotowane szablony dla DocBooka dla Writer z OpenOffice, czy DocToMaml wchodzący w skład pakietu DocProject. Niestety żadne z tych rozwiązań nie gwarantuje do końca prawidłowej konwersji. Być może coś się zmieni jak powstanie edytor typu WYSIWYG dla MAML (np. taki jak opisywany tutaj, niestety w tej kwestii nie widzę, by się coś zmieniało od niemal roku). Pewne światełko w tunelu oferuje również format Open XML, w postaci którego zapisywane są pliki Word'a 2007, ponieważ jest to format oparty o XML, więc może łatwiej będzie przygotować konwerter. Chyba nawet można łatwo zacząć, korzystając z Open XML Format SDK można w prosty sposób odczytać dokument i jego formatowanie a następnie przeanalizować jego elementy i wygenerować z nich np. plik MAML (tylko kto to zrobi?? jacyś chętni?). Z drugiej strony pozostaje nadal problem z dobrą zmianą "ukierunkowania" dokuemntu: z "na wygląd" na "na tekst".

A może Wy, czytelnicy znacie jakieś inne, dobre (i najlepiej darmowe) rozwiązania wspierające przygotowanie dokumentacji elektronicznej?

Zapraszam do zamieszczania komentarzy.

Głosujmy na TortoiseSVN

W zasadzie konkurs "Na najlepszy .... projekt", na portalu SourceForge.net trwa już od jakiegoś czasu, ale dzisiaj kolejna wersja Żółwika :) (TortoiseSVN) przypomniała mi o nim. Chyba wielu z nas korzysta z repozytoium Subversion (SVN) i klienta na platformę Windows: TortoiseSVN.Chyba warto docenić wysiłek autorów TortoiseSVN i zagłosować na to narzędzie w kategoriach "Najlepszy projekt" i "Najlepsze narzędzie dla programistów".

Głosujmy więc!!

Poniżej prośba autorów:

Please vote for TortoiseSVN at the 2009 Sourceforge.Net Community Choice Awards

The voting period for the Sourceforge.Net Community Choice Awards is open.
Please go ahead and vote for TortoiseSVN in the categories "Best Project" and "Best Tool or Utility for Developers". If you all support us, we can win a T-Shirt. :)

środa, 10 czerwca 2009

Szkolenie (WNT8): OPC a integracja systemów informatycznych z produkcją

Zapraszam na kolejną, VIII edycję szkolenia Warsztaty Nowych Technologii (Łódź, 24 czerwca 2009), na którym jestem jednym z prowadzących. Tym razem hasłem przewodnim spotkania będzie "OPC a integracja systemów informatycznych z produkcją".

Warsztaty dotyczą zagadnień związanych z technologią OPC, komunikacją z procesem technologicznym oraz praktycznym zastosowaniem produktów z rodziny CommServer .

Oprócz ogólnych zagadnień dotyczących oprogramowania CommServer i DataPorter poruszone zostaną zagadnienia dotyczące:

  • Modeli integracji oraz przyczyn jej wykorzystania.
  • Metod pozyskiwania danych z procesu.
  • Praktycznych możliwości wykorzystania oprogramowania DataPorter w transferze danych pomiędzy standardami (OPC, SQL, XML).

Więcej szczegółów dostępnych jest tutaj:
http://www.commsvr.com/OPCWorkshops.aspx.

Podsumowanie (dla artykułu: "Kierunek: nowoczesny interfejs aplikacji, czyli jak przy pomocy narzędzi firmy Telerik odmłodzić interfejs ...")

W ramach podsumowania muszę stwierdzić, że pakiet RadControls for WinForms firmy Telerik jest godnym polecenia i profesjonalnie przygotowanym pakietem. Przy jego pomocy można w krótkim czasie przygotować profesjonalny i nowocześnie wyglądający interfejs aplikacji. Moje dotychczasowe prace związane z opisywaną modyfikacją, trwały zaledwie kilkanaście godzin, a efekty widać na poniższym rysunku.

http://www.commsvr.com/Products/UAModelDesigner.aspx

Wiem, że jeszcze przede mną wiele w tym temacie do zrobienia, ale gdy zapytałem moich współpracowników, co sądzą o nowym interfejsie, otrzymałem przychylne komentarze, a to cieszy. Mam nadzieję, że moim czytelnikom podobał się ten artykuł oraz, że podczas jego pisania nie popełniłem istotnych błędów. Moje dotychczasowe doświadczenia programistyczne opierają się bardziej na rozwiązaniach tkwiących wewnątrz aplikacji, niż na interfejsie użytkownika.

Na koniec chciałbym podziękować portalowi dotNetoManiak.pl i firmie Telerik, gdyż to właśnie dzięki nim mogłem zapoznać się bliżej z pakietem.

(to tylko fragment artykułu, czytaj cały artykuł tutaj)

wtorek, 9 czerwca 2009

RadControls do dzieła! (czyli: opis zmian aplikacji i dalsze wrażenia z wykorzystania RadControls for WinForms)

Promuj

W poprzednich częściach opisana została aplikacja, która zostanie poddana przemianie i pierwsze wrażenia z pakietu RadControls for WinForms, ta część artykułu przedstawia konkretne elementy, jakie zostały wykonane, aby interfejsu użytkownika, aplikacji CAS OPC UA Address Space Model Designer, został "odmłodzony".

Układ głównego okna

W ramach zmian postanowiłem do interfejsu aplikacji dodać na górze wstążkę (Ribbon), jest to ostatnio coraz bardzie popularny element. W środku menedżer dokowania (DockManager), dzięki czemu interfejs użytkownika będzie można oprzeć o pływająco-dokowalne panele. A na dole pasek statusu. Elementy te tworzą następujący schemat okna:

W tym miejscu chciałbym dodać jeszcze pewną uwagę, mianowicie elementy muszą występować w powyższej kolejności, gdyż w innym przypadku elementy zaczynają na siebie zachodzić (nie wiem na ile to możliwe, ale przydatne byłoby przynajmniej ostrzeżenie użytkownika o tym, że stworzony układ jest niewłaściwy).

Początek przygód ze wstążką

Na samym początku dodana została wstążka, co w efekcie dało widok zaprezentowany na rysunku poniżej.

Przyznam, że mnie trochę ten widok zaskoczył. Jaki jest cel posiadania wstążki z przyciskami typu: minimalizuj, maksymalizuj, zamknij, skoro nad nią znajduje się klasyczna etykieta okna?

Rozwiązania dla tego problemu próbowałem znaleźć klasycznymi metodami: wyłączenie ramki okna (FormBorderStyle na None), czy wyłączenie paska górnego (ControlBox na false i pusta etykieta), jednak każde z rozwiązań okazywało się ułomne, jak choćby widoczna ramka dookoła okna na rysunku poniżej.

Ostatecznie wsparłem się jednym z przykładów (czytnika RSS) i użyłem kontrolki ShapedForm z zestawu dostarczanego przez firmę Telerik. Dodatkowo musiałem jeszcze skonfigurować odpowiednio okno, na szczęście odpowiednie wskazówki znalazłem w jednym z przykładów dołączonych do pakietu. Czynności te ostatecznie rozwiązały mój problem, jednocześnie uzasadniając sens wprowadzenia kolejnej kontrolki typu Form. Pojawia się tutaj jednak taka moja refleksja, czy nie lepiej byłoby, gdyby umieszczenie na Form’ie kontrolki Ribbon automatycznie wykonywało wszelkie niezbędne ustawienia?

Teraz na warsztat Dock Manager

W kolejnym kroku zająłem się projektowaniem układu okien z wykorzystaniem możliwości jakie dostarcza mechanizm dokowania, przesuwania, czy ukrywania okien. W przypadku narzędzi wchodzących do zestawu Telerik RadControls for WinForms funkcjonalność taką oferuje DockManager. Korzystanie z DockManager’a wydaje się dość proste sprowadza się do dodania menedżera do okna aplikacji, a następnie umieszczenie w nim paneli.

Tutaj muszę wspomnieć, że paneli (czy dokowanych okien) próżno szukać wśród zestawu kontrolek w przyborniku Toobox. Odpowiednie panele znajdują się tylko w menu kontekstowym menedżera dokowania. Dodawanie paneli przypomina więc pracę trochę pracę z ToolStrip’ami występującymi w klasycznych WinForms’ach, niemniej jednak nie uważam tego za zbyt intuicyjne rozwiązanie i przyznam że pierwotnie szukałem paneli w przyborniku.

Panele można dokować w zasadzie w dowolny sposób, chociaż przyznam, że odbywa się to trochę inaczej niż znany nam sposób z Visual Studio. Poza tym słabo podobają mi się zaproponowane przyciski do zamykania paneli, przypinania, czy wywoływania menu, osobiście wolę te, które widzę codziennie w Visual Studio.

Pewną trudność sprawia jeszcze edycja paneli, które zostały skonfigurowane jako ukryte. Ja za każdym razem ustawiałem panel jako widoczny, edytowałem go, a następnie musiałem pamiętać, by go znów ukryć. W tym przypadku cieszyłby chyba jakiś automat usprawniający edycję.

Wypełnianie wstążki

Praca z przygotowaniem interfejsu opartego o wstążkę (Ribbon) przebiega dość sprawnie. Podobnie jak w przypadku klasycznego TollStrip’a i Dock Manager’a (wchodzącego w skład pakietu), elementy do wstążki dodaje się przy użyciu menu kontekstowego. Mamy do dyspozycji przyciski, przyciski graficzne, przełączniki, przyciski Repeat, pola zaznaczania (checkbox), przyciski typu radio, przełączniki, listy rozwijane, galerie itp… Czyli jest w czym wybierać, aczkolwiek czasami najwygodniej byłoby mieć możliwość dodawania w prostu własnych elementów i np. na jednej z zakładek wchodzących w skład wstążki umieścić zwykły panel z własnymi zaprojektowanymi wcześniej elementami. Poza tym zauważyłem również brak elementu RadDropDownButtonElement (który widziałem wcześniej w przykładach)?

Umieszczane na wstążce elementy automatycznie ustalają swoją pozycję, a osoba przygotowująca interfejs musi wybrać tylko tryb umieszczania: pionowy lub poziomy. Kiedy potrzeba wykorzystać układ, w którym np. dwa elementy leżące jeden pod drugim, trzeba umieścić obok jednego większego elementu należy wykorzystać wiele grup i w każdej ustawić odpowiednie pionowe lub poziome rozmieszczanie. Przykładem takiej sytuacji może być duży przycisk wklej (paste) i obok niego dwa leżące pod sobą przyciski wytnij (cut) i skopiuj (copy).

Chciałbym jeszcze wrócić do przycisku rozwijanego (RadDropDownButtonElement). Trochę zdziwił mnie jego brak na liście elementów, które można dodać (ja znalazłem go w jednym z przykładów, gdzie służył do zmiany wyglądu aplikacji). Przecież jest on bardzo użyteczny. Można przy pomocy niego zgrupować przyciski o podobnej funkcjonalności (np. różne typy filtrów, jak na rysunku) lub przygotować coś podobnego do klasycznego menu. Właśnie to drugie (może nie do końca "estetyczne" rozwiązanie) pozwoliło mi na szybkie przeniesienie skomplikowanego menu aplikacji na wstążkę. Musiałem, co prawda, napisać kilka linijek kodu kreującego odpowiednie elementy na podstawie klasycznego MenuStrip, ale i tak jest to szybsze niż kreowanie wszystkiego od początku. Trochę szkoda, że sam pakiet nie oferuje jakiegoś automatycznego rozwiązania wspomagającego przenoszenie klasycznego menu lub choćby możliwości umieszczenia klasycznego menu na jednej z kart wstążki, według mnie wspomogłoby to bardzo pierwsze kroki przy przenoszeniu interfejsu.

Istotnym elementem wstążki jest jeszcze jej przycisk "Start". Edycja zawartości menu, które pojawia się po jego naciśnięciu nie stanowi żadnego problemu i odbywa się dość intuicyjnie, aczkolwiek według mnie przydałaby się tutaj możliwość automatycznego stworzenia menu, na zasadzie dodania standardowych elementów typu: nowy, otwórz, zapisz itp… Dodatkowo przydałby się też jakiś zestaw standardowych ikon, które można wykorzystać. Pewne ikony są dostępne razem z przykładami, ale wydaje mi się, że cały pakiet mógłby zyskać, gdyby oferował gotową bibliotekę ikon, które można wykorzystać w przygotowywanych aplikacjach.

Wygląd aplikacji oparty o tematy

Ciekawą możliwością, jaką oferuje pakiet jest możliwość wykorzystania tzw. "tematów (themes)" do automatycznej zmiany wyglądu aplikacji, a dokładniej wykorzystywanej kolorystyki. Dzięki temu można w bardzo prosty sposób umożliwić użytkownikowi wybór najwygodniejszego dla niego wyglądu aplikacji, efekty widać na poniższym rysunku.

Jeżeli chodzi o obsługę tematów w aplikacji, dzieje się to dość prosto i sprowadza się (prawie) do wybrania nazwy interesującego nas tematu w obsłudze odpowiedniego zdarzenia (np. po naciśnięciu przycisku). Należy jednak pamiętać, aby do głównego okna aplikacji dodać odpowiedni temat z kontrolek udostępnianych przez pakiet. Brak wykonania tej prostej czynności skutkuje naprawdę dziwnym efektem wizualnym, o możliwości zaistnienia którego nie jesteśmy informowani (np. podczas kompilacji przygotowywanej przez nas aplikacji).

Deployment, czyli publikacja przygotowywanej aplikacji

Oczywiście istotnym krokiem jaki należy powziąć przy tworzeniu aplikacji, jest przygotowanie sposobu, w jaki aplikacja będzie udostępniona użytkownikowi końcowego. W moim przypadku "deployment" jest oparty o technologię click-once. Muszę przyznać, że w tym przypadku bez trudu znalazłem w dokumentacji artykuł, który opisał jakie biblioteki należy dodać, aby moja aplikacja działała, na komputerze innym niż developerskim. Rozwiązanie, przyznam że jest proste i skuteczne, aczkolwiek wydaje mi się że przydałaby się też możliwość instalacji jakiegoś pakietu typu "redistributables", który zainstalowałby wszystkie potrzebne komponenty.


Czytaj dalej...


Promuj

Pierwsze wrażenia dotyczące pakietu RadControls for WinForms firmy Telerik

Promuj

W poprzedniej części artykułu omówiłem aplikację którą będę zmieniał, teraz przejdźmy do narzędzi jakie zostaną wykorzystane do wykonania zmian, czyli do pakietu: RadControls for WinForms. Instalator pakietu, to jeden plik 131 MB do pobrania ze strony telerik.com. Miłym jest fakt, że instalator jest podpisany cyfrowo, co gwarantuje że oprogramowanie rzeczywiście pochodzi od danego wydawcy.

Instalacja nie jest skomplikowana i sprowadza się niemal wyłącznie do uruchomienia instalatora i ewentualnego wskazania docelowej lokalizacji dla plików wchodzących w skład pakietu. Chciałbym napisać tutaj, że przebiega ona bezproblemowo, ale podczas mojego procesu instalacji pod koniec pojawił się błąd (z komunikatem: null reference). Niestety komunikat, był raczej mało czytelny i nie wskazał mi, co tak naprawdę poszło nie tak, ale ponieważ instalacja jednak dobiegła do końca (a pakiet zdawał się później działać poprawnie), więc uznałem, że nie należy się tym zbytnio przejmować

Przykłady dostępne w pakiecie

Po instalacji pakietu uruchomiona została aplikacja demonstrująca możliwości pakietu. Dzięki niej można zapoznać się możliwościami pakietu i efektami jakie można uzyskać przy zastosowaniu wybranych kontrolek. Aplikacja pozwala na wybranie z listy, interesującą nas kontrolkę, a następnie sprawdzenie, jak dana kontrolka zachowuje się w rzeczywistości.

Co ciekawe oprócz samej aplikacji demonstracyjnej, dostępny jest jej również kod źródłowy co pozwala na lepsze zrozumienie działania danego elementu, oraz dostarcza gotowy do wykorzystania kod. W samą aplikację jest również wbudowana przeglądarka kodu źródłowego, ale przyznam że należy ją traktować bardziej jako przykład możliwości pakietu, gdyż o wiele wygodniej oglądać ten kod z poziomu Visual Studio.

Przykładów jest naprawdę spora ilość, po kilka do każdej kontrolki. Niektóre przykłady się powtarzają, ale przecież w prostym programie-przykładzie można zaprezentować funkcjonalność kilku elementów. Przykłady są na pewną mocną stroną pakietu i można spędzić dłuższe chwile na ich oglądaniu. Mi szczególnie spodobał się przykład z Układem Słonecznym, chociaż muszę przyznać, że to bardziej ze względów graficznych niż funkcjonalnych, gdyż ostatecznie później najczęściej korzystałem z przykładu pokazującego prosty czytnik RSS.

Tutaj chciałbym dodać, że przykłady przygotowane zostały na wysokim poziomie i są naprawdę cennym źródłem informacji. Według mnie autorzy powinni jednak położyć większy nacisk na aktualizację przykładów, tak by wykorzystywały najnowsze komponenty biblioteki i robiły to w sposób optymalny (trochę mnie zdziwiło, że przykłady wykorzystywały klasy oznaczone jako przestarzałe (obsolete)).

Co oferuje pakiet?

Przejdźmy więc do możliwości jakie oferuje pakiet Telerik RadControls for WinForms. Na poniższym rysunku pokazane zostały typy kontrolek wchodzących w skład pakietu:

W tym miejscu pewnie każdy się zastanowi: "Pewnie przydadzą mi się kontrolki takie jak wstążka (RibbonBar), karuzela (Carousel), wykresy (Charts) lub inne, takie które nie wchodzą w skład standardowych kontrolek WinForms .NET, ale do czego przydadzą mi się inne takie jak przyciski (Buton), panele (Panels), etykiety (Labels), itd… ?" Otóż te pokrywające się z istniejącymi w WnForms .NET kontrolki, znacznie rozszerzają możliwości oryginałów, zarówno pod względem graficznym (np. przyciski, czy okna o dowolnym kształcie) jak i funkcjonalnym czy wydajnościowym (np. tabele (GridView) wyświetlające szybkozmienne wartości). Do tego dochodzi jeszcze fakt, że w pewnych kontrolkach można osadzać obiekty wchodzące tylko w skład tego pakietu (np. DockManager i jego panele), a czasami efekt osiągnięty poprzez mieszanie standardowych kontrolek z tymi w pakiecie, jest gorszy wizualnie.

Integracja ze środowiskiem Visual Studio

Pakiet Telerik RadControls for WinForms nie oferuje własnego środowiska wspomagającego tworzenie oprogramowania i jest przeznaczony do integracji z pakietem Visual Studio. Po uruchomieniu Visual Studio jednak trochę się zdziwiłem ze nie ma dodatkowych kontrolek w przyborniku Toolbox (możliwe że jest to wynik błędu jaki widziałem przy instalacji, a może niechęć autorów do modyfikacji bez wiedzy użytkownika konfiguracji interfejsu). Ja jednak postanowiłem dodać wszystkie dostępne kontrolki do przybornika, co oczywiście nie było trudne i wystarczyło stworzyć nową grupę w przyborniku, a następnie z menu kontekstowego wybrać "Choose items… ", następnie wskazać wszystkie bibliotek firmy Telerik i w efekcie wszystkie nowe kontrolki stały się dostępne (efekt widoczny na rysunku poniżej).

Dodatkowym elementem, który można wykonać jest instalacja szablonów projektów Visual Studio, dostarczonych wraz z pakietem Telerik RadControls for WinForms. W tym celu odpowiednie pliki zainstalowane wraz z pakietem trzeba przekopiować do odpowiednich katalogów środowiska Visual Studio (szczegółowy opis dostępny jest na stronach telerik.com). Szablony te mają za zadanie ułatwić rozpoczynanie projektów wykorzystujących kontrolki wchodzące w skład pakietu firmy Telerik.

W następnej części zaprezentuję zmiany, które wdrożyłem przy pomocy elementów wchodzących w skład opisywanego pakietu.

Zapraszam do lektury!

Promuj

poniedziałek, 8 czerwca 2009

Bazowa aplikacja (przed zmianami z wykorzystaniem pakietu Telerik RadControls for WinForms)

Promuj

Bazową aplikacją, którą chcę odmłodzić z wykorzystaniem pakietu RadControls for WinForms firmy Telerik, jest produkt firmy CAS: OPC UA Address Space Model Designer. Jako pracownik i programista w firmie CAS mam dostęp do kodu źródłowego tej aplikacji oraz otrzymałem zgodę na możliwość wykorzystania tej aplikacji i jej zmiany na potrzeby tego artykułu.

Podstawową funkcjonalnością tej aplikacji jest wspomaganie modelowania przestrzeni adresowej serwerów zgodnych z technologią OPC Unified Architecture. Standard ten jest następcą standardu OPC, powszechnie wykorzystywanego w systemach automatyki przemysłowej do transportu i udostępniania danych z procesu, na potrzeby systemów warstw wyższych. Razem z aplikacją zintegrowany jest elektroniczny podręcznik zawierający informacje na temat technologii OPC Unified Architecture. Celem niniejszego artykułu nie jest jednak opis możliwości i cech aplikacji, dlatego zainteresowanym polecam odwiedzić stronę produktu lub obejrzeć film na jego temat.

Skupmy się teraz na interfejsie aplikacji, który został oparty o WinForms na platformie .NET 2.0. Na poniższym rysunku przedstawiono wybrane elementu interfejsu użytkownika.

Wyróżnić można więc następujące elementy:

  • Rozwijane menu (oparte o MenuStrip)
  • Paski narzędziowe (oparte o ToolStrip)
  • Zakładki umożliwiające przełączanie pomiędzy interfejsem do edycji modelu, a książką poświęconą technologii OPC Unified Architecture
  • Jedno pływająco-dokowalne okno pokazujące standardowe wyjście aplikacji (np. przedstawiające wynik wykonania operacji Build)
  • Edytor modelu oparty o drzewo (TreeView) i edycję właściwości (PropertyGrid)

Aktualny interfejs jest funkcjonalny i wydaje się spełniać stawiane mu wymagania, jednak daleko mu do coraz częściej spotykanych rozwiązań opartych o wstążki (np. w Microsoft Office 2007) czy pływająco-dokowalnych paneli (znanych np. z Visual Studio). Mam nadzieję, że uda mi się pokazać jak prosto można uatrakcyjnić ten interfejs z wykorzystaniem pakietu RadControls for WinForms.

Czytaj dalej.

Promuj

Kierunek: nowoczesny interfejs aplikacji, czyli jak przy pomocy narzędzi firmy Telerik odmłodzić interfejs klasycznej aplikacji okienkowej.

Ostatnio miałem okazję się przyjrzeć bliżej produktom firmy Telerik wchodzącym w skład pakietu Telerik Premium Collection for .NET. Pakiet ten składa się z kliku produktów w tym: RadControls for ASP.NET AJAX, RadControls for WinForms, RadControls for WPF, RadControls for Silverlight, Telerik Reporting, Telerik OpenAccess ORM. W tym artykule zaprezentuję czynności związane z przygotowaniami nowego interfejsu użytkownika dla istniejącej aplikacji opartej o standardowe rozwiązania dostępne dla WinForms na platformie .NET, tak aby nowy interfejs był zgodny z aktualnymi trendami. Do odmłodzenia interfejsu wykorzystam RadControls for WinForms firmy Telerik.

Artykuł został podzielony na następujące części:

  1. Bazowa aplikacja, czyli co będzie zmieniane
  2. Pierwsze wrażenia dotyczące pakietu RadControls for WinForms firmy Telerik
  3. Opis zmian aplikacji i dalsze wrażenia z wykorzystania RadControls for WinForms
  4. Podsumowanie

Kolejne części artykułu będą się pojawiały jako posty na tym blogu.

Zapraszam do lektury!

Posty powiązane / Related posts