HTML

Sencha GXT blog

„Gazdag felületű” webes alkalmazás fejlesztése Google Web Toolkit és Sencha GXT segítségével.

Friss topikok

Címkék

eclipse (1) gwt (2) gxt (3) layouts (1) off (1) Címkefelhő

2013.03.03. 18:14 tz.

Elrendezések: AccordionLayout

Címkék: gxt layouts

Első elrendezésekkel kapcsolatos példaprogramban a GXT AccordionLayoutContainer osztályát próbáljuk ki. Ez az elrendezés több panelt foglal magába, ezek mindegyikéhez tartozik egy-egy címsor. A címek függőlegesen egymás alatt sorakoznak, rájuk kattintva nyitható ki az adott címhez tartozó tartalom. Az alábbi képre pillantva világos lesz, hogy miről van szó:

AccordionLayoutPic.jpg

A példaprogram hasonlóan készült, mint a Helló Világ, ezért csak az érdemi részt, a java csomag kódját másoltam ide:

package com.accordionsample.gxt.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.Window;
import com.sencha.gxt.widget.core.client.container.AccordionLayoutContainer;
import com.sencha.gxt.widget.core.client.container.AccordionLayoutContainer.ExpandMode;

public class AccordionSample implements EntryPoint {
	@Override
	public void onModuleLoad() {

		final String[] loremTitle = {"Mi a Lorem Ipsum?","Honnan származik?","Mire használjuk?" };

		final String[] loremBody = {"<p>A <b>Lorem Ipsum</b> egy egyszerű szövegrészlete, szövegutánzata a betűszedő és nyomdaiparnak. A Lorem Ipsum az 1500-as évek óta standard szövegrészletként szolgált az iparban; mikor egy ismeretlen nyomdász összeállította a betűkészletét és egy példa-könyvet vagy szöveget nyomott papírra, ezt használta. Nem csak 5 évszázadot élt túl, de az elektronikus betűkészleteknél is változatlanul megmaradt. Az 1960-as években népszerűsítették a Lorem Ipsum részleteket magukbafoglaló Letraset lapokkal, és legutóbb softwarekkel mint például az Aldus Pagemaker.</p>",
				"<p>A hiedelemmel ellentétben a Lorem Ipsum nem véletlenszerű szöveg. Gyökerei egy Kr. E. 45-ös latin irodalmi klasszikushoz nyúlnak. Richarrd McClintock a virginiai Hampden-Sydney egyetem professzora kikereste az ismeretlenebb latin szavak közül az egyiket (consectetur) egy Lorem Ipsum részletből, és a klasszikus irodalmat átkutatva vitathatatlan forrást talált. A Lorem Ipsum az 1.10.32 és 1.10.33-as de Finibus Bonoruem et Malorum részleteiből származik (A Jó és Rossz határai - Cicero), Kr. E. 45-ből. A könyv az etika elméletét tanulmányozza, ami nagyon népszerű volt a reneszánsz korban. A Lorem Ipsum első sora, Lorem ipsum dolor sit amet.. a 1.10.32-es bekezdésből származik. <p>A Lorem Ipsum alaprészlete, amit az 1500-as évek óta használtak, az érdeklődők kedvéért lent újra megtekinthető. Az 1.10.32 és 1.10.33-as bekezdéseket szintén eredeti formájukban reprodukálták a hozzá tartozó angol változattal az 1914-es fordításból H. Rackhamtól.</p>",
				"<p>Ez egy régóta elfogadott tény, miszerint egy olvasót zavarja az olvasható szöveg miközben a szöveg elrendezését nézi. A Lorem Ipsum használatának lényege, hogy többé-kevésbé rendezettebb betűket tartalmaz, ellentétben a Tartalom helye, Tartalom helye-féle megoldással. Sok desktop szerkesztő és weboldal szerkesztő használja a Lorem Ipsum-ot mint alapbeállítású szövegmodellt, és egy keresés a lorem ipsum-ra sok félkész weboldalt fog eredményezni.</p>" };

		Window window = new Window();
		window.setHeadingText("AccordionLayout példa");
		window.setWidth(400);
		window.setHeight(400);

		AccordionLayoutContainer container = new AccordionLayoutContainer();
		container.setExpandMode(ExpandMode.SINGLE_FILL);

		for (int i = 0; i < loremBody.length; i++) {
			ContentPanel cp = new ContentPanel();
			cp.setHeadingText(loremTitle[i]);
			cp.add(new HTML("<h3>"+loremTitle[i]+"</h3>"+loremBody[i]));
			cp.setBodyStyle("padding:5px");
			container.add(cp);
		}

		container.setActiveWidget(container.getWidget(0));

		window.add(container);
		RootPanel.get().add(window);
		window.center();
	}
}

A loremTitle és loremBody tömbökben konstans szövegeket helyeztem el, hogy legyen valami egyszerű tartalmunk, amin ellenőrizhetjük a működést. (A szövegek a hu.lipsum.com oldalról valók.)

A layout-ot egy ablakban próbáltam ki, ehhez példányosítottam a GXT Window osztályából a window objektumot. Kapott egy címet és beállítottam a méreteit. A kód végén hozzáadtam a RootPanel-hez, hogy megjelenjen és végül a center() metódusával a képernyő közepére igazítottam.

Az AccordionLayoutContainer-t container néven pédányosítottam, majd a setExpandMode() metódusával beállítottam a működését a következős lehetőségek közül:

  • SINGLE: Egyszerre csak egy eleme lehet nyitva.
  • SINGLE_FILL: Egyszerre csak egy eleme lehet nyitva, de ennek a méretét a sajátjához igazítja, hogy kitöltse a teljes szabad területet.
  • MULTI: Több eleme is kinyitható.

Már csak a lényeg maradt hátra: Egy ciklus segítségével annyi ContentPanel-t készítünk, amennyi szöveget a program elején elhelyeztünk a loremBody tömbben.  A panel setHeadingText() metódusával kitöltjük a címeket. A tartalmi részhez GWT HTML osztályát példányosítjuk, ennek segítségével formázott szöveg jelenik majd meg a felhasználói felületen.  A setBodyStyle() segítségével pedig egy kis  távolságot állítunk be a szöveg és panel széle közé. Az így elkészített paneleket sorban a container-hez adjuk.

Miután az összes elem elkészült, kinyitjuk az első panelt a container setActiveWidget() metódusával. A getWidget() a paraméterében kapott sorszámhoz tartozó elemét adja vissza a container-nek. Ezek után már csak hozzá kell adni a window-hoz az elkészült AccordionLayoutContainer-t.

Szólj hozzá!

2013.02.17. 17:49 tz.

Kezdjük el: Helló Világ!

Címkék: gxt gwt

A fejlesztő környezet kialakítása után, máris elkészíthetjük az első „Helló Világ!” programunkat. A GXT-t úgy tudjuk használni, hogy egy GWT projektet készítünk, viszont a GWT vizuális elemeit tartalmazó csomagok helyett, a GXT csomagjait használjuk.  

1, GWT Project készítése

Az Eclipse eszközsávján a New gombra kattintva kiválasztjuk a Google -> Web Application Project lehetőséget:

hello1.jpg

Next gomb után az alábbiak szerint kitöltjük a project legfőbb tulajdonságait. A neve legyen HelloWorld, a csomagunk pedig com.hello.gxt. A példa kód előtt maradjon ott a pipa, így csak néhány apróságot kell majd változtatnunk ahhoz, hogy a GWT mintaprogram helyett GXT programunk legyen.

hello2.jpg

2, GXT könyvtárak prorojecthez kapcsolása

A baloldali Project Explorer fában, a projectünkön jobb egérgombra előugró menüből kattintsunk a  Build Path -> Configure Build Path lehetőségre. A Library fülön kattintsunk az Add Library gombra, majd válasszuk a User Library lehetőséget. A korábban általunk elkészített GXT könyvtár elé tegyünk egy pipát és Finsh, majd OK.

Hello3.jpg

A war -> HelloWorld.html fájl body részéből töröljük ki a h1 és a table elemeket. (Ez csak a GWT példaprogramhoz kellett volna.)

Az src -> com.hello.gxt -> HelloWorld.gwt.xml fájl Other kommentje után szúrjuk be a GXT-t:

<!-- Other module inherits -->
<inherits name='com.sencha.gxt.ui.GXT'/>

3, Írjuk meg az első programunkat!

A src -> com.hello.gxt -> client -> HelloWorld.java fájl tartalmazza a programunk érdemi kódját. Jelenleg a GWT példaprogram van benne, ezt teljes egészében töröljük ki és az alábbi sorokat másoljuk bele:

package com.hello.gxt.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import com.sencha.gxt.widget.core.client.box.MessageBox;

public class HelloWorld implements EntryPoint {
  @Override
  public void onModuleLoad() {
    MessageBox popup = new MessageBox("First popup window","Hello World!");
  RootPanel.get().add(popup);
  popup.show();
  }
}

Ha mindent jól csináltunk, akkor nem jelez hibát az Eclipse, akár futtathatjuk is az eszköztár zöld play gombjával. Ha rákérdez, hogyan szeretnénk futtatni, akkor válasszuk a Web Application lehetőséget.

Néhány másodperc múlva megjelenik a képernyő alján a futó alkalmazásunk URL címe: http://127.0.0.1:8888/HelloWorld.html?gwt.codesvr=127.0.0.1:9997

Erre kattintva indulna az alkalmazásunk, de ha első alkalommal futtatunk GWT projektet az adott böngészőben, akkor át kell még esnünk a böngészőbe épülő GWT Developer Plugin telepítésén. (Írtam erről az előző bejegyzésben, arról pedig, hogy ténylegesen mire használhatjuk később önálló bejegyzést készítek.) Ha ezen is túl vagyunk és ismét lekérjük az alkalmazásunk URL-jét, akkor néhány másodperc múlva, megjelenik munkák gyümölcse:

hello4.jpg

Magyarázat:

A kódot elemezve azt láthatjuk, hogy az EntryPoint és RootPanel osztályokat a GWT biztosítja:

Az EntryPoint, az alkalmazás belépési pontját megvalósító interfész, induláskor az (egyetlen) onModuleLoad() tagfüggvénye hívódik meg, ezt kellett felülírnunk. A HelloWorld.gwt.xml fájlban szerepel, hogy a HelloWorld.java tartalmazza az EntryPoint megvalósítását.

A RootPanel valójában az alkalmazás HTML struktúrájának a BODY részét implementáló osztály. Ez egy „egyke”, amit nem példányosítjuk, csak használjuk get() tagfüggvényén keresztül. Neki lesznek a gyerekei a vizuálisan megjelenő objektumok.

A MessageBox osztályt viszont a GXT könyvtárából importáltuk, az ebből példányosított popup az egyetlen olyan objektuma a példának, ami valóban látható a felhasználói felületen. A program működése tehát az, hogy létrehozzuk MessageBox típusú popup ablakot, hozzáadjuk a RootPanelhez, majd megjelenítjük.

Megjegyzés:

Talán ebből a roppant egyszerű példából is jól látszódik, hogy mi az erőssége a GWT+GXT architektúrának. Valóban anélkül készítettünk böngészőben futtatható alkalmazást, hogy bármilyen kliensoldalt érintő kódot írtunk volna. A GWT példában még volt egy kevés HTML kód, de azt egyszerűen töröltük. A programunk futás közben a - lényegében üres - BODY részt feltölti HTML elemekkel, ha mi hozzáadunk a RootPanelhez java objektumokat.  

Hasonló leírások:

Szólj hozzá!

2013.02.16. 19:10 tz.

Készüljünk elő: Fejlesztői környezet telepítése

Címkék: eclipse gxt gwt

1, Java JDK

Mivel Javaban fejlesztünk szükség lesz a JDK-ra (Java Development Kit). Ezt az Oracle honlapjáról töltethetjük le, a telepítés pedig néhány „next” gomb megnyomásából áll.

2, Eclipse

IDE tekintetében az Eclipse tűnik a leglogikusabb választásnak egy kezdő számára, így én is ezt üzemeltem be. A 4.2-es Juno fantázianevűt választottam, ebből is azt a konfigurációt, amit Java EE fejlesztők számára raktak össze. Tehát az Exclipse Downloads oldalról, az Eclipse IDE for Java EE Developers-t töltöttem le.

Telepíteni nem is kell, egyszerűen kicsomagoljuk abba a könyvtárba, ahol használni szeretnénk és az eclipse.exe már futtatható is. Az első indítás alkalmával megkérdezi, hol szeretnénk a workspace mappát tartani. Ebben lesznek a saját projektjeink.

3, Google Web Toolkit

A GWT pluginként beépül az Exclips-be, így a telepítése is nagyon egyszerű. A Help menü Install New Software menüpontjára kattintva az alábbi párbeszéd ablakot kapjuk. A felső mezőbe beírjuk a GWT plugin Exclipsünkhöz tartozó verziójának elérhetőségét: http://dl.google.com/eclipse/plugin/4.2, majd Enter. Néhány másodperc múlva megjelennek a telepíthető lehetőségek, a képen látható módon válogattam ezek közül. Később természetesen feltelepíthetjük a most ki nem választott elemeket.

GWT-setup.jpg

Next és Finish után letöltődnek és települnek a termékek, a használathoz már csak újra kell indítani az Eclipset.     

4, Sencha GXT

Töltsük le a legfrissebb változatát a GXT-nek (jelenleg 3.0.1) a Sencha oldaláról. Tömörítsük ki oda, ahol tárolni szeretnénk. Annyi feladatunk van még, hogy az Eclipsben létrehozunk egy könyvtárhivatkozást a GXT-hez. A Window menüben keressük meg a Preferences lehetőséget. A képernyőn válasszuk ki a  Java -> Build Path -> User Libraries menüpontot az alábbi kép szerint. Kattintsunk a New gombara és gépeljük be, hogy „GXT”. Kattintsunk az Add External JARs gombra, majd keressük meg és válaszuk ki a gxt-3.0.1.jar fájlt. OK gomb, és készen is vagyunk.

GXT-setup.jpg

5, GWT Developer Plugin

GWT alkalmazásokat, ha Eclipseből futtatjuk, akkor úgynevezett „Hosted mode”-ban működnek, ilyenkor nagyfokú támogatást kapunk debugoláshoz, teszteléshez. Ebben az üzemmódban szükség van egy böngészőbe épülő kiegészítésre is, a GWT Developer Plugin-ra. Első programunk futtatás alkalmával települ, de tematikailag ehhez a bejegyzéshez illik az említése. (Természetesen az alkalmazásunk lefordított „éles” használata közben nincs szükség erre a kiegészítésre.)

     

Készen is vagyunk, jöhet a Helló Világ! példaprogram.

Hasonló leírások:

Szólj hozzá!

2013.02.16. 17:49 tz.

Mi ez itt?

Címkék: off

Úgy döntöttem, hogy megtanulom a Google Web Toolkit-ra épülő Sencha GXT-t használni. Szükségem van ugyanis olyan technológia ismeretére, amivel böngészőben futatható alkalmazásokat lehet készíteni. Ehhez azért a Java+GWT+GXT megoldást választottam, mert Delphin nevelkedve kézre áll az erősen típusos és szigorúan objektum orientált szemlélet, amit a Java biztosít. Hála a GWT-nek, ebből nem is kell kilépni, hiszen ez az okos eszköz a Java osztályokat lefordítja JavaScriptre, így pont azzal nem kell foglalkoznom, ami riaszt a web fejlesztésben. Tisztelem a JS mágusokat, de nem szeretnék HTML fájlokkal és JS trükkökkel vacakolni, ha nincs rá feltétlenül szükség. A GXT pedig az egésznek ad egy „csillogó” felületet. Okos és egyben szép összeállítás.

Ez a blog elsősorban egy naplónak indul, szeretném ide jegyzetelni a tanulás közben megszerzett ismereteimet. Sajnos egyáltalán nincsenek tapasztalataim a konkrét eszközök terén, de bízom benne, hogy a kezdeti nehézségeken idővel átlendülök. Reményeim szerint az első csacska bejegyzések egyre érdekesebbeké válnak, ahogy az ismereteim bővülnek. Meglátjuk.

gxt-hero-overview.png

Szólj hozzá!

süti beállítások módosítása