^1420351801584
@
sname
shell
stext
新建文件
sstyle
APPLICATION_MODAL
sNO_TRIM
false
sCLOSE
true
sTITLE
true
sMIN
false
sMAX
false
sBORDER
false
sRESIZE
false
sON_TOP
false
sTOOL
false
sNO_FOCUS
false
swidth
400
sheight
300
scenterScreen
true
spack
true
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
NewFileDialog
scapture
false
senabled
true
sredraw
true
svisible
true
sxw_cl_global
false
sid
shellt
sdescriptors
xworker.swt.widgets.Shell,xworker.swt.widgets.Display/@Shell
sinheritDescription
false
sth_createIndex
false
sth_registMyChilds
false
sth_mark
false
@/@shellGridLaout
sname
shellGridLaout
snumColumns
3
smakeColumnsEqualWidth
false
smarginWidth
5
smarginHeight
5
smarginLeft
0
smarginTop
0
smarginRight
0
smarginBottom
0
shorizontalSpacing
5
sverticalSpacing
5
sid
shellGridLaout
slabel
shellGridLaout
sdescriptors
xworker.swt.Layouts/@GridLayout
@/@dataObjectNameLabel
sname
packageNameLabel
stext
文件名：
stype
HORIZONTAL
sshadow
SHADOW_OUT
sBORDER
false
salignment
LEFT
scapture
false
senabled
true
sredraw
true
svisible
true
sxw_cl_global
false
sid
dataObjectNameLabel
slabel
packageNameLabel
sdescriptors
xworker.swt.Widgets/@Label
@/@dataObjectNameText
sname
packageNameText
sstyle
SINGLE
sH_SCROLL
false
sV_SCROLL
false
sWRAP
false
sREAD_ONLY
false
sPASSWORD
false
sSEARCH
false
sCANCEL
false
sBORDER
true
salign
LEFT
sid
dataObjectNameText
slabel
packageNameText
sdescriptors
xworker.swt.Widgets/@Text
@/@dataObjectNameText/@dataObjectNameTextGridData
sname
packageNameTextGridData
shorizontalIndent
0
swidth
200
sheight
-1
shorizontalAlignment
BEGINNING
sverticalAlignment
CENTER
shorizontalSpan
2
sverticalSpan
1
sgrabExcessHorizontalSpace
false
sgrabExcessVerticalSpace
false
sid
dataObjectNameTextGridData
slabel
packageNameTextGridData
sdescriptors
xworker.swt.Commons/@GridData
@/@buttonCell
sname
buttonCell
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
slabel
buttonCell
sid
buttonCell
sdescriptors
xworker.swt.Widgets/@Composite
@/@buttonCell/@buttonCellGridData
sname
buttonCellGridData
sstyle
FILL_HORIZONTAL
shorizontalIndent
0
swidth
-1
sheight
-1
shorizontalAlignment
END
sverticalAlignment
CENTER
shorizontalSpan
3
sverticalSpan
1
sgrabExcessHorizontalSpace
false
sgrabExcessVerticalSpace
false
sxw_cl_global
false
sid
buttonCellGridData
slabel
buttonCellGridData
sdescriptors
xworker.swt.Commons/@GridData
@/@buttonCell/@buttonCellRowLayout
sname
buttonCellRowLayout
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
buttonCellRowLayout
slabel
buttonCellRowLayout
sdescriptors
xworker.swt.Layouts/@RowLayout
@/@buttonCell/@okButton
sname
okButton
stext
res:res.w_exp:okButton:确定（&O）
stype
SWT.PUSH
sflat
false
sborder
false
sselected
false
scapture
false
senabled
true
sredraw
true
svisible
true
sxw_cl_global
false
sid
okButton
slabel
okButton
sdescriptors
xworker.swt.Widgets/@Button
@/@buttonCell/@okButton/@listeners
sname
listeners
sid
listeners
slabel
listeners
sdescriptors
xworker.swt.events.Listeners/@listeners
@/@buttonCell/@okButton/@listeners/@okButtonSelection
sname
okButtonSelection
stype
Selection
sid
okButtonSelection
slabel
okButtonSelection
sdescriptors
xworker.swt.events.Listeners/@listeners/@Listener
@/@buttonCell/@okButton/@listeners/@okButtonSelection/@GroovyAction
sname
GroovyAction
slabel
GroovyAction
sisSynchronized
false
sthrowException
false
suseOtherAction
false
svarScope
Global
sdisableGlobalContext
false
Scode
#$@text#$@
import org.xmeta.Category;
import org.xmeta.ThingManager;
import org.xmeta.thingManagers.FileThingManager;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.TreeItem;
import org.xmeta.Thing;

import org.xmeta.util.UtilString;

//校验数据输入
if(!model.doAction("validate", actionContext)) return;

//创建新的对象
def values = model.doAction("getValue", actionContext);
if(actionContext.get("treeItem") == null){
    //函数式编程新加入的功能
    actionContext.getScope(0).put("result", values.get("name"));
    shell.dispose();
    return;
}

def p = treeItem.getData().getIndexObject();
String newPackage = "";
ThingManager thingManager;

if(p instanceof Thing){
    //如果目录下有相同名称的事物，会导致点击数节点其实返回的是Thing的错误
    p = p.getMetadata().getCategory();
}

if(p instanceof Category){
    thingManager = p.getThingManager();
    
    if(p.getName() != ""){
        newPackage = p.getName().replace('.', '/') + "/" + values.name;
    }else{
        newPackage = values.name;
    }
}else{
    newPackage = values.name;
    thingManager = (ThingManager) p;
}

if(!(thingManager instanceof FileThingManager)){
    MessageBox box = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
    box.setText(UtilString.getString("新建文件", actionContext));
    box.setMessage(UtilString.getString("当前事物管理器不是FileThingManager，只能在文件事物管理器中新建文件！", actionContext));
    box.open();
    return;
}

//保存新的对象
def file = new File(thingManager.getFilePath(), newPackage);
if(file.exists()){
    MessageBox box = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
    box.setText(UtilString.getString("新建文件", actionContext));
    box.setMessage(UtilString.getString("文件已经存在！", actionContext));
    box.open();
    return;
}else{
    //新建文件
    FileOutputStream fout = new FileOutputStream(file);
    fout.close();
    
    //打开浏览
    explorerActions.doAction("openPackageViewer", explorerContxt);
    
    shell.dispose();
}
#$@text#$@
sinterpretationType
Action
screateLocalVarScope
false
ssaveReturn
false
sid
GroovyAction
sdescriptors
xworker.lang.actions.Actions/@GroovyAction
@/@buttonCell/@okButton/@RowData
sname
RowData
sexclude
false
swidth
80
sheight
-1
sid
RowData
slabel
RowData
sdescriptors
xworker.swt.layout.LayoutDatas/@RowData
@/@buttonCell/@cancelButton
sname
cancelButton
stext
res:res.w_exp:cancelButton:取消（&C )
stype
SWT.PUSH
sflat
false
sborder
false
sselected
false
scapture
false
senabled
true
sredraw
true
svisible
true
sxw_cl_global
false
sid
cancelButton
slabel
cancelButton
sdescriptors
xworker.swt.Widgets/@Button
@/@buttonCell/@cancelButton/@listeners
sname
listeners
sid
listeners
slabel
listeners
sdescriptors
xworker.swt.events.Listeners/@listeners
@/@buttonCell/@cancelButton/@listeners/@cancelButtonSelection
sname
cancelButtonSelection
stype
Selection
sid
cancelButtonSelection
slabel
cancelButtonSelection
sdescriptors
xworker.swt.events.Listeners/@listeners/@Listener
@/@buttonCell/@cancelButton/@listeners/@cancelButtonSelection/@GroovyAction
sname
GroovyAction
slabel
GroovyAction
sisSynchronized
false
sthrowException
false
suseOtherAction
false
scode
shell.dispose();
sid
GroovyAction
sdescriptors
xworker.lang.actions.Actions/@GroovyAction
@/@buttonCell/@cancelButton/@RowData
sname
RowData
sexclude
false
swidth
80
sheight
-1
sid
RowData
slabel
RowData
sdescriptors
xworker.swt.layout.LayoutDatas/@RowData
@/@Models
sname
Models
sid
Models
slabel
Models
sdescriptors
xworker.swt.Widgets/@Models
@/@Models/@model
sname
model
sdataType
Map
svalidate
true
sfocus
false
sfocusColor
"#E8FAFF"
sdefaultSelection
okButtonSelection
LvalidateOnBlur
false
LallowDecimals
false
LallowNegative
false
sid
model
slabel
model
sdescriptors
xworker.swt.model.Models/@Model
@/@Models/@model/@name
sname
name
sswtControl
packageNameText
spropertyName
name
svalidate
true
sfocus
false
sfocusColor
"#E8FAFF"
LvalidateOnBlur
false
LallowDecimals
false
LallowNegative
false
sid
name
slabel
name
sdescriptors
xworker.swt.model.Model/@Model
