创建Faceted Project的wizard为org.eclipse.wst.common.project.facet.ui.FacetedProjectWizard,其第一个Page为org.eclipse.ui.dialogs.WizardNewProjectCreationPage
创建Static Web Project的wizard为SimpleWebProjectWizard,其第一个Page为SimpleWebProjectFirstPage
创建Dynamic Web Project的wizard为WebProjectWizard,其第一个Page为WebProjectFirstPage
(参考http://macrochen.javaeye.com/blog/72953)
另外,在WebProjectFirstPage类所对应的就是Dynamic Web Project页面,在该页面中点击“Modify…”时,弹出Project Facets页面,其实现类为org.eclipse.swt.common.project.facet.ui.internal.FacetsSelectionDialog, FacetsSelectionDialog中关联一个FacetsSelectionPanel,FacetsSelectionPanel部分源码如下:
public final class FacetsSelectionPanel
{
……
private final CheckboxTreeViewer treeViewer;
……
public FacetsSelectionPanel(
final Composite parent,
final IFacetedProjectWorkingCopy fpjwc )
{
……
this.treeViewer.addSelectionChangedListener (
new ISelectionChangedListener()
{
public void selectionChanged(
final SelectionChangedEvent e)
{
FacetsSelectionPanel.this.handleSelectionChangedEvent();
}
}
);
this.treeViewer.addCheckStateListener (
new ICheckStateListener()
{
public void checkStateChanged(
final CheckStateChangedEvent e)
{
FacetsSelectionPanel.this.handleCheckStateChanged( e );
}
}
);
……
}
……
}
从FacetsSelectionPanel的构造函数可知
1)当选择Project Facets页面中的某个树节点时,会触发handleSelectionChangedEvent()方法的调用
2)当选择Project Facets页面中某个树节点前的CheckBox时,handleSelectionChangedEvent()方法和handleCheckStateChanged(final CheckStateChangedEvent event)方法会依次被调用。