/**
* 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;
}
});