[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