/** * Project : AMDA-NG * Name : ExplorerModule.js * @class amdaDesktop.ExplorerModule * @extends amdaDesktop.AmdaModule * @brief Explorer Module controller definition * @author CDA */ Ext.define('amdaDesktop.ExplorerModule', { extend: 'amdaDesktop.AmdaModule', requires : [ 'amdaUI.ExplorerUI', 'amdaUI.AliasUI', // Node Models 'amdaModel.BkgJobNode', 'amdaModel.DerivedParamNode', 'amdaModel.LocalParamNode', 'amdaModel.RemoteParamNode', 'amdaModel.RemoteSimuParamNode', 'amdaModel.AliasNode', 'amdaModel.TimeTableNode', 'amdaModel.CatalogNode', 'amdaModel.StatisticsNode', // singleton; not shown in the tree 'amdaModel.sharedTimeTableNode', 'amdaModel.sharedCatalogNode', 'amdaModel.MyDataParamNode', 'amdaModel.MyDataNode', 'amdaModel.PlotNode', 'amdaModel.DownloadNode', // singleton; not shown in the tree 'amdaModel.SearchNode', // Object Models 'amdaModel.Parameter', 'amdaModel.Search', 'amdaModel.Download', 'amdaModel.TimeTable', 'amdaModel.Catalog', 'amdaModel.Statistics', 'amdaModel.FileObject', 'amdaModel.FileParamObject', 'amdaModel.FilterInfo' ], contentId : 'explorerUI', filter : null, filtersStore : null, paramInfoRegistry : {}, constructor : function(config) { this.callParent(arguments); if (!this.filtersStore) { this.filtersStore = Ext.create('Ext.data.Store', { model: 'amdaModel.FilterList' }); this.filtersStore.load(); // amdaDesktop.ExplorerModule.filtersStore = this.filtersStore; } }, createWindow : function() { var desktop = this.app.getDesktop(); var win = desktop.getWindow(this.id); if (!win) { win = desktop.createWindow( { id : this.id, title : this.title, width : 340, height : 500, iconCls : this.icon, animCollapse : false, border : false, // constrainHeader : true, closable: false, stateful : true, stateId : this.id, stateEvents: ['move','show','resize'], constrain: true, layout : { type : 'border', align : 'stretch' }, x : 5, y : 5, items : [ { xtype: 'panelExplorer', id : this.contentId, region: 'center' }, { xtype: 'panel', id : 'LogPanel', region: 'south', height : 150, split : true, layout: { type: 'vbox', align : 'stretch', autoSize : true }, autoScroll : true, stateful : true, stateId : 'LogPanel', buttons : [{ scope: this, text : 'Clear', handler: function(){ win.items.get('LogPanel').removeAll(); this.addLogMessage('Log'); } }] } ] }); } win.on({ activate: { fn : function() { myDesktopApp.getLoadedModule(this.id, true, function (module) { // on activation when there's a pinedModule 'null' if (module.pinedModule===null) { // get the ZIndex manager var manager = myDesktopApp.desktop.getDesktopZIndexManager(); // ordering to send back this window manager.sendToBack(win); } }); }, scope: this } }); win.on({ show : { fn : function(o) { //set current filter this.setCrtFilter(); //resize the explorer in relation with the desktop size if (win.y + win.height > myDesktopApp.desktop.el.getHeight()) win.setHeight(myDesktopApp.desktop.el.getHeight() - win.y); }, scope : this } }); win.addCls('window-active'); win.show(); this.addLogMessage('Log'); return win; }, pinedModule : null, /** * Getter of pinedModule * @return {amdaDesktop.InteractiveModule} The pined module */ getPinedModule : function() { // get the pined Module return this.pinedModule; }, /** * Setter of pinedModule * @param {amdaDesktop.InteractiveModule} The pined module */ setPinedModule : function(amdaModule) { // set the pined Module this.pinedModule = amdaModule; }, /** * Module Attachment Method * @param {amdaDesktop.InteractiveModule} The module to attach */ pinMechanism : function(amdaModule) { // if there is an old pined module if (this.getPinedModule()!=null) { // get old pined module : var oldPinedModule = this.getPinedModule(); // call uncolor method on the old pined Module myDesktopApp.getLoadedModule(oldPinedModule).uncolorHeaderModule(); } // set pined module this.setPinedModule(amdaModule); // call color method on pined Module myDesktopApp.getLoadedModule(amdaModule).colorHeaderModule(); }, addLogMessage : function(message) { var height = 40; var msg = Ext.create('Ext.Component', { height: height, html: message, style: { color : '#555555'} }); var desktop = myDesktopApp.getDesktop(); var win = desktop.getWindow(this.id); var panel = win.items.get('LogPanel'); panel.add(msg); }, // setCrtFilter : function() { var me = this; //get current filter to apply AmdaAction.getCrtFilterResult(function (result, e) { var t = e.getTransaction(); if (e.status) { if (result) { //apply current filter this.filter = result; // add saved filter to Explorer List if (!this.filtersStore.getById(this.filter.id)) this.filtersStore.add({id : this.filter.id, name : this.filter.name}); //apply filter to the tree var desktop = myDesktopApp.getDesktop(); var win = desktop.getWindow(this.id); if (win) { var explorerUI = win.query('#'+this.contentId); explorerUI[0].updateFilter(); } } else Ext.Msg.show( { title : 'Filter', msg : 'Cannot apply filter', modal : true, icon : Ext.Msg.ERROR, buttons : Ext.Msg.OK }); } else { // FAILURE Ext.Msg.show({title:'Error System', msg: e.message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); } },this); }, resetFilter : function() { AmdaAction.resetFilter( function (result, e) { var t = e.getTransaction(); if (e.status) { if (result) { this.setCrtFilter(); //update filter win var desktop = myDesktopApp.getDesktop(); var win = desktop.getWindow(myDesktopApp.dynamicModules.filters.id); if (win) { var filterUI = win.query('panelFilters'); filterUI[0].reloadFilter(); } } else Ext.Msg.show( { title : 'Filter', msg : 'Cannot reset filter', modal : true, icon : Ext.Msg.ERROR, buttons : Ext.Msg.OK }); } else { // FAILURE Ext.Msg.show({title:'Error System', msg: e.message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); } },this); }, getParamInfo : function(paramId, onReady) { if (this.paramInfoRegistry[paramId]) { if (onReady) onReady(this.paramInfoRegistry[paramId]); return this.paramInfoRegistry[paramId]; } var me = this; AmdaAction.getParamInfo({"paramId" : paramId}, function (result, e) { var paramInfo = null; if (e.status === true) { if (!result.success) { //No available info for this parameter. Do not display an error message /*if (result.message && result.message != '') Ext.Msg.show({title:'Get parameter arguments error ', msg: result.message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); else Ext.Msg.show({title:'Get parameter arguments error', msg: 'Unknown error', icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK});*/ } else { //Store parameter info in registry me.paramInfoRegistry[paramId] = result; paramInfo = result; } } else { Ext.Msg.show({title:'Error System', msg: e.message, icon: Ext.MessageBox.ERROR, buttons: Ext.Msg.OK}); } if (onReady) onReady(paramInfo); }); return null; } });