<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog Espeo Software &#187; Łukasz Matyja</title>
	<atom:link href="http://blog.espeo.pl/author/lmatyja/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.espeo.pl</link>
	<description>O technologii i biznesie naszym zdaniem</description>
	<lastBuildDate>Mon, 23 Aug 2010 12:39:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Vaadin framework</title>
		<link>http://blog.espeo.pl/2010/01/15/vaadin-framework/</link>
		<comments>http://blog.espeo.pl/2010/01/15/vaadin-framework/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 12:38:28 +0000</pubDate>
		<dc:creator>Łukasz Matyja</dc:creator>
				<category><![CDATA[technologia]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.espeo.pl/?p=195</guid>
		<description><![CDATA[
Vaadin to framework przeznaczony do budowy graficznego interfejsu użytkownika dla aplikacji internetowych tworzonych z wykorzystaniem języka Java. Całe rozwiązanie oparte jest o Google Web Toolkit (GWT). Paleta gotowych komponentów jest dość szeroka, można w niej znaleźć m.in. kontrolki do obsługi kalendarza, tabel, do budowy menu itp. jeśli jednak okazało by się to niewystarczające można utworzyć [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="margin-bottom: 0cm"><span style="font-size: small"><span style="font-weight: normal">Vaadin to framework przeznaczony do budowy graficznego interfejsu użytkownika dla aplikacji internetowych tworzonych z wykorzystaniem języka Java. Całe rozwiązanie oparte jest o Google Web Toolkit (GWT). </span></span><span style="color: #000000"><span style="font-size: small"><span style="font-weight: normal">Paleta gotowych komponentów jest dość szeroka, można w niej znaleźć m.in. kontrolki do obsługi kalendarza, tabel, do budowy menu itp. jeśli jednak okazało by się to niewystarczające można</span></span></span><span style="font-size: small"><span style="font-weight: normal"> utworzyć własny komponent. </span></span></p>
<p><span style="font-size: small"><span style="font-weight: normal">Na stronie projektu dostępny jest plugin dla środowiska Eclipse. Opisany w dalszej części przykład został wykonany właśnie z wykorzystaniem tego pluginu. </span></span></p>
<p><span style="font-size: large"><strong>Konfiguracja</strong></span></p>
<p><span style="font-size: small"><span style="font-weight: normal">Struktura projektu wykorzystującego framework Vaadin nie różni się praktycznie niczym od zwykłej aplikacji internetowej wykonywanej za pomocą Javy, nie ma żadnych zbędnych plików  i katalogów, które niekiedy potrafi wprowadzić sporo zamieszania. </span></span></p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="font-weight: normal"><span style="color: #000000"><span style="font-size: small">W pliku web.xml zdefiniowany został m.in. serwlet obsługujący żądania, jego parametr inicjujący zawiera identyfikator klasy, na podstawie której zostanie wygenerowany pierwszy widok (zaraz po uruchomieniu aplikacji). Sama klasa serwletu jest częścią frameworka Vaadin. Domyślnie włączony jest tryb debagowania.</span></span></p>
<pre>&lt;context-param&gt;
  &lt;description&gt;Vaadin production mode&lt;/description&gt;
  &lt;param-name&gt;productionMode&lt;/param-name&gt;
  &lt;param-value&gt;false&lt;/param-value&gt;
&lt;/context-param&gt;

&lt;servlet&gt;
  &lt;servlet-name&gt;Simplevaadinexample Application&lt;/servlet-name&gt;
  &lt;servlet-class&gt;
    com.vaadin.terminal.gwt.server.ApplicationServlet
  &lt;/servlet-class&gt;
  &lt;init-param&gt;
    &lt;description&gt;Vaadin application class to start&lt;/description&gt;
    &lt;param-name&gt;application&lt;/param-name&gt;
    &lt;param-value&gt;pl.espeo.example.MainWindow&lt;/param-value&gt;
  &lt;/init-param&gt;
&lt;/servlet&gt;
</pre>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --><span style="color: #000000"><span style="font-size: large"><strong>Przykładowa aplikacja</strong></span></span></p>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --><span style="color: #000000"><span style="font-size: small">Każda aplikacja wykorzystująca framework Vaadin musi posiadać klasę, która dziedziczy po klasie</span></span><span style="color: #000000"><span style="font-family: Times New Roman,serif"><span style="font-size: small"><span style="font-weight: normal"> Application i implementuje metodę init(). W tworzonej aplikacji tą rolę pełni klasa VaadinApp, dodatkowo został wykorzystany interfejs ClickListener do obsługi zdarzeń obiektu Button.</span></span></span></span></p>
<pre>public class VaadinApp extends Application implements ClickListener {

 private Window mainWindow;
 private Window subWindow;
 private Button closeButton;
 private Label label;

 @Override
 public void init() {
 mainWindow = new Window("Main window");
 createSubWindow();
 mainWindow.addWindow(subWindow);
 setMainWindow(mainWindow);        
 }

//...
}</pre>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="font-weight: normal"><span style="color: #000000"><span style="font-family: Times New Roman,serif"><span style="font-size: small">W metodzie init() stworzone zostało główne okno programu stanowiące kontener dla pozostałych  elementów graficznego interfejsu użytkownika.</span></span></span></p>
<pre> private void createSubWindow() {
   VerticalLayout layout = new VerticalLayout();
   layout.setSpacing(true);
   layout.setMargin(true);    

   label = new Label("Window content");
   closeButton = new Button("Close");
   closeButton.addListener(this);

   layout.addComponent(closeButton);

   subWindow = new Window("Window");
   subWindow.addComponent(layout);
   subWindow.center();
   subWindow.setClosable(false);
 }

 @Override
 public void buttonClick(ClickEvent event) {
   mainWindow.removeWindow(subWindow);
 }</pre>
<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="font-weight: normal"><span style="color: #000000"><span style="font-family: Times New Roman,serif"><span style="font-size: small">Metoda  buttonClick pochodzi z interfejsu  ClickListener, jej wywołanie powoduje usunięcie okna z okna głównego aplikacji.</span></span></span></p>
<p><span style="color: #000000"><span style="font-size: large"><strong>Podsumowanie</strong></span></span></p>
<p><span style="font-size: small"><span style="font-weight: normal">Vaadin framework stanowi ciekawą alternatywę dla tworzenia tradycyjnego tworzenia widoków – za pomocą jsp, html css itd. W końcu cała aplikacja może być napisana w Javie. </span></span></p>
<p><span style="font-size: small"><span style="font-weight: normal">Sposób implementacji poszczególnych elementów jest bardzo podobny do Swinga co moim zdaniem należy uznać za duży plus. Wydaje mi się, że Vaadin świetnie sprawdziłby się w mały i średnich projektach.</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.espeo.pl/2010/01/15/vaadin-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
