Plug-in 向导页
来源:互联网 发布:js隐藏一个button按钮 编辑:程序博客网 时间:2024/05/29 18:25
Plug-in 向导页
首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。
1、创建引导页
扩展点【org.eclipse.ui.newWizards】在【org.eclipse.ui.newWizards】中添加【wizard】,在"class"中指定向导页类,继承INewWizard类。
<extensionpoint="org.eclipse.ui.newWizards"><wizardclass="com.plugin.blog.demo.wizard.DemoNewWizard"icon="icons/icon_add.png"id="com.plugin.blog.demo.wizard.DemoNewWizard"name="DemoNew"></wizard></extension>DemoNewWizard类
public class DemoNewWizard extends Wizard implements INewWizard {private IWorkbench mWorkbench;public DemoNewWizard() {setWindowTitle("新建Demo");}@Overridepublic boolean performFinish() {return false;}@Overridepublic void init(IWorkbench workbench, IStructuredSelection selection) {mWorkbench = workbench;}}
2、打开向导页
(1) 在菜单【File】->【New】->【Other...】(2) 可以在菜单中调用代码直接打开
DemoNewWizard wizard = new DemoNewWizard();wizard.init(mWindow.getWorkbench(), null);WizardDialog dialog = new WizardDialog(mWindow.getShell(), wizard);dialog.open();
3、向导页
向导页一般都继承WizardPage类- setTitle方法设置标题
- setDescription方法设置描述信息
- createControl方法创建界面
- setMessage方法设置消息
- setErrorMessage方法设置错误消息
- setPageComplete方法表示页面是否已经设置完成
- canFlipToNextPage方法控制向导页对话框中的Next按钮
public class NewUserPage extends WizardPage implements IWizardPage {private Text mNameText;private Combo mCategoryCombo;protected NewUserPage() {super("NewUserPage");setTitle("新建用户");setDescription("设置注意事项");}@Overridepublic void createControl(Composite parent) {Composite container = new Composite(parent, SWT.NULL);container.setLayout(new GridLayout(2, false));setControl(container);Group group = new Group(container, SWT.NONE);group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));group.setText("创建用户");GridLayout groupLayout = new GridLayout(2, false);groupLayout.marginTop = 10;groupLayout.marginLeft = 10;groupLayout.marginRight = 10;group.setLayout(groupLayout);GridData nameGd = new GridData(SWT.LEFT, SWT.CENTER, false, false);nameGd.widthHint = 40;Label nameLabel = new Label(group, SWT.NONE);nameLabel.setText("姓名:");nameLabel.setLayoutData(nameGd);mNameText = new Text(group, SWT.BORDER);mNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));mNameText.addModifyListener(new ModifyListener() {@Overridepublic void modifyText(ModifyEvent e) {checkButtonStatus();}});Label ageLabel = new Label(group, SWT.NONE);ageLabel.setText("类别:");ageLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));mCategoryCombo = new Combo(group, SWT.BORDER|SWT.READ_ONLY);mCategoryCombo.setItems(User.CATEGORY_ARRAY);GridData categoryGd = new GridData(SWT.LEFT, SWT.CENTER, true, false);categoryGd.widthHint = 60;mCategoryCombo.setLayoutData(categoryGd);mCategoryCombo.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {checkButtonStatus();}});checkButtonStatus();}private void checkButtonStatus() {if (mNameText.getText() == null || mNameText.getText().isEmpty()) {setErrorMessage("姓名不能为空");setPageComplete(false);return;}String name = mNameText.getText();for (Object obj : UserManager.getInstance().getElements()) {User user = (User)obj;if (user.getName().equals(name)) {setErrorMessage("该姓名已经存在");setPageComplete(false);return;}}if (mCategoryCombo.getText() == null || mCategoryCombo.getText().isEmpty()) {setErrorMessage("类别不能为空");setPageComplete(false);return;}setErrorMessage(null);setPageComplete(true);}public String getName() {return mNameText.getText();}public String getCategory() {return mCategoryCombo.getText();}}显示如下
(2) UserBasicInfoPage类,设置用户基本信息
public class UserBasicInfoPage extends WizardPage implements IWizardPage {private Combo mSexComb;private Text mAgeText;protected UserBasicInfoPage() {super("UserBasicInfoPage");setTitle("用户基本信息");setDescription("用户基本信息注意事项");}@Overridepublic void createControl(Composite parent) {Composite container = new Composite(parent, SWT.NULL);final GridLayout containerLayout = new GridLayout(2, false);container.setLayout(containerLayout);setControl(container);Group group = new Group(container, SWT.NONE);group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));group.setText("用户基本信息");GridLayout groupLayout = new GridLayout(2, false);groupLayout.marginTop = 10;groupLayout.marginLeft = 10;groupLayout.marginRight = 10;group.setLayout(groupLayout);GridData sexGd = new GridData(SWT.LEFT, SWT.CENTER, false, false);sexGd.widthHint = 40;Label sexLabel = new Label(group, SWT.NONE);sexLabel.setText("性别:");sexLabel.setLayoutData(sexGd);mSexComb = new Combo(group, SWT.BORDER|SWT.READ_ONLY);mSexComb.setItems(new String[]{"男", "女"});GridData gd = new GridData(SWT.LEFT, SWT.CENTER, true, false);gd.widthHint = 60;mSexComb.setLayoutData(gd);mSexComb.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {checkButtonStatus();}});Label ageLabel = new Label(group, SWT.NONE);ageLabel.setText("年龄:");ageLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));mAgeText = new Text(group, SWT.BORDER);mAgeText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));mAgeText.addModifyListener(new ModifyListener() {@Overridepublic void modifyText(ModifyEvent e) {checkButtonStatus();}});checkButtonStatus();}private void checkButtonStatus() {if (mSexComb.getText() == null || mSexComb.getText().isEmpty()) {setErrorMessage("性别不能为空");setPageComplete(false);return;}if (mAgeText.getText() == null || mSexComb.getText().isEmpty()) {setErrorMessage("年龄不能为空");setPageComplete(false);return;}try {Integer.parseInt(mAgeText.getText());} catch (NumberFormatException e) {setErrorMessage("年龄格式错误");setPageComplete(false);return;}setErrorMessage(null);setPageComplete(true);}public boolean isMale() {return mSexComb.getSelectionIndex() == 0;}public int getAge() {return Integer.parseInt(mAgeText.getText());}}显示如下
(3) UserContractInfoPage类,设置用户联系信息
public class UserContractInfoPage extends WizardPage implements IWizardPage {private Text mPhoneText;private Text mAddressText;protected UserContractInfoPage() {super("UserContractInfoPage");setTitle("用户联系信息");setDescription("用户联系信息注意事项");}@Overridepublic void createControl(Composite parent) {Composite container = new Composite(parent, SWT.NULL);container.setLayout(new GridLayout(2, false));setControl(container);Group group = new Group(container, SWT.NONE);group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));group.setText("创建用户");GridLayout groupLayout = new GridLayout(2, false);groupLayout.marginTop = 10;groupLayout.marginLeft = 10;groupLayout.marginRight = 10;group.setLayout(groupLayout);GridData phoneGd = new GridData(SWT.LEFT, SWT.CENTER, false, false);phoneGd.widthHint = 40;Label phoneLabel = new Label(group, SWT.NONE);phoneLabel.setText("手机号:");phoneLabel.setLayoutData(phoneGd);mPhoneText = new Text(group, SWT.BORDER);mPhoneText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));mPhoneText.addModifyListener(new ModifyListener() {@Overridepublic void modifyText(ModifyEvent e) {checkButtonStatus();}});Label addressLabel = new Label(group, SWT.NONE);addressLabel.setText("住址:");addressLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));mAddressText = new Text(group, SWT.BORDER);mAddressText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));mAddressText.addModifyListener(new ModifyListener() {@Overridepublic void modifyText(ModifyEvent e) {checkButtonStatus();}});checkButtonStatus();}private void checkButtonStatus() {if (mPhoneText.getText() == null || mPhoneText.getText().isEmpty()) {setErrorMessage("手机号不能为空");setPageComplete(false);return;}if (mAddressText.getText() == null || mAddressText.getText().isEmpty()) {setErrorMessage("地址不能为空");setPageComplete(false);return;}setErrorMessage(null);setPageComplete(true);}public String getPhone() {return mPhoneText.getText();}public String getAddress() {return mAddressText.getText();}}显示如下
4、向导页对话框按钮状态
按钮状态由DemoNewWizard类控制- addPages方法添加向导页
- getStartingPage方法设置首页
- getPreviousPage方法设置当前页的前一页
- getNextPage方法设置当前页的后一页
- canFinish方法设置Finish按钮状态
- performFinish方法处理Finish按钮事件
public class DemoNewWizard extends Wizard implements INewWizard {private IWorkbench mWorkbench;private NewUserPage mNewUserPage;private UserBasicInfoPage mBasicInfoPage;private UserContractInfoPage mContractInfoPage;public DemoNewWizard() {setWindowTitle("新建用户");}@Overridepublic void addPages() {super.addPages();mNewUserPage = new NewUserPage();addPage(mNewUserPage);mBasicInfoPage = new UserBasicInfoPage();addPage(mBasicInfoPage);mContractInfoPage = new UserContractInfoPage();addPage(mContractInfoPage);}@Overridepublic boolean canFinish() {if (getContainer().getCurrentPage() == mNewUserPage&& mNewUserPage.isPageComplete()) {return true;}return super.canFinish();}@Overridepublic boolean performFinish() {if (getContainer().getCurrentPage() == mNewUserPage) {String name = mNewUserPage.getName();String category = mNewUserPage.getCategory();saveUser(name, category);} else {String name = mNewUserPage.getName();String category = mNewUserPage.getCategory();boolean sex = mBasicInfoPage.isMale();int age = mBasicInfoPage.getAge();String phone = mContractInfoPage.getPhone();String address = mContractInfoPage.getAddress();saveUserInfo(name, category, sex, age, phone, address);}return true;}private User saveUser(String name, String category) {if (mWorkbench != null && mWorkbench.getActiveWorkbenchWindow() != null) {IWorkbenchWindow window = mWorkbench.getActiveWorkbenchWindow();try {window.getActivePage().showView("com.plugin.blog.demo.view.DemoViewPart");} catch (PartInitException e) {e.printStackTrace();}}User user = new User(name, category);UserManager.getInstance().addObject(user);return user;}private void saveUserInfo(String name, String category, boolean male,int age, String phone, String address) {User user = saveUser(name, category);UserInfoManager manager = UserInfoManager.getInstance(name);UserBasicInfo basicInfo = (UserBasicInfo) manager.getUserInfo(0);basicInfo.setMale(male);basicInfo.setAge(age);UserContractInfo contractInfo = (UserContractInfo) manager.getUserInfo(1);contractInfo.setPhone(phone);contractInfo.setAddress(address);manager.doSave(null);if (mWorkbench != null && mWorkbench.getActiveWorkbenchWindow() != null) {IWorkbenchWindow window = mWorkbench.getActiveWorkbenchWindow();try {DemoEditorInput input = new DemoEditorInput(user);window.getActivePage().openEditor(input, "com.plugin.blog.demo.edit.DemoEditorPart");} catch (PartInitException e) {e.printStackTrace();}}}@Overridepublic void init(IWorkbench workbench, IStructuredSelection selection) {mWorkbench = workbench;}}
阅读全文
0 0
- Plug-in 向导页
- plug-in
- plug-in网址
- C# Plug-in resources
- Eclipse plug-in
- plug in, Basic idea
- ZDA plug-in,删无赦!
- datawindow plug-in
- powerbuilder window plug-in
- Nagios plug-in开发
- 瞎扯plug-in
- PI Achive Plug-In
- Plug-in插件技术
- Plug-In 1.1
- 关于jquery plug-in
- java plug in
- 什么是Java Plug-in
- Codeforce # A Plug-in
- 4. 游戏客户端和服务端的交互流程
- 【Unity】将一串字符串保存到Unity中,保存成任意格式
- js中数组的方法总结
- Linux操作笔记
- springBoot+druid+mybitis整合
- Plug-in 向导页
- 那些将来应该在博客中出现的东西
- Netty源码阅读
- js刷新页面的方式
- gdb调试多线程演示
- InnoDB O_DIRECT选项漫谈(一)
- 数据库索引原理及优化
- 来说说组件(Components)模式
- Tensorflow CIFAR-10训练例子报错解决