1. #1
    Sencha User
    Join Date
    Sep 2010
    Posts
    36
    Vote Rating
    0
    francesco.calabri is on a distinguished road

      0  

    Question Display form fields in columns

    Display form fields in columns


    Hi all,

    here's my UI.

    Entry Point.
    Code:
    import java.util.Date;
    
    import com.extjs.gxt.ui.client.Style.LayoutRegion;
    import com.extjs.gxt.ui.client.util.Margins;
    import com.extjs.gxt.ui.client.widget.ContentPanel;
    import com.extjs.gxt.ui.client.widget.LayoutContainer;
    import com.extjs.gxt.ui.client.widget.Viewport;
    import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
    import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
    import com.extjs.gxt.ui.client.widget.layout.FitLayout;
    import com.extjs.gxt.ui.client.widget.layout.RowLayout;
    import com.google.gwt.core.client.EntryPoint;
    import com.google.gwt.user.client.ui.RootPanel;
    
    public class Example2 implements EntryPoint {
        
        public void onModuleLoad() {
            
            RootPanel.get().clear();
            Viewport viewport = new Viewport();
            viewport.setLayout(new BorderLayout());
            
            LayoutContainer north = new LayoutContainer(new RowLayout());
            north.setBorders(true);
            ContentPanel cp = new ContentPanel();
            cp.setHeading(""+new Date());
            cp.setBodyBorder(false);
            cp.setBorders(false);
            
            north.add(cp);
            
            BorderLayoutData data = new BorderLayoutData(LayoutRegion.NORTH, 50);
            data.setMargins(new Margins(5, 5, 5, 5));
            viewport.add(north, data);
            
            LayoutContainer center = new LayoutContainer();
            center.setLayout(new FitLayout());
    
            BorderLayoutData data2 = new BorderLayoutData(LayoutRegion.CENTER);
            data2.setMargins(new Margins(5, 5, 5, 5));
            center.add(new crudPanel());
            viewport.add(center, data2);
            
            LayoutContainer south = new LayoutContainer();
            south.setLayout(new FitLayout());
    
            BorderLayoutData data3 = new BorderLayoutData(LayoutRegion.SOUTH, 30);
            data3.setMargins(new Margins(5, 5, 5, 5));
            south.add(new ContentPanel());
            viewport.add(south, data3);
            
            RootPanel.get().add(viewport);
        }
    }
    My panel in BorderLayoutRegion.CENTER
    Code:
    import java.util.ArrayList;
    import java.util.List;
    
    import com.extjs.gxt.ui.client.Style.Orientation;
    import com.extjs.gxt.ui.client.Style.Scroll;
    import com.extjs.gxt.ui.client.Style.SelectionMode;
    import com.extjs.gxt.ui.client.Style.SortDir;
    import com.extjs.gxt.ui.client.binding.FormBinding;
    import com.extjs.gxt.ui.client.data.BeanModel;
    import com.extjs.gxt.ui.client.event.ButtonEvent;
    import com.extjs.gxt.ui.client.event.SelectionListener;
    import com.extjs.gxt.ui.client.store.ListStore;
    import com.extjs.gxt.ui.client.util.Margins;
    import com.extjs.gxt.ui.client.widget.ContentPanel;
    import com.extjs.gxt.ui.client.widget.LayoutContainer;
    import com.extjs.gxt.ui.client.widget.MessageBox;
    import com.extjs.gxt.ui.client.widget.TabItem;
    import com.extjs.gxt.ui.client.widget.TabPanel;
    import com.extjs.gxt.ui.client.widget.button.Button;
    import com.extjs.gxt.ui.client.widget.form.DualListField;
    import com.extjs.gxt.ui.client.widget.form.FormPanel;
    import com.extjs.gxt.ui.client.widget.form.ListField;
    import com.extjs.gxt.ui.client.widget.form.TextField;
    import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
    import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
    import com.extjs.gxt.ui.client.widget.grid.Grid;
    import com.extjs.gxt.ui.client.widget.layout.ColumnData;
    import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
    import com.extjs.gxt.ui.client.widget.layout.FitLayout;
    import com.extjs.gxt.ui.client.widget.layout.FormData;
    import com.extjs.gxt.ui.client.widget.layout.FormLayout;
    import com.extjs.gxt.ui.client.widget.layout.RowData;
    import com.extjs.gxt.ui.client.widget.layout.RowLayout;
    import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
    import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
    
    public class crudPanel extends ContentPanel{
          private FormBinding formBindings = null;
    
          // componenti grafici
          private FormPanel ricercaPanel = null;
          private LayoutContainer cercaPanel = null;
          private ContentPanel gridPanel = null;
          private Grid<BeanModel> grid = null;
          private final ContentPanel tabs = new ContentPanel();
          private TabPanel dati = null;
          private FormPanel form = null;
          private DualListField<BeanModel> lists = null;
          private final MessageBox wait;
    
          // crea un pannello vuoto da riconfigurare
          public crudPanel() {
            setLayout(new RowLayout());
            this.wait = MessageBox.wait("Attendere", "Operazione in corso", "");
            this.wait.close();
            this.setHeading("Cerca Modifica Tipo Postazione");
            this.setFrame(true);
            this.add(createRicercaPanel(), new RowData(1, -1));
            this.add(createTipoPostazionePanel(), new RowData(1, 1));
          }
    
          // crea la form di Ricerca
          private FormPanel createRicercaPanel() {
              ricercaPanel = new FormPanel();
                ricercaPanel.setLayout(new ColumnLayout());
                ricercaPanel.setHeaderVisible(false);
                ricercaPanel.setPadding(10);
                
                Button cercaButton = new Button("Search");
                cercaButton.addSelectionListener(new SelectionListener<ButtonEvent>() {
    
                    @Override
                    public void componentSelected(ButtonEvent be) {
                        //TODO do search
                    }
    
                });
                cercaPanel = new LayoutContainer(new FormLayout());
                cercaPanel.add(cercaButton, new FormData("80% 100%"));
                ricercaPanel.add(cercaPanel, new ColumnData(.1d));
                        
                ricercaPanel.add(new LayoutContainer(new FormLayout()), new ColumnData(.3d));
                ricercaPanel.add(new LayoutContainer(new FormLayout()), new ColumnData(.3d));
                ricercaPanel.add(new LayoutContainer(new FormLayout()), new ColumnData(.3d));
                
                FilterBuilder builder = new FilterBuilder();
                
                List<ParameterVO> parametri = new ArrayList<ParameterVO>();
                parametri.add(new ParameterVO(ParameterTypes.TEXT, "TextLabel1", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.TEXT, "TextLabel2", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.DATE, "DateLabel", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.DATE_BETWEEN, "From-To", null, null, null, null));
                parametri.add(new ParameterVO(ParameterTypes.LONG, "LongLabel", null, new Long(13), null, null));
                
                
                for(int i = 0; i<parametri.size(); i++) {
                    ParameterVO field = parametri.get(i);
                    ((LayoutContainer)ricercaPanel.getItem(i%3+1)).add(builder.build(field));
                }
                
                return ricercaPanel;
          }
    
          // crea una griglia vuota da riconfigurare
          private ContentPanel createTipoPostazionePanel() {
    
            ContentPanel tipoPostazionePanel = new ContentPanel();
            tipoPostazionePanel.setFrame(true);
            tipoPostazionePanel.setLayout(new RowLayout(Orientation.HORIZONTAL));
    
            gridPanel = createGrid();
            gridPanel.setBorders(true);
            tipoPostazionePanel.add(gridPanel, new RowData(.3d,1, new Margins(0, 5, 0, 0)));
    
            createForm();
            formBindings = new FormBinding(form, true);
            formBindings.setStore(grid.getStore());
    
            dati = new TabPanel();
            dati.setBorders(false);
            TabItem dettaglioTab = new TabItem("1");
            dettaglioTab.setLayout(new FitLayout());
            dettaglioTab.add(form);
    
            TabItem funzioniTab = new TabItem("2");
            funzioniTab.setLayout(new FitLayout());
            funzioniTab.add(createList());
    
            dati.add(dettaglioTab);
            dati.add(funzioniTab);
            tabs.setHeaderVisible(false);
            tabs.setLayout(new FitLayout());
            tabs.add(dati);
            tabs.setBorders(true);
    
            ToolBar tb = new ToolBar();
            tb.setBorders(true);
            tb.setId("toolbar-tab");
            tb.setStyleAttribute("borderTop", "0px");
    
            tb.add(new Button("Delete", new SelectionListener<ButtonEvent>() {
    
              @Override
              public void componentSelected(ButtonEvent ce) {
              }
    
            }));
    
            tb.add(new Button("Save", new SelectionListener<ButtonEvent>() {
              @Override
              public void componentSelected(ButtonEvent ce) {
              }
            }));
    
            tb.add(new Button("Cancel", new SelectionListener<ButtonEvent>() {
              @Override
              public void componentSelected(ButtonEvent ce) {
              }
            }));
    
            tabs.setBottomComponent(tb);
    
            tipoPostazionePanel.add(tabs, new RowData(.7d,1));
    
            return tipoPostazionePanel;
          }
    
          private ContentPanel createGrid() {
    
            ContentPanel panel = new ContentPanel();
    
            List<BeanModel> tipiPostazione = new ArrayList<BeanModel>();
            ListStore<BeanModel> store = new ListStore<BeanModel>();
            store.setMonitorChanges(true);
            store.add(tipiPostazione);
    
            List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
    
            ColumnConfig codiceProfiloColumn = new ColumnConfig("codiceTipoPostazione", "Code", 80);
            configs.add(codiceProfiloColumn);
    
            ColumnConfig descrizioneProfiloColumn = new ColumnConfig("descrizione", "Description", 270);
            configs.add(descrizioneProfiloColumn);
    
            grid = new Grid<BeanModel>(store, new ColumnModel(configs));
            grid.setStripeRows(true);
            grid.setAutoExpandColumn("descrizione");
            grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
            panel.setHeaderVisible(false);
            panel.setLayout(new FitLayout());
            
            PagingToolBar pagingToolBar = new PagingToolBar(5);
            
            panel.add(grid);
            
            Button nuovo = new Button("New");
    
            pagingToolBar.add(nuovo);
            panel.setBottomComponent(pagingToolBar);
            return panel;
          }
    
          private void createForm() {
    
            form = new FormPanel();
            form.setHeaderVisible(false);
            form.setScrollMode(Scroll.AUTO);
            final TextField<String> codice = new TextField<String>();
            codice.setName("codiceTipoPostazione");
            codice.setFieldLabel("Code");
            form.add(codice);
    
            TextField<String> descrizione = new TextField<String>();
            descrizione.setName("descrizione");
            descrizione.setFieldLabel("Description");
            form.add(descrizione);
          }
    
          private FormPanel createList() {
    
            FormPanel listPanel = new FormPanel();
            listPanel.setScrollMode(Scroll.AUTO);
            listPanel.setHeaderVisible(false);
    
            lists = new DualListField<BeanModel>();
            lists.setFieldLabel("Lists");
    
            final ListField<BeanModel> from = lists.getFromList();
            from.setDisplayField("codiceFunzione");
            ListStore<BeanModel> store = new ListStore<BeanModel>();
            store.setMonitorChanges(true);
            store.add(new ArrayList<BeanModel>());
            from.setStore(store);
    
            final ListField<BeanModel> to = lists.getToList();
            to.setDisplayField("codiceFunzione");
            store = new ListStore<BeanModel>();
            to.setStore(store);
    
            listPanel.add(lists, new FormData("70%"));
            return listPanel;
    
          }
    
          public void reconfigureGrid(ListStore<BeanModel> store) {
    
            formBindings.unbind();
            store.sort("codiceTipoPostazione", SortDir.ASC);
            grid.reconfigure(store, grid.getColumnModel());
            formBindings.setStore(grid.getStore());
    
            if (gridPanel.isMasked()) gridPanel.unmask();
    
            tabs.mask("Select a record");
          }
    
    }
    Value object that represent a field
    Code:
    import java.io.Serializable;
    
    import com.extjs.gxt.ui.client.data.BeanModel;
    import com.extjs.gxt.ui.client.store.ListStore;
    
    public class ParameterVO implements Serializable{
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        private ParameterTypes type;
        private String label;
        private String andLabel;
        private Object defaultValue;
        private Object defaultAndValue;
        private ListStore<BeanModel> store;
        
        public ParameterVO() {
            super();
        }
    
        public ParameterVO(ParameterTypes type, String label, String andLabel,
                Object defaultValue, Object defaultAndValue, ListStore<BeanModel> store) {
            super();
            this.type = type;
            this.label = label;
            this.andLabel = andLabel;
            this.defaultValue = defaultValue;
            this.defaultAndValue = defaultAndValue;
            this.store = store;
        }
    
        public ParameterTypes getType() {
            return type;
        }
    
        public void setType(ParameterTypes type) {
            this.type = type;
        }
    
        public String getLabel() {
            return label;
        }
    
        public void setLabel(String label) {
            this.label = label;
        }
    
        public String getAndLabel() {
            return andLabel;
        }
    
        public void setAndLabel(String andLabel) {
            this.andLabel = andLabel;
        }
    
        public Object getDefaultValue() {
            return defaultValue;
        }
    
        public void setDefaultValue(Object defaultValue) {
            this.defaultValue = defaultValue;
        }
    
        public Object getDefaultAndValue() {
            return defaultAndValue;
        }
    
        public void setDefaultAndValue(Object defaultAndValue) {
            this.defaultAndValue = defaultAndValue;
        }
    
        public ListStore<BeanModel> getStore() {
            return store;
        }
    
        public void setStore(ListStore<BeanModel> store) {
            this.store = store;
        }
        
        
    
    }
    The "FilterBuilder"
    Code:
    import java.util.Date;
    
    import com.extjs.gxt.ui.client.data.BeanModel;
    import com.extjs.gxt.ui.client.store.ListStore;
    import com.extjs.gxt.ui.client.widget.LayoutContainer;
    import com.extjs.gxt.ui.client.widget.form.CheckBox;
    import com.extjs.gxt.ui.client.widget.form.ComboBox;
    import com.extjs.gxt.ui.client.widget.form.DateField;
    import com.extjs.gxt.ui.client.widget.form.FormPanel;
    import com.extjs.gxt.ui.client.widget.form.NumberField;
    import com.extjs.gxt.ui.client.widget.form.TextArea;
    import com.extjs.gxt.ui.client.widget.form.TextField;
    import com.extjs.gxt.ui.client.widget.layout.ColumnData;
    import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
    import com.extjs.gxt.ui.client.widget.layout.FormLayout;
    import com.google.gwt.user.client.ui.Widget;
    
    public class FilterBuilder {
    
        // variabili per campi between-and
        FormPanel l = new FormPanel();
        LayoutContainer between = new LayoutContainer(new FormLayout());
        LayoutContainer and = new LayoutContainer(new FormLayout());
    
        public FilterBuilder() {
            l.setLayout(new ColumnLayout());
            l.setHeaderVisible(false);
            l.setPadding(0);
        }
    
        public Widget build(ParameterVO field) {
            /*
             * mi aspetto un parameterVO che abbia i metodi
             * 
             * ParameterType getType(); --> Enum String getLabel(); String
             * getAndLabel(); Object getDefaultValue(); Object getDefaultAndValue();
             * List<BeanModel> getStore(); --> return null se non è tipo ComboBox
             */
    
            switch ((ParameterTypes) field.getType()) {
            case TEXT:
                TextField<String> ts = new TextField<String>();
                ts.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof String)
                    ts.setValue((String) field.getDefaultValue());
                return ts;
    
            case LONG:
                NumberField tl = new NumberField();
                tl.setPropertyEditorType(Long.class);
                tl.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof Long)
                    tl.setValue((Long) field.getDefaultValue());
                return tl;
    
            case TEXTAREA:
                TextArea ta = new TextArea();
                ta.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof String)
                    ta.setValue((String) field.getDefaultValue());
                return ta;
    
            case COMBO:
                ComboBox<BeanModel> cb = new ComboBox<BeanModel>();
                cb.setFieldLabel(field.getLabel());
                cb.setStore(field.getStore() == null ? new ListStore<BeanModel>()
                        : field.getStore());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof BeanModel)
                    cb.select((BeanModel) field.getDefaultValue());
                return cb;
    
            case CHECK:
                CheckBox check = new CheckBox();
                check.setFieldLabel(field.getLabel());
                check.setValue(field.getDefaultValue() == null
                        || !(field.getDefaultValue() instanceof Boolean) ? false
                        : (Boolean) field.getDefaultValue());
                return check;
    
            case DATE:
                DateField d = new DateField();
                d.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof Date)
                    d.setValue((Date) field.getDefaultValue());
                return d;
    
            case PASSWORD:
                TextField<String> tp = new TextField<String>();
                tp.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof String)
                    tp.setValue((String) field.getDefaultValue());
                tp.setPassword(true);
                return tp;
    
            case REAL:
                NumberField tr = new NumberField();
                tr.setPropertyEditorType(Double.class);
                tr.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && field.getDefaultValue() instanceof Double)
                    tr.setValue((Integer) field.getDefaultValue());
                return tr;
    
            case DATE_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                DateField betweenDate = new DateField();
                betweenDate.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof Date))
                    betweenDate.setValue((Date) field.getDefaultValue());
    
                DateField andDate = new DateField();
                //andDate.setFieldLabel(field.getAndLabel());
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof Date))
                    andDate.setValue((Date) field.getDefaultAndValue());
                
                between.add(betweenDate);
                and.add(andDate);
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            case LONG_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                NumberField betweenLong = new NumberField();
                betweenLong.setFieldLabel(field.getLabel());
                betweenLong.setPropertyEditorType(Long.class);
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof Long))
                    betweenLong.setValue((Long) field.getDefaultValue());
    
                NumberField andLong = new NumberField();
                andLong.setFieldLabel(field.getAndLabel());
                andLong.setPropertyEditorType(Long.class);
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof Long))
                    andLong.setValue((Long) field.getDefaultAndValue());
    
                between.add(betweenLong);
                and.add(andLong);
    
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            case REAL_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                NumberField betweenReal = new NumberField();
                betweenReal.setFieldLabel(field.getLabel());
                betweenReal.setPropertyEditorType(Double.class);
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof Double))
                    betweenReal.setValue((Double) field.getDefaultValue());
    
                NumberField andReal = new NumberField();
                andReal.setFieldLabel(field.getAndLabel());
                andReal.setPropertyEditorType(Double.class);
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof Double))
                    andReal.setValue((Double) field.getDefaultAndValue());
    
                between.add(betweenReal);
                and.add(andReal);
    
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            case TEXT_BETWEEN:
                l.removeAll();
                between.removeAll();
                and.removeAll();
    
                TextField<String> betweenText = new TextField<String>();
                betweenText.setFieldLabel(field.getLabel());
                if (field.getDefaultValue() != null
                        && (field.getDefaultValue() instanceof String))
                    betweenText.setValue((String) field.getDefaultValue());
    
                TextField<String> andText = new TextField<String>();
                andText.setFieldLabel(field.getAndLabel());
                if (field.getDefaultAndValue() != null
                        && (field.getDefaultAndValue() instanceof String))
                    andText.setValue((String) field.getDefaultAndValue());
    
                between.add(betweenText);
                and.add(andText);
    
                l.add(between, new ColumnData(.5d));
                l.add(and, new ColumnData(.5d));
                return l;
    
            default:
                return null;
            }
        }
    }
    Enumeration of possible field types
    Code:
    public enum ParameterTypes {
        TEXT,
        LONG,
        REAL,
        TEXTAREA,
        DATE,
        COMBO,
        CHECK,
        PASSWORD,
        DATE_BETWEEN,
        TEXT_BETWEEN,
        LONG_BETWEEN,
        REAL_BETWEEN;
    }
    I would display a list of fields (List<ParameterVO>) in 3 columns (in the Panel, createRicercaPanel() method).
    I also would the fields to resize themselves, even in case of fields formed by two inner fields (like date from-to).
    In this example, components are resizing, but the fields inside them aren't. (So when I have date fields I might lose the calendar!).

    There's a way to resize fields directly, with the components that cointain them?

    Thank,
    F

  2. #2
    Software Architect
    Join Date
    Sep 2007
    Posts
    13,971
    Vote Rating
    132
    sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light

      0  

    Default


    change that line
    Code:
     ((LayoutContainer)ricercaPanel.getItem(i%3+1)).add(builder.build(field));
    to
    Code:
     ((LayoutContainer)ricercaPanel.getItem(i%3+1)).add(builder.build(field), new FormData("100%"));

  3. #3
    Sencha User
    Join Date
    Sep 2010
    Posts
    36
    Vote Rating
    0
    francesco.calabri is on a distinguished road

      0  

    Default


    Works fine..
    Only need to add FormData also in each one of the fields of the between-and:

    Code:
    case DATE_BETWEEN:             l.removeAll();             between.removeAll();             and.removeAll();              DateField betweenDate = new DateField();             betweenDate.setFieldLabel(field.getLabel());             if (field.getDefaultValue() != null                     && (field.getDefaultValue() instanceof Date))                 betweenDate.setValue((Date) field.getDefaultValue());              DateField andDate = new DateField();             //andDate.setFieldLabel(field.getAndLabel());             if (field.getDefaultAndValue() != null                     && (field.getDefaultAndValue() instanceof Date))                 andDate.setValue((Date) field.getDefaultAndValue());                          between.add(betweenDate, new FormData("100%"));             and.add(andDate, new FormData("100%"));             l.add(between, new ColumnData(.5d));             l.add(and, new ColumnData(.5d));             return l;

  4. #4
    Software Architect
    Join Date
    Sep 2007
    Posts
    13,971
    Vote Rating
    132
    sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light sven is a glorious beacon of light

      0  

    Default


    If that is added to a FormLayout than yes. I have not looked more into the code

Similar Threads

  1. Is there a way to display form fields inline?
    By chaddjohnson in forum Ext 3.x: Help & Discussion
    Replies: 2
    Last Post: 26 May 2010, 8:58 AM
  2. Submit form with both display and value fields of Combobox
    By ap in forum Ext 3.x: Help & Discussion
    Replies: 2
    Last Post: 3 Dec 2009, 10:03 AM
  3. How can i display the description of the form fields?
    By chenwei_022 in forum Ext 2.x: Help & Discussion
    Replies: 3
    Last Post: 8 Apr 2008, 8:44 AM
  4. Display a fields value in a form
    By maddene in forum Ext 2.x: Help & Discussion
    Replies: 1
    Last Post: 7 Feb 2008, 10:20 AM

Thread Participants: 1

Turkiyenin en sevilen filmlerinin yer aldigi xnxx internet sitemiz olan ve porn sex tarzi bir site olan mobil porno izle sitemiz gercekten dillere destan bir durumda herkesin sevdigi bir site olarak tarihe gececege benziyor. Sitenin en belirgin ozelliklerinden birisi de Turkiyede gercekten kaliteli ve muntazam, duzenli porno izle siteleri olmamasidir. Bu yuzden iste. Ayrica en net goruntu kalitesine sahip adresinde yayinlanmaktadir. Mesela diğer sitelerimizden bahsedecek olursak, en iyi hd porno video arşivine sahip bir siteyiz. "The Best anal porn videos and slut anus, big asses movies set..." hd porno faketaxi