Aimd's Blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: 订阅 订阅 :: 管理 ::

目标:在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 = new NewAction(window);
newAction.setId(STR_ID);
register(newAction);

3,创建MyNewWizard类。

由于我们只是要在创建完项目后坐一些事情,所以我们在proformfinish方法里面做就可以了。

public class MyNewWizard extends NewWizard {
 
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()返回的不同对象做一些事情。

posted on 2006-05-15 18:06  Aimd  阅读(781)  评论(0编辑  收藏  举报