[Javalist] UI prototipus keszites

Böszörményi Péter zmblevlist at gmail.com
2013. Nov. 26., K, 15:25:53 CET


O, ez nagyon kedves toled, koszonom szepen. Mashol is talaltam megoldast 
erre, ott is az volt a gondolat, hogy atmasolgatom, a domain 
objektumkbol az adatokat a faba.

Itt, a prototipizalas eseteben az adatok mindig rendelkezesre allnak a 
memoriaban, egy singleton objektum formajaban. Kb valahogy igy:

public class Model {
   private List<Room> rooms;
//tipikus singleton kod
   public List<Room> getRooms() {
     return rooms;
   }

   public void addRom(Room room) {
     rooms.add(room);
   }
}

Egy Room kb igy nezne ki:

public class Room {
   private String name;
   //getter, setter
   private List<Employee> employees

   public List<Emplotyee> getEmployees() {
     return employees;
   }

   public void addEmployee(Employee employee) {
     employees.add(employee);
   }
}

Swinges JTree eseteben a TreeModel siman csak egy adapter lenne, ami 
illeszti ezeket az objektumokat a JTreehez, igy az objektumokon 
vegrehajtott muvelet automatice a JTree megvaltozasaval jart (talan csak 
valamilyen model changed fuggvenyt kell hozza meghivni, nem emlekszem 
pontosan).

Ugy gondoltam, hogy hasonlo modon probalok itt is eljarni. Ehhez 
viszont, ahogy eszre vettem, az AbstractContainerbol kellett volna 
kiindulnom, plussz meg jott volna hozza a Hierarchial (vagy mi) 
interface, ami egy csomo implementalando fuggvenyt jelentene. Itt 
mondtam azt magamba, hogy ez a prototipizalasra mar nem fer bele, es 
ekkor mondtam azt, hogy itt korbekerdezek.

Lehet, hogy rossz volt az ut, amit valasztottam.


On 2013-11-26 14:58, cx.chico wrote:
> Ha adsz neki egy kis esély, én adok neked egy kis segítséget :)
>
> Így kell feltölteni egy Tree-hez való konténert:
>
> --->8----
> package gui.data;
>
> import java.util.List;
>
> import com.vaadin.data.Item;
> import com.vaadin.data.util.HierarchicalContainer;
> import com.vaadin.server.ExternalResource;
> import com.vaadin.server.Resource;
>
> public class EmployeeTreeDS extends HierarchicalContainer {
> public final static String COLUMN_CAPTION = "caption";
> public final static String COLUMN_ICON = "icon";
> public final static String COLUMN_ICON_URL = "iconUrl";
> public final static String COLUMN_DATA = "data";
>
> /**
> * Default constructor.
> */
> public EmployeeTreeDS() {
> addContainerProperty(COLUMN_ICON, Resource.class, null);
> addContainerProperty(COLUMN_CAPTION, String.class, "");
> addContainerProperty(COLUMN_DATA, Employee.class, null);
> addContainerProperty(COLUMN_ICON_URL, String.class, null);
> }
>
> /**
> *
> * @param employees
> * @param manager
> */
> @SuppressWarnings("unchecked")
> public void addEmployees(List<Employee> employees, String rootName) {
> removeAllItems();
>
> Item root = addItem(rootName);
> root.getItemProperty(COLUMN_CAPTION).setValue(rootName);
> setChildrenAllowed(rootName, true);
> setParent(rootName, null);
>
> for (Employee employee : employees) {
> if (employee == null) {
> continue;
> }
> EmployeeCategoryRelation category = employee.getLatestCategory();
> String businessBranchName = category.getBusinessBranchDescr();
>
> Item parent = getItem(businessBranchName);
> if (parent == null) {
> parent = addItem(businessBranchName);
> parent.getItemProperty(COLUMN_CAPTION).setValue(businessBranchName);
> setChildrenAllowed(businessBranchName, true);
> setParent(businessBranchName, rootName);
> }
>
>   /*
> EZ A KULCS, itt adod meg, hogy a tree hogyan azonosítsa be az egyes
> munkaválllókat, hogy később tudd, hogy melyiket választotta ki a GUI-n
> */
> Item item = addItem(employee.getId());
>
> if (item == null) {
> // TODO log
> } else {
> (...)
> item.getItemProperty(COLUMN_CAPTION).setValue(employee.getFullName());
> item.getItemProperty(COLUMN_DATA).setValue(employee);
>
> setChildrenAllowed(employee.getId(), false);
> setParent(employee.getId(), businessBranchName);
> }
> }
> }
>
> /**
> * Returns the caption of the tree leaf.
> *
> * @param employee
> * @return
> */
> protected String createCaption(Employee employee) {
> StringBuilder sb = new StringBuilder();
> sb.append("<span
> class=\"name\">").append(employee.getFullName()).append("</span>");
> sb.append("<span class=\"info\">");
>
> if (employee.getLatestCategory() != null) {
> sb.append(employee.getLatestCategoryDescription());
> } else {
> sb.append("?");
> }
>
> sb.append("</span>");
>
> return sb.toString();
> }
> }
>
> --->8----
>
> Így lehet a Tree-t létrehozni:
>
>
> (...)
>                  private Tree employeeTree;
> private EmployeeTreeDS employeeTreeDS;
> (...)
> employeeTree = new Tree();
> employeeTreeDS = new EmployeeTreeDS();
>
> employeeTree.setContainerDataSource(employeeTreeDS);
> employeeTree.setItemCaptionMode(ItemCaptionMode.PROPERTY);
> employeeTree.setItemCaptionPropertyId(EmployeeTreeDS.COLUMN_CAPTION);
> employeeTree.setItemIconPropertyId(EmployeeTreeDS.COLUMN_ICON);
> (...)
>
>
> Így lehet feltölteni a Tree-t:
>
> (...)
> List<Employee> list = (... call persistence layer for data ...) ;
> employeeTreeDS.removeAllItems();
> if (list != null) {
> employeeTreeDS.addEmployees(list, "COMPANY");
> }
> (...)
>
>
> A select item esemény elkapása:
> http://dev.vaadin.com/svn/demo/sampler/src/com/vaadin/demo/sampler/features/trees/TreeSingleSelectExample.java
>
> Remélem, segítettem valamit.
>
> Üdv,
> Chico
>
>
>
> 2013. november 26. 14:05 Böszörményi Péter írta, <zmblevlist at gmail.com
> <mailto:zmblevlist at gmail.com>>:
>
>     A vaadin mar felmerult mashol is, bele is porgettem egy kicsit, ami
>     problema volt az pont a fa feltoltese. A hatterben egy singleton
>     objektum allt, o lett volna hivatott a domain modelt prezentalni,
>     ezt akartam volna a faban megjeleniteni. Azt lattam, hogy
>     databindinggel ezt meg lehetne oldani, csak kicsit elszomoritott,
>     hogy mennyi fuggvenyt kellene hozza megvalositani, hogy mukodjon.
>     Asszem, adok neki megegy eselyt kesobb, mert egyebkent szimpatikus volt.
>
>
>     On 2013-11-26 12:13, cx.chico wrote:
>
>         Ha kód-generálásra is szükséged van és nem félsz a gwt-től és -
>         gondolom
>         - valamikor majd adatbázist is akarsz használni, akkor
>         megpróbálhatod a
>         Vaadin-t. Eclipse plugin formában van hozzá saját UI editor,
>         komponensekkel kell dolgozni (layout, gombok, listák, tree,
>         átméretezés,
>         stb. Persze ez a plugin nem tökéletes, de viszonylag gyorsan
>         lehet vele
>         alap képernyőket összekattingatni - és browser-ben működik is.
>
>         Ha ennél általánosabb UI tervezőre van szükséged, javaslom a MockUp
>         Builder-t (http://mockupbuilder.com). Ez egy böngészőben használható
>         tervező eszköz, amelyben előre ki vannak alakítva a komponensek
>         az egyes
>         platformokra (android, ios, metro/win8, web, stb).
>
>         Üdv,
>         Chico
>
>
>
>         2013. november 26. 11:13 Dénes Medzihradszky írta,
>         <medzihradszky.denes at gmail.com
>         <mailto:medzihradszky.denes at gmail.com>
>         <mailto:medzihradszky.denes at __gmail.com
>         <mailto:medzihradszky.denes at gmail.com>>>:
>
>
>              Ezt mi általában html-be álmodjuk web esetén, majd utána a
>         dizájner
>              összerakja grafikusan. Egyszerű CSS mögötte, és máris mutat
>         valamit.
>              Némi js és máris tudsz megjelenő/eltűnő dizájn részeket
>         hozzárakni -
>              más nyelv nem is kell mögé.
>
>              Dénes
>
>              2013/11/26 Böszörményi Péter <zmblevlist at gmail.com
>         <mailto:zmblevlist at gmail.com>
>              <mailto:zmblevlist at gmail.com <mailto:zmblevlist at gmail.com>>>__:
>
>               > Udv a listanak!
>               >
>               > Egy aprocska munkam kapcsan megalmodtam par felhasznaloi
>              feluletet. Mielott
>               > nekiallok megvalositani, ki szeretnem probalni, hogy
>         mennyire
>               > kenyelmes/kenyelmetlen hasznalat kozben. Ehhez keresnek
>         valami
>              megoldast,
>               > aminek segitsegevel gyorsan tudok mukodo UI prototipust
>              kesziteni. Kb. ezek
>               > a szempontok lennenek:
>               >
>               > - Web feluletek prototipizalasat szeretnem vele csinalni.
>               > - A fokusz kifejezetten az UI-n van, nagyon buta szerver
>         oldali
>              logika
>               > kerulne moge.
>               > - Nem erdekel a design, nezzen ki valahogy. Aztan, hogy
>         ezt a
>              legtrendibb
>               > HTML5-el eri el, vagy tablazat + spacer gif, az mar az o
>         maganugye
>               > - A felhasznaloi komponensek hasznalata egyszeru legyen, ne
>              kelljen pl. 1
>               > orat eltoltenem azzal, hogy egy fa komponensbe
>         belegyomoszoljem
>               > megjelenitendo adatokat.
>               > - Preferalt nyelvek: Java, Groovy, PHP, de johet mas is,
>         legrosszabb
>               > megtanulom oket.
>               >
>               > Kivancsi vagyok a velemenyekre, ki mivel csinal ilyesmit?
>               >
>               > --
>               > Üdvözlettel,
>               > Böszörményi Péter
>               > _________________________________________________
>               > Javalist mailing list
>               > Javalist at lists.javaforum.hu
>         <mailto:Javalist at lists.javaforum.hu>
>         <mailto:Javalist at lists.__javaforum.hu
>         <mailto:Javalist at lists.javaforum.hu>>
>
>               > http://lists.javaforum.hu/__mailman/listinfo/javalist
>         <http://lists.javaforum.hu/mailman/listinfo/javalist>
>              _________________________________________________
>              Javalist mailing list
>         Javalist at lists.javaforum.hu <mailto:Javalist at lists.javaforum.hu>
>         <mailto:Javalist at lists.__javaforum.hu
>         <mailto:Javalist at lists.javaforum.hu>>
>
>         http://lists.javaforum.hu/__mailman/listinfo/javalist
>         <http://lists.javaforum.hu/mailman/listinfo/javalist>
>
>
>
>
>         _________________________________________________
>         Javalist mailing list
>         Javalist at lists.javaforum.hu <mailto:Javalist at lists.javaforum.hu>
>         http://lists.javaforum.hu/__mailman/listinfo/javalist
>         <http://lists.javaforum.hu/mailman/listinfo/javalist>
>
>
>
>     --
>     Üdvözlettel,
>     Böszörményi Péter
>     _________________________________________________
>     Javalist mailing list
>     Javalist at lists.javaforum.hu <mailto:Javalist at lists.javaforum.hu>
>     http://lists.javaforum.hu/__mailman/listinfo/javalist
>     <http://lists.javaforum.hu/mailman/listinfo/javalist>
>
>
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>


-- 
Üdvözlettel,
Böszörményi Péter


További információk a(z) Javalist levelezőlistáról