Eclipse New Wizard的Wizard
来源:互联网 发布:怎么看淘宝订单排名 编辑:程序博客网 时间:2024/05/16 18:43
Eclipse点击New-->Other以后出来一个新建的向导页面. 是一颗树, 选择某个节点以后就可以Next下去了.
其实后面的页面也是Wizard. 也就是说本身也可以独立成为一个WizardDialog, 那么如何将其嵌入到这个总开头页面之后呢?
Eclipse的实现方法看了很久都没有看懂, 最后决定自己尝试其他思路.
看代码:
这是呼出第一个页面的Action的代码, 出来的页面就是一棵树的样子, 当然那棵树是在NewObjectWizard里面实现的.
可以看到很多方法都被重写掉了, 主要就是控制当前这个Wizard到底有多少个Page, 当然物理上是只有一个的, 通过重写方法来将其和树上选择的Wizard结合起来看.
这是WizardPage, 也是NewObjectWizard里面唯一的页面. 树是通过读取IWizardRegistry来构造的. 每个叶子节点实际上都是一个Wizard.
这样就行了, 个人认为还是比较简单的. 但是可以肯定的是Eclipse不是这么做的...... 我看不懂, 如果哪位大哥知道真相还请指点一下.
另, 这个可能在RCP当中会用到的吧. 如果仅仅是Plugin的话也不用这么复杂, 声明好Wizard就行了.
其实后面的页面也是Wizard. 也就是说本身也可以独立成为一个WizardDialog, 那么如何将其嵌入到这个总开头页面之后呢?
Eclipse的实现方法看了很久都没有看懂, 最后决定自己尝试其他思路.
看代码:
IWizard wizard = new NewObjectWizard();
WizardDialog dialog = new WizardDialog(window.getShell(), wizard);
dialog.create();
dialog.open();
WizardDialog dialog = new WizardDialog(window.getShell(), wizard);
dialog.create();
dialog.open();
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;
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.wizard.Wizard#getPageCount()
*/
@Override
public int getPageCount() {
if (currentWizard != null) {
return currentWizard.getPageCount() + super.getPageCount();
}
return super.getPageCount();
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.wizard.Wizard#getPages()
*/
@Override
public IWizardPage[] getPages() {
if (getPageCount() == 1)
return super.getPages();
else {
IWizardPage[] pages = new IWizardPage[getPageCount()];
IWizardPage[] myPages = super.getPages();
System.arraycopy(myPages, 0, pages, 0, myPages.length);
IWizardPage[] dynamicPages = currentWizard.getPages();
System.arraycopy(dynamicPages, 0, pages, 1, dynamicPages.length);
return pages;
}
}
}
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;
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.wizard.Wizard#getPageCount()
*/
@Override
public int getPageCount() {
if (currentWizard != null) {
return currentWizard.getPageCount() + super.getPageCount();
}
return super.getPageCount();
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.wizard.Wizard#getPages()
*/
@Override
public IWizardPage[] getPages() {
if (getPageCount() == 1)
return super.getPages();
else {
IWizardPage[] pages = new IWizardPage[getPageCount()];
IWizardPage[] myPages = super.getPages();
System.arraycopy(myPages, 0, pages, 0, myPages.length);
IWizardPage[] dynamicPages = currentWizard.getPages();
System.arraycopy(dynamicPages, 0, pages, 1, dynamicPages.length);
return pages;
}
}
}
public class NewObjectWizardPage extends WizardPage {
static final String NEW_OBJECT_WIZARD_PAGE_NAME = "#NewObjectWizardPage";
protected NewObjectWizardPage() {
super(NEW_OBJECT_WIZARD_PAGE_NAME);
setPageComplete(false);
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
// create the top level composite for the dialog area
Composite comp = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = 10;
layout.marginWidth = 10;
layout.verticalSpacing = 10;
layout.horizontalSpacing = 10;
comp.setLayout(layout);
comp.setLayoutData(new GridData(GridData.FILL_BOTH));
comp.setFont(parent.getFont());
Label label = new Label(comp, SWT.NONE);
label.setText(StingIDEMessages.NewWizardDialog_wizardLabel);
label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true,
false, 1, 1));
createTreeViewer(comp);
setTitle(StingIDEMessages.NewWizardDialog_subhead);
setControl(comp);
}
/**
* 创建树视图
*
* @param comp
*/
private TreeViewer createTreeViewer(Composite comp) {
TreeViewer viewer = new TreeViewer(comp, SWT.SINGLE | SWT.V_SCROLL
| SWT.H_SCROLL | SWT.BORDER);
viewer.getControl().setLayoutData(
new GridData(GridData.FILL, GridData.FILL, true, true, 1, 1));
viewer.setContentProvider(new TreeContentProvider());
viewer.setLabelProvider(new TreeLabelProvider());
viewer.setSorter(new ViewerSorter() {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ViewerComparator#category(java.lang.Object)
*/
@Override
public int category(Object element) {
return element instanceof IWizardCategory ? 1 : 0;
}
});
IWizardRegistry registry = StingPlugin.getDefault().getWorkbench()
.getNewWizardRegistry();
viewer.setInput(registry);
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
*/
public void selectionChanged(SelectionChangedEvent event) {
NewObjectWizard parentWizard = (NewObjectWizard) NewObjectWizardPage.this
.getWizard();
IStructuredSelection iss = (IStructuredSelection) event
.getSelection();
if (iss.isEmpty()) {
setPageComplete(false);
setMessage("");
parentWizard.setCurrentWizard(null);
} else {
Object object = iss.getFirstElement();
if (object instanceof IWizardCategory) {
setPageComplete(false);
setMessage("");
parentWizard.setCurrentWizard(null);
} else {
setPageComplete(true);
IWizardDescriptor descriptor = (IWizardDescriptor) object;
setMessage(descriptor.getDescription());
try {
IWizard wizard = descriptor.createWizard();
parentWizard.setCurrentWizard(wizard);
} catch (CoreException e) {
}
}
}
}
});
return viewer;
}
/**
* Create at 2007-7-16,下午01:58:17<br>
* 树内容提供器
*
* @author Brad.Wu
* @version 1.0
*/
class TreeContentProvider implements ITreeContentProvider {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
Object[] ret = null;
IWizardRegistry registry = (IWizardRegistry) inputElement;
IWizardCategory rootCategory = registry.getRootCategory();
Object[] objects = getChildrenOfCategory(rootCategory);
IWizardDescriptor[] primaryWizards = registry.getPrimaryWizards();
if (primaryWizards != null) {
ret = new Object[primaryWizards.length + objects.length];
System.arraycopy(primaryWizards, 0, ret, 0,
primaryWizards.length);
System.arraycopy(objects, 0, ret, primaryWizards.length,
objects.length);
} else {
ret = objects;
}
return ret;
}
/**
* 获取指定分类的所有儿子
*
* @param category
* @return
*/
private Object[] getChildrenOfCategory(IWizardCategory category) {
IWizardDescriptor[] descs = category.getWizards();
IWizardCategory[] categories = category.getCategories();
// 过滤掉不需要的向导和向导分类
List<Object> list = new ArrayList<Object>();
if (descs != null) {
for (IWizardDescriptor wizard : descs) {
list.add(wizard);
}
}
if (categories != null) {
for (IWizardCategory wizardCategory : categories) {
list.add(wizardCategory);
}
}
Object[] objects = new Object[list.size()];
list.toArray(objects);
return objects;
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
* java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof IWizardCategory) {
return getChildrenOfCategory((IWizardCategory) parentElement);
} else {
return CommonConstants.EMPTY_OBJECTS;
}
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
public Object getParent(Object element) {
if (element instanceof IWizardCategory) {
return ((IWizardCategory) element).getParent();
} else {
return ((IWizardDescriptor) element).getCategory();
}
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
public boolean hasChildren(Object element) {
if (element instanceof IWizardCategory) {
IWizardDescriptor[] descs = ((IWizardCategory) element)
.getWizards();
IWizardCategory[] categories = ((IWizardCategory) element)
.getCategories();
return (descs != null && descs.length != 0)
|| (categories != null && categories.length != 0);
} else {
return false;
}
}
}
/**
* Create at 2007-7-16,下午02:18:12<br>
* 树标签提供器
*
* @author Brad.Wu
* @version 1.0
*/
public class TreeLabelProvider extends LabelProvider {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
*/
@Override
public Image getImage(Object element) {
if (element instanceof IWizardCategory) {
return StingPlugin.getImageDescriptor(
"icons/objects/folder.gif").createImage();
} else {
IWizardDescriptor desc = (IWizardDescriptor) element;
if (desc.getImageDescriptor() != null)
return desc.getImageDescriptor().createImage();
return null;
}
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
*/
@Override
public String getText(Object element) {
if (element instanceof IWizardCategory) {
return ((IWizardCategory) element).getLabel();
} else {
return ((IWizardDescriptor) element).getLabel();
}
}
}
}
static final String NEW_OBJECT_WIZARD_PAGE_NAME = "#NewObjectWizardPage";
protected NewObjectWizardPage() {
super(NEW_OBJECT_WIZARD_PAGE_NAME);
setPageComplete(false);
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
// create the top level composite for the dialog area
Composite comp = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = 10;
layout.marginWidth = 10;
layout.verticalSpacing = 10;
layout.horizontalSpacing = 10;
comp.setLayout(layout);
comp.setLayoutData(new GridData(GridData.FILL_BOTH));
comp.setFont(parent.getFont());
Label label = new Label(comp, SWT.NONE);
label.setText(StingIDEMessages.NewWizardDialog_wizardLabel);
label.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true,
false, 1, 1));
createTreeViewer(comp);
setTitle(StingIDEMessages.NewWizardDialog_subhead);
setControl(comp);
}
/**
* 创建树视图
*
* @param comp
*/
private TreeViewer createTreeViewer(Composite comp) {
TreeViewer viewer = new TreeViewer(comp, SWT.SINGLE | SWT.V_SCROLL
| SWT.H_SCROLL | SWT.BORDER);
viewer.getControl().setLayoutData(
new GridData(GridData.FILL, GridData.FILL, true, true, 1, 1));
viewer.setContentProvider(new TreeContentProvider());
viewer.setLabelProvider(new TreeLabelProvider());
viewer.setSorter(new ViewerSorter() {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ViewerComparator#category(java.lang.Object)
*/
@Override
public int category(Object element) {
return element instanceof IWizardCategory ? 1 : 0;
}
});
IWizardRegistry registry = StingPlugin.getDefault().getWorkbench()
.getNewWizardRegistry();
viewer.setInput(registry);
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
*/
public void selectionChanged(SelectionChangedEvent event) {
NewObjectWizard parentWizard = (NewObjectWizard) NewObjectWizardPage.this
.getWizard();
IStructuredSelection iss = (IStructuredSelection) event
.getSelection();
if (iss.isEmpty()) {
setPageComplete(false);
setMessage("");
parentWizard.setCurrentWizard(null);
} else {
Object object = iss.getFirstElement();
if (object instanceof IWizardCategory) {
setPageComplete(false);
setMessage("");
parentWizard.setCurrentWizard(null);
} else {
setPageComplete(true);
IWizardDescriptor descriptor = (IWizardDescriptor) object;
setMessage(descriptor.getDescription());
try {
IWizard wizard = descriptor.createWizard();
parentWizard.setCurrentWizard(wizard);
} catch (CoreException e) {
}
}
}
}
});
return viewer;
}
/**
* Create at 2007-7-16,下午01:58:17<br>
* 树内容提供器
*
* @author Brad.Wu
* @version 1.0
*/
class TreeContentProvider implements ITreeContentProvider {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
Object[] ret = null;
IWizardRegistry registry = (IWizardRegistry) inputElement;
IWizardCategory rootCategory = registry.getRootCategory();
Object[] objects = getChildrenOfCategory(rootCategory);
IWizardDescriptor[] primaryWizards = registry.getPrimaryWizards();
if (primaryWizards != null) {
ret = new Object[primaryWizards.length + objects.length];
System.arraycopy(primaryWizards, 0, ret, 0,
primaryWizards.length);
System.arraycopy(objects, 0, ret, primaryWizards.length,
objects.length);
} else {
ret = objects;
}
return ret;
}
/**
* 获取指定分类的所有儿子
*
* @param category
* @return
*/
private Object[] getChildrenOfCategory(IWizardCategory category) {
IWizardDescriptor[] descs = category.getWizards();
IWizardCategory[] categories = category.getCategories();
// 过滤掉不需要的向导和向导分类
List<Object> list = new ArrayList<Object>();
if (descs != null) {
for (IWizardDescriptor wizard : descs) {
list.add(wizard);
}
}
if (categories != null) {
for (IWizardCategory wizardCategory : categories) {
list.add(wizardCategory);
}
}
Object[] objects = new Object[list.size()];
list.toArray(objects);
return objects;
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
* java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof IWizardCategory) {
return getChildrenOfCategory((IWizardCategory) parentElement);
} else {
return CommonConstants.EMPTY_OBJECTS;
}
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
public Object getParent(Object element) {
if (element instanceof IWizardCategory) {
return ((IWizardCategory) element).getParent();
} else {
return ((IWizardDescriptor) element).getCategory();
}
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
public boolean hasChildren(Object element) {
if (element instanceof IWizardCategory) {
IWizardDescriptor[] descs = ((IWizardCategory) element)
.getWizards();
IWizardCategory[] categories = ((IWizardCategory) element)
.getCategories();
return (descs != null && descs.length != 0)
|| (categories != null && categories.length != 0);
} else {
return false;
}
}
}
/**
* Create at 2007-7-16,下午02:18:12<br>
* 树标签提供器
*
* @author Brad.Wu
* @version 1.0
*/
public class TreeLabelProvider extends LabelProvider {
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
*/
@Override
public Image getImage(Object element) {
if (element instanceof IWizardCategory) {
return StingPlugin.getImageDescriptor(
"icons/objects/folder.gif").createImage();
} else {
IWizardDescriptor desc = (IWizardDescriptor) element;
if (desc.getImageDescriptor() != null)
return desc.getImageDescriptor().createImage();
return null;
}
}
/**
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
*/
@Override
public String getText(Object element) {
if (element instanceof IWizardCategory) {
return ((IWizardCategory) element).getLabel();
} else {
return ((IWizardDescriptor) element).getLabel();
}
}
}
}
这样就行了, 个人认为还是比较简单的. 但是可以肯定的是Eclipse不是这么做的...... 我看不懂, 如果哪位大哥知道真相还请指点一下.
另, 这个可能在RCP当中会用到的吧. 如果仅仅是Plugin的话也不用这么复杂, 声明好Wizard就行了.
- Eclipse New Wizard的Wizard
- Wizard
- Eclipse如何创建XML文件(file—>new的wizard的里面没有XML选项)
- Wizard控件的使用
- RTSC wizard 的使用
- Wizard控件的使用
- ext的wizard
- RTSC wizard 的使用
- eclipse wizard dialog 按钮控制
- New Wizard - how to remove "General" folder
- 定制 visual studio 的 wizard
- Doxygen GUI wizard 的配置
- 替代IP wizard的脚本
- 关于STM32的configuration wizard
- VC++6.0用New DataBase Wizard创建数据库时出现无法连接的问题解决备忘
- Wizard开发
- Wizard向导
- java 于Wcf axis2-eclipse-codegen-wizard和 axis2-eclipse-service-archiver-wizard插件安装
- DB2 _Date_Time
- memset memcpy strcpy strcat 用法 技巧
- jspSmartUpload实现上传现在
- 程序员每天该做的事
- jspSmartUpload实现上传现在
- Eclipse New Wizard的Wizard
- win下php扩展vc6编译
- Daily Share(20080522) memory management
- CloseHandle()函数的使用
- 保全业务
- ASP.NET 2.0,无刷新页面新境界
- 大国的崛起之(中國大陸2008年的災難)
- uclinux-2008r1-rc8(bf561)的中断处理(5):evt_timer
- iPod therefore I am