src/it/ht/rcs/console/system/view/frontend/FrontendActionBar.mxml
<?xml version="1.0" encoding="utf-8"?>
<actionbar:ActionBar xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:actionbar="it.ht.rcs.console.main.actionbar.*">
<s:Button label="{R.get('NEW_ANONYMIZER')}"
click="onNewClick()"
icon="@Embed('/img/NEW/newAnonymizer.png')"
enabled="{Console.currentSession.user.is_sys_frontend()}"/>
<s:Button label="{R.get('EDIT')}"
click="onEditClick()"
icon="@Embed('/img/NEW/edit.png')"
enabled="{selectedObject != null && Console.currentSession.user.is_sys_frontend()}"/>
<s:Button label="{R.get('DELETE')}"
click="onDeleteClick()"
icon="@Embed('/img/NEW/delete_32.png')"
enabled="{selectedObject != null && Console.currentSession.user.is_sys_frontend()}"/>
<actionbar:Separator width="40"/>
<s:Button label="{R.get('DOWNLOAD_INSTALLER')}"
click="downloadInstaller()"
icon="@Embed('/img/NEW/build.png')"
enabled="{selectedObject != null && Console.currentSession.user.is_sys_frontend() && selectedObject.type == 'remote'}"/>
<s:Button label="{R.get('UPGRADE')}"
click="upgradeAnon(event)"
icon="@Embed('/img/NEW/update.png')"
enabled="{selectedObject != null && (selectedObject as Collector).enabled && (selectedObject as Collector).isUpdatable && selectedObject.type == 'remote' && Console.currentSession.user.is_sys_frontend()}"/>
<actionbar:Separator width="40"/>
<!--<s:Button label="{R.get('SAVE')}"
icon="@Embed('/img/NEW/save.png')"
enabled="{graph.dirty && Console.currentSession.user.is_sys_frontend()}"
click="saveTopology()"/>-->
<s:Button label="{R.get('HEALTH_CHECK')}"
click="healthCheck()"
icon="@Embed('/img/NEW/check.png')"
enabled="{Console.currentSession.user.is_sys_frontend() }"/>
<s:Button label="{R.get('APPLY_TOPOLOGY')}"
click="saveTopology()"
icon="@Embed('/img/NEW/confirm.png')"
enabled="{Console.currentSession.user.is_sys_frontend() }"/>
<actionbar:Separator width="40"/>
<s:Button label="{R.get('FILE_MANAGER')}"
click="deleteFiles()"
icon="@Embed('/img/NEW/file_ex_32.png')"/>
<fx:Script>
<![CDATA[
import it.ht.rcs.console.events.DataLoadedEvent;
import it.ht.rcs.console.network.controller.CollectorManager;
import it.ht.rcs.console.network.model.Collector;
import it.ht.rcs.console.system.view.frontend.graph.FrontendGraph;
import it.ht.rcs.console.system.view.frontend.graph.renderers.CollectorRenderer;
import it.ht.rcs.console.system.view.frontend.healthCheck.HealthCheckWindow;
import it.ht.rcs.console.task.controller.DownloadManager;
import it.ht.rcs.console.utils.AlertPopUp;
import locale.R;
import mx.collections.ArrayCollection;
import mx.collections.ListCollectionView;
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
import mx.rpc.events.ResultEvent;
[Bindable]
public var graph:FrontendGraph;
[Bindable]
public var collectors:ListCollectionView;
private var numCollectorsToUpdate:int=0;
private function onNewClick():void
{
var popup:CreateCollectorForm=PopUpManager.createPopUp(this.parentDocument as DisplayObject, CreateCollectorForm, true) as CreateCollectorForm;
PopUpManager.centerPopUp(popup);
}
private function onEditClick():void
{
var popup:EditCollectorForm=PopUpManager.createPopUp(this.parentDocument as DisplayObject, EditCollectorForm, true) as EditCollectorForm;
popup.collector=selectedObject as Collector;
PopUpManager.centerPopUp(popup);
}
private function update():void
{
for (var i:int=0; i < collectors.length; i++)
{
var c:Collector=collectors.getItemAt(i) as Collector;
CollectorManager.instance.update(c);
}
graph.dirty=true;
}
private function saveTopology():void
{
numCollectorsToUpdate=collectors.length;
for (var i:int=0; i < collectors.length; i++)
{
var c:Collector=collectors.getItemAt(i) as Collector;
CollectorManager.instance.update(c, onCollectorUpdated);
}
graph.dirty=false;
}
private function onCollectorUpdated(e:ResultEvent):void
{
numCollectorsToUpdate--;
if(numCollectorsToUpdate==0)
{
applyTopology();
}
}
private function onDeleteClick():void
{
AlertPopUp.show(R.get('CONFIRM_COLLECTOR_DELETION', [selectedObject.name]), R.get('CONFIRM'), AlertPopUp.YES | AlertPopUp.NO, null, function(e:CloseEvent):void
{
if (e.detail == AlertPopUp.YES)
{
CollectorManager.instance.removeItem(selectedObject);
selectedObject=null;
update();
CollectorManager.instance.dispatchEvent(new DataLoadedEvent(DataLoadedEvent.DATA_LOADED))
}
}, null, AlertPopUp.NO);
}
private function healthCheck():void
{
DownloadManager.instance.createTask("topologycheck", null, {});
/*
var nodes:ArrayCollection=new ArrayCollection();
for each (var c:CollectorRenderer in(parent as Frontend).graph.db.collectors)
{
while (c.nextHop != null)
c=c.nextHop;
nodes.addItem({ip: c.collector.address, name: c.collector.name});
}
var popup:HealthCheckWindow=PopUpManager.createPopUp(this.parentDocument as DisplayObject, HealthCheckWindow, true) as HealthCheckWindow;
popup.nodes=nodes;
PopUpManager.centerPopUp(popup);
*/
}
private function applyTopology():void
{
DownloadManager.instance.createTask("topology", null, {});
}
private function downloadInstaller():void
{
var params:Object={platform: 'anon', binary: {demo: false}, melt: {port: (selectedObject as Collector).port, id: (selectedObject as Collector)._id}}
var filename:String=(selectedObject as Collector).name+'_anon_install.zip'
DownloadManager.instance.createTask("build", filename, params, null, null);
}
protected function upgradeAnon(event:MouseEvent):void
{
var popup:AnonUpgrade=PopUpManager.createPopUp(root, AnonUpgrade, true) as AnonUpgrade;
popup.anon=selectedObject as Collector;
PopUpManager.centerPopUp(popup);
}
private function deleteFiles():void
{
var popup:DeleteFilesForm=PopUpManager.createPopUp(root, DeleteFilesForm, true) as DeleteFilesForm;
PopUpManager.centerPopUp(popup);
}
]]>
</fx:Script>
</actionbar:ActionBar>