Modelowanie i Analiza Systemów informacyjnych (MAS)

Podobne dokumenty
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Programowanie obiektowe

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

AUTOMATYCZNE GENEROWANIE GRAFICZNYCH INTERFEJSÓW UŻYTKOWNIKA

Aplikacje w środowisku Java

Wprowadzenie do projektu QualitySpy

Metody dostępu do danych

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie Obiektowe GUI

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Języki i metody programowania Java. Wykład 2 (część 2)

Laboratorium 7 Blog: dodawanie i edycja wpisów

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Dokumentacja do API Javy.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Backend Administratora

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Aplikacje w środowisku Java

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Zaawansowane aplikacje WWW - laboratorium

Technologie i usługi internetowe cz. 2

Platformy Programistyczne Podstawy języka Java

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Wykład 4: Klasy i Metody

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Projekt Hurtownia, realizacja skojarzeń dostawców i produktów

Wykład 5 Okna MDI i SDI, dziedziczenie

Modele danych walidacja widoki zorientowane na model

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Programowanie obiektowe

Zaawansowane aplikacje internetowe

Instrukcja laboratoryjna cz.3

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Klasy i obiekty cz II

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

JAVA CZ.2 Programowanie obiektowe. poniedziałek, 20 kwietnia 2009

Języki i techniki programowania Ćwiczenia 2

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Ćwiczenia 9 - Swing - część 1

Programowanie obiektowe

Builder (budowniczy) Cel: Przykład:

4. Budowa prostych formularzy, stany sesji, tworzenie przycisków

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Instrukcja laboratoryjna nr.4

OfficeObjects e-forms

Programowanie obiektowe

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Szablony funkcji i klas (templates)

Programowanie obiektowe

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

1. Język JAVA. 1. Pierwszy program. 2. Kalkulator. 3. Klasy. 4. Dziedziczenie

Programowanie 3 - Funkcje, pliki i klasy

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Podstawy Programowania Obiektowego

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Szablony funkcji i szablony klas

Podstawy obiektowości

Aplikacje WWW - laboratorium

Podstawowe części projektu w Javie

Materiały do zajęć VII

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

GUI - projektowanie interfejsów cz. II

Baza danych sql. 1. Wprowadzenie

Programowanie w Javie

Java Język programowania

Programowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

1. CZYM JEST SERIALIZACJA

Programowanie obiektowe

Forum Client - Spring in Swing

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Podstawy Języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Programowanie i projektowanie obiektowe

Lista, Stos, Kolejka, Tablica Asocjacyjna

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Tworzenie wydajnych interfejsów. Autorzy: Piotr Michałkiewicz, 2 rok AiR Daniel Maksymow, 2 rok Informatyki

Wykład 8: klasy cz. 4

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Transkrypt:

Modelowanie i Analiza Systemów informacyjnych (MAS) dr inż. Mariusz Trzaska mtrzaska@pjwstk.edu.pl Wykład 14 Deklaratywne tworzenie graficznych interfejsów użytkownika http://www.mtrzaska.com/

Zagadnienia Wstęp Klucz do sukcesu Założenia proponowanego podejścia deklaratywnego Problemy do rozwiązania Przykłady użycia Podsumowanie Działający prototyp: https://code.google.com/archive/p/gcl-dsl/ Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 2

Podejście deklaratywne Co to takiego jest? Na czym polega różnica w stosunku do klasycznego tworzenia GUI? Po co nam kolejne rozwiązanie? Zalety Wady Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 3

Klucz do sukcesu Z jednej strony chcielibyśmy aby komputer stworzył GUI całkowicie (?) samodzielnie najlepiej bez naszego zaangażowania. Równocześnie chcemy aby to GUI było zgodne z naszymi oczekiwaniami dotyczącymi: Funkcjonalności, Estetyki, Użyteczności, Wydajności. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 4

Klucz do sukcesu (2) Aby komputer mógł to spełnić w 100% musiałby czytać w naszych myślach... Jak na razie nie jest to możliwe... W związku z tym musimy przekazać mu wskazówki odnośnie tego co ma zrobić. Istota podejścia deklaratywnego polega na tym, że mówimy właśnie co ma zrobić, a nie jak ma to zrobić. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 5

Klucz do sukcesu (3) W związku z tym musimy znaleźć: złoty środek pomiędzy naszym zaangażowaniem w definiowanie GUI, a generycznością rozwiązania oferowanego przez komputer Słabe dostosowanie do wymagań użytkownika Doskonałe dostosowanie do wymagań użytkownika Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 6

Klucz do sukcesu (4) Jeżeli, w celu wygenerowania GUI, system będzie potrzebował zbyt dużej ilości informacji (koniecznych do dostosowania go do szczególnych potrzeb) to korzystanie z niego będzie trudniejsze niż klasyczne stworzenie GUI. Wydaje się, że aby zmniejszyć nasz nakład pracy musimy zaakceptować pewną uniwersalność rozwiązania, tzn. wygenerowane GUI będą do siebie dość podobne. Niemniej, w typowych przypadkach, mogą być bardzo użyteczne. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 7

Założenia proponowanego podejścia deklaratywnego Programista określa elementy modelu danych Javy (klasy), które powinny mieć stworzone GUI: Atrybuty, Metody. Programista wywołuje metodę, która dla podanego obiektu wyświetli formularz (okno). System samodzielnie generuje formularze umożliwiające tworzenie nowych instancji danych, ich edycje, itp. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 12 8

Założenia proponowanego podejścia deklaratywnego (2) Ewentualnie doprecyzowanie szczegółów, m.in.: Etykiety tekstowe, Rodzaje konkretnych widgetów, Obsługujemy głównie typy proste (ale nie tylko) Liczby i teksty, Prawda/Fałsz, Datę, Typ wyliczeniowy. W celu łatwiejszej implementacji oraz prostszego użycia, rezygnujemy m.in. z: Zaawansowanej walidacji danych, Wielonarodowości (i18n). Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 12 9

Klasyczne rozwiązanie Aby osiągnąć poprzednią funkcjonalność korzystając z klasycznego podejścia, programista musi: a) utworzyć pustą formatkę, b) dodać odpowiedni manager rozkładu, c) dla każdego atrybutu dodać widget, który zaprezentuje jego zawartość i umożliwi jego edycję, d) dla każdej metody dodać widget, który zaprezentuje wynik jej działania, Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 10

Klasyczne rozwiązanie (2) Aby osiągnąć poprzednią funkcjon. c.d. e) dla każdego widgetu dodać odpowiednią etykietę, f) dla każdego widgetu dodać kod, który odczyta wartość określonego atrybutu i wstawi ją do widgetu, g) dodać przyciski kontrolne (Accept, Cancel), h) dla przycisku Accept dodać kod, który odczyta zawartość widgetów, uaktualni odpowiedni fragment modelu oraz ukryje formatkę, i) dla przycisku Cancel dodać kod ukrywający. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 11

Klasyczne rozwiązanie (3) Realizacja powyższych wymagań oznacza napisanie kilkudziesięciu linii kodu: 7 atrybutów mnożone przez 5 do 10 linii na kontrolkę zarządzanie rozkładem, obsługa przycisków kontrolnych. Jigloo GUI Builder wygenerował 105 linii kodu (bez pkt. f, h, i). Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 12

Problemy do rozwiązania Jak odczytać zawartość klasy (jej strukturę)? Jak przekazać informacje, które elementy danych powinny mieć swoje odzwierciedlenie w GUI? Jakie widgety powinny być użyte do poszczególnych rodzajów danych? Jak połączyć poszczególne elementy GUI (widgety) z danymi (odczyt, zapis)? Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 13

Odczyt zawartości klasy Wykorzystanie technologii zwanej refleksją (reflection). Dostarcza informacje o budowie klas, m.in. atrybuty, metody. Umożliwia tworzenie instancji klas (obiektów), wywoływanie metod, modyfikację, odczyt zawartości atrybutów. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 14

Odczyt zawartości klasy (2) Wykorzystanie technologii zwanej refleksją (reflection) c.d. Jest dostępna dla: Javy, C# Częściowo również C++ (RTTI - Run Time Type Information). Kluczowa klasa (Java): Class i metody: getdeclaredfields(), getdeclaredmethods(). Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 15

Które elementy mają mieć GUI? Jak zdefiniować które elementy modelu mają mieć wygenerowane kontrolki GUI? Wszystkie? To się raczej nie sprawdzi bo nie każdy inwariant powinien być dostępny dla użytkownika. Automatycznie? Niestety tak się nie uda dla każdego przypadku. Plik konfiguracyjny, np. XML, properties? Przekazywanie odpowiednich parametrów dla metody? Inne możliwości? Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 16

Adnotacje klas Adnotacje definiowane przez programistę mogą dotyczyć: Klas, Atrybutów, Metod. Występują w: Javie, C# (jako Attributes). Można wykorzystać istniejące lub tworzyć własne. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 17

Adnotacje klas (2) Składnia dla Javy @Override public String tostring() { return Moja wlasna implementacja tostring()"; } Składnia dla C# [MyOwnAnnotation] Public override String ToString() { return Moja wlasna implementacja tostring()"; } Własne adnotacje w Javie public @interface MyOwnAnnotation { } Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 18

Adnotacje klas (3) Dostosowywanie własnych adnotacji Domyślne parametry, Stosowanie do: Atrybutów, Konstruktorów, Zmiennych lokalnych, Pakietów, Metod, Typów (klasy, interfejsy, typy wyliczeniowe). Dostępność w czasie: kompilacji, działania programu. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 19

Dostosowywanie generowanego GUI Do określenia, które elementy modelu mają mieć wygenerowane GUI stworzymy odpowiednie adnotacje. Muszą mieć one określone parametry pozwalające na dostosowanie wygenerowanych widgetów. Liczba tych parametrów powinna być jak najmniejsza. W celu dalszego ułatwienia korzystania ze stworzonych adnotacji, parametry będą miały domyślne wartości. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 20

Dostosowywanie generowanego GUI (2) Dzięki wprowadzeniu podziału możemy indywidualnie kształtować funkcjonalność adnotacji dla: Atrybutów, Metod. Zestaw parametrów będzie podobny, ale domyślne wartości różne. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 21

Dostosowywanie generowanego GUI (3) Parametry adnotacji label. Opisuje etykietę znajdującą się przy widgecie. Jeżeli jest pusta (wartość domyślna) to zostanie wykorzystana nazwa atrybutu lub metody. Ten parametr jest wymagany bo czasami musimy wprowadzić specjalne nazewnictwo (np. spację, czy polskie litery); widgetclass. Klasa widgetu, która będzie wykorzystana do edycji oraz wyświetlania danych. Domyślna wartość zakłada użycie pola tekstowego (JTextBox); Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 22

Dostosowywanie generowanego GUI (4) Parametry adnotacji c.d. tooltip. Krótki tekst wyświetlany po najechaniu kursorem na element. getmethod. Metoda wykorzystywana do odczytu wartości atrybutu. Domyślna wartość zawiera pusty ciąg i oznacza zastosowanie podejścia opartego na getterach oraz setterach; setmethod. Analogicznie jak w przypadku getmethod, ale dotyczy zapisu wartości; showinfields. Flaga określająca, czy ten element powinien być widoczny w formatce z polami; Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 23

Dostosowywanie generowanego GUI (5) Parametry adnotacji c.d. showintable. Flaga określająca, czy ten element powinien być widoczny w widoku tabelarycznym; showinsearch. Flaga określająca, czy ten element powinien być widoczny w widoku służącym do wyszukiwania; order. Liczba określająca kolejność widgetu w formularzu; readonly. Flaga definiująca, czy dane są dostępne w trybie tylko do odczytu (bez możliwości modyfikacji); Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 24

Dostosowywanie generowanego GUI (6) Parametry adnotacji c.d. scalewidget. Określa, czy widget powinien zmieniać swój rozmiar w czasie modyfikacji wielkości formularza. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 25

Tworzenie własnych adnotacji @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface GUIGenerateAttribute { /** * Podaje nazwe etykiety dla pozycji w GUI. Gdy "" to bedzie uzyta nazwa atrybutu (pierwsza litera skonwertowana do duzej). * @return */ String label() default ""; /** * Definiuje widget, ktory bedzie stworzony dla obslugi danego atrybutu. * Musi dziedziczyc z "java.awt.component" ("javax.swing.jcomponent") * W tym elemencie MUSI byc metoda "String gettext()" oraz "settext(string)". * @return */ String widgetclass() default "javax.swing.jtextfield"; /** * Definiuje tooltip wyswietlany dla widgetu. * @todo * @return */ String tooltip() default ""; // [...] Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 26

Tworzenie własnych adnotacji (2) @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface GUIGenerateAttribute { // - c.d. /** * Definiuje metode do pobierania wartosci dla atrybutu. Jezeli jest "" oznacza to wykorzystanie metody "String get<nazwaatrybutu>()" * @return */ String getmethod() default ""; /** * Definiuje metode do ustawiania wartosci dla atrybutu. Jezeli jest "" oznacza to wykorzystanie metody "set<nazwaatrybutu>(string)" * @return */ String setmethod() default ""; /** * Definiuje czy generowac widget przy widoku w polach (przegladanie lub edycja). * @return */ boolean showinfields() default true; Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 27

Tworzenie własnych adnotacji (3) @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface GUIGenerateAttribute { // - c.d. /** * Definiuje czy generowac widget przy widoku tabeli. * @return */ boolean showintable() default true; /** * Definiuje czy generowac widget przy widoku w polach do wyszukiwania. * @return */ boolean showinsearch() default true; /** * Okresla kolejnosc wygenerowanegu widgetu wsrod innych wygenerowanych widgetow. * @return */ int order() default 0; //... Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 28

Tworzenie własnych adnotacji (4) @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface GUIGenerateAttribute { // - c.d. /** * Gdy True to wartosc atrybutu nie moze byc zmieniona. * @return */ boolean readonly() default false; } /** * Gdy true to w czasie zmian wielkosci formy dostosowuje wielkosc widgetu. * @return */ boolean scalewidget() default false; Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 29

Dobór kontrolek GUI dla danych Najprostsze i najbardziej uniwersalne podejście wykorzystuje JTextBox, Oczywiście można je ulepszyć: Specjalne ComboBox y do pracy z typem wyliczeniowym, CheckBox y obsługujące typ boolean, Inne zdefiniowane przez programistę. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 30

Przesyłanie danych do/z kontrolki Ponieważ nasze rozwiązanie jest generyczne (tzn. zdolne do pracy z różnymi typami danych) musimy ustalić wspólny typ przesyłanych danych: tekst (String). Wymagamy aby każda wykorzystywana kontrolka obsługiwała dwie metody: void settext(string) - zapis danych do kontrolki, String gettext() odczyt danych z kontrolki. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 31

Przesyłanie danych do/z kontrolki (2) Większość kontrolek udostępnianych przez Swing a obsługuje w/w metody. Czasami musimy stworzyć prosty wrapper (opakowanie) dla istniejącej kontrolki tak, aby pracowała z w/w metodami. W nielicznych sytuacjach może wystąpić potrzeba wprowadzenia znaczących modyfikacji lub implementacji własnej kontrolki. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 32

Przykłady użycia proste adnotacje Działający prototyp: https://code.google.com/archive/p/gcl-dsl/ Prosta klasa dla, której potrzebujemy GUI public class Person { private String firstname; private String lastname; private Date birthdate; private boolean highereducation; private String remarks; private int SSN; private double annualincome; } public int getage() { // [...] } Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 33

Przykłady użycia proste adnotacje (2) Wprowadzamy proste adnotacje z domyślnymi wartościami c.d. public class PersonAnnotated { @GUIGenerateAttribute private String firstname; @GUIGenerateAttribute private String lastname; @GUIGenerateAttribute private Date birthdate = new Date(); @GUIGenerateAttribute private boolean highereducation; @GUIGenerateAttribute private String remarks; @GUIGenerateAttribute private int SSN; @GUIGenerateAttribute private double annualincome; @GUIGenerateMethod public int getage() { //... } // Standard getters/setters methods } Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 34

Przykłady użycia proste adnotacje (3) Wprowadzamy proste adnotacje z domyślnymi wartościami c.d. JDesktopPane jdp = new JDesktopPane(); PersonAnnotated person = new PersonAnnotated(); SingleObjectPlusFrame personframe = GUIFactory.getObjectFrame(person, jdp, false, true, true); I oto efekt wywołania jednej metody: GUIFactory..getObjectFrame(...) Oczywiście są pewne wady, ale część z nich zaraz usuniemy. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 35

Przykłady użycia parametryzowane adnotacje Tym razem dostosowujemy nasze adnotacje public class PersonAnnotated { @GUIGenerateAttribute(label = "First name", order = 1) private String firstname; @GUIGenerateAttribute(label = "Last name", order = 2) private String lastname; @GUIGenerateAttribute(label = "Birth date", order = 3) private Date birthdate = new Date(); @GUIGenerateAttribute(label = "Higher education", widgetclass="mt.mas.gui.checkboxboolean", order = 5) private boolean highereducation; @GUIGenerateAttribute(label = "Remarks", order = 50, widgetclass="javax.swing.jtextarea",scalewidget=false) private String remarks; @GUIGenerateAttribute(order = 6) private int SSN; @GUIGenerateAttribute(label= "Annual income", order=7) private double annualincome; @GUIGenerateMethod(label="Age", showinfields = true, order = 4) public int getage() {...} } // Standard getters/setters methods Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 36

Przykłady użycia parametryzowane adnotacje (2) Wywołanie jak poprzednio, ale dzięki przekazaniu odpowiednich parametrów dla adnotacji: Poprawne nazwy atrybutów, Właściwa kolejność, Wiek jest tylko do odczytu, Pole Remarks podlega skalowaniu, Dedykowane kontrolki (JCheckBox). Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 37

Połączenie z ObjectPlusX Dzięki połączeniu sensegui razem z wcześniej omawianą biblioteką ObjectPlusX otrzymujemy również możliwość zarządzania powiązaniami, ekstensją, itp. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 38

Dodatkowe możliwości Wyszukiwanie obiektów Kryteria wprowadzamy za pomocą wygenerowanej formatki Automatyczna informacja o postępach Widok tabelaryczny Dowolna kolekcja, Możliwość wyboru obiektu z tabeli. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 39

GCL DSL Nowa wersja biblioteki Fluent API zamiast adnotacji Walidatory I18n AdHoc GUI https://code.google.com/archive/p/gcl-dsl/ Trzaska M.: Data Migration and Validation Using the Smart Persistence Layer 2.0. The 16th IASTED International Conference on Software Engineering and Applications (SEA 2012). November 12 14, 2012. Las Vegas, USA. Acta Press. ISBN: 978-0-88986-951-6. Pobierz Trzaska M. GCL - An Easy Way for Creating Graphical User Interfaces. Journal of Systemics, Cybernetics and Informatics, Volume 9, Number 1, Year 2011. ISSN: 1690-4524. pp. 81-88. Pobierz Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 40

GCL DSL (2) JFrame frame1 = create.frame.usingonly(person); JFrame frame = create. frame. using(person). containing( attribute("firstname").as("first name"), attribute("lastname").validate(new ValidatorNotEmpty()), attribute("highereducation"), method("getage").as("age")); Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 41

GCL DSL (3) JFrame frame = create. frame. using(company). containing( attribute("name").as("name"), attribute("income"), attribute("employees")); AdHocActionPerformed processaccept = new AdHocActionPerformed() { @Override public void Accept(Map<String, String> entereddata) { // Do something with the fields... } }; frame = create. frame("data", processaccept, "OK"). containing( attribute("firstname").as("first name").value("martin"), attribute("lastname").validate(new ValidatorNotEmpty()), attribute("highereducation").type(boolean.class), attribute("values").type(colors.class)); Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 42

Podsumowanie Wydaje się, że deklaratywne podejście do tworzenia GUI jest bardzo użyteczne. Dzięki niemu programista jest w stanie zaoszczędzić sporo pracy szczególnie w przypadku typowych formularzy. Każde tego typu rozwiązanie jest kompromisem pomiędzy zaangażowaniem programisty, a osiągniętymi efektami. Zademonstrowane przykłady pokazują, że da się je wykorzystać w praktyce. Modelowanie i Analiza Systemów Informacyjnych (MAS), wykład 14 43