[Javalist] UI prototipus keszites

Gábor Garami gabor.garami at hron.me
2013. Nov. 26., K, 18:07:25 CET


Azert a Swing meg a web nagyon nem ugyanaz.
Garami Gábor
E-mail: gabor.garami at hron.me
Tel: +36 20 235 9621
MSN: hrgy at vipmail.hu
Skype: hron84


2013/11/26 István Viczián <viczian.istvan at gmail.com>:
> Üdv,
>
> Lehet, hogy nem értem, de most meg akarod csinálni, vagy csak
> prototípust készítesz? Ha utóbbi, minek konvertálsz modellt?
> Most csúnyát mondok, de prototipizáláshoz Delphi? Nem láttam még
> eszközt, amiben olyan gyorsan lehet gui-t összerakni. Tény, hogy utána
> dobhatod ki.
> Vagy akár a NetBeans Swing-es rajzolójával megrajzolt felület?
>
> Üdv,
> --
> Viczián István
>
>
> Böszörményi Péter <zmblevlist at gmail.com> írta (2013. november 26. 15:25):
>> 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
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist


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