Как добавить панель инструментов в регион с помощью ExtJS

У меня есть макет границы в ExtJS,

Северный регион содержит немного HTML, но также должен содержать подобную панель инструментов...

Итак, мне удалось настроить макет границы, добавить html в северную область макета, но я не могу найти подходящих примеров того, как реализовать панель инструментов.

Я нашел множество примеров панелей инструментов сам по себе, но у меня нет роскоши или досконального изучения ExtJ, поэтому для меня это все греческое.

Я подозреваю, что есть способ определить панель инструментов вне громоздкого потока стиля JSON создания макета и каким-то образом прикрепить его к региону, и я надеюсь, что это относительно просто сделать. Если кто-то может объяснить, как я это сделаю, это действительно поможет.

Вот код на данный момент...

//make sure YOUR path is correct to this image!!
Ext.BLANK_IMAGE_URL = '../../ext-2.0.2/resources/images/default/s.gif';


//this runs on DOM load - you can access all the good stuff now.

Ext.onReady(function(){
    var viewport = new Ext.Viewport({
        layout: "border",
        border: false,
        renderTo: Ext.getBody(),
        items: [


        // ------------------------------------------------------------------
        {
            region: "north",
            id : "toolbar-area",
            xtype: 'panel',
            html: [ "<div id=\"html-header\">",
                    "<div id=\"council-logo\"></div>",
                    "<ul id=\"ancillary-menu\">",
                        "<li><a href=\"#\">Logout</a></li>",
                        "<li><a href=\"#\">Gazeteer Home</a></li>",
                        "<li>Hello Rachel</li>",
                    "</ul>",
                    "<img id=\"inteligent-logo\" src=\"applied-images/logos/inteligent.gif\">",
                    "</div>" ],

            /* ++++++++++++++++++++++++++++++++++++++++++++ */
            /* The toolbar needs to go around here....      */
            /* ++++++++++++++++++++++++++++++++++++++++++++ */

            height: 100
        },

        // ------------------------------------------------------------------
        // WEST
        // ------------------------------------------------------------------
        {
            region: 'west',
            xtype: 'panel',
            split: true,
            resizeable: false,
            maxWidth : 350,
            minWidth : 349,
            collapsible: true,
            title: 'Gazetteer Explorer',
            width: 350,
            minSize: 150,

            // --------------------------------------------------------------

            title: 'Nested Layout',
            layout: 'border',
            border: false,
            id: "west",
            items: [

                {
                    // ***********************************************
                    // Search Form
                    // ***********************************************

                    region : "north",
                    height: 300,
                    split : true,
                    id : "left-form-panel",
                    items : [{

                        xtype : "form",
                        id : "search-form",
                        items : [

                            // Authority combo box
                            // ===============================
                            {
                                xtype : "combo",
                                fieldLabel : "Authority",
                                name : "authority",
                                hiddenName : "authority",
                                id : "authority-combo"
                            },
                            // ===============================

                            // Search Fieldset
                            // ===============================
                            {
                                xtype : "fieldset",
                                autoHeight : true,
                                title : "Search by...",
                                id : "search-fieldset",
                                items : [

                                    // Ref Number text Box
                                    // %%%%%%%%%%%%%%%%
                                    {

                                        xtype : "textfield",
                                        name : "ref-number",
                                        fieldLabel : "Ref. Number",
                                        id : "ref-number-textfield"

                                    },
                                    // %%%%%%%%%%%%%%%%
                                    // Streetname Combo
                                    // %%%%%%%%%%%%%%%
                                    {

                                        xtype : "combo",
                                        name : "street-name",
                                        hiddenName : "street-name",
                                        fieldLabel : "Street Name",
                                        id : "street-name-combo"

                                    },
                                    // %%%%%%%%%%%%%%%%
                                    // Postcode Combo
                                    // %%%%%%%%%%%%%%%%
                                    {

                                        xtype : "combo",
                                        name : "postcode",
                                        hiddenName : "postcode",
                                        fieldLabel : "Postcode",
                                        id : "postcode-combo"

                                    },
                                    // %%%%%%%%%%%%%%%%

                                    // Postcode Combo
                                    // %%%%%%%%%%%%%%%%
                                    {

                                        xtype : "combo",
                                        name : "town",
                                        hiddenName : "town",
                                        fieldLabel : "Town",
                                        id : "towm-combo"

                                    },
                                    // %%%%%%%%%%%%%%%%

                                    // Postcode Combo
                                    // %%%%%%%%%%%%%%%%
                                    {

                                        xtype : "combo",
                                        name : "locality",
                                        hiddenName : "locality",
                                        fieldLabel : "Locality",
                                        id : "locality-combo"

                                    },
                                    // %%%%%%%%%%%%%%%

                                     // Search Button
                                    // %%%%%%%%%%%%%%%%

                                    {
                                        xtype : "button",
                                        text : "Search",
                                        id : "search-button"
                                    },  

                                    // Reset Button
                                    // %%%%%%%%%%%%%%%

                                    {
                                        xtype : "button",
                                        text : "Reset",
                                        id : "reset-button"
                                    } 


                                ]
                            },
                            // =======================


                        ]

                    }]

                    // *********************************************

                },

                {
                    region: 'center',
                    html: 'Tree view goes here'
                }

            ]



        },

        // ------------------------------------------------------------------
        {
            region: 'center',
            xtype: 'panel',


            // --------------------------------------------------------------
              layout: 'border',
              border: false,
              items: [

                  {
                    region: 'center',
                    height: 200,
                    split: true,
                    html: 'Map goes here'
                  },

                  {
                    region: 'south',
                    title: "Selection", 
                    split: true,
                    height: 200,
                    collapsible: true,
                    html: 'Nested Center'
                  }

              ]
        },

        // ------------------------------------------------------------------
        {
            region: 'east',

        },

        // ------------------------------------------------------------------

        {
            region: 'south',
        }]


    }); 
});

Извините, что так много кода, но ExtJS заставляет меня бояться прикасаться к тому, что работает.


person gargantuan    schedule 24.03.2010    source источник
comment
где вы хотите отобразить панель инструментов? это должен быть южный регион или только под центральной панелью? Я могу дать вам код, просто скажите, где вы хотите: D   -  person Nexum    schedule 24.03.2010
comment
извините, только что увидела ваш комментарий там, где вы хотите ^^ сек, я отредактирую свой ответ через минуту   -  person Nexum    schedule 24.03.2010


Ответы (3)


просто добавь

bbar: [
   // YOUR ITEMS HERE EXAMPLE FOLLOWING
   {
       xtype: 'button',
       text: 'test Button',
       handler: function(btn){
           alert('Button Click');
       }
   }
]

в свой конфиг (где панель xtype ===)

это будет выглядеть примерно так:

    {
        region: "north",
        id : "toolbar-area",
        xtype: 'panel',
        html: [ "<div id=\"html-header\">",
                "<div id=\"council-logo\"></div>",
                "<ul id=\"ancillary-menu\">",
                    "<li><a href=\"#\">Logout</a></li>",
                    "<li><a href=\"#\">Gazeteer Home</a></li>",
                    "<li>Hello Rachel</li>",
                "</ul>",
                "<img id=\"inteligent-logo\" src=\"applied-images/logos/inteligent.gif\">",
                "</div>" 
              ],
        bbar: [
           {
               xtype: 'button',
               text: 'test Button',
               handler: function(btn) {
                 alert('Button Click');
               }
           }
        ],
        height: 100
    }
person Nexum    schedule 24.03.2010

Ответ @Nexum правильный, но чтобы добавить немного больше контекста, каждый регион BorderLayout на самом деле является Ext.Panel, поэтому любая конфигурация, которую вы можете использовать для панелей, может быть применена к региону. Для панелей инструментов просмотрите документы Ext.Panel для tbar (верхняя панель инструментов) и bbar (нижняя панель инструментов).

Кстати говоря, я вижу, что вы вручную создаете кучу кода HTML для содержимого северной панели. Это рецепт боли. Для нетривиальной разметки гораздо проще добавить его на страницу как стандартный HTML с окружающим div. Дайте div идентификатор и класс x-hidden, а затем извлеките его с помощью contentEl Конфигурация панели.

person Brian Moeskau    schedule 24.03.2010
comment
хм, я хочу добавить, что регион в ext vieport может быть всем, что расширено из Ext.Component, поэтому регион может также быть непосредственно панелью инструментов или панелью форм или представлением данных. просто чтобы кто-то не запутался :-) проголосуйте за вас здесь :) - person Nexum; 24.03.2010
comment
На самом деле, когда я говорю регион, я имею в виду Ext.BorderLayout.Region. Какой-то другой компонент, такой как DataView, может быть добавлен в контейнер, как вы говорите, но в этом случае технически это не будет регионом. - person Brian Moeskau; 24.03.2010

ExtJS имеет встроенную панель инструментов.

Вы можете увидеть пример здесь:

person mojbro    schedule 24.03.2010
comment
Я нашел все подобные примеры, но для новичка это бесполезно. Я должен отметить, что я не решил использовать ExtJS, это было навязано мне. У меня вообще нет опыта в этом. Я указал на это клиенту до того, как начал, и был уверен в технической помощи, которая никак себя не проявила. Что мне нужно знать, так это то, как этот код панели инструментов относится к областям в макете границы. - person gargantuan; 24.03.2010