^1446167781848
@
sname
shell
stext
"XWorker 任务管理器"
sNO_TRIM
false
sCLOSE
true
sTITLE
true
sMIN
true
sMAX
false
sBORDER
false
sRESIZE
true
sON_TOP
false
sTOOL
false
sNO_FOCUS
false
swidth
420
sheight
500
scenterScreen
true
spack
false
smaximized
false
sfullScreen
false
sH_SCROLL
false
sV_SCROLL
false
sNO_BACKGROUND
false
sNO_MERGE_PAINTS
false
sNO_REDRAW_RESIZE
false
sNO_RADIO_GROUP
false
sEMBEDDED
false
sDOUBLE_BUFFERED
false
slabel
ShellExample
scapture
false
senabled
true
sredraw
true
svisible
true
sxw_cl_global
false
sid
shell
sdescriptors
xworker.swt.widgets.Shell
sinheritDescription
false
sth_createIndex
false
sth_registMyChilds
false
sth_registDisabled
false
sth_mark
false
@/@resources
sname
resources
sid
resources
slabel
resources
sdescriptors
xworker.swt.Widgets/@Resource
@/@resources/@taskImage
sname
taskImage
stype
Image
simageFile
/xworker/ide/images/run.gif
sid
taskImage
sdescriptors
xworker.swt.util.Resource/@Image
@/@shellMenu
sname
shellMenu
sstyle
BAR
sNO_RADIO_GROUP
false
salign
LEFT_TO_RIGHT
sid
shellMenu
slabel
shellMenu
sdescriptors
xworker.swt.Widgets/@Menu
@/@shellMenu/@fileMenuItem
sname
fileMenuItem
stext
"文件"
sstyle
CASCADE
sid
fileMenuItem
slabel
fileMenuItem
sdescriptors
xworker.swt.widgets.Menu/@MenuItem
@/@shellMenu/@fileMenuItem/@fileSubMenu
sname
fileSubMenu
sstyle
DROP_DOWN
sNO_RADIO_GROUP
false
salign
LEFT_TO_RIGHT
sid
fileSubMenu
slabel
fileSubMenu
sdescriptors
xworker.swt.widgets.Menu/@MenuItem/@Menu
@/@shellMenu/@fileMenuItem/@fileSubMenu/@exitMenuItem
sname
exitMenuItem
stext
"退出任务管理器"
sstyle
PUSH
sid
exitMenuItem
slabel
exitMenuItem
sdescriptors
xworker.swt.widgets.Menu/@MenuItem
@/@shellMenu/@fileMenuItem/@fileSubMenu/@exitMenuItem/@listeners
sname
listeners
sid
listeners
slabel
listeners
sdescriptors
xworker.swt.events.Listeners/@listeners
@/@shellMenu/@fileMenuItem/@fileSubMenu/@exitMenuItem/@listeners/@exitMenuitem
sname
exitMenuitem
stype
Selection
sid
exitMenuitem
slabel
exitMenuitem
sdescriptors
xworker.swt.events.Listeners/@listeners/@Listener
@/@shellMenu/@fileMenuItem/@fileSubMenu/@exitMenuItem/@listeners/@exitMenuitem/@shellDispose
sname
shellDispose
sshellName
shell
smethod
dispose
sinterpretationType
Self
svarScope
Local
sid
shellDispose
sdescriptors
xworker.swt.actions.ShellActions/@ShellNormalActions1
@/@shellMenu/@fileMenuItem/@fileSubMenu/@exitMenuItem/@listeners/@exitMenuitem/@SystemExitOnNoActiveWindow
sinterpretationType
Self
sattributeTemplate
false
schildsAttributeTemplate
false
svarScope
Local
sname
SystemExitOnNoActiveWindow
sisSynchronized
false
sthrowException
true
suseOtherAction
false
screateLocalVarScope
false
ssaveReturn
false
sdisableGlobalContext
false
sdescriptors
xworker.swt.actions.ShellActions/@SystemExitOnNoActiveShell
sth_createIndex
false
sth_mark
false
@/@shellFillLayout
sname
shellFillLayout
stype
SWT.HORIZONTAL
sid
shellFillLayout
slabel
shellFillLayout
sdescriptors
xworker.swt.Layouts/@FillLayout
@/@tabFolder
sname
tabFolder
sstyle
TOP
sBORDER
false
sid
tabFolder
sdescriptors
xworker.swt.Widgets/@TabFolder
@/@tabFolder/@theadTab
sname
theadTab
stext
"线程"
sid
theadTab
slabel
theadTab
sdescriptors
xworker.swt.widgets.TabFolder/@TabItem
@/@tabFolder/@theadTab/@threadComposite
sname
threadComposite
sBORDER
false
sH_SCROLL
false
sV_SCROLL
false
sNO_BACKGROUND
false
sNO_FOCUS
false
sNO_MERGE_PAINTS
false
sNO_REDRAW_RESIZE
false
sNO_RADIO_GROUP
false
sEMBEDDED
false
sDOUBLE_BUFFERED
false
sid
threadComposite
sdescriptors
xworker.swt.Widgets/@Composite
@/@tabFolder/@theadTab/@threadComposite/@threadCompositeGridLayout
sname
threadCompositeGridLayout
snumColumns
1
smakeColumnsEqualWidth
false
smarginWidth
5
smarginHeight
5
smarginLeft
0
smarginTop
0
smarginRight
0
smarginBottom
0
shorizontalSpacing
5
sverticalSpacing
5
sid
threadCompositeGridLayout
slabel
threadCompositeGridLayout
sdescriptors
xworker.swt.Layouts/@GridLayout
@/@tabFolder/@theadTab/@threadComposite/@threadTree
sname
threadTree
sselectStyle
SINGLE
sV_SCROLL
true
sH_SCROLL
true
sCHECK
false
sFULL_SELECTION
true
sHIDE_SELECTION
true
sBORDER
true
slineVisible
true
smultipleColumns
true
sheaderVisible
true
ssortIndicator
true
smoveableColumns
true
sheadImages
false
ssubImages
false
sid
threadTree
slabel
threadTree
sdescriptors
xworker.swt.Widgets/@DataTree
@/@tabFolder/@theadTab/@threadComposite/@threadTree/@threadTreeGridData
sname
threadTreeGridData
sstyle
FILL_BOTH
shorizontalIndent
0
swidth
-1
sheight
-1
shorizontalAlignment
BEGINNING
sverticalAlignment
CENTER
shorizontalSpan
1
sverticalSpan
1
sgrabExcessHorizontalSpace
false
sgrabExcessVerticalSpace
false
sid
threadTreeGridData
slabel
threadTreeGridData
sdescriptors
xworker.swt.Commons/@GridData
@/@tabFolder/@theadTab/@threadComposite/@threadTree/@name
sname
name
stext
"名称"
swidth
200
sid
name
slabel
name
sdescriptors
xworker.swt.xworker.DataTree/@TreeColumn
@/@tabFolder/@theadTab/@threadComposite/@threadTree/@statusItem
sname
statusItem
stext
"状态"
swidth
100
sid
statusItem
slabel
statusItem
sdescriptors
xworker.swt.xworker.DataTree/@TreeColumn
@/@tabFolder/@theadTab/@threadComposite/@threadTree/@cpuItem
sname
cpuItem
stext
"CPU时间"
swidth
100
sid
cpuItem
slabel
cpuItem
sdescriptors
xworker.swt.xworker.DataTree/@TreeColumn
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite
sname
buttonComposite
sBORDER
false
sH_SCROLL
false
sV_SCROLL
false
sNO_BACKGROUND
false
sNO_FOCUS
false
sNO_MERGE_PAINTS
false
sNO_REDRAW_RESIZE
false
sNO_RADIO_GROUP
false
sEMBEDDED
false
sDOUBLE_BUFFERED
false
sid
buttonComposite
sdescriptors
xworker.swt.Widgets/@Composite
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@buttonCompositeGridData
sname
buttonCompositeGridData
sstyle
FILL_HORIZONTAL
shorizontalIndent
0
swidth
-1
sheight
-1
shorizontalAlignment
END
sverticalAlignment
CENTER
shorizontalSpan
1
sverticalSpan
1
sgrabExcessHorizontalSpace
false
sgrabExcessVerticalSpace
false
sid
buttonCompositeGridData
slabel
buttonCompositeGridData
sdescriptors
xworker.swt.Commons/@GridData
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@buttonCompositeRowLayout
sname
buttonCompositeRowLayout
sfill
false
sjustify
false
smarginWidth
0
smarginHeight
0
smarginLeft
3
smarginTop
3
smarginRight
3
smarginBottom
3
spack
true
sspacing
3
stype
SWT.HORIZONTAL
swrap
true
sid
buttonCompositeRowLayout
slabel
buttonCompositeRowLayout
sdescriptors
xworker.swt.Layouts/@RowLayout
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@refreshButton
sname
refreshButton
stext
"  刷新  "
stype
SWT.PUSH
sflat
false
sborder
false
senabled
true
sid
refreshButton
slabel
refreshButton
sdescriptors
xworker.swt.Widgets/@Button
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@refreshButton/@listeners
sname
listeners
sid
listeners
slabel
listeners
sdescriptors
xworker.swt.events.Listeners/@listeners
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@refreshButton/@listeners/@refreshButtonSelection
sname
refreshButtonSelection
stype
Selection
sid
refreshButtonSelection
slabel
refreshButtonSelection
sdescriptors
xworker.swt.events.Listeners/@listeners/@Listener
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@refreshButton/@listeners/@refreshButtonSelection/@GroovyAction
sname
GroovyAction
sisSynchronized
true
sthrowException
true
suseOtherAction
false
svarScope
Global
Scode
#$@text#$@
ThreadGroup root = Thread.currentThread().getThreadGroup().getParent();
while (root.getParent() != null) {
    root = root.getParent();
}

threadTree.removeAll();
def rootData = ["name":root.getName()];
def treeItem = threadTree.updateRow(null, rootData);
visit(root, threadTree, treeItem);
treeItem.setExpanded(true);

def visit(group, tree, item){
    int numThreads = group.activeCount();
    Thread[] threads = new Thread[numThreads*2];
    numThreads = group.enumerate(threads, false);
    
    // Enumerate each thread in `group'
    for (i in 0..numThreads-1) {
        def thread = threads[i]
        def threadData = ["name":thread.getName(), "status":"" + thread.getState(), "thread":thread];
        tree.updateRow(item, threadData, true);
    }
    
    // Get thread subgroups of `group'
    int numGroups = group.activeGroupCount();
    ThreadGroup[] groups = new ThreadGroup[numGroups*2];
    numGroups = group.enumerate(groups, false);
    
    // Recursively visit each subgroup
    if(numGroups > 0){
        for (i in 0..numGroups-1) {
            def subGroup = groups[i]
            def gdata = ["name":subGroup.getName()];
            def subItem = tree.updateRow(item, gdata, true);
            visit(groups[i], tree, subItem);
            subItem.setExpanded(true);
        }
    }
}
#$@text#$@
sid
GroovyAction
sdescriptors
xworker.lang.actions.Actions/@GroovyAction
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@killButton
sname
killButton
stext
"  Kill  "
stype
SWT.PUSH
sflat
false
sborder
false
senabled
true
sid
killButton
slabel
killButton
sdescriptors
xworker.swt.Widgets/@Button
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@killButton/@listeners
sname
listeners
sid
listeners
slabel
listeners
sdescriptors
xworker.swt.events.Listeners/@listeners
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@killButton/@listeners/@killButtonSelection
sname
killButtonSelection
stype
Selection
sid
killButtonSelection
slabel
killButtonSelection
sdescriptors
xworker.swt.events.Listeners/@listeners/@Listener
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@killButton/@listeners/@killButtonSelection/@GroovyAction
sname
GroovyAction
sisSynchronized
true
sthrowException
true
suseOtherAction
false
svarScope
Global
Scode
#$@text#$@
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MessageBox;

if(threadTree.getSelection().length == 0) return;

def th = threadTree.getSelection()[0].getData().thread;
if(th instanceof Thread){
    MessageBox box = new MessageBox(shell, SWT.OK | SWT.CANCEL | SWT.ICON_WARNING);
    box.setText("操作信息");
    box.setMessage("确实要终止选中的线程么?");
    if(SWT.OK == box.open()){        
        th.stop();
    }
    
    refreshButtonSelection.handleEvent(null);
}
#$@text#$@
sid
GroovyAction
sdescriptors
xworker.lang.actions.Actions/@GroovyAction
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@exitButton
sname
exitButton
stext
"  退出  "
stype
SWT.PUSH
sflat
false
sborder
false
senabled
true
sid
exitButton
slabel
exitButton
sdescriptors
xworker.swt.Widgets/@Button
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@exitButton/@listeners
sname
listeners
sid
listeners
slabel
listeners
sdescriptors
xworker.swt.events.Listeners/@listeners
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@exitButton/@listeners/@exitButtonSelection
sname
exitButtonSelection
stype
Selection
sid
exitButtonSelection
slabel
exitButtonSelection
sdescriptors
xworker.swt.events.Listeners/@listeners/@Listener
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@exitButton/@listeners/@exitButtonSelection/@JdkScript
sname
JdkScript
slanguage
javascript
scode
shell.dispose();
svarScope
Local
sid
JdkScript
slabel
JdkScript
sdescriptors
xworker.lang.actions.Actions/@JdkScript
@/@tabFolder/@theadTab/@threadComposite/@buttonComposite/@exitButton/@listeners/@exitButtonSelection/@SystemExitOnNoActiveWindow
sinterpretationType
Self
sattributeTemplate
false
schildsAttributeTemplate
false
svarScope
Local
sname
SystemExitOnNoActiveWindow
sisSynchronized
false
sthrowException
true
suseOtherAction
false
screateLocalVarScope
false
ssaveReturn
false
sdisableGlobalContext
false
sdescriptors
xworker.swt.actions.ShellActions/@SystemExitOnNoActiveShell
sth_createIndex
false
sth_mark
false
@/@tabFolder/@performanceTab
sname
performanceTab
stext
"性能"
sid
performanceTab
slabel
performanceTab
sdescriptors
xworker.swt.widgets.TabFolder/@TabItem
@/@tabFolder/@performanceTab/@performanceComposite
sname
performanceComposite
sBORDER
false
sH_SCROLL
false
sV_SCROLL
false
sNO_BACKGROUND
false
sNO_FOCUS
false
sNO_MERGE_PAINTS
false
sNO_REDRAW_RESIZE
false
sNO_RADIO_GROUP
false
sEMBEDDED
false
sDOUBLE_BUFFERED
false
scapture
false
senabled
true
sredraw
true
svisible
true
sid
performanceComposite
sdescriptors
xworker.swt.Widgets/@Composite
@/@tabFolder/@performanceTab/@performanceComposite/@performanceCompositeGridLayout
sname
performanceCompositeGridLayout
snumColumns
1
smakeColumnsEqualWidth
false
smarginWidth
5
smarginHeight
5
smarginLeft
0
smarginTop
0
smarginRight
0
smarginBottom
0
shorizontalSpacing
5
sverticalSpacing
5
sid
performanceCompositeGridLayout
slabel
performanceCompositeGridLayout
sdescriptors
xworker.swt.Layouts/@GridLayout
@/@tabFolder/@performanceTab/@performanceComposite/@performanceText
sname
performanceText
sstyle
MULTI
sFULL_SELECTION
false
sREAD_ONLY
true
sWRAP
true
sH_SCROLL
true
sV_SCROLL
true
sBORDER
true
salign
LEFT
sid
performanceText
sdescriptors
xworker.swt.Widgets/@StyledText
@/@tabFolder/@performanceTab/@performanceComposite/@performanceText/@performanceTextGridData
sname
performanceTextGridData
sstyle
FILL_BOTH
shorizontalIndent
0
swidth
-1
sheight
-1
shorizontalAlignment
BEGINNING
sverticalAlignment
CENTER
shorizontalSpan
1
sverticalSpan
1
sgrabExcessHorizontalSpace
false
sgrabExcessVerticalSpace
false
sid
performanceTextGridData
slabel
performanceTextGridData
sdescriptors
xworker.swt.Commons/@GridData
@/@tabFolder/@performanceTab/@performanceComposite/@buttonComposite
sname
buttonComposite
sBORDER
false
sH_SCROLL
false
sV_SCROLL
false
sNO_BACKGROUND
false
sNO_FOCUS
false
sNO_MERGE_PAINTS
false
sNO_REDRAW_RESIZE
false
sNO_RADIO_GROUP
false
sEMBEDDED
false
sDOUBLE_BUFFERED
false
sid
buttonComposite
sdescriptors
xworker.swt.Widgets/@Composite
@/@tabFolder/@performanceTab/@performanceComposite/@buttonComposite/@buttonCompositeGridData
sname
buttonCompositeGridData
sstyle
FILL_HORIZONTAL
shorizontalIndent
0
swidth
-1
sheight
-1
shorizontalAlignment
END
sverticalAlignment
CENTER
shorizontalSpan
1
sverticalSpan
1
sgrabExcessHorizontalSpace
false
sgrabExcessVerticalSpace
false
sid
buttonCompositeGridData
slabel
buttonCompositeGridData
sdescriptors
xworker.swt.Commons/@GridData
@/@tabFolder/@performanceTab/@performanceComposite/@buttonComposite/@buttonCompositeRowLayout
sname
buttonCompositeRowLayout
sfill
false
sjustify
false
smarginWidth
0
smarginHeight
0
smarginLeft
3
smarginTop
3
smarginRight
3
smarginBottom
3
spack
true
sspacing
3
stype
SWT.HORIZONTAL
swrap
true
sid
buttonCompositeRowLayout
slabel
buttonCompositeRowLayout
sdescriptors
xworker.swt.Layouts/@RowLayout
@/@tabFolder/@performanceTab/@performanceComposite/@buttonComposite/@refreshButton
sname
memoryRefreshButton
stext
"  刷新  "
stype
SWT.PUSH
sflat
false
sborder
false
senabled
true
sid
refreshButton
slabel
memoryRefreshButton
sdescriptors
xworker.swt.Widgets/@Button
@/@tabFolder/@performanceTab/@performanceComposite/@buttonComposite/@refreshButton/@listeners
sname
listeners
sid
listeners
slabel
listeners
sdescriptors
xworker.swt.events.Listeners/@listeners
@/@tabFolder/@performanceTab/@performanceComposite/@buttonComposite/@refreshButton/@listeners/@refreshButtonSelection
sname
memoryRefreshButtonSelection
stype
Selection
sid
refreshButtonSelection
slabel
memoryRefreshButtonSelection
sdescriptors
xworker.swt.events.Listeners/@listeners/@Listener
@/@tabFolder/@performanceTab/@performanceComposite/@buttonComposite/@refreshButton/@listeners/@refreshButtonSelection/@GroovyAction
sname
GroovyAction
sisSynchronized
true
sthrowException
true
suseOtherAction
false
svarScope
Global
sdisableGlobalContext
false
Scode
#$@text#$@
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryUsage;

//import org.xmeta.cache.UtilCache;
   
MemoryUsage heapUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
MemoryUsage noheapUsage = ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage();

performanceText.setText("");
performanceText.append("内存堆使用:\n");
performanceText.append("    初始化: " + byteCountToDisplaySize(heapUsage.getInit()));
performanceText.append("\n    已使用: " + byteCountToDisplaySize(heapUsage.getUsed()));
performanceText.append("\n    已提交: " + byteCountToDisplaySize(heapUsage.getCommitted()));
performanceText.append("\n    最大量: " + byteCountToDisplaySize(heapUsage.getMax()));

performanceText.append("\n\n内存非堆使用:\n");
performanceText.append("    初始化: " + byteCountToDisplaySize(noheapUsage.getInit()));
performanceText.append("\n    已使用: " + byteCountToDisplaySize(noheapUsage.getUsed()));
performanceText.append("\n    已提交: " + byteCountToDisplaySize(noheapUsage.getCommitted()));
performanceText.append("\n    最大量: " + byteCountToDisplaySize(noheapUsage.getMax()));

//获取瞬态事物的数量
def transiendSize = world.transientThingManager.getSize();
performanceText.append("\n\n瞬态事物数量: " + transiendSize);

//获取缓存数量
//performanceText.append("\n\n" + UtilCache.toStaticsString());

def String byteCountToDisplaySize(long size) {
    long ONE_KB = 1024;
    long ONE_MB = ONE_KB * ONE_KB;
    long ONE_GB = ONE_KB * ONE_MB;
    String displaySize;

    if (size / ONE_GB > 1) {
        displaySize = String.valueOf(size / ONE_GB) + " GB";
    } else if (size / ONE_MB > 1) {
        displaySize = String.valueOf(size / ONE_MB) + " MB";
    } else if (size / ONE_KB > 1) {
        displaySize = String.valueOf(size / ONE_KB) + " KB";
    } else {
        displaySize = String.valueOf(size) + " bytes";
    }
    return displaySize;
}
#$@text#$@
sinterpretationType
Action
sid
GroovyAction
sdescriptors
xworker.lang.actions.Actions/@GroovyAction
@/@Code
sname
Code
sisSynchronized
false
sthrowException
true
suseOtherAction
false
svarScope
Global
sdisableGlobalContext
false
Scode
#$@text#$@
import org.eclipse.swt.events.ShellListener;

//增加Shell的监听
def shellListener = [
    shellActivated : {
        event->
    },
    
    shellClosed : {
        event ->
        
        shell.setVisible(false);
        event.doit = false;
    },
    
    shellDeactivated : {
        event ->
    },
    
    shellDeiconified : {
        event ->
        
    },
    
    shellIconified : {
    }
] as ShellListener;
shell.addShellListener(shellListener);

threadTree.setColumnNames(["name", "status", "cpu"] as String[]);
shell.setVisible(false);

refreshButtonSelection.handleEvent(null);
memoryRefreshButtonSelection.handleEvent(null);
#$@text#$@
sinterpretationType
Action
screateLocalVarScope
false
ssaveReturn
false
sdebugLog
false
sid
Code
sdescriptors
xworker.swt.Widgets/@Code
