目标:在File->New->project后想添加一下自己的事情,比如在新建的工程文件夹下创建一个新的文件夹。
方法:扩展NewWizard,在performfinish方法里做一些事情。
具体步骤:
1,创建对应new按钮的Action类NewAction,仿照NewWizardAction类,完全拷过来,可能需要完成两个个性化工作:
(1),在构造函数中设置显示的文本和图片(默认显示“Other”)
(2),在run方法里面把NewWizard改为MynewWazard,这个类稍后介绍。
2,在你自己的扩展了ActionBarAdvisor类的MyActionBarAdvisor类方法里面创建1中NewAction类对象,然后在MyActionBarAdvisor的makeActions方法里面注册这个Action对象,方法:
newAction.setId(STR_ID);
register(newAction);
3,创建MyNewWizard类。
由于我们只是要在创建完项目后坐一些事情,所以我们在proformfinish方法里面做就可以了。
public boolean performFinish() {
if ((getStartingPage().getNextPage().getTitle()).equals( " Project " )){
WizardNewProjectCreationPage npp = (WizardNewProjectCreationPage)getStartingPage().getNextPage();
String filePath = null ;
if ( npp.useDefaults()){
filePath = npp.getLocationPath().toString() + " / " + npp.getProjectName() + " / " ;
}
else {
filePath = npp.getLocationPath().toString() + " / " ;
}
file = new File(filePath + " Report " ); // 创建一个report目录
file.mkdirs();
}
return super .performFinish();
}
}
首先我们想知道在第一步新建中我们选择的是新建file,folder还是project。我们用getStartingPage().getNextPage().getTitle()来判断,这里getStartingPage()返回的是第一个page也就是selectionpage,getStartingPage().getNextPage()返回什么是根据我们第一步的选择而不同的,假设我们第一步选择创建工程,这一步返回的是WizardNewProjectCreationPage,我们就可以根据这个对象得到工程名字,路径,是否使用了默认路径等信息。
需要说明一点,如果我们想在创建file或folder后做点事情,那么只要判断getStartingPage().getNextPage().getTitle()是file或者folder就可以了,然后根据getStartingPage().getNextPage()返回的不同对象做一些事情。