^1640742252394
@
sname
ImportDemo
slabel
如何导入其他类库
sisChapter
true
sdescriptors
xworker.ide.tools.autodemo.AutoDemo
sinheritDescription
false
sth_createIndex
false
sth_registMyChilds
false
sth_registDisabled
false
sth_mark
false
  @/@AutoDemo
  sname
  AutoDemo
  slabel
  主题
  sisChapter
  true
  sdescriptors
  xworker.ide.tools.autodemo.AutoDemo/@AutoDemo
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  AutoDemo
    @/@AutoDemo/@ShowHtml
    sname
    ShowHtml
    slabel
    演示-解释主题
    swaitTime
    5000
    surl
    xworker.demo.xworker.demo.ImportDemo/@AutoDemo/@ShowHtml
    sisWebControl
    false
    sisThing
    true
    Sdescription
#$@text#$@
<p>可以把已有的Java模块和其他组件等导入到XWorker中，以方便编程和使用。</p>

<p><strong>要点：</strong></p>

<ul>
	<li>有时候需要转化成适合用事物表达的模型。</li>
</ul>
#$@text#$@
    sisChapter
    true
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowHtml
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowHtml
    @/@AutoDemo/@SysResponse
    sname
    SysResponse
    slabel
    系统-解释本次演示的主题
    swaitTime
    4000
    sdescription
    <p>你好，今天我要向大家讲解如何把Java模块或其他组件导入到XWorker中。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse
  @/@AutoDemo1
  sname
  AutoDemo
  slabel
  导入SWT
  sisChapter
  true
  sdescriptors
  xworker.ide.tools.autodemo.AutoDemo/@AutoDemo
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  AutoDemo1
    @/@AutoDemo1/@SysResponse
    sname
    SysResponse
    slabel
    系统-介绍SWT
    swaitTime
    7000
    sdescription
    <p>首先我们以SWT为例如何导入Java模块，SWT是Eclipse中的一个项目，SWT是一个窗口类库，非常适合导入到XWorker中，XWorker的界面就是使用SWT事物开发的。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse
    @/@AutoDemo1/@SysResponse1
    sname
    SysResponse
    slabel
    系统-导入SWT的方法
    swaitTime
    5000
    sdescription
    <p>导入SWT的方法是把控件用事物表示，并且保持SWT类本身的继承关系。下面我们以Shell为例。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse1
    @/@AutoDemo1/@EditThing
    sname
    EditThing
    slabel
    演示-打开Shell
    sthingPath
    xworker.swt.widgets.Shell
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing
    @/@AutoDemo1/@SysResponse2
    sname
    SysResponse
    slabel
    系统-解释Shell
    swaitTime
    5000
    sdescription
    <p>现在右面打开的是Shell事物，可以看到定义了很多属性，这些属性实际上是从SWT的Shell本身的属性。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse2
    @/@AutoDemo1/@SysResponse3
    sname
    SysResponse
    slabel
    系统-附加属性
    swaitTime
    5000
    sdescription
    <p>当然我们也可以添加附加属性，比如XWorker提供了屏幕居中的选项，有了它我们可以让Shell显示的屏幕中央。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse3
    @/@AutoDemo1/@EditThing1
    sname
    EditThing
    slabel
    演示-打开create方法
    sthingPath
    xworker.swt.widgets.Shell/@scripts/@create
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing1
    @/@AutoDemo1/@SysResponse4
    sname
    SysResponse
    slabel
    系统-解释create方法
    swaitTime
    5000
    sdescription
    <p>在XWorker中集成SWT主要是为编写窗口程序，实际上是把事物当做配置文件，然后根据配置的信息创建具体SWT对象。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse4
    @/@AutoDemo1/@ShowCode
    sname
    ShowCode
    slabel
    演示-显示create代码
    scodeType
    java
    Scode
#$@text#$@
/*******************************************************************************
* Copyright 2007-2013 See AUTHORS file.
 * 
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* 
*   http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package xworker.swt.widgets;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.xmeta.Action;
import org.xmeta.ActionContext;
import org.xmeta.Bindings;
import org.xmeta.Thing;
import org.xmeta.World;
import org.xmeta.util.UtilString;

import xworker.swt.design.Designer;
import xworker.swt.util.SwtDialog;
import xworker.swt.util.SwtUtils;

public class ShellCreator {
    public static Object create(ActionContext actionContext){
    	World world = World.getInstance();
    	//self是事物模型本身
    	Thing self = (Thing) actionContext.get("self");
		
    	//初始化style
		Action styleAction = world.getAction("xworker.swt.widgets.Composite/@scripts/@getStyles");
		int style = (Integer) styleAction.run(actionContext);
		String selfStyle = self.getString("style");
		if(self.getBoolean("NO_TRIM"))
		    style |= SWT.NO_TRIM;
		if(self.getBoolean("CLOSE"))
		    style |= SWT.CLOSE;
		if(self.getBoolean("TITLE"))
		    style |= SWT.TITLE;
		if(self.getBoolean("MIN"))
		    style |= SWT.MIN;
		if(self.getBoolean("MAX"))
		    style |= SWT.MAX;
		if(self.getBoolean("BORDER"))
		    style |= SWT.BORDER;
		if(self.getBoolean("RESIZE"))
		    style |= SWT.RESIZE;
		if(self.getBoolean("ON_TOP"))
		    style |= SWT.ON_TOP;
		if(self.getBoolean("TOOL"))
		    style |= SWT.TOOL;
		if("MODELESS".equals(selfStyle)){
		    style |= SWT.MODELESS;
		}else if("PRIMARY_MODAL".equals(selfStyle)){
		    style |= SWT.PRIMARY_MODAL;
		}else if("APPLICATION_MODAL".equals(selfStyle)){
		    style |= SWT.APPLICATION_MODAL;
		}else if("SYSTEM_MODAL".equals(selfStyle)){
		    style |= SWT.SYSTEM_MODAL;
		}
		if(self.getBoolean("NO_FOCUS"))
		    style |= SWT.NO_FOCUS; 
		    
		//创建shell对象
		Shell shell = null;    
		try{
			Object parent = actionContext.get("parent");
			if(parent instanceof Display){
				shell = new Shell((Display) parent, style);
			}else if(parent instanceof Shell){
				shell = new Shell((Shell) parent, style);
			}else{
				shell = new Shell(style);
			}
		}catch(Exception e){
		    shell = new Shell(style);
		}
		
		//初始化公共属性
		Bindings bindings = actionContext.push(null);
		bindings.put("control", shell);
		bindings.put("self", self);
		try{
		    Action action = world.getAction("xworker.swt.widgets.Composite/@scripts/@init");
		    action.run(actionContext);
		}finally{
		    actionContext.pop();
		}
		
		//初始化控件的自有或附加属性
		if(!"-1".equals(self.getString("width"))){
		    shell.setSize(self.getInt("width", -1), self.getInt("height", -1));
		}
		String text = self.getString("text");
		if(text != null && !"".equals(text))
		    shell.setText(UtilString.getString(text, actionContext));
		
		int alpha = self.getInt("alpha", -1);
		if(alpha != -1) shell.setAlpha(alpha);
		
		shell.setFullScreen(self.getBoolean("fullScreen"));
		
		String imeInputMode = self.getString("imeInputMode");
		if("NONE".equals(imeInputMode)){
			shell.setImeInputMode(SWT.NONE);
		}else if("ROMAN".equals(imeInputMode)){
			shell.setImeInputMode(SWT.ROMAN);
		}else if("DBCS".equals(imeInputMode)){
			shell.setImeInputMode(SWT.DBCS);
		}else if("PHONETIC".equals(imeInputMode)){
			shell.setImeInputMode(SWT.PHONETIC);
		}else if("NATIVE".equals(imeInputMode)){
			shell.setImeInputMode(SWT.NATIVE);
		}else if("ALPHA".equals(imeInputMode)){
			shell.setImeInputMode(SWT.ALPHA);
		}		
		    
		//保存变量
		actionContext.getScope(0).put(self.getString("name"), shell);
		
		//创建子节点
		actionContext.peek().put("parent", shell);
		for(Thing child : self.getAllChilds()){
		    child.doAction("create", actionContext);
		} 
		actionContext.peek().remove("parent");
		
		//其他功能
		if(self.getBoolean("pack")){
		    shell.pack();
		}
		if(self.getBoolean("centerScreen")){
		    try{
		        SwtUtils.centerShell(shell);
		    }catch(Throwable t){
		    }
		}
		
		if(self.getBoolean("maximized")){
		    shell.setMaximized(true);
		}
		
		//绑定到designer，使用鼠标中键双击可以打开菜单，可以通过菜单编辑模型等
		if(!shell.isDisposed()){
		    Designer.attach(shell, self.getMetadata().getPath(), actionContext);
		}
		return shell;        
	}

    public static Object createDialog(ActionContext actionContext){
        Thing self = (Thing) actionContext.get("self");
		
		Shell newShell = (Shell) self.doAction("create", actionContext);
		return new SwtDialog((Shell) actionContext.get("parent"), newShell, actionContext);       
	}

    public static void runShellMenu(ActionContext actionContext){
		ActionContext context = new ActionContext();
		context.put("parent", Display.getCurrent().getActiveShell());
		context.put("explorerActions", actionContext.get("explorerActions"));
		context.put("explorerContext", actionContext.get("explorerContext"));
		context.put("parentContext", actionContext);
		
		Shell shell = (Shell) ((Thing) actionContext.get("currentThing")).doAction("create", context);
		if(((Thing) actionContext.get("currentThing")).getBoolean("visible")){
        	shell.open ();
        }  
	}

    public static void runShellThreadMenu(ActionContext actionContext){
        Thing self = (Thing) actionContext.get("self");
        Thing currentThing = (Thing) actionContext.get("currentThing");
		
		if(currentThing == null){
		    currentThing = self;
		}
		
		final ActionContext acContext = new ActionContext(actionContext);
		final Thing cThing = currentThing;
		new Thread(new Runnable(){
			public void run(){
				Display display = new Display ();
		        ActionContext context = new ActionContext();        
		        context.put("explorerActions", acContext.get("explorerActions"));
		        context.put("explorerContext", acContext.get("explorerContext"));
		        context.put("parentContext", acContext);
		        context.put("parent", display);
		        
		        Shell shell = (Shell) cThing.doAction("create", context);
		        if(cThing.getBoolean("visible", true)){
		        	shell.open ();
		        }
			    while (!shell.isDisposed ()) {
			        if (!display.readAndDispatch ()) display.sleep ();
			    }
			    display.dispose ();
			}
		}).start(); 
	}

    public static void runDesign(ActionContext actionContext){
		World world = World.getInstance();
		
		ActionContext bin = new ActionContext();
		bin.put("parent", Display.getCurrent());
		bin.put("treeItem", ((Tree) actionContext.get("outlineTree")).getSelection()[0]);
		bin.put("treeListener", null);
		Thing designObj = world.getThing("xworker.swt.ide.worldexplorer.swt.designer.Designer/@shell");
		Shell shell = (Shell) designObj.doAction("create", bin);
		Thing thing = (Thing) actionContext.get("thing");
		bin.put("dataObject", thing);
		//bin.put.handleEvent(null);
		Text dataText = (Text) bin.get("dataText");
		dataText.setText(thing.getMetadata().getPath());
		
		shell.open();       
	}

    public static void run(ActionContext actionContext){
    	//Thing self = (Thing) actionContext.get("self");
    	
    	Object parent = actionContext.get("parent");
    	if(parent instanceof Shell || parent instanceof Display || Display.getCurrent() != null){
    		//在已有的swt环境下
    		Shell shell = (Shell) create(actionContext);
    		shell.open();
    	}else{
    		//没有swt的环境下
    		Shell shell = (Shell) create(actionContext);
    		shell.open();
    		
    		Display display = shell.getDisplay();
    		while (!shell.isDisposed ()) {
		        if (!display.readAndDispatch ()) display.sleep ();
		    }
		    display.dispose ();
    		/*
			Thing runner = new Thing("xworker.swt.xworker.SwtRunner");
			runner.put("shellThingPath", self.getMetadata().getPath());
			runner.put("shellName", self.getMetadata().getLabel());
			runner.doAction("run", actionContext);
			*/
    	}
	}
}
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode
    @/@AutoDemo1/@SysResponse5
    sname
    SysResponse
    slabel
    系统-解释代码
    swaitTime
    15000
    Sdescription
#$@text#$@
<p>现在右面显示的是Shell相关的Java代码，现在可以浏览一下。</p>

<p>（在演示环境中，如要详细查看，可以暂停自动演示。）</p>
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse5
    @/@AutoDemo1/@ShowCode1
    sname
    ShowCode
    slabel
    演示-显示新建对象代码
    scodeType
    java
    Scode
#$@text#$@
//创建shell对象
Shell shell = null;    
try{
	Object parent = actionContext.get("parent");
	if(parent instanceof Display){
		shell = new Shell((Display) parent, style);
	}else if(parent instanceof Shell){
		shell = new Shell((Shell) parent, style);
	}else{
		shell = new Shell(style);
	}
}catch(Exception e){
    shell = new Shell(style);
}
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode1
    @/@AutoDemo1/@SysResponse6
    sname
    SysResponse
    slabel
    系统-解释创建对象
    swaitTime
    10000
    sdescription
    <p>在Shell的create方法里目的是创建org.eclipse.swt.widgets.Shell对象，如右面现在显示的代码。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse6
    @/@AutoDemo1/@ShowCode2
    sname
    ShowCode
    slabel
    演示-显示设置属性代码
    scodeType
    java
    Scode
#$@text#$@
//初始化控件的自有或附加属性
if(!"-1".equals(self.getString("width"))){
    shell.setSize(self.getInt("width", -1), self.getInt("height", -1));
}
String text = self.getString("text");
if(text != null && !"".equals(text))
    shell.setText(UtilString.getString(text, actionContext));

int alpha = self.getInt("alpha", -1);
if(alpha != -1) shell.setAlpha(alpha);

shell.setFullScreen(self.getBoolean("fullScreen"));

String imeInputMode = self.getString("imeInputMode");
if("NONE".equals(imeInputMode)){
	shell.setImeInputMode(SWT.NONE);
}else if("ROMAN".equals(imeInputMode)){
	shell.setImeInputMode(SWT.ROMAN);
}else if("DBCS".equals(imeInputMode)){
	shell.setImeInputMode(SWT.DBCS);
}else if("PHONETIC".equals(imeInputMode)){
	shell.setImeInputMode(SWT.PHONETIC);
}else if("NATIVE".equals(imeInputMode)){
	shell.setImeInputMode(SWT.NATIVE);
}else if("ALPHA".equals(imeInputMode)){
	shell.setImeInputMode(SWT.ALPHA);
}
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode2
    @/@AutoDemo1/@SysResponse7
    sname
    SysResponse
    slabel
    系统-解释设置属性代码
    swaitTime
    10000
    sdescription
    <p>然后是设置Shell对象属性的代码，根据事物的配置来设置属性，见右面的代码。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse7
    @/@AutoDemo1/@ShowCode3
    sname
    ShowCode
    slabel
    演示-显示创建子节点代码
    scodeType
    java
    Scode
#$@text#$@
//创建子节点
actionContext.peek().put("parent", shell);
for(Thing child : self.getAllChilds()){
    child.doAction("create", actionContext);
} 
actionContext.peek().remove("parent");
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode3
    @/@AutoDemo1/@SysResponse8
    sname
    SysResponse
    slabel
    系统-解释创建子节点代码
    swaitTime
    25000
    Sdescription
#$@text#$@
<p>现在右面显示的是创建子节点的代码，这是<strong>SWT事物模型框架的关键代码</strong>，意思是：</p>

<ol>
	<li>窗口(Shell）下可能会包含其它控件或者事件监听等。</li>
	<li>其它控件或事件监听属于窗口（Shell），应该设置为窗口（Shell）的子事物。</li>
	<li>窗口（Shell）创建了自己的对象后，以约定的parent变量名放到变量上下文当前的变量栈层中。</li>
	<li>遍历并执行子事物的create方法。</li>
	<li>子事物可以获得parent变量，可以做相应的事，比如SWT中控件的构造函数都需要传入parent对象。</li>
	<li>如果子事物还有自己的子事物，那么方法同上，把自己以parent变量放到自己的当变量前栈层中。</li>
	<li>由于当前函数执行完毕后会移除当前变量栈层，所以不会有任何问题。</li>
</ol>
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse8
    @/@AutoDemo1/@ShowCode4
    sname
    ShowCode
    slabel
    系统-辅助代码
    scodeType
    java
    Scode
#$@text#$@
//保存变量
actionContext.getScope(0).put(self.getString("name"), shell);
	
//绑定到设计器，可以在界面中鼠标中键双击打开设计菜单
Designer.attach(shell, self.getMetadata().getPath(), actionContext);
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode4
    @/@AutoDemo1/@SysResponse9
    sname
    SysResponse
    slabel
    系统-解释辅助代码
    swaitTime
    10000
    sdescription
    <p>最后是两个辅助代码，一是把对象放到全局变量中，这样在以后也能够访问这个对象了，第二是把它绑定到设计器中（如果设计器打开才生效），可以在XWorker随时编辑该控件了。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse9
    @/@AutoDemo1/@EditThing2
    sname
    EditThing
    slabel
    系统-编辑Shell
    sthingPath
    xworker.swt.widgets.Shell
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing2
    @/@AutoDemo1/@SysResponse10
    sname
    SysResponse
    slabel
    系统-解释继承
    swaitTime
    5000
    sdescription
    <p>最后要说明的是可以按照SWT的类的继承类编辑事物，比如Shell继承的是Composite。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse10
    @/@AutoDemo1/@EditThing3
    sname
    EditThing
    slabel
    演示-编辑Composite
    sthingPath
    xworker.swt.widgets.Composite
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing3
    @/@AutoDemo1/@SysResponse11
    sname
    SysResponse
    slabel
    系统-解释Composite
    swaitTime
    5000
    sdescription
    <p>而Composite继承的是Control。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse11
    @/@AutoDemo1/@EditThing4
    sname
    EditThing
    slabel
    演示-编辑Widget
    sthingPath
    xworker.swt.widgets.Widget
    sdescription
    <p>而Control又继承了Widget，这和SWT的Java类的继承顺序是一样的。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing4
    @/@AutoDemo1/@EditThing5
    sname
    EditThing
    slabel
    演示-编辑Composite
    sthingPath
    xworker.swt.widgets.Composite
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing5
    @/@AutoDemo1/@SysResponse12
    sname
    SysResponse
    slabel
    演示-解释Composite继承其他
    swaitTime
    5000
    sdescription
    <p>在Compoiste事物我们会发现它还继承了Widgets和Layouts等事物。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse12
    @/@AutoDemo1/@EditThing6
    sname
    EditThing
    slabel
    演示-编辑Widgets
    sthingPath
    xworker.swt.Widgets
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing6
    @/@AutoDemo1/@SysResponse13
    sname
    SysResponse
    slabel
    系统-解释Wdigets
    swaitTime
    5000
    sdescription
    <p>现在右边打开的是Widgets事物，可以看到下面包含了各种控件，通过它可以把SWT各种控件汇总在一起。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse13
    @/@AutoDemo1/@EditThing7
    sname
    EditThing
    slabel
    演示-打开WebBrowser
    sthingPath
    xworker.swt.ide.worldexplorer.swt.util.WebBrowser/@shell/@mainComposite
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing7
    @/@AutoDemo1/@SysResponse14
    sname
    SysResponse
    slabel
    系统-解释WebBrowser
    swaitTime
    5000
    sdescription
    <p>现在我们打开一个演示，它是XWorker中内置的浏览器应用。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse14
    @/@AutoDemo1/@ShowComposite
    sname
    ShowComposite
    slabel
    演示-运行WebBrowser
    scompositePath
    xworker.swt.ide.worldexplorer.swt.util.WebBrowser/@shell/@mainComposite
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowComposite
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowComposite
    @/@AutoDemo1/@SysResponse15
    sname
    SysResponse
    slabel
    系统-解释WebBrowser
    swaitTime
    15000
    Sdescription
#$@text#$@
<p>WebBrowser运行后如右面的界面，可以输入URL地址打开网页。</p>

<p>以上就是导入SWT模型的演示。</p>
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse15
  @/@AutoDemo2
  sname
  AutoDemo
  slabel
  导入Bootstrap
  sisChapter
  true
  sdescriptors
  xworker.ide.tools.autodemo.AutoDemo/@AutoDemo
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  AutoDemo2
    @/@AutoDemo2/@ShowHtml
    sname
    ShowHtml
    slabel
    演示-打开Bootstrap示例
    surl
    xworker.demo.xworker.demo.import.Bootstrap
    sisWebControl
    true
    sisThing
    false
    sisChapter
    true
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowHtml
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowHtml
    @/@AutoDemo2/@SysResponse
    sname
    SysResponse
    slabel
    系统-解释导入WEB
    swaitTime
    5000
    sdescription
    <p>除了可以导入Java模型外，还可以导入WEB前端模型，比如右面现在显示的是Bootstrap的示例。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse
    @/@AutoDemo2/@SysResponse1
    sname
    SysResponse
    slabel
    系统-解释演示
    swaitTime
    5000
    sdescription
    <p>这是一个标签页导航栏。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse1
    @/@AutoDemo2/@EditThing
    sname
    EditThing
    slabel
    演示-打开演示事物
    sthingPath
    xworker.demo.xworker.demo.import.Bootstrap
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing
    @/@AutoDemo2/@SysResponse2
    sname
    SysResponse
    slabel
    系统-解释演示事物
    swaitTime
    5000
    sdescription
    <p>现在右面打开是的刚才的演示程序，下面我们简单解释一下。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse2
    @/@AutoDemo2/@EditThing1
    sname
    EditThing
    slabel
    演示-打开doAction
    sthingPath
    xworker.demo.xworker.demo.import.Bootstrap/@actions/@doAction
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing1
    @/@AutoDemo2/@SysResponse3
    sname
    SysResponse
    slabel
    系统-解释doAction
    swaitTime
    10000
    sdescription
    <p>演示是一个使用SimpleControl编写的WEB应用，它的doAction行为定义为模型（Model），在这里可以从后台资源获取要显示的内容。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse3
    @/@AutoDemo2/@EditThing2
    sname
    EditThing
    slabel
    演示-打开bootstrap
    sthingPath
    xworker.demo.xworker.demo.import.Bootstrap/@view/@Bootstrap/@Navtabs
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing2
    @/@AutoDemo2/@SysResponse4
    sname
    SysResponse
    slabel
    系统-解释bootstrap
    swaitTime
    8000
    sdescription
    <p>然后在编辑页面时，可以把业务逻辑设置的变量作为要显示的数据，注意这里的tabVar的属性值items是模型（Model）所设置的值。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse4
    @/@AutoDemo2/@ShowHtml1
    sname
    ShowHtml
    slabel
    演示-打开Bootstrap示例
    surl
    xworker.demo.xworker.demo.import.Bootstrap
    sisWebControl
    true
    sisThing
    false
    sisChapter
    true
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowHtml
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowHtml1
    @/@AutoDemo2/@SysResponse5
    sname
    SysResponse
    slabel
    系统-解释示例
    swaitTime
    5000
    sdescription
    <p>然后程序运行后就是现在右面显示的样子了。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse5
    @/@AutoDemo2/@EditThing3
    sname
    EditThing
    slabel
    演示-编辑标签页导航
    sthingPath
    xworker.bootstrap.template.Navtabs
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing3
    @/@AutoDemo2/@SysResponse6
    sname
    SysResponse
    slabel
    系统-解释标签页导航
    swaitTime
    3000
    sdescription
    <p>现在我们解释下如何创建标签页导航模型吧。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse6
    @/@AutoDemo2/@SysResponse7
    sname
    SysResponse
    slabel
    系统-抽象模型
    swaitTime
    10000
    Sdescription
#$@text#$@
<p>抽象模型没有统一的方法，依赖个人的经验。</p>

<p>比如在抽象当前的标签页导航时，我想到的是如果我从其他地方看到了一段Bootstrap代码，那么我会用拷贝粘贴的方式复制代码到我的系统里，这是我会考虑哪些变量是我要修改的，那么就把这些变量抽象成模型。</p>
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse7
    @/@AutoDemo2/@EditThing4
    sname
    EditThing
    slabel
    演示-编辑toHtml方法
    sthingPath
    xworker.bootstrap.template.Navtabs/@actions/@toHtml
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing4
    @/@AutoDemo2/@SysResponse8
    sname
    SysResponse
    slabel
    系统-解释toHtml方法
    swaitTime
    8000
    sdescription
    <p>如果SWT模型框架里约定了create方法一样，在WEB前端页面框架中约定了toHtml方法，因此需要实现toHtml方法返回HTML代码片段，这里使用了Freemarker模板来生成。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse8
    @/@AutoDemo2/@EditThing5
    sname
    EditThing
    slabel
    演示-打开init方法
    sthingPath
    xworker.bootstrap.template.Navtabs/@actions/@toHtml/@actions/@init
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing5
    @/@AutoDemo2/@SysResponse9
    sname
    SysResponse
    slabel
    系统-解释init方法
    swaitTime
    5000
    sdescription
    <p>在init子方法里也可以预先处理下要显示的内容。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse9
    @/@AutoDemo2/@EditThing6
    sname
    EditThing
    slabel
    演示-打开aaHead
    sthingPath
    xworker.bootstrap.template.Navtabs/@actions/@toHtml/@actions/@AddHead
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing6
    @/@AutoDemo2/@SysResponse10
    sname
    SysResponse
    slabel
    系统-解释addHead
    swaitTime
    7000
    sdescription
    <p>页面前端框架的toHtml方法可以返回Freemarker代码片段，最后SimpleControl生成页面时会把它整个作为Freemarker模板，在这里引入自定义的Freemarker库。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse10
    @/@AutoDemo2/@EditThing7
    sname
    EditThing
    slabel
    演示-打开调用模板
    sthingPath
    xworker.bootstrap.template.Navtabs/@actions/@toHtml/@actions/@TextTemplate
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing7
    @/@AutoDemo2/@SysResponse11
    sname
    SysResponse
    slabel
    系统-解释调用模板
    swaitTime
    5000
    sdescription
    <p>在这里使用模板动作完成toHtml的输出。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse11
    @/@AutoDemo2/@ShowCode
    sname
    ShowCode
    slabel
    演示-显示ftl
    scodeType
    ftl
    Scode
#$@text#$@
<#import "/xworker/html/bootstrap/template/common.ftl" as xw_bootstrap_lib/>
<ul id="${data.id?if_exists}" class="nav nav-tabs" role="tablist">
<#if data.getStringBlankAsNull("tabVar")?exists>
<${r"@"}xw_bootstrap_lib.showTabItems items=${data.tabVar?if_exists}/>
<#else>
<@xw_bootstrap_lib.showTabItems items=items/>
</#if>
</ul>
<#if data.getBoolean("hasContent")>
<div id="${data.id?if_exists}-tab-content" class="tab-content">
<#if data.getStringBlankAsNull("tabVar")?exists>
<${r"@"}xw_bootstrap_lib.showTabItemsContent items=${data.tabVar?if_exists}/>
<#else>
<@xw_bootstrap_lib.showTabItemsContent items=items/>
</#if>
</div>
</#if>
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode
    @/@AutoDemo2/@SysResponse12
    sname
    SysResponse
    slabel
    系统-解释ftl代码
    swaitTime
    8000
    sdescription
    <p>这是Freemarker的代码，ftl文件放到了和事物同一个文件夹下面。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse12
    @/@AutoDemo2/@EditThing8
    sname
    EditThing
    slabel
    演示-打开Widgets
    sthingPath
    xworker.bootstrap.Widgets/@Navtabs
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing8
    @/@AutoDemo2/@SysResponse13
    sname
    SysResponse
    slabel
    系统-解释继承
    swaitTime
    5000
    sdescription
    <p>最后我们把零散的控件通过继承的方法聚合在一起。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse13
    @/@AutoDemo2/@EditThing9
    sname
    EditThing
    slabel
    演示-打开Bootstrap
    sthingPath
    xworker.bootstrap.Bootstrap
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing9
    @/@AutoDemo2/@SysResponse14
    sname
    SysResponse
    slabel
    系统-解释Boottstrap
    swaitTime
    5000
    sdescription
    <p>然后在总的Bootstrap中继承Widgets。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse14
    @/@AutoDemo2/@EditThing10
    sname
    EditThing
    slabel
    演示-打开htmlWidgets
    sthingPath
    xworker.html.Widgets/@Bootstrap
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing10
    @/@AutoDemo2/@SysResponse15
    sname
    SysResponse
    slabel
    系统-解释Bootstrap
    swaitTime
    5000
    sdescription
    <p>最后在HTML的前端框架中加入Bootstrap，这样在编辑界面是就可以使用到Bootstrap了。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse15
    @/@AutoDemo2/@SysResponse16
    sname
    SysResponse
    slabel
    系统-导入Bootstrap结束
    swaitTime
    3000
    sdescription
    <p>以上是Bootstrap的集成演示。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse16
  @/@AutoDemo3
  sname
  AutoDemo
  slabel
  导入Ant
  sisChapter
  true
  sdescriptors
  xworker.ide.tools.autodemo.AutoDemo/@AutoDemo
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  AutoDemo3
    @/@AutoDemo3/@SysResponse
    sname
    SysResponse
    slabel
    系统-解释导入ant主题
    swaitTime
    5000
    sdescription
    <p>最后一个导入演示我们讲解一下如何导入Ant。</p>
    sisChapter
    true
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse
    @/@AutoDemo3/@ShowCode
    sname
    ShowCode
    slabel
    演示-显示ant脚本
    scodeType
    xml
    Scode
#$@text#$@
<?xml version="1.0" encoding="utf-8"?>

<project name="TestProject" default="init" basedir=".">
    <target name="init">
        <delete dir="f:/test"></delete>
        <mkdir dir="f:/test/"></mkdir>
        <copy tofile="f:/test/WEB-INF/web.xml">
            <fileset file="E:\git\xworker\xworker\xworker/webroot/WEB-INF/web.xml" erroronmissingdir="false"></fileset>
        </copy>
    </target>
</project>
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode
    @/@AutoDemo3/@SysResponse1
    sname
    SysResponse
    slabel
    系统-解释ant
    swaitTime
    3000
    sdescription
    <p>Ant是Apache提供的一个工具，Java编程人员会经常用到。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse1
    @/@AutoDemo3/@SysResponse2
    sname
    SysResponse
    slabel
    系统-解释集成ant的原因1
    swaitTime
    5000
    sdescription
    <p>Ant的文件是使用XML编写的，XWorker本身相当于一个XML编辑器，因此导入到XWorker中后易于编辑。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse2
    @/@AutoDemo3/@SysResponse3
    sname
    SysResponse
    slabel
    系统-解释继承ant的原因2
    swaitTime
    3000
    sdescription
    <p>其次导入Ant后可以直接在XWorker使用Ant，并且可以把它做成动作易于调用。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse3
    @/@AutoDemo3/@EditThing
    sname
    EditThing
    slabel
    演示-打开一个ant
    sthingPath
    xworker.ant.file.delete
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing
    @/@AutoDemo3/@SysResponse4
    sname
    SysResponse
    slabel
    系统-解释导入ant
    swaitTime
    5000
    sdescription
    <p>导入Ant的思路比较简单，就是把它的XML结构编写成对应的事物，比如右面显示的删除文件的Ant标签。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse4
    @/@AutoDemo3/@EditThing1
    sname
    EditThing
    slabel
    演示-编辑ant
    sthingPath
    xworker.demo.xworker.demo.import.Ant/@init/@delete
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@EditThing
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    EditThing1
    @/@AutoDemo3/@SysResponse5
    sname
    SysResponse
    slabel
    系统-解释ant
    swaitTime
    5000
    sdescription
    <p>现在右边显示的就使用编辑具体的Ant事物的界面，可以看到这里显示了delete的各种属性，编辑起来相对简单些。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse5
    @/@AutoDemo3/@ShowCode1
    sname
    ShowCode
    slabel
    演示-显示ant脚本
    scodeType
    xml
    Scode
#$@text#$@
<?xml version="1.0" encoding="utf-8"?>

<project name="TestProject" default="init" basedir=".">
    <target name="init">
        <delete dir="f:/test"></delete>
        <mkdir dir="f:/test/"></mkdir>
        <copy tofile="f:/test/WEB-INF/web.xml">
            <fileset file="E:\git\xworker\xworker\xworker/webroot/WEB-INF/web.xml" erroronmissingdir="false"></fileset>
        </copy>
    </target>
</project>
#$@text#$@
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@ShowCode
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    ShowCode1
    @/@AutoDemo3/@SysResponse6
    sname
    SysResponse
    slabel
    系统-解释ant脚本
    swaitTime
    5000
    sdescription
    <p>Ant事物可以转化为Ant的XML文本，比如右面现在显示的XML就是通过前面的Ant事物转化而来的。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse6
    @/@AutoDemo3/@SysResponse7
    sname
    SysResponse
    slabel
    系统-总结ant脚本
    swaitTime
    5000
    sdescription
    <p>Ant脚本可以在XWorker中直接实行，也可以在其它地方执行。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse7
  @/@AutoDemo4
  sname
  AutoDemo
  slabel
  结束
  sisChapter
  true
  sdescriptors
  xworker.ide.tools.autodemo.AutoDemo/@AutoDemo
  sinheritDescription
  false
  sth_createIndex
  false
  sth_registMyChilds
  false
  sth_registDisabled
  false
  sth_mark
  false
  sid
  AutoDemo4
    @/@AutoDemo4/@SysResponse
    sname
    SysResponse
    slabel
    系统-总结1
    swaitTime
    3000
    sdescription
    <p>以上就是本次演示的主要内容。</p>
    sisChapter
    true
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse
    @/@AutoDemo4/@SysResponse1
    sname
    SysResponse
    slabel
    系统-总结内容
    swaitTime
    5000
    sdescription
    <p>分别演示了导入SWT界面模型、Bootstrap网页模型和Ant模型等。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse1
    @/@AutoDemo4/@SysResponse2
    sname
    SysResponse
    slabel
    系统-寄语
    swaitTime
    5000
    sdescription
    <p>系统通过这些演示能够增加你对事物的认识，谢谢。</p>
    sisChapter
    false
    sdescriptors
    xworker.ide.tools.autodemo.AutoDemo/@SysResponse
    sinheritDescription
    false
    sth_createIndex
    false
    sth_registMyChilds
    false
    sth_registDisabled
    false
    sth_mark
    false
    sid
    SysResponse2
