Eclipse插件开发Wizard篇

  • 介绍
使用过Eclipse的人,应该都对向导(wizard)不陌生。创建一个Java工程、导入一个项目等等都会用到向导。向导的作用非常简单,也非常重要——不让你在“阴沟里翻船”。 首先,所有向导做的事情(增加、修改工程配置文件)都可以通过手动做到,但是容易出错。 其次,经常性、重复性的比较麻烦但还有规律的事情,都可以通过向导做到。比如:你们团队对于项目都有一些一致性的配置。 最后呢,把你们团队中的模块开发加上“相对”的话,不是会显得更加专业吗?
  • 步骤
增加依赖org.eclipse.ui.ide 在plugin.xml中添加扩展点 [codesyntax lang="xml"]
<extension
 point="org.eclipse.ui.newWizards">
 <category name="SuRen Project"
 	id="org.suren.littlebird.category"/>
 <wizard class="org.suren.littlebird.wizard.SuRenWizard"
 	category="org.suren.littlebird.category"
 	name="SuRen Project Wizard"
 	id="org.suren.littlebird.wizard"/>
</extension>
[/codesyntax] 继承类Wizard,实现接口INewWizard [codesyntax lang="java"]
package org.suren.littlebird.wizard;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;

/**
 * @author suren
 * @date 2015-4-2
 * 工程向导
 * http://surenpi.com
 */
public class SuRenWizard extends Wizard implements INewWizard
{
	private WizardNewProjectCreationPage creationPage;

	public SuRenWizard()
	{
		super();

		System.out.println("SuRenWizard");
	}

	/**
	 * 增加向导页面
	 */
	@Override
	public void addPages()
	{
		System.out.println("addPage");
		creationPage = new WizardNewProjectCreationPage("Setting");
		creationPage.setDescription("SuRen Project Wizard");
		creationPage.setTitle("Hi");
		addPage(creationPage);
	}

	/**
	 * 完成向导时执行
	 */
	@Override
	public boolean performFinish()
	{
		IProject project = creationPage.getProjectHandle();

		try
		{
			project.create(null);
			project.open(null);

			IProjectDescription projectDesc = project.getDescription();

			String[] natureIds = projectDesc.getNatureIds();
			String[] newNatureIds = new String[natureIds.length + 1];
			newNatureIds[0] = "suren.nature";
			System.arraycopy(natureIds, 0, newNatureIds, 1, natureIds.length);

			projectDesc.setNatureIds(newNatureIds);
			project.setDescription(projectDesc, null);

			return true;
		}
		catch (CoreException e)
		{
			e.printStackTrace();
		}

		return false;
	}

	@Override
	public void init(IWorkbench wordbench, IStructuredSelection selection)
	{
		System.out.println("init");
	}

}
[/codesyntax] 上面的代码,是重新定义了一个Wizard,也可以继承一个现有的(例如:新建Java类文件的类NewClassCreationWizard)。 上面使用的Page类是WizardNewProjectCreationPage,如果需要自定义的话,下面有介绍如何自顶一个Page。
  • 自定义Page
继承org.eclipse.jface.wizard.WizardPage,重写方法public void createControl(Composite parent),在这个方法里一定要记得调用setControl。
  • 参考
看看Eclipse插件的HelloWorld怎么写。 http://blog.itpub.net/13081368/viewspace-374853/ 上面的文章中用到了Nature和Builder,详情请看这里。 如果你想让别人可以扩展你的插件的话,可以自定义扩展点。

转载于:https://my.oschina.net/surenpi/blog/481653

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值