author | Eugene Ostroukhov <eugeneo@symbian.org> |
Mon, 16 Aug 2010 16:23:25 -0700 | |
changeset 465 | 87920e15f8eb |
parent 463 | aea4c83725d8 |
permissions | -rw-r--r-- |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
1 |
package org.symbian.tools.tmw.internal.ui.wizard; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
2 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
3 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gdfill; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
4 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gdhhint; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
5 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gdhspan; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
6 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gdwhint; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
7 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gl; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
8 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.glmargins; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
9 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.SwtUtil.getPreferredWidth; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
10 |
import static org.eclipse.wst.common.project.facet.ui.internal.util.SwtUtil.runOnDisplayThread; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
11 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
12 |
import java.lang.reflect.Method; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
13 |
import java.text.MessageFormat; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
14 |
import java.util.ArrayList; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
15 |
import java.util.Arrays; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
16 |
import java.util.HashMap; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
17 |
import java.util.List; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
18 |
import java.util.Map; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
19 |
import java.util.Set; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
20 |
import java.util.SortedSet; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
21 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
22 |
import org.eclipse.core.runtime.IStatus; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
23 |
import org.eclipse.jface.dialogs.Dialog; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
24 |
import org.eclipse.jface.resource.CompositeImageDescriptor; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
25 |
import org.eclipse.jface.resource.ImageDescriptor; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
26 |
import org.eclipse.jface.resource.ImageRegistry; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
27 |
import org.eclipse.jface.viewers.CheckStateChangedEvent; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
28 |
import org.eclipse.jface.viewers.CheckboxTableViewer; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
29 |
import org.eclipse.jface.viewers.ICheckStateListener; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
30 |
import org.eclipse.jface.viewers.ILabelProviderListener; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
31 |
import org.eclipse.jface.viewers.ISelection; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
32 |
import org.eclipse.jface.viewers.ISelectionChangedListener; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
33 |
import org.eclipse.jface.viewers.ISelectionProvider; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
34 |
import org.eclipse.jface.viewers.IStructuredContentProvider; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
35 |
import org.eclipse.jface.viewers.IStructuredSelection; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
36 |
import org.eclipse.jface.viewers.ITableLabelProvider; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
37 |
import org.eclipse.jface.viewers.ITreeContentProvider; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
38 |
import org.eclipse.jface.viewers.LabelProvider; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
39 |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
40 |
import org.eclipse.jface.viewers.StructuredSelection; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
41 |
import org.eclipse.jface.viewers.TableViewer; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
42 |
import org.eclipse.jface.viewers.Viewer; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
43 |
import org.eclipse.jface.viewers.ViewerSorter; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
44 |
import org.eclipse.jface.window.ToolTip; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
45 |
import org.eclipse.swt.SWT; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
46 |
import org.eclipse.swt.custom.SashForm; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
47 |
import org.eclipse.swt.events.DisposeEvent; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
48 |
import org.eclipse.swt.events.DisposeListener; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
49 |
import org.eclipse.swt.graphics.Image; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
50 |
import org.eclipse.swt.graphics.ImageData; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
51 |
import org.eclipse.swt.graphics.Point; |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
52 |
import org.eclipse.swt.layout.GridData; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
53 |
import org.eclipse.swt.layout.GridLayout; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
54 |
import org.eclipse.swt.widgets.Composite; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
55 |
import org.eclipse.swt.widgets.Control; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
56 |
import org.eclipse.swt.widgets.Display; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
57 |
import org.eclipse.swt.widgets.Event; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
58 |
import org.eclipse.swt.widgets.Label; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
59 |
import org.eclipse.swt.widgets.Listener; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
60 |
import org.eclipse.swt.widgets.Table; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
61 |
import org.eclipse.swt.widgets.TableItem; |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
62 |
import org.eclipse.swt.widgets.Text; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
63 |
import org.eclipse.ui.ISharedImages; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
64 |
import org.eclipse.ui.PlatformUI; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
65 |
import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
66 |
import org.eclipse.wst.common.project.facet.core.IProjectFacet; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
67 |
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
68 |
import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
69 |
import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
70 |
import org.eclipse.wst.common.project.facet.core.events.IProjectFacetsChangedEvent; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
71 |
import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
72 |
import org.eclipse.wst.common.project.facet.core.runtime.events.IRuntimeLifecycleEvent; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
73 |
import org.eclipse.wst.common.project.facet.core.runtime.events.IRuntimeLifecycleListener; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
74 |
import org.eclipse.wst.common.project.facet.ui.IDecorationsProvider; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
75 |
import org.eclipse.wst.common.project.facet.ui.internal.FacetUiPlugin; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
76 |
import org.symbian.tools.tmw.core.TMWCore; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
77 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
78 |
/** |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
79 |
* @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a> |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
80 |
*/ |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
81 |
|
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
82 |
@SuppressWarnings("restriction") |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
83 |
public final class FacetsSelectionPanel extends Composite implements ISelectionProvider { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
84 |
private final Composite topComposite; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
85 |
private final SashForm sform1; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
86 |
private final CheckboxTableViewer tableViewer; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
87 |
private final Table table; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
88 |
private final FixedFacetToolTip fixedFacetToolTip; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
89 |
private final TableViewer problemsView; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
90 |
private boolean showToolTips; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
91 |
private final IFacetedProjectWorkingCopy fpjwc; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
92 |
private final List<IFacetedProjectListener> registeredWorkingCopyListeners; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
93 |
private final Map<IProjectFacet, IProjectFacetVersion> selectedVersions; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
94 |
private final List<ISelectionChangedListener> selectionListeners; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
95 |
private Object selection; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
96 |
private final ImageRegistry imageRegistry; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
97 |
private final IRuntimeLifecycleListener runtimeLifecycleListener; |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
98 |
private final Text description; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
99 |
private final Composite facets; |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
100 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
101 |
public interface IFilter { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
102 |
boolean check(IProjectFacetVersion fv); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
103 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
104 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
105 |
public FacetsSelectionPanel(final Composite parent, final IFacetedProjectWorkingCopy fpjwc) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
106 |
super(parent, SWT.NONE); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
107 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
108 |
this.fpjwc = fpjwc; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
109 |
this.registeredWorkingCopyListeners = new ArrayList<IFacetedProjectListener>(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
110 |
this.selectedVersions = new HashMap<IProjectFacet, IProjectFacetVersion>(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
111 |
this.selection = null; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
112 |
this.selectionListeners = new ArrayList<ISelectionChangedListener>(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
113 |
this.showToolTips = false; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
114 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
115 |
// Initialize the image registry. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
116 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
117 |
this.imageRegistry = new ImageRegistry(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
118 |
// Layout the panel. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
119 |
|
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
120 |
setLayout(glmargins(new GridLayout(1, false), 0, 0)); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
121 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
122 |
this.topComposite = new Composite(this, SWT.NONE); |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
123 |
this.topComposite.setLayout(glmargins(new GridLayout(4, false), 0, 0)); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
124 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
125 |
this.sform1 = new SashForm(this.topComposite, SWT.VERTICAL | SWT.SMOOTH); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
126 |
this.sform1.setLayoutData(gdhspan(gdfill(), 4)); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
127 |
|
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
128 |
facets = new Composite(sform1, SWT.NONE); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
129 |
facets.setLayout(new GridLayout(2, false)); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
130 |
this.table = new Table(facets, SWT.BORDER | SWT.CHECK); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
131 |
GridData gd = new GridData(GridData.FILL_VERTICAL); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
132 |
gd.widthHint = 250; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
133 |
table.setLayoutData(gd); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
134 |
description = new Text(facets, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP | SWT.BORDER); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
135 |
gd = new GridData(GridData.FILL_BOTH); |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
136 |
description.setLayoutData(gd); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
137 |
this.tableViewer = new CheckboxTableViewer(this.table); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
138 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
139 |
this.tableViewer.setLabelProvider(new FacetColumnLabelProvider()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
140 |
this.tableViewer.setContentProvider(new ContentProvider()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
141 |
this.tableViewer.setSorter(new Sorter()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
142 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
143 |
this.fixedFacetToolTip = new FixedFacetToolTip(this.table); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
144 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
145 |
this.tableViewer.setInput(new Object()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
146 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
147 |
this.tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
148 |
public void selectionChanged(final SelectionChangedEvent e) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
149 |
FacetsSelectionPanel.this.handleSelectionChangedEvent(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
150 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
151 |
}); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
152 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
153 |
this.tableViewer.addCheckStateListener(new ICheckStateListener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
154 |
public void checkStateChanged(final CheckStateChangedEvent e) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
155 |
FacetsSelectionPanel.this.handleCheckStateChanged(e); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
156 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
157 |
}); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
158 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
159 |
this.table.addListener(SWT.MouseDown, new Listener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
160 |
public void handleEvent(final Event event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
161 |
handleMouseDownEvent(event); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
162 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
163 |
}); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
164 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
165 |
this.problemsView = new TableViewer(this.sform1, SWT.BORDER); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
166 |
this.problemsView.setContentProvider(new ProblemsContentProvider()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
167 |
this.problemsView.setLabelProvider(new ProblemsLabelProvider()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
168 |
this.problemsView.setInput(new Object()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
169 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
170 |
addDisposeListener(new DisposeListener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
171 |
public void widgetDisposed(final DisposeEvent e) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
172 |
handleDisposeEvent(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
173 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
174 |
}); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
175 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
176 |
Dialog.applyDialogFont(parent); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
177 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
178 |
// Setup runtime lifecycle listener. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
179 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
180 |
this.runtimeLifecycleListener = new IRuntimeLifecycleListener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
181 |
public void handleEvent(final IRuntimeLifecycleEvent event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
182 |
handleValidationProblemsChangedEvent(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
183 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
184 |
}; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
185 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
186 |
RuntimeManager |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
187 |
.addListener(this.runtimeLifecycleListener, IRuntimeLifecycleEvent.Type.VALIDATION_STATUS_CHANGED); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
188 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
189 |
// Bind to the model. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
190 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
191 |
addWorkingCopyListener(new IFacetedProjectListener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
192 |
public void handleEvent(final IFacetedProjectEvent event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
193 |
handleProjectFacetsChangedEvent(event); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
194 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
195 |
}, IFacetedProjectEvent.Type.PROJECT_FACETS_CHANGED); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
196 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
197 |
handleProjectFacetsChangedEvent(null); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
198 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
199 |
addWorkingCopyListener(new IFacetedProjectListener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
200 |
public void handleEvent(final IFacetedProjectEvent event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
201 |
handleValidationProblemsChangedEvent(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
202 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
203 |
}, IFacetedProjectEvent.Type.VALIDATION_PROBLEMS_CHANGED, IFacetedProjectEvent.Type.PROJECT_MODIFIED); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
204 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
205 |
handleValidationProblemsChangedEvent(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
206 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
207 |
addWorkingCopyListener(new IFacetedProjectListener() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
208 |
public void handleEvent(final IFacetedProjectEvent event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
209 |
handleModelChangedEvent(event); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
210 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
211 |
}, IFacetedProjectEvent.Type.FIXED_FACETS_CHANGED, IFacetedProjectEvent.Type.SELECTED_PRESET_CHANGED, |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
212 |
IFacetedProjectEvent.Type.TARGETED_RUNTIMES_CHANGED); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
213 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
214 |
// Set the preferred dimensions of the panel. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
215 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
216 |
final int prefWidthTree = getPreferredWidth(this.table); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
217 |
final int prefWidth = prefWidthTree + 80; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
218 |
|
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
219 |
this.topComposite.setLayoutData(gdwhint(gdhhint(gdfill(), 200), prefWidth)); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
220 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
221 |
this.sform1.setWeights(new int[] { 70, 30 }); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
222 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
223 |
// Select the first item in the table. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
224 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
225 |
if (this.table.getItemCount() > 0) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
226 |
final TableItem firstItem = this.table.getItem(0); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
227 |
this.tableViewer.setSelection(new StructuredSelection(firstItem.getData())); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
228 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
229 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
230 |
handleSelectionChangedEvent(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
231 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
232 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
233 |
public IFacetedProjectWorkingCopy getFacetedProjectWorkingCopy() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
234 |
return this.fpjwc; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
235 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
236 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
237 |
public boolean isSelectionValid() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
238 |
return (this.fpjwc.validate().getSeverity() != IStatus.ERROR); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
239 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
240 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
241 |
public boolean setFocus() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
242 |
return this.table.setFocus(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
243 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
244 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
245 |
public void addSelectionChangedListener(final ISelectionChangedListener listener) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
246 |
this.selectionListeners.add(listener); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
247 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
248 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
249 |
public void removeSelectionChangedListener(final ISelectionChangedListener listener) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
250 |
this.selectionListeners.remove(listener); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
251 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
252 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
253 |
public ISelection getSelection() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
254 |
if (this.selection != null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
255 |
return new StructuredSelection(this.selection); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
256 |
} else { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
257 |
return new StructuredSelection(new Object[0]); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
258 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
259 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
260 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
261 |
public void setSelection(final ISelection selection) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
262 |
throw new UnsupportedOperationException(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
263 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
264 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
265 |
private void notifySelectionChangedListeners() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
266 |
final SelectionChangedEvent event = new SelectionChangedEvent(this, getSelection()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
267 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
268 |
for (ISelectionChangedListener listener : this.selectionListeners) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
269 |
listener.selectionChanged(event); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
270 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
271 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
272 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
273 |
private ImageRegistry getImageRegistry() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
274 |
return this.imageRegistry; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
275 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
276 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
277 |
public Image getImage(final IProjectFacet facet, final boolean showDecorations) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
278 |
final boolean isFixed = getFacetedProjectWorkingCopy().isFixedProjectFacet(facet); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
279 |
final String id = (isFixed && showDecorations ? "F:" : "f:") + facet.getId(); //$NON-NLS-1$ //$NON-NLS-2$ |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
280 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
281 |
Image image = getImageRegistry().get(id); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
282 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
283 |
if (image == null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
284 |
final IDecorationsProvider decprov = (IDecorationsProvider) facet.getAdapter(IDecorationsProvider.class); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
285 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
286 |
ImageDescriptor imgdesc = decprov.getIcon(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
287 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
288 |
if (isFixed && showDecorations) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
289 |
imgdesc = new FixedFacetImageDescriptor(imgdesc); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
290 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
291 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
292 |
getImageRegistry().put(id, imgdesc); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
293 |
image = getImageRegistry().get(id); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
294 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
295 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
296 |
return image; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
297 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
298 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
299 |
private void refresh() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
300 |
// Somehow the checked state of nested items gets lost when a refresh |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
301 |
// is performed, so we have to do this workaround. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
302 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
303 |
final Object[] checked = this.tableViewer.getCheckedElements(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
304 |
this.tableViewer.refresh(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
305 |
this.tableViewer.setCheckedElements(checked); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
306 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
307 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
308 |
public boolean getShowToolTips() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
309 |
return this.showToolTips; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
310 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
311 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
312 |
public void setShowToolTips(final boolean showToolTips) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
313 |
this.showToolTips = showToolTips; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
314 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
315 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
316 |
private void addWorkingCopyListener(final IFacetedProjectListener listener, |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
317 |
final IFacetedProjectEvent.Type... types) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
318 |
this.fpjwc.addListener(listener, types); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
319 |
this.registeredWorkingCopyListeners.add(listener); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
320 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
321 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
322 |
public IProjectFacet getSelectedProjectFacet() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
323 |
final IProjectFacetVersion fv = getSelectedProjectFacetVersion(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
324 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
325 |
if (fv != null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
326 |
return fv.getProjectFacet(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
327 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
328 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
329 |
return null; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
330 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
331 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
332 |
public IProjectFacetVersion getSelectedProjectFacetVersion() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
333 |
if (this.selection != null && this.selection instanceof IProjectFacetVersion) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
334 |
return (IProjectFacetVersion) this.selection; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
335 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
336 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
337 |
return null; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
338 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
339 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
340 |
private IProjectFacetVersion getSelectedVersion(final IProjectFacet f) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
341 |
final Set<IProjectFacetVersion> availableVersions = this.fpjwc.getAvailableVersions(f); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
342 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
343 |
if (availableVersions.isEmpty()) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
344 |
throw new IllegalStateException(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
345 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
346 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
347 |
IProjectFacetVersion selectedVersion = this.fpjwc.getProjectFacetVersion(f); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
348 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
349 |
if (selectedVersion == null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
350 |
selectedVersion = this.selectedVersions.get(f); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
351 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
352 |
if (selectedVersion == null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
353 |
selectedVersion = f.getDefaultVersion(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
354 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
355 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
356 |
if (!availableVersions.contains(selectedVersion)) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
357 |
selectedVersion = this.fpjwc.getHighestAvailableVersion(f); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
358 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
359 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
360 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
361 |
this.selectedVersions.put(f, selectedVersion); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
362 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
363 |
return selectedVersion; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
364 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
365 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
366 |
private void handleSelectionChangedEvent() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
367 |
Object selection = ((IStructuredSelection) this.tableViewer.getSelection()).getFirstElement(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
368 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
369 |
if (selection != null && selection instanceof IProjectFacet) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
370 |
selection = getSelectedVersion((IProjectFacet) selection); |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
371 |
description.setText(((IProjectFacetVersion) selection).getProjectFacet().getDescription()); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
372 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
373 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
374 |
if (selection != this.selection) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
375 |
this.selection = selection; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
376 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
377 |
notifySelectionChangedListeners(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
378 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
379 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
380 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
381 |
private void handleCheckStateChanged(final CheckStateChangedEvent event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
382 |
final Object el = event.getElement(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
383 |
final boolean checked = event.getChecked(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
384 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
385 |
final IProjectFacet f = (IProjectFacet) el; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
386 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
387 |
if (this.fpjwc.getFixedProjectFacets().contains(f)) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
388 |
if (!checked) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
389 |
this.tableViewer.setChecked(el, true); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
390 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
391 |
final String msg = MessageFormat |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
392 |
.format("Project facet {0} cannot be deselected. It is critical to the proper function of this project.", |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
393 |
f.getLabel()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
394 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
395 |
this.fixedFacetToolTip.setMessage(msg); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
396 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
397 |
final Point cursorLocation = getDisplay().getCursorLocation(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
398 |
this.fixedFacetToolTip.show(this.table.toControl(cursorLocation)); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
399 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
400 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
401 |
return; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
402 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
403 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
404 |
if (checked) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
405 |
this.fpjwc.addProjectFacet(getSelectedVersion(f)); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
406 |
} else { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
407 |
this.fpjwc.removeProjectFacet(f); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
408 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
409 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
410 |
this.fpjwc.setSelectedPreset(null); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
411 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
412 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
413 |
private void handleMouseDownEvent(final Event event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
414 |
handleMouseDownEventHelper(event, this.table.getItems()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
415 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
416 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
417 |
private boolean handleMouseDownEventHelper(final Event event, final TableItem[] items) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
418 |
for (TableItem item : items) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
419 |
if (item.getBounds(1).contains(event.x, event.y)) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
420 |
final TableItem[] newSelection = new TableItem[] { item }; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
421 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
422 |
if (!Arrays.equals(this.table.getSelection(), newSelection)) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
423 |
this.table.setSelection(new TableItem[] { item }); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
424 |
this.tableViewer.editElement(item.getData(), 1); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
425 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
426 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
427 |
return true; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
428 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
429 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
430 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
431 |
return false; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
432 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
433 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
434 |
private void handleDisposeEvent() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
435 |
this.imageRegistry.dispose(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
436 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
437 |
for (IFacetedProjectListener listener : this.registeredWorkingCopyListeners) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
438 |
this.fpjwc.removeListener(listener); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
439 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
440 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
441 |
RuntimeManager.removeListener(this.runtimeLifecycleListener); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
442 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
443 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
444 |
private void handleProjectFacetsChangedEvent(final IFacetedProjectEvent event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
445 |
if (!Thread.currentThread().equals(getDisplay().getThread())) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
446 |
final Runnable uiRunnable = new Runnable() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
447 |
public void run() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
448 |
handleProjectFacetsChangedEvent(event); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
449 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
450 |
}; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
451 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
452 |
getDisplay().asyncExec(uiRunnable); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
453 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
454 |
return; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
455 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
456 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
457 |
if (event != null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
458 |
final IFacetedProjectWorkingCopy fpjwc = event.getWorkingCopy(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
459 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
460 |
final IProjectFacetsChangedEvent evt = (IProjectFacetsChangedEvent) event; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
461 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
462 |
for (IProjectFacetVersion fv : evt.getAllAffectedFacets()) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
463 |
final IProjectFacet f = fv.getProjectFacet(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
464 |
final boolean checked = fpjwc.hasProjectFacet(fv); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
465 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
466 |
this.tableViewer.setChecked(f, checked); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
467 |
this.tableViewer.update(f, null); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
468 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
469 |
} else { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
470 |
final List<IProjectFacet> facets = new ArrayList<IProjectFacet>(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
471 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
472 |
for (IProjectFacetVersion fv : this.fpjwc.getProjectFacets()) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
473 |
facets.add(fv.getProjectFacet()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
474 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
475 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
476 |
this.tableViewer.setCheckedElements(facets.toArray()); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
477 |
this.tableViewer.update(this.fpjwc.getAvailableFacets().keySet().toArray(), null); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
478 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
479 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
480 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
481 |
private void handleValidationProblemsChangedEvent() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
482 |
if (!Thread.currentThread().equals(getDisplay().getThread())) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
483 |
final Runnable uiRunnable = new Runnable() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
484 |
public void run() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
485 |
handleValidationProblemsChangedEvent(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
486 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
487 |
}; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
488 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
489 |
getDisplay().asyncExec(uiRunnable); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
490 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
491 |
return; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
492 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
493 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
494 |
this.problemsView.refresh(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
495 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
496 |
if (getFilteredProblems().length == 0) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
497 |
if (this.sform1.getMaximizedControl() == null) { |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
498 |
this.sform1.setMaximizedControl(facets); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
499 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
500 |
} else { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
501 |
if (this.sform1.getMaximizedControl() != null) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
502 |
this.sform1.setMaximizedControl(null); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
503 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
504 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
505 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
506 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
507 |
private void handleModelChangedEvent(final IFacetedProjectEvent event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
508 |
switch (event.getType()) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
509 |
case FIXED_FACETS_CHANGED: |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
510 |
case TARGETED_RUNTIMES_CHANGED: { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
511 |
final Runnable runnable = new Runnable() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
512 |
public void run() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
513 |
refresh(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
514 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
515 |
}; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
516 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
517 |
runOnDisplayThread(getDisplay(), runnable); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
518 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
519 |
break; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
520 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
521 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
522 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
523 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
524 |
private IStatus[] getFilteredProblems() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
525 |
final IStatus[] unfiltered = this.fpjwc.validate().getChildren(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
526 |
boolean somethingToRemove = false; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
527 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
528 |
for (IStatus st : unfiltered) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
529 |
if (st.getCode() == IFacetedProjectWorkingCopy.PROBLEM_PROJECT_NAME) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
530 |
somethingToRemove = true; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
531 |
break; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
532 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
533 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
534 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
535 |
if (!somethingToRemove) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
536 |
return unfiltered; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
537 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
538 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
539 |
final List<IStatus> filtered = new ArrayList<IStatus>(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
540 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
541 |
for (IStatus st : unfiltered) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
542 |
if (st.getCode() != IFacetedProjectWorkingCopy.PROBLEM_PROJECT_NAME) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
543 |
filtered.add(st); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
544 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
545 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
546 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
547 |
return filtered.toArray(new IStatus[filtered.size()]); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
548 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
549 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
550 |
private final class ContentProvider |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
551 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
552 |
implements ITreeContentProvider |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
553 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
554 |
{ |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
555 |
public Object[] getElements(final Object element) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
556 |
final IFacetedProjectWorkingCopy fpjwc = getFacetedProjectWorkingCopy(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
557 |
final List<Object> list = new ArrayList<Object>(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
558 |
for (Map.Entry<IProjectFacet, SortedSet<IProjectFacetVersion>> entry : fpjwc.getAvailableFacets() |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
559 |
.entrySet()) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
560 |
final IProjectFacet f = entry.getKey(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
561 |
final SortedSet<IProjectFacetVersion> availableVersions = entry.getValue(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
562 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
563 |
if (f.getCategory() == null && !availableVersions.isEmpty()) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
564 |
list.add(f); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
565 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
566 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
567 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
568 |
return list.toArray(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
569 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
570 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
571 |
public Object[] getChildren(final Object parent) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
572 |
return new Object[0]; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
573 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
574 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
575 |
public Object getParent(final Object element) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
576 |
if (element instanceof IProjectFacet) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
577 |
final IProjectFacet f = (IProjectFacet) element; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
578 |
return f.getCategory(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
579 |
} else { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
580 |
return null; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
581 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
582 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
583 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
584 |
public boolean hasChildren(final Object element) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
585 |
return false; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
586 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
587 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
588 |
public void dispose() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
589 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
590 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
591 |
public void inputChanged(final Viewer viewer, final Object oldObject, final Object newObject) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
592 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
593 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
594 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
595 |
private final class FacetColumnLabelProvider extends LabelProvider { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
596 |
@Override |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
597 |
public String getText(final Object element) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
598 |
return ((IProjectFacet) element).getLabel(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
599 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
600 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
601 |
@Override |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
602 |
public Image getImage(final Object element) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
603 |
return FacetsSelectionPanel.this.getImage((IProjectFacet) element, true); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
604 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
605 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
606 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
607 |
private static final class FixedFacetImageDescriptor |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
608 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
609 |
extends CompositeImageDescriptor |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
610 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
611 |
{ |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
612 |
private static final String OVERLAY_IMG_LOCATION = "images/lock.gif"; //$NON-NLS-1$ |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
613 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
614 |
private static final ImageData OVERLAY = FacetUiPlugin.getImageDescriptor(OVERLAY_IMG_LOCATION).getImageData(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
615 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
616 |
private final ImageData base; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
617 |
private final Point size; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
618 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
619 |
public FixedFacetImageDescriptor(final ImageDescriptor base) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
620 |
this.base = base.getImageData(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
621 |
this.size = new Point(this.base.width, this.base.height); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
622 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
623 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
624 |
protected void drawCompositeImage(final int width, final int height) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
625 |
drawImage(this.base, 0, 0); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
626 |
drawImage(OVERLAY, 0, height - OVERLAY.height); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
627 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
628 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
629 |
protected Point getSize() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
630 |
return this.size; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
631 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
632 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
633 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
634 |
private static final class Sorter extends ViewerSorter { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
635 |
public int compare(final Viewer viewer, final Object a, final Object b) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
636 |
return getLabel(a).compareToIgnoreCase(getLabel(b)); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
637 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
638 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
639 |
private static String getLabel(final Object obj) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
640 |
return ((IProjectFacet) obj).getLabel(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
641 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
642 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
643 |
|
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
644 |
private final class FixedFacetToolTip extends ToolTip { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
645 |
private static final int FAKE_EVENT_TYPE = -9999; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
646 |
|
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
647 |
private String message = ""; //$NON-NLS-1$ |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
648 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
649 |
@Override |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
650 |
protected Composite createToolTipContentArea(final Event event, final Composite parent) { |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
651 |
final Display display = parent.getDisplay(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
652 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
653 |
final Composite composite = new Composite(parent, SWT.NONE); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
654 |
composite.setLayout(gl(1)); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
655 |
composite.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND)); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
656 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
657 |
final Label label = new Label(composite, SWT.WRAP); |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
658 |
label.setLayoutData(gdwhint(gdfill(), 300)); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
659 |
label.setBackground(display.getSystemColor(SWT.COLOR_INFO_BACKGROUND)); |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
660 |
label.setText(this.message); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
661 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
662 |
return composite; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
663 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
664 |
|
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
665 |
public void setMessage(final String message) { |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
666 |
this.message = message; |
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
667 |
} |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
668 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
669 |
public FixedFacetToolTip(final Control control) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
670 |
super(control); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
671 |
setPopupDelay(0); |
465
87920e15f8eb
Added a way to contribute wizard pages for templates
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
463
diff
changeset
|
672 |
setShift(new Point(10, 3)); |
463
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
673 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
674 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
675 |
public void show(final Point location) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
676 |
// The JFace ToolTip class does not support alternative methods of tool tip activation. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
677 |
// An enhancement request https://bugs.eclipse.org/bugs/show_bug.cgi?id=174844 tracks |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
678 |
// this issue. When that enhancement request has been resolved, this hacky |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
679 |
// implementation should be replaced with something more sensible. |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
680 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
681 |
final Event fakeEvent = new Event(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
682 |
fakeEvent.type = FAKE_EVENT_TYPE; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
683 |
fakeEvent.x = location.x; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
684 |
fakeEvent.y = location.y; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
685 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
686 |
try { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
687 |
final Method method = ToolTip.class.getDeclaredMethod("toolTipCreate", Event.class); //$NON-NLS-1$ |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
688 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
689 |
method.setAccessible(true); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
690 |
method.invoke(this, fakeEvent); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
691 |
} catch (Exception e) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
692 |
TMWCore.log(null, e); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
693 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
694 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
695 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
696 |
@Override |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
697 |
protected final boolean shouldCreateToolTip(final Event event) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
698 |
return (event.type == FAKE_EVENT_TYPE); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
699 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
700 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
701 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
702 |
private final class ProblemsContentProvider implements IStructuredContentProvider { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
703 |
public Object[] getElements(final Object element) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
704 |
return getFilteredProblems(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
705 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
706 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
707 |
public void inputChanged(final Viewer viewer, final Object oldObject, final Object newObject) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
708 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
709 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
710 |
public void dispose() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
711 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
712 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
713 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
714 |
private final class ProblemsLabelProvider implements ITableLabelProvider { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
715 |
public String getColumnText(final Object element, final int column) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
716 |
return ((IStatus) element).getMessage(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
717 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
718 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
719 |
public Image getColumnImage(final Object element, final int column) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
720 |
final ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages(); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
721 |
final String imageType; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
722 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
723 |
if (((IStatus) element).getSeverity() == IStatus.ERROR) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
724 |
imageType = ISharedImages.IMG_OBJS_ERROR_TSK; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
725 |
} else { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
726 |
imageType = ISharedImages.IMG_OBJS_WARN_TSK; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
727 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
728 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
729 |
return sharedImages.getImage(imageType); |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
730 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
731 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
732 |
public boolean isLabelProperty(final Object obj, final String s) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
733 |
return false; |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
734 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
735 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
736 |
public void dispose() { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
737 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
738 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
739 |
public void addListener(final ILabelProviderListener listener) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
740 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
741 |
|
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
742 |
public void removeListener(ILabelProviderListener listener) { |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
743 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
744 |
} |
aea4c83725d8
Project template work-in-progress
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff
changeset
|
745 |
} |