
<?xml version="1.0" encoding="utf-8"?>
<Shell name="shell" descriptors="xworker.swt.widgets.Shell" text="动态数据演示" RESIZE="true" width="800" height="600" label="DynamicData">
<FillLayout name="shellFillLayout"></FillLayout>
<Composite name="mainComposite">
<FillLayout name="mainCompositeFillLayout"></FillLayout>
<SwtDataObjectChart name="TimeSeriesChart" _xmeta_id_="lineChart" usingBuffer="true" chartType="TimeSeries"
title="TimeSeries Chart" categoryAxisLabel="日期" valueAxisLabel="数量" legend="true" tooltips="false" urls="false" d
ateAxis="false" timeSeriesName="code" timePeriod="Second" timeName="date" timeValue="value">
<DataStores>
<DataStore descriptors="xworker.jfreechart.data.Dataset/@DataStore" storeSortDir="ASC">
<dataObjects>
<AbstractDataObject storeSortDir="ASC">
<attribute name="code" key="true"></attribute>
<attribute name="date" type="datetime"></attribute>
<attribute name="value"></attribute>
<actions>
<GroovyAction name="query" _xmeta_id_="load">
<code><![CDATA[import xworker.dataObject.DataObject;
import java.lang.management.ManagementFactory;
import java.util.Random;
def datas = actionContext.getScope(0).get("datas");
if(datas == null){
datas = [];
actionContext.getScope(0).put("datas", datas);
}
def data = new DataObject("xworker.example.swt.jfreechart.DynamicData/@mainComposite/@lineChart/@DataStores/@DataStore/@dataObjects/@AbstractDataObject");
data.put("date", new Date());
data.put("code", "test");
def mbin = ManagementFactory.getMemoryMXBean();
data.put("value", mbin.getHeapMemoryUsage().getUsed());
def r = new Random();
data.put("value", r.nextInt(200));
datas.add(data);
if(datas.size() > 60){
//datas.remove(0);
}
return datas;]]></code>
</GroovyAction>
</actions>
</AbstractDataObject>
</dataObjects>
</DataStore>
</DataStores>
</SwtDataObjectChart>
<Code name="initChart">
<code><![CDATA[//设置水平轴间隔为60秒
def chart = TimeSeriesChart.chart;
def plot = chart.getXYPlot();
def axis = plot.getDomainAxis();
axis.setAutoRange(true);
axis.setFixedAutoRange(60000.0); // 60 seconds]]></code>
</Code>
<RunAction>
<Task singleInstance="false" schedule="true" period="1000">
<actions>
<DisplayExec name="doTask" descriptors="xworker.swt.actions.DisplayActions/@DisplayExec"
widgetForDisplay="mainComposite" variables="DataStore" cancelTaskOnWidgetDisposed="true">
<actions>
<Load name="doAction" descriptors="xworker.app.view.swt.data.DataStoreActions/@Load" dataStore="DataStore"></Load>
</actions>
</DisplayExec>
</actions>
</Task>
</RunAction>
</Composite>
</Shell>