|
1 package org.symbian.tools.tmw.internal.ui.wizard; |
|
2 |
|
3 import java.util.Set; |
|
4 |
|
5 import org.eclipse.jface.wizard.WizardPage; |
|
6 import org.eclipse.swt.events.DisposeEvent; |
|
7 import org.eclipse.swt.events.DisposeListener; |
|
8 import org.eclipse.swt.widgets.Composite; |
|
9 import org.eclipse.ui.PlatformUI; |
|
10 import org.eclipse.ui.help.IWorkbenchHelpSystem; |
|
11 import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy; |
|
12 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
|
13 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent; |
|
14 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener; |
|
15 import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager; |
|
16 import org.eclipse.wst.common.project.facet.core.runtime.events.IRuntimeLifecycleEvent; |
|
17 import org.eclipse.wst.common.project.facet.core.runtime.events.IRuntimeLifecycleListener; |
|
18 import org.eclipse.wst.common.project.facet.ui.FacetUiHelpContextIds; |
|
19 import org.eclipse.wst.common.project.facet.ui.internal.FacetedProjectFrameworkImages; |
|
20 |
|
21 /** |
|
22 * @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a> |
|
23 */ |
|
24 |
|
25 @SuppressWarnings("restriction") |
|
26 public final class NewApplicationFacetsWizardPage extends WizardPage { |
|
27 public FacetsSelectionPanel panel; |
|
28 private final IFacetedProjectWorkingCopy fpjwc; |
|
29 |
|
30 public NewApplicationFacetsWizardPage(final Set<IProjectFacetVersion> base, final IFacetedProjectWorkingCopy fpjwc) { |
|
31 super("facets.selection.page"); //$NON-NLS-1$ |
|
32 |
|
33 setTitle("Project Facets"); |
|
34 setDescription("Select the facets that should be enabled for this project."); |
|
35 setImageDescriptor(FacetedProjectFrameworkImages.BANNER_IMAGE.getImageDescriptor()); |
|
36 |
|
37 this.fpjwc = fpjwc; |
|
38 } |
|
39 |
|
40 public void createControl(final Composite parent) { |
|
41 this.panel = new FacetsSelectionPanel(parent, this.fpjwc); |
|
42 |
|
43 updatePageState(); |
|
44 |
|
45 this.fpjwc.addListener(new IFacetedProjectListener() { |
|
46 public void handleEvent(final IFacetedProjectEvent event) { |
|
47 updatePageState(); |
|
48 } |
|
49 }, IFacetedProjectEvent.Type.PROJECT_MODIFIED); |
|
50 |
|
51 final IRuntimeLifecycleListener runtimeLifecycleListener = new IRuntimeLifecycleListener() { |
|
52 public void handleEvent(final IRuntimeLifecycleEvent event) { |
|
53 updatePageState(); |
|
54 } |
|
55 }; |
|
56 |
|
57 RuntimeManager.addListener(runtimeLifecycleListener, IRuntimeLifecycleEvent.Type.VALIDATION_STATUS_CHANGED); |
|
58 |
|
59 this.panel.addDisposeListener(new DisposeListener() { |
|
60 public void widgetDisposed(final DisposeEvent e) { |
|
61 RuntimeManager.removeListener(runtimeLifecycleListener); |
|
62 } |
|
63 }); |
|
64 |
|
65 final IWorkbenchHelpSystem h = PlatformUI.getWorkbench().getHelpSystem(); |
|
66 h.setHelp(this.panel, FacetUiHelpContextIds.FACETS_SELECTION_PAGE); |
|
67 |
|
68 setControl(this.panel); |
|
69 } |
|
70 |
|
71 private void updatePageState() { |
|
72 if (!Thread.currentThread().equals(this.panel.getDisplay().getThread())) { |
|
73 final Runnable uiRunnable = new Runnable() { |
|
74 public void run() { |
|
75 updatePageState(); |
|
76 } |
|
77 }; |
|
78 |
|
79 this.panel.getDisplay().asyncExec(uiRunnable); |
|
80 return; |
|
81 } |
|
82 |
|
83 setPageComplete(this.panel.isSelectionValid()); |
|
84 |
|
85 if (getContainer().getCurrentPage() != null) { |
|
86 getContainer().updateButtons(); |
|
87 } |
|
88 } |
|
89 |
|
90 public void setVisible(final boolean visible) { |
|
91 super.setVisible(visible); |
|
92 |
|
93 if (visible) { |
|
94 this.panel.setFocus(); |
|
95 } |
|
96 } |
|
97 } |