text: /**
   * Shopware 5
   * Copyright (c) shopware AG
   *
   * According to our dual licensing model, this program can be used either
   * under the terms of the GNU Affero General Public License, version 3,
   * or under a proprietary license.
   *
   * The texts of the GNU Affero General Public License with an additional
   * permission and of our proprietary license can be found at and
   * in the LICENSE file you have received along with this program.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   * GNU Affero General Public License for more details.
   *
   * "Shopware" is a registered trademark of shopware AG.
   * The licensing of the program under the AGPLv3 does not imply a
   * trademark license. Therefore any rights, title and interest in
   * our trademarks remain entirely with us.
   */
  
  /**
   * todo@all: Documentation
   */
  Ext.define('Shopware.apps.Config.view.element.SelectTree', {
      extend: 'Shopware.form.field.ComboTree',
      alias: [
          'widget.config-element-selecttree',
          'widget.config-element-combotree'
      ],
  
      queryMode: 'local',
      forceSelection: false,
      editable: true,
      valueField: 'id',
      displayField: 'name',
  
      initComponent:function () {
          var me = this;
  
          if(me.store) {
              me.store = Ext.data.StoreManager.lookup(me.store)
          }
  
          me.callParent(arguments);
      },
  
      /**
       * Load node from remote, if not exits
       *
       * @param value
       */
      setValue:function (value) {
          var me = this,
              store = me.store;
  
          if (value && !store.loading
            && (!store.getCount() || !store.getNodeById(me.value))) {
              store.load({
                  filters: [{
                      property: 'id',
                      value: value
                  }]
              });
          }
  
          me.callParent(arguments);
      },
  
      /**
       * Remove the remote filter after loading the node
       *
       * @param store
       */
      expand: function() {
          var me = this, hasPicker = !!me.picker;
          me.callParent(arguments);
          if(hasPicker) {
              me.store.load();
          }
      }
  });
  