partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

RenderersGrid.js (5316B)


      1 Ext.define("PartKeepr.Components.Widgets.ColumnConfigurator.RenderersGrid", {
      2     extend: "Ext.grid.Panel",
      3 
      4     xtype: 'partkeepr.renderersGrid',
      5 
      6     plugins: {
      7         ptype: 'cellediting',
      8         clicksToEdit: 1
      9     },
     10 
     11     bbar: [{
     12         itemId: "addRenderer",
     13         text: i18n("Add")
     14     }, {
     15         itemId: "removeRenderer",
     16         text: i18n("Remove"),
     17         disabled: true,
     18         bind: {
     19             disabled: '{!renderers.selection}'
     20         }
     21     }],
     22 
     23     reference: "renderers",
     24 
     25     initComponent: function ()
     26     {
     27         this.rendererStore = Ext.create("Ext.data.Store");
     28 
     29         this.columns = [{
     30             text: i18n("Renderer"),
     31             dataIndex: 'rtype',
     32             renderer: function (val, q, rec)
     33             {
     34                 var targetClass = PartKeepr.Components.Grid.Renderers.RendererRegistry.lookupRenderer(
     35                     rec.get("rtype"));
     36 
     37                 if (typeof(targetClass) === "undefined")
     38                 {
     39                     return i18n("unknown");
     40                 }
     41 
     42                 if (targetClass.rendererName)
     43                 {
     44                     return targetClass.rendererName;
     45                 }
     46 
     47                 return targetClass.$className;
     48             },
     49             editor: {
     50                 xtype: 'combobox',
     51                 store: this.rendererStore,
     52                 displayField: 'rendererName',
     53                 valueField: 'rendererType',
     54                 queryMode: 'local',
     55                 forceSelection: true,
     56                 editable: false,
     57                 clicksToEdit: 1,
     58                 matchFieldWidth: false,
     59                 listConfig: {
     60                     itemTpl: [
     61                         '<div>{rendererName}: {rendererDescription}</div>'
     62                     ]
     63                 }
     64             },
     65             flex: 1
     66         }, {
     67             text: i18n("Description"),
     68             renderer: function (val, q, rec)
     69             {
     70                 var targetClass = PartKeepr.Components.Grid.Renderers.RendererRegistry.lookupRenderer(
     71                     rec.get("rtype"));
     72 
     73                 if (typeof(targetClass) === "undefined")
     74                 {
     75                     return i18n("unknown");
     76                 }
     77 
     78                 if (targetClass.rendererDescription)
     79                 {
     80                     return targetClass.rendererDescription;
     81                 }
     82 
     83                 return targetClass.$className;
     84             },
     85             flex: 2
     86         }, {
     87             text: i18n("Configuration"),
     88             dataIndex: "config",
     89             editor: {
     90                 xtype: 'textarea'
     91             }
     92         }, {
     93             xtype: 'actioncolumn',
     94             items: [
     95                 {
     96                     iconCls: 'fugue-icon pencil',
     97                     tooltip: i18n("Configure"),
     98                     handler: function (view, rowIndex, colIndex, item, e, record)
     99                     {
    100                         var config = record.get("config");
    101 
    102                         if (typeof config === "undefined")
    103                         {
    104                             config = {};
    105                             record.set("config", config);
    106                         }
    107 
    108                         this.configure(record);
    109                     },
    110                     scope: this
    111                 }
    112             ]
    113         }];
    114 
    115         this.callParent(arguments);
    116 
    117         this.down("#addRenderer").on("click", this.addRenderer, this);
    118         this.down("#removeRenderer").on("click", this.removeRenderer, this);
    119     },
    120     configure: function (record)
    121     {
    122         var i = Ext.create("PartKeepr.Components.Widgets.ColumnConfigurator.RendererConfigurationForm", {
    123             renderer: record.get("rtype"),
    124             rendererConfiguration: record.get("config")
    125         });
    126 
    127         var j = Ext.create("Ext.window.Window", {
    128             layout: 'fit',
    129             minWidth: 500,
    130             minHeight: 200,
    131             title: i18n("Renderer Configuration"),
    132             modal: true,
    133             items: [i]
    134         });
    135 
    136         i.down("#apply").on("click", function ()
    137         {
    138             record.set("config", Ext.encode(i.getForm().getValues()));
    139             j.destroy();
    140 
    141         });
    142 
    143         i.down("#cancel").on("click", function ()
    144         {
    145             j.destroy();
    146         });
    147 
    148         j.show();
    149     },
    150     setSourceModel: function (sourceModel)
    151     {
    152         this.sourceModel = sourceModel;
    153 
    154         var rendererClasses = PartKeepr.Components.Grid.Renderers.RendererRegistry.getRenderersForEntity(
    155             this.sourceModel.$className);
    156 
    157         for (var i = 0; i < rendererClasses.length; i++)
    158         {
    159             this.rendererStore.add({
    160                 rendererClass: rendererClasses[i],
    161                 rendererName: Ext.ClassManager.get(rendererClasses[i]).rendererName,
    162                 rendererDescription: Ext.ClassManager.get(rendererClasses[i]).rendererDescription,
    163                 rendererType: PartKeepr.Components.Grid.Renderers.RendererRegistry.getRType(rendererClasses[i])
    164             });
    165         }
    166     },
    167     addRenderer: function ()
    168     {
    169         this.getStore().add({config: "null"});
    170     },
    171     removeRenderer: function ()
    172     {
    173         var selection = this.getSelection();
    174 
    175         if (selection.length !== 1)
    176         {
    177             return;
    178         }
    179 
    180         this.getStore().remove(selection[0]);
    181     }
    182 });