现在的位置: 首页 > 综合 > 正文

Eclipse New Wizard的Wizard

2013年04月22日 ⁄ 综合 ⁄ 共 4102字 ⁄ 字号 评论关闭
Eclipse点击New-->Other以后出来一个新建的向导页面. 是一颗树, 选择某个节点以后就可以Next下去了.

其实后面的页面也是Wizard. 也就是说本身也可以独立成为一个WizardDialog, 那么如何将其嵌入到这个总开头页面之后呢?

Eclipse的实现方法看了很久都没有看懂, 最后决定自己尝试其他思路.

看代码:

IWizard wizard = new NewObjectWizard();
WizardDialog dialog 
= new WizardDialog(window.getShell(), wizard);
dialog.create();
dialog.open();

这是呼出第一个页面的Action的代码, 出来的页面就是一棵树的样子, 当然那棵树是在NewObjectWizard里面实现的.

public class NewObjectWizard extends Wizard implements IWizard {
    
private IWizard currentWizard = null;

    
private Composite pageContainer;

    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#addPages()
     
*/

    @Override
    
public void addPages() {
        super.addPage(
new NewObjectWizardPage());
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#performFinish()
     
*/

    @Override
    
public boolean performFinish() {
        
return false;
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#getWindowTitle()
     
*/

    @Override
    
public String getWindowTitle() {
        
return StingIDEMessages.NewWizardDialog_title;
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#needsPreviousAndNextButtons()
     
*/

    @Override
    
public boolean needsPreviousAndNextButtons() {
        
return true;
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#needsProgressMonitor()
     
*/

    @Override
    
public boolean needsProgressMonitor() {
        
return false;
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#getNextPage(org.eclipse.jface.wizard.IWizardPage)
     
*/

    @Override
    
public IWizardPage getNextPage(IWizardPage page) {
        
if (page.getName().equals(
                NewObjectWizardPage.NEW_OBJECT_WIZARD_PAGE_NAME)) 
{
            
if (currentWizard == null{
                
return null;
            }
 else {
                
return currentWizard.getStartingPage();
            }

        }
 else {
            
return page.getNextPage();
        }

    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#getPreviousPage(org.eclipse.jface.wizard.IWizardPage)
     
*/

    @Override
    
public IWizardPage getPreviousPage(IWizardPage page) {
        
if (page.getName().equals(
                NewObjectWizardPage.NEW_OBJECT_WIZARD_PAGE_NAME))
            
return null;

        IWizardPage previous 
= page.getPreviousPage();
        
if (previous == null{
            
return getPage(NewObjectWizardPage.NEW_OBJECT_WIZARD_PAGE_NAME);
        }
 else {
            
return previous;
        }

    }


    
/**
     * 设置当前得向导
     
*/

    
void setCurrentWizard(IWizard wizard) {
        
this.currentWizard = wizard;
        
if (wizard != null{
            wizard.addPages();
            wizard.createPageControls(pageContainer);
        }

        getContainer().updateButtons();
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#createPageControls(org.eclipse.swt.widgets.Composite)
     
*/

    @Override
    
public void createPageControls(Composite pageContainer) {
        super.createPageControls(pageContainer);
        
this.pageContainer = pageContainer;
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#canFinish()
     
*/

    @Override
    
public boolean canFinish() {
        
return currentWizard != null && currentWizard.canFinish();
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#dispose()
     
*/

    @Override
    
public void dispose() {
        
this.currentWizard = null;
        
this.pageContainer = null;
        super.dispose();
    }


    
/**
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.wizard.Wizard#getPage(java.lang.String)
     
*/

    @Override
    
public IWizardPage getPage(String name) {
        
if (name.equals(NewObjectWizardPage.NEW_OBJECT_WIZARD_PAGE_NAME)) {
            
return super.getPage(name);
        }
 else if (this.currentWizard != null{
            
return currentWizard.getPage(name);
        }
 else
            
return null;
    }


    
【上篇】
【下篇】

抱歉!评论已关闭.