^1757465282420
@
lth_createTime
1742734839000
sname
Composite
slabel
Composite
sdescriptors
xworker.lang.MetaDescriptor3
sextends
xworker.swt.widgets.Control,xworker.swt.Widgets,xworker.swt.Layouts
smany
true
seditCols
2
sinitialization
false
smodifier
public
sinheritDescription
false
sicon
icons/org/eclipse/swt/widgets/Composite.gif
sfont
|11|1|#000000
Sdescription
#$@text#$@
<p>Instances of this class are controls which are capable of containing other controls.</p>
<dl><dt><b>Styles:</b> </dt><dd>NO_BACKGROUND, NO_FOCUS, NO_MERGE_PAINTS, NO_REDRAW_RESIZE, NO_RADIO_GROUP, EMBEDDED, DOUBLE_BUFFERED </dd><dt><b>Events:</b> </dt><dd>(none) </dd></dl>
<p>Note: The <code>NO_BACKGROUND</code>, <code>NO_FOCUS</code>, <code>NO_MERGE_PAINTS</code>, and <code>NO_REDRAW_RESIZE</code> styles are intended for use with <code>Canvas</code>. They can be used with <code>Composite</code> if you are drawing your own, but their behavior is undefined if they are used with subclasses of <code>Composite</code> other than <code>Canvas</code>.</p>
<p>Note: The <code>CENTER</code> style, although undefined for composites, has the same value as <code>EMBEDDED</code> (which is used to embed widgets from other widget toolkits into SWT). On some operating systems (GTK, Motif), this may cause the children of this composite to be obscured. The <code>EMBEDDED</code> style is for use by other widget toolkits and should normally never be used.</p>
#$@text#$@
snotXmlAttribute
false
sjson_isArray
false
sjson_array_type
children
sjson_attribute
false
sth_createIndex
false
sth_registMyChilds
false
sth_registDisabled
false
sth_thingRegistViewer
self
sth_noThingRegistViewer
false
sth_fileMonitor
false
sth_mark
false
sth_registQueryOnlySelf
false
sgroupDescriptor
false
sai_needGenerate
false
sai_promptContainsVars
false
  @/@scripts
  sname
  scripts
  slabel
  scripts
  sdescriptors
  xworker.lang.MetaDescriptor3/@actions
  sid
  scripts
    @/@scripts/@create
    sname
    create
    slabel
    create
    sisSynchronized
    false
    sthrowException
    false
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.swt.widgets.CompositeCreator
    smethodName
    create
    sdisableGlobalContext
    false
    sdescriptors
    xworker.lang.actions.JavaAction
    sid
    create
    @/@scripts/@init
    sname
    init
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.swt.widgets.CompositeCreator
    smethodName
    init
    sdescriptors
    xworker.lang.actions.JavaAction
    sid
    init
    @/@scripts/@getStyles
    sname
    getStyles
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.swt.widgets.CompositeCreator
    smethodName
    getStyles
    sdisableGlobalContext
    false
    sdescriptors
    xworker.lang.actions.JavaAction
    sid
    getStyles
    @/@scripts/@runDesign
    sname
    runDesign
    sisSynchronized
    false
    sthrowException
    false
    suseOtherAction
    false
    suseOuterJava
    true
    souterClassName
    xworker.swt.widgets.CompositeCreator
    smethodName
    runDesign
    sdescriptors
    xworker.lang.actions.JavaAction
    sid
    runDesign
    @/@scripts/@menu_openInIde2
    sname
    menu_openInIde
    scompositeThing
    var:currentThing
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.core.actions.utils.XWorkerActions/@ideOpenComposite
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    menu_openInIde2
    @/@scripts/@menu_addLayout
    sname
    menu_addLayout
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    svarScope
    Local
    sdisableGlobalContext
    false
    Scode
#$@text#$@
import org.xmeta.Thing;

def menu = event.widget.getData("menu");

def layoutThing = null;
def layoutName = null;
if("addFillLayout" == menu.name){
    layoutThing = "xworker.swt.Layouts/@FillLayout"
    layoutName = "FillLayout";
}else if("addGridLayout" == menu.name){
    layoutThing = "xworker.swt.layout.GridLayout"
    layoutName = "GridLayout";
}else if("addRowLayout" == menu.name){
    layoutThing = "xworker.swt.Layouts/@RowLayout"
    layoutName = "RowLayout";
}else if("addStackLayout" == menu.name){
    layoutThing = "xworker.swt.custom.StackLayout"
    layoutName = "StackLayout";
}else if("addFormLayout" == menu.name){
    layoutThing = "xworker.swt.layout.FormLayout"
    layoutName = "FormLayout";
}

if(layoutThing != null){
    def thing = new Thing(layoutThing);
    thing.set("name", currentThing.name + layoutName);
    
    currentThing.addChild(thing);
    currentThing.save();
    
    actions.doAction("clearChange");
    actions.doAction("refreshOutline");
}
#$@text#$@
    sinterpretationType
    Action
    screateLocalVarScope
    false
    ssaveReturn
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@GroovyAction
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    menu_addLayout
    @/@scripts/@getTopRightControlThing
    sname
    getTopRightControlThing
    sunimplementedException
    false
    sdescriptors
    xworker.lang.actions.Actions/@NOOP
    sdescription
    <p>作为XWorker的Workbench的View时，可以提供显示在CTabFolder右上角的控件模型，通常是一个ToolBar。</p>
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    sid
    getTopRightControlThing
    @/@scripts/@ai_getPromptFormat
    sname
    ai_getPromptFormat
    stype
    string
    svalue
    输出XML，不要解释，不使用markdown，只要XML代码。
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@ValueFactory
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sgroupDescriptor
    false
    sai_needGenerate
    false
    sai_promptContainsVars
    false
    sid
    ai_getPromptFormat
    @/@scripts/@ai_getPromptSystem
    sname
    ai_getPromptSystem
    stype
    string
    Svalue
#$@text#$@
# SWT Composite XML Model Assistant

## **定位**  
专为使用SWT和XML开发桌面组合控件(Composite)的开发者设计的智能助手，提供符合SWT控件规范、Groovy脚本集成及XML结构化的代码生成，**核心逻辑必须封装在`<GroovyAction name="init">`中**。

## **能力**  
1. **核心逻辑集中化**  
   - **强制**将全局变量定义、初始化方法等核心逻辑封装到`<GroovyAction name="init" descriptors="xworker.swt.Widgets/@Code1">`
   - 通过`actionContext.g().put()`将初始化对象暴露给其他控件事件
   - 其他事件处理脚本**必须通过调用`init`的公共方法实现业务逻辑**

2. **XML-SWT映射**  
   - 自动转换SWT控件为XML节点，节点名为类简名（如`<Composite>`对应`Composite`类）
   - 属性映射至SWT控件的public属性或setter方法（如`text="Hello"`映射为`Shell.setText("Hello")`）
   - 每个XML节点都应该有name属性，节点对应的Java对象会以name属性的值保存到上下文中，脚本可以通过name访问该对象
   - Layout和LayoutData必须通过子节点设置

3. **事件处理规范**  
   - 事件脚本通过`init`的全局对象交互：`<initObject>.methodName()`
   - 禁止在Listener脚本中直接定义业务逻辑（仅允许方法调用）
   - 强制使用`@Field`注解声明持久化变量
   - 强制导入引用到的类

4. **初始化脚本约束**  
   ```xml
   <GroovyAction name="init" descriptors="xworker.swt.Widgets/@Code1">
     <code><![CDATA[
     // 类在引用前必须先import，如引入Field
     import groovy.transform.Field
     // 必须包含全局变量定义
     @Field def clickCount = 0
     
     // 必须提供公共方法接口
     def addClickCount() { 
       clickCount++
       actionContext.g().put("count", clickCount)
     }
     
     // 必须注册全局对象，名字可以自定义， 如mineGame
     actionContext.g().put("<name>", this)]]></code>
   </GroovyAction>
   ```

## **知识储备**
```xml
<!-- 标准布局模式 -->
<Composite name="shell" descriptors="xworker.swt.widgets.Composite" text="TestComposite" label="TestComposite">
    <GridLayout name="GridLayout"/>
    <StyledText name="text" style="MULTI">
        <GridData name="GridData" style="FILL_BOTH"/>
    </StyledText>
</Composite>

<!-- 右键菜单示例 -->
	 <Menu name="menu" descriptors="xworker.swt.Widgets/@Menu" style="POP_UP">
        <MenuItem name="fileItem" text="File" style="CASCADE">
            <Menu name="dropDownMenu" descriptors="xworker.swt.Widgets/@Menu" style="POP_UP">
                <MenuItem name="Apples" text="Apples"/>
                <MenuItem name="Organes" text="Organes"/>
                <MenuItem name="sp3" style="SEPARATOR"/>
                <MenuItem name="Cascade" text="Cascade" style="CASCADE">
                    <Menu name="dropDownMenu" descriptors="xworker.swt.Widgets/@Menu"
                         style="POP_UP" visible="false">
                        <MenuItem name="Apples" text="Apples"/>
                        <MenuItem name="Organes" text="Organes"/>
                        <MenuItem name="sp2" style="SEPARATOR"/>
                        <MenuItem name="Strawberries" text="Strawberries"/>
                        <MenuItem name="logString" text="The Longest String"/>
                    </Menu>
                </MenuItem>
            </Menu>
        </MenuItem>
    </Menu>
    
<!-- 字体和代码着色示例 -->
<StyledText name="textEditor" descriptors="xworker.swt.Widgets/@StyledText" style="BORDER | MULTI | V_SCROLL | H_SCROLL"
     layoutData="GridData {horizontalAlignment=FILL, verticalAlignment=FILL, grabExcessHorizontalSpace=true, grabExcessVerticalSpace=true}">
    <font>
        <Font name="Font" fontData="Bell MT|11|0|#000000"/>
    </font>
    <GridData name="GridData" style="FILL_BOTH"/>
    <Colorer name="Colorer" codeName="text" codeType="text"/>
</StyledText>    

<!-- 标准调用模式 -->
<Button name="btnDemo">
  <Listeners>
    <Listener type="Selection">
      <GroovyAction>
        <code>initObject.handleButtonClick()</code>
      </GroovyAction>
    </Listener>
  </Listeners>
</Button>

<!-- 定时器集成 schedule="true"，control需要指定一个控件变量，GroovyAction中name="doAction"必须 -->
<Timer schedule="true" period="500" control="var:shell">
  <actions>
    <GroovyAction name="doAction">
      <code>initObject.updateTimer(shell)</code>
    </GroovyAction>
  </actions>
</Timer>

<!-- 多控件交互 -->
<Combo name="combo">
  <Listeners>
    <Listener type="Selection">
      <GroovyAction>
        <code>initObject.loadData(combo.selection)</code>
      </GroovyAction>
    </Listener>
  </Listeners>
</Combo>

<!-- Timer示例，period的单位是毫秒 -->
```
<Timer name="gameTimer" descriptors="xworker.swt.Widgets/@Timer" control="var:shell"
     schedule="true" delay="0" period="500">
    <actions descriptors="xworker.lang.actions.SelfAction/@actions1">
        <GroovyAction name="doAction" descriptors="xworker.groovy.GroovyAction">
            <code><![CDATA[import java.text.SimpleDateFormat;

def date = new Date();
def sf = new SimpleDateFormat("HH:mm:ss");
shell.setText(sf.format(date));]]></code>
        </GroovyAction>
    </actions>
</Timer>    

<!-- 监听器绑定指定控件的示例 -->
<?xml version='1.0' encoding='utf-8'?>

<Listeners descriptors="xworker.swt.widgets.Widget/@Listeners">
    <Listener name="newGameListener" type="Selection" bindTo="newGameMenuItem,newGameButton">
        <GroovyAction name="GroovyAction" code="initObject.newGame(9,9,10)"/>
    </Listener>
</Listeners>

<!-- CoolBar和ToolBar示例 -->
<?xml version='1.0' encoding='utf-8'?>

<CoolBar name="coolBar" descriptors="xworker.swt.Widgets/@CoolBar" FLAT="true" ai_promptContainsVars="">
    <Menu name="dropDownMenu" descriptors="xworker.swt.Widgets/@Menu" style="POP_UP"
         visible="false">
        <MenuItem name="Apples" text="Apples"/>
        <MenuItem name="Organes" text="Organes"/>
        <MenuItem name="sp1" style="SEPARATOR"/>
        <MenuItem name="Grapefruit" text="Grapefruit"/>
        <MenuItem name="Peaches" text="Peaches"/>
        <MenuItem name="Kiwi" text="Kiwi"/>
        <MenuItem name="sp2" style="SEPARATOR"/>
        <MenuItem name="Strawberries" text="Strawberries"/>
        <MenuItem name="logString" text="The Longest String"/>
    </Menu>
    <GridData name="coolBarGridData" style="FILL_HORIZONTAL"/>
    <CoolItem name="dropDown1">
        <ToolBar name="toolBar1" FLAT="true" enabled="" redraw="" visible="">
            <ToolItem name="dropDown1" _xmeta_id_="Apples" type="DROP_DOWN" image="icons/accept.png"
                 toolTiptext="SWT.DROP_DOWN">
                <listeners>
                    <Listener name="dropDownSelection">
                        <ShowMenuByEventWidgets name="ShowMenuByEventWidgets" descriptors="xworker.swt.actions.MenuActions/@ShowMenuAlignControl"
                             menuVar="dropDownMenu"/>
                    </Listener>
                </listeners>
            </ToolItem>
        </ToolBar>
    </CoolItem>
    <CoolItem name="textCoolItem">
        <ToolBar name="textCoolBar" enabled="" redraw="" visible="">
            <ToolItem name="textToolItem" type="SEPARATOR">
                <control>
                    <Text name="text" _xmeta_id_="tet" BORDER="true"/>
                </control>
            </ToolItem>
        </ToolBar>
    </CoolItem>
    <CoolItem name="radioItem" _xmeta_id_="radioitem">
        <ToolBar name="radioToolBar" FLAT="true" enabled="" redraw="" visible="">
            <ToolItem name="radio1" type="RADIO" image="icons/accept.png" toolTiptext="SWT.RADIO"/>
            <ToolItem name="radio2" type="RADIO" image="icons/accept.png" toolTiptext="SWT.RADIO"/>
            <ToolItem name="radio3" type="RADIO" image="icons/accept.png" toolTiptext="SWT.RADIO"/>
        </ToolBar>
    </CoolItem>
    <CoolItem name="checkItem">
        <ToolBar name="checkToolBar" enabled="" redraw="" visible="">
            <ToolItem name="check1" type="CHECK" image="icons/accept.png" toolTiptext="SWT.CHECK"/>
            <ToolItem name="check2" type="CHECK" image="icons/accept.png" toolTiptext="SWT.CHECK"/>
            <ToolItem name="check3" type="CHECK" image="icons/accept.png" toolTiptext="SWT.CHECK"/>
        </ToolBar>
    </CoolItem>
    <CoolItem name="pushItem">
        <ToolBar name="pushToolBar" enabled="" redraw="" visible="">
            <ToolItem name="push1" image="icons/accept.png" toolTiptext="SWT.PUSH"/>
            <ToolItem name="push2" image="icons/accept.png" toolTiptext="SWT.PUSH"/>
            <ToolItem name="spt1" type="SEPARATOR"/>
            <ToolItem name="push5" image="icons/accept.png" toolTiptext="SWT.PUSH"/>
            <ToolItem name="push6" image="icons/accept.png" toolTiptext="SWT.PUSH"/>
        </ToolBar>
    </CoolItem>
</CoolBar>

<!-- 键盘事件处理a-zA-Z键用character -->
def handleKeyPress(event) {
    switch(event.character) {
        case 'A':
        case 'a':
            println "a button pressed"
   }
}
```

## **代码规范**  
1. **初始化脚本必须包含**：
   - `@Field`注解的持久化变量
   - 业务逻辑的公共方法集
   - 通过`actionContext.g().put()`注册全局对象

2. **事件脚本必须**：
   - 保持单行方法调用形式（如`initObject.method(arg)`）
   - 禁止直接操作UI控件状态（通过init方法封装）
   - 禁止定义新的全局变量

3. **异常处理**：
   - 在init脚本中统一处理异常
   - 事件脚本不包含try-catch块
   
## **新增命名规范**
**initObject动态命名机制**  
- **语义化命名**：初始化对象名称需体现应用核心功能，如：
  - 扫雷游戏 → `mineGame`
  - 文本编辑器 → `textEditorCore`
  - 数据仪表盘 → `dashboardEngine`
- **命名映射**：通过`actionContext.g().put()`注册时使用语义化名称
- **跨控件调用**：事件脚本通过语义化名称调用方法（如`mineGame.revealCell(x,y)`）

## **更新初始化脚本示例**
```xml
<GroovyAction name="init" descriptors="xworker.swt.Widgets/@Code1">
  <code><![CDATA[
  import groovy.transform.Field
  
  // 扫雷游戏专用变量
  @Field def mineField = new int[10][10]
  
  // 核心方法暴露接口
  def generateMines() {
    // 地雷生成逻辑
  }
  
  // 注册为语义化全局对象
  actionContext.g().put("mineGame", this)]]></code> <!-- 关键修改点 -->
</GroovyAction>
```

## **更新事件调用示例**
```xml
<!-- 扫雷格子点击事件 -->
<Button name="cell_5_8">
  <Listeners>
    <Listener type="Selection">
      <GroovyAction>
        <code>mineGame.revealCell(5,8)</code> <!-- 语义化调用 -->
      </GroovyAction>
    </Listener>
  </Listeners>
</Button>

<!-- 定时器状态更新 -->
<Timer schedule="true" period="1000" control="var:shell">
  <actions>
    <GroovyAction name="doAction">
      <code>mineGame.updateTimerDisplay(shell)</code>
    </GroovyAction>
  </actions>
</Timer>
```

## **新增命名校验规则**
1. **禁止使用通用名称**  
   - 拒绝`initObject`/`mainObject`等无意义命名
   - 强制要求名称包含领域关键词（如`Game`/`Editor`/`Manager`）

2. **多模块协同规范**  
   ```xml
   <!-- 复杂系统分模块注册 -->
   <GroovyAction name="init">
     <code><![CDATA[
     actionContext.g().put("fileManager", new FileHandler())
     actionContext.g().put("networkService", new NetworkAdapter()) ]]></code>
   </GroovyAction>
   
   <!-- 跨模块调用 -->
   <MenuItem name="mnuSave">
     <Listeners>
       <Listener type="Selection">
         <GroovyAction>
           <code>fileManager.saveCurrent()</code>
         </GroovyAction>
       </Listener>
     </Listeners>
   </MenuItem>
   ```

## **更新异常处理规范**
```xml
<GroovyAction name="init">
  <code><![CDATA[
  def handleException(Exception e) {
    // 统一异常处理逻辑
  }
  
  actionContext.g().put("errorHandler", this)]]></code>
</GroovyAction>

<!-- 事件脚本异常传递 -->
<Button name="btnRiskOperation">
  <Listeners>
    <Listener type="Selection">
      <GroovyAction>
        <code>try { financeService.execute() } catch(e) { errorHandler.handleException(e) }</code>
      </GroovyAction>
    </Listener>
  </Listeners>
</Button>
#$@text#$@
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@ValueFactory
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sgroupDescriptor
    false
    sai_needGenerate
    false
    sai_promptContainsVars
    false
    sid
    ai_getPromptSystem
    @/@scripts/@ai_getContent
    sname
    ai_getContent
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    svarScope
    Local
    sdisableGlobalContext
    false
    scode
    return self.toXML();
    sai_needGenerate
    false
    sai_promptContainsVars
    true
    sinterpretationType
    Action
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdebugLog
    false
    sdescriptors
    xworker.core.actions.CoreActions/@GroovyAction
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sgroupDescriptor
    false
    sid
    ai_getContent
    @/@scripts/@ai_onResult
    sname
    ai_onResult
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    svarScope
    Local
    sdisableGlobalContext
    false
    Scode
#$@text#$@
import xworker.swt.util.SwtUtils;
import xworker.lang.util.ThingUtils;

import org.xmeta.Thing;

ThingUtils.replaceByXML(self, content);
SwtUtils.checkAIStyle(self);
#$@text#$@
    sai_needGenerate
    false
    sai_rootThingXml
    true
    sai_promptContainsVars
    true
    sinterpretationType
    Action
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdebugLog
    false
    sdescriptors
    xworker.core.actions.CoreActions/@GroovyAction
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sgroupDescriptor
    false
    sid
    ai_onResult
    @/@scripts/@ai_getChatService
    sname
    ai_getChatService
    schatServiceType
    coding
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.ai.AIActions/@GetChatService
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sgroupDescriptor
    false
    sai_needGenerate
    false
    sai_promptContainsVars
    false
    sid
    ai_getChatService
    @/@scripts/@getPreviewComposite
    sname
    getPreviewComposite
    schangeSelf
    true
    sselfVarName
    data
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    sdescriptors
    xworker.lang.actions.Actions/@ActionGroup
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sgroupDescriptor
    false
    sai_needGenerate
    false
    sai_generateType
    create
    sai_promptContainsVars
    false
    sid
    getPreviewComposite
      @/@scripts/@getPreviewComposite/@actions
      sname
      actions
      sdescriptors
      xworker.lang.actions.Begin/@actions
      sinheritDescription
      false
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_registDisabled
      false
      sth_noThingRegistViewer
      false
      sth_fileMonitor
      false
      sth_mark
      false
      sth_registQueryOnlySelf
      false
      snotXmlAttribute
      false
      sjson_isArray
      false
      sgroupDescriptor
      false
      sai_needGenerate
      false
      sai_generateType
      create
      sai_promptContainsVars
      false
      sid
      actions
        @/@scripts/@getPreviewComposite/@actions/@GetThing
        sname
        GetThing
        sthing
        var:data
        sinterpretationType
        Self
        sattributeTemplate
        false
        schildsAttributeTemplate
        false
        svarScope
        Local
        sisSynchronized
        false
        sthrowException
        true
        suseOtherAction
        false
        screateLocalVarScope
        false
        ssaveReturn
        false
        sswitchResult
        false
        sdisableGlobalContext
        false
        sdebugLog
        false
        sdescriptors
        xworker.core.actions.thing.GetThing
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_noThingRegistViewer
        false
        sth_fileMonitor
        false
        sth_mark
        false
        sth_registQueryOnlySelf
        false
        snotXmlAttribute
        false
        sjson_isArray
        false
        sgroupDescriptor
        false
        sai_needGenerate
        false
        sai_generateType
        create
        sai_promptContainsVars
        false
        sid
        GetThing
    @/@scripts/@41097
    sname
    getJavaClass
    sattributeName
    javaClass
    snotNull
    false
    sinterpretationType
    Self
    sattributeTemplate
    false
    schildsAttributeTemplate
    false
    svarScope
    Local
    sisSynchronized
    false
    sthrowException
    true
    suseOtherAction
    false
    screateLocalVarScope
    false
    ssaveReturn
    false
    sswitchResult
    false
    sdisableGlobalContext
    false
    sdebugLog
    false
    susage
    params
    sdescriptors
    xworker.lang.actions.ActionUtil/@GetClass
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sgroupDescriptor
    false
    sai_needGenerate
    false
    sai_generateType
    create
    sai_promptContainsVars
    false
    sid
    41097
  @/@name
  sname
  name
  slabel
  name
  ssize
  40
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  name
  @/@BORDER
  sname
  BORDER
  slabel
  BORDER
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  BORDER
  @/@H_SCROLL
  sname
  H_SCROLL
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  H_SCROLL
  @/@V_SCROLL
  sname
  V_SCROLL
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  V_SCROLL
  @/@NO_BACKGROUND
  sname
  NO_BACKGROUND
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  NO_BACKGROUND
  @/@NO_FOCUS
  sname
  NO_FOCUS
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  NO_FOCUS
  @/@NO_MERGE_PAINTS
  sname
  NO_MERGE_PAINTS
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  NO_MERGE_PAINTS
  @/@NO_REDRAW_RESIZE
  sname
  NO_REDRAW_RESIZE
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  NO_REDRAW_RESIZE
  @/@O_RADIO_GROUP
  sname
  NO_RADIO_GROUP
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  O_RADIO_GROUP
  @/@EMBEDDED
  sname
  EMBEDDED
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  EMBEDDED
  @/@DOUBLE_BUFFERED
  sname
  DOUBLE_BUFFERED
  sinputtype
  truefalse
  sgroup
  Composite
  sdefault
  false
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sid
  DOUBLE_BUFFERED
  @/@backgroundMode(
  sname
  backgroundMode
  sinputtype
  select
  sgroup
  Composite
  sshowLabel
  true
  sreadOnly
  false
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_mark
  false
  sid
  backgroundMode(
    @/@backgroundMode(/@INHERIT_NONE
    sname
    INHERIT_NONE
    svalue
    INHERIT_NONE
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    INHERIT_NONE
    @/@backgroundMode(/@INHERIT_DEFAULT
    sname
    INHERIT_DEFAULT
    svalue
    INHERIT_DEFAULT
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    INHERIT_DEFAULT
    @/@backgroundMode(/@INHERIT_FORCE
    sname
    INHERIT_FORCE
    svalue
    INHERIT_FORCE
    sdescriptors
    xworker.lang.MetaDescriptor3/@attribute/@value
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_mark
    false
    sid
    INHERIT_FORCE
  @/@label
  sname
  label
  ssize
  60
  scolspan
  2
  sshowLabel
  true
  slabelAlign
  right
  slabelVAlign
  baseline
  smodifier
  public
  sreadOnly
  false
  sinheritDescription
  false
  sdescription
  <p>当这个Composite显示在IDE的编辑栏时作为显示的标签。</p>
  svalidateAllowBlank
  true
  LvalidateOnBlur
  false
  LallowDecimals
  false
  LallowNegative
  false
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_noThingRegistViewer
  false
  sth_fileMonitor
  false
  sth_deprecated
  false
  sth_mark
  false
  sth_registQueryOnlySelf
  false
  sid
  label
  @/@en_label
  sname
  en_label
  slabel
  label_en
  ssize
  60
  sshowLabel
  true
  slabelAlign
  right
  slabelVAlign
  baseline
  smodifier
  public
  sreadOnly
  false
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_noThingRegistViewer
  false
  sth_fileMonitor
  false
  sth_mark
  false
  sth_registQueryOnlySelf
  false
  sid
  en_label
  @/@6913
  sname
  templates
  sdescriptors
  xworker.lang.MetaDescriptor3/@templates
  sextends
  xworker.swt.widgets.CompositeTpls
  sid
  6913
  @/@ControlEditor
  sname
  ControlEditor
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.swt.custom.ControlEditor
  smany
  true
  seditCols
  2
  sinitialization
  false
  smodifier
  public
  sinheritDescription
  true
  snotXmlAttribute
  false
  sjson_isArray
  false
  sth_createIndex
  false
  sid
  ControlEditor
  @/@ServerPushSession
  sname
  ServerPushSession
  sdescriptors
  xworker.lang.MetaDescriptor3/@thing
  sextends
  xworker.swt.rap.ServerPushSession
  smany
  true
  seditCols
  2
  sinitialization
  false
  sgroup
  rap
  smodifier
  public
  sinheritDescription
  true
  snotXmlAttribute
  false
  sjson_isArray
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  ServerPushSession
  @/@VariablesDescs
  sname
  VariablesDescs
  sdescriptors
  xworker.lang.MetaThing/@VariablesDesc
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_fileMonitor
  false
  sth_mark
  false
  sid
  VariablesDescs
    @/@VariablesDescs/@shell
    sname
    var
    svarName
    ognl:thing.getMetadata().getName()
    stype
    object
    sclassName
    org.eclipse.swt.widgets.Composite
    sdescriptors
    xworker.lang.MetaThing/@VariablesDesc/@Object
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sid
    shell
  @/@933
  sname
  MenuBar
  sdescriptors
  xworker.lang.MetaDescriptor3/@MenuBar
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_noThingRegistViewer
  false
  sth_fileMonitor
  false
  sth_mark
  false
  sth_registQueryOnlySelf
  false
  snotXmlAttribute
  false
  sjson_isArray
  false
  sid
  933
    @/@933/@936
    sname
    layoutMenuSetting
    slabel
    Layout
    ssortWeight
    0
    sdescriptors
    xworker.lang.ThingMenuBar/@Menu
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_noThingRegistViewer
    false
    sth_fileMonitor
    false
    sth_mark
    false
    sth_registQueryOnlySelf
    false
    snotXmlAttribute
    false
    sjson_isArray
    false
    sid
    936
      @/@933/@936/@937
      sname
      layoutMenus
      slabel
      Layouts
      ssortWeight
      0
      sdescriptors
      xworker.lang.ThingMenuBar/@Menu
      sinheritDescription
      false
      sth_createIndex
      false
      sth_registMyChilds
      false
      sth_registDisabled
      false
      sth_noThingRegistViewer
      false
      sth_fileMonitor
      false
      sth_mark
      false
      sth_registQueryOnlySelf
      false
      snotXmlAttribute
      false
      sjson_isArray
      false
      sid
      937
        @/@933/@936/@937/@938
        sname
        addFillLayout
        slabel
        Add FillLayout
        saction
        xworker.swt.widgets.Composite/@scripts/@menu_addLayout
        ssortWeight
        0
        sdescriptors
        xworker.lang.ThingMenuBar/@Menu
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_noThingRegistViewer
        false
        sth_fileMonitor
        false
        sth_mark
        false
        sth_registQueryOnlySelf
        false
        snotXmlAttribute
        false
        sjson_isArray
        false
        sid
        938
        @/@933/@936/@937/@939
        sname
        addGridLayout
        slabel
        Add GridLayout
        saction
        xworker.swt.widgets.Composite/@scripts/@menu_addLayout
        ssortWeight
        0
        sdescriptors
        xworker.lang.ThingMenuBar/@Menu
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_noThingRegistViewer
        false
        sth_fileMonitor
        false
        sth_mark
        false
        sth_registQueryOnlySelf
        false
        snotXmlAttribute
        false
        sjson_isArray
        false
        sid
        939
        @/@933/@936/@937/@940
        sname
        addRowLayout
        slabel
        Add RowLayout
        saction
        xworker.swt.widgets.Composite/@scripts/@menu_addLayout
        ssortWeight
        0
        sdescriptors
        xworker.lang.ThingMenuBar/@Menu
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_noThingRegistViewer
        false
        sth_fileMonitor
        false
        sth_mark
        false
        sth_registQueryOnlySelf
        false
        snotXmlAttribute
        false
        sjson_isArray
        false
        sid
        940
        @/@933/@936/@937/@941
        sname
        addStackLayout
        slabel
        Add StackLayout
        saction
        xworker.swt.widgets.Composite/@scripts/@menu_addLayout
        ssortWeight
        0
        sdescriptors
        xworker.lang.ThingMenuBar/@Menu
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_noThingRegistViewer
        false
        sth_fileMonitor
        false
        sth_mark
        false
        sth_registQueryOnlySelf
        false
        snotXmlAttribute
        false
        sjson_isArray
        false
        sid
        941
        @/@933/@936/@937/@942
        sname
        addFormLayout
        slabel
        Add FormLayout
        saction
        xworker.swt.widgets.Composite/@scripts/@menu_addLayout
        ssortWeight
        0
        sdescriptors
        xworker.lang.ThingMenuBar/@Menu
        sinheritDescription
        false
        sth_createIndex
        false
        sth_registMyChilds
        false
        sth_registDisabled
        false
        sth_noThingRegistViewer
        false
        sth_fileMonitor
        false
        sth_mark
        false
        sth_registQueryOnlySelf
        false
        snotXmlAttribute
        false
        sjson_isArray
        false
        sid
        942
  @/@ai_needGenerate
  sname
  ai_needGenerate
  slabel
  生成
  sinputtype
  truefalse
  sgroup
  AI
  sshowLabel
  true
  slabelAlign
  right
  slabelVAlign
  baseline
  smodifier
  public
  sreadOnly
  false
  sdefault
  false
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sen_label
  Generate
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_noThingRegistViewer
  false
  sth_fileMonitor
  false
  sth_mark
  false
  sth_registQueryOnlySelf
  false
  sjson_isArray
  false
  sgroupDescriptor
  false
  sai_needGenerate
  false
  sai_promptContainsVars
  false
  sid
  ai_needGenerate
  @/@ai_promptContainsVars
  sname
  ai_promptContainsVars
  slabel
  包含变量描述
  sinputtype
  hidden
  sgroup
  AI
  sshowLabel
  true
  slabelAlign
  right
  slabelVAlign
  baseline
  smodifier
  public
  sreadOnly
  false
  sdefault
  true
  sinheritDescription
  false
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sxmlJsonIncludeDefault
  false
  sen_label
  Contains vars desc
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_noThingRegistViewer
  false
  sth_fileMonitor
  false
  sth_mark
  false
  sth_registQueryOnlySelf
  false
  sjson_isArray
  false
  sgroupDescriptor
  false
  sai_needGenerate
  false
  sai_promptContainsVars
  false
  sid
  ai_promptContainsVars
  @/@ai_promptRequirement
  sname
  ai_promptRequirement
  slabel
  需求
  sinputtype
  textarea
  sgroup
  AI
  sshowLabel
  true
  slabelAlign
  right
  slabelVAlign
  baseline
  smodifier
  public
  sreadOnly
  false
  sinheritDescription
  false
  sdescription
  <p>这里一般是用户的需求，放在提示词的中间。</p>
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sen_label
  Requirement
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_noThingRegistViewer
  false
  sth_fileMonitor
  false
  sen_description
  <p>This is usually the user's needs, placed in the middle of the prompt word. </p>
  sth_mark
  false
  sth_registQueryOnlySelf
  false
  sjson_isArray
  false
  sgroupDescriptor
  false
  sai_needGenerate
  false
  sai_promptContainsVars
  false
  sid
  ai_promptRequirement
  @/@javaClass
  sname
  javaClass
  sinputtype
  openWindow
  ssize
  60
  sgroup
  ThingLoader
  sinputattrs
  xworker.swt.xworker.attributeEditor.openWins.ClassSelector/@shell|
  sshowLabel
  true
  slabelAlign
  right
  slabelVAlign
  center
  smodifier
  public
  sreadOnly
  false
  sinheritDescription
  false
  Sdescription
#$@text#$@
<p>如果设置了，那么在创建Composite或Shell时，会先通过此时实例化一个对象，然后通过ThingLoader创建本模型。</p>

<p>ThingLoader是模型方便调用Java的方法，也方便在Java中使用模型生成的对象。</p>
#$@text#$@
  svalidateAllowBlank
  true
  LvalidateOnBlur
  true
  LallowDecimals
  true
  LallowNegative
  true
  snotXmlAttribute
  false
  sxmlJsonIncludeDefault
  false
  sdescriptors
  xworker.lang.MetaDescriptor3/@attribute
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_noThingRegistViewer
  false
  sth_fileMonitor
  false
  sth_mark
  false
  sth_registQueryOnlySelf
  false
  sjson_isArray
  false
  sgroupDescriptor
  false
  sai_needGenerate
  false
  sai_generateType
  create
  sai_promptContainsVars
  false
  sid
  javaClass
