16 */ |
16 */ |
17 |
17 |
18 package com.nokia.carbide.cpp.sdk.ui.shared; |
18 package com.nokia.carbide.cpp.sdk.ui.shared; |
19 |
19 |
20 import java.text.MessageFormat; |
20 import java.text.MessageFormat; |
21 import java.util.*; |
21 import java.util.ArrayList; |
|
22 import java.util.Collections; |
22 import java.util.List; |
23 import java.util.List; |
|
24 import java.util.Map; |
23 |
25 |
24 import org.eclipse.core.runtime.IPath; |
26 import org.eclipse.core.runtime.IPath; |
25 import org.eclipse.core.runtime.Path; |
27 import org.eclipse.core.runtime.Path; |
26 import org.eclipse.jface.dialogs.DialogPage; |
28 import org.eclipse.jface.dialogs.DialogPage; |
27 import org.eclipse.jface.dialogs.IDialogPage; |
29 import org.eclipse.jface.dialogs.IDialogPage; |
28 import org.eclipse.jface.viewers.*; |
30 import org.eclipse.jface.viewers.CheckStateChangedEvent; |
|
31 import org.eclipse.jface.viewers.ICheckStateListener; |
|
32 import org.eclipse.jface.viewers.IFilter; |
|
33 import org.eclipse.jface.viewers.ITreeContentProvider; |
|
34 import org.eclipse.jface.viewers.LabelProvider; |
|
35 import org.eclipse.jface.viewers.TreeNode; |
|
36 import org.eclipse.jface.viewers.TreeNodeContentProvider; |
|
37 import org.eclipse.jface.viewers.Viewer; |
|
38 import org.eclipse.jface.window.Window; |
29 import org.eclipse.jface.wizard.WizardPage; |
39 import org.eclipse.jface.wizard.WizardPage; |
30 import org.eclipse.swt.SWT; |
40 import org.eclipse.swt.SWT; |
31 import org.eclipse.swt.events.SelectionAdapter; |
41 import org.eclipse.swt.events.SelectionAdapter; |
32 import org.eclipse.swt.events.SelectionEvent; |
42 import org.eclipse.swt.events.SelectionEvent; |
33 import org.eclipse.swt.graphics.Font; |
43 import org.eclipse.swt.graphics.Font; |
34 import org.eclipse.swt.layout.GridData; |
44 import org.eclipse.swt.layout.GridData; |
35 import org.eclipse.swt.layout.GridLayout; |
45 import org.eclipse.swt.layout.GridLayout; |
36 import org.eclipse.swt.widgets.*; |
46 import org.eclipse.swt.widgets.Button; |
|
47 import org.eclipse.swt.widgets.Composite; |
|
48 import org.eclipse.swt.widgets.Label; |
|
49 import org.eclipse.swt.widgets.Link; |
|
50 import org.eclipse.swt.widgets.TreeItem; |
37 import org.eclipse.ui.PlatformUI; |
51 import org.eclipse.ui.PlatformUI; |
38 import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer; |
52 import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer; |
|
53 import org.eclipse.ui.dialogs.PreferencesUtil; |
39 |
54 |
40 import com.nokia.carbide.cpp.internal.api.sdk.ui.TemplateUtils; |
55 import com.nokia.carbide.cpp.internal.api.sdk.ui.TemplateUtils; |
41 import com.nokia.carbide.cpp.internal.sdk.ui.Messages; |
56 import com.nokia.carbide.cpp.internal.sdk.ui.Messages; |
42 import com.nokia.carbide.cpp.internal.sdk.ui.SDKUIHelpIds; |
57 import com.nokia.carbide.cpp.internal.sdk.ui.SDKUIHelpIds; |
43 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; |
58 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; |
188 |
203 |
189 configLabel = new Label(parent, SWT.LEFT); |
204 configLabel = new Label(parent, SWT.LEFT); |
190 configLabel.setFont(font); |
205 configLabel.setFont(font); |
191 configLabel.setText(Messages.getString("BuildTargetsPage.BuildConfigsLabel")); //$NON-NLS-1$ |
206 configLabel.setText(Messages.getString("BuildTargetsPage.BuildConfigsLabel")); //$NON-NLS-1$ |
192 configLabel.setToolTipText(Messages.getString("BuildTargetsPage.BuildConfigsToolTip")); //$NON-NLS-1$ |
207 configLabel.setToolTipText(Messages.getString("BuildTargetsPage.BuildConfigsToolTip")); //$NON-NLS-1$ |
193 |
208 |
194 viewer = new ContainerCheckedTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); |
209 drawSDKConfigView(parent); |
195 viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); |
210 |
196 viewer.setLabelProvider(new LabelProvider()); |
211 filterCheckbox = new Button(parent, SWT.CHECK); |
|
212 filterCheckbox.setText(Messages |
|
213 .getString("BuildTargetsPage.FilterText")); //$NON-NLS-1$ |
|
214 filterCheckbox.setSelection(true); // default to checked |
|
215 if (hideFilterCheckbox) |
|
216 filterCheckbox.setVisible(false); |
|
217 else |
|
218 filteringContentProviderWrapper.setFilter(templateFilter); |
|
219 filterCheckbox.addSelectionListener(new SelectionAdapter() { |
|
220 public void widgetSelected(SelectionEvent e) { |
|
221 TemplateSDKFilter filter = filterCheckbox.getSelection() ? templateFilter |
|
222 : null; |
|
223 filteringContentProviderWrapper.setFilter(filter); |
|
224 viewer.refresh(); |
|
225 setPageComplete(validatePage()); |
|
226 } |
|
227 }); |
|
228 filterCheckbox.setData(UID, "filterCheckbox"); //$NON-NLS-1$ |
|
229 |
|
230 Link fLink = new Link(parent, SWT.WRAP); |
|
231 fLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
|
232 fLink.setText(Messages.getString("BuildTargetsPage.Select_Filtering_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ |
|
233 fLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1)); |
|
234 fLink.addSelectionListener(new SelectionAdapter() { |
|
235 public void widgetSelected(SelectionEvent e) { |
|
236 // I don't see a way to open it to a specific tab, only the page |
|
237 if (Window.OK == PreferencesUtil.createPreferenceDialogOn(getShell(), "com.nokia.carbide.cpp.sdk.ui.preferences.BuildPlatformFilterPage", null, null, 0).open()){ //$NON-NLS-1$ |
|
238 inited = false; |
|
239 setVisible(true); |
|
240 drawSDKConfigView(getControl().getParent()); |
|
241 TemplateSDKFilter filter = filterCheckbox.getSelection() ? templateFilter |
|
242 : null; |
|
243 filteringContentProviderWrapper.setFilter(filter); |
|
244 viewer.getTree().clearAll(true); |
|
245 viewer.refresh(); |
|
246 setPageComplete(validatePage()); |
|
247 } |
|
248 } |
|
249 |
|
250 }); |
|
251 |
|
252 addOtherControls(parent); |
|
253 |
|
254 setPageComplete(validatePage()); |
|
255 } |
|
256 |
|
257 private void drawSDKConfigView(Composite parent) { |
|
258 |
|
259 if (viewer == null){ |
|
260 viewer = new ContainerCheckedTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); |
|
261 viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); |
|
262 viewer.setLabelProvider(new LabelProvider()); |
|
263 } |
197 TreeNodeContentProvider treeNodeContentProvider = new TreeNodeContentProvider(); |
264 TreeNodeContentProvider treeNodeContentProvider = new TreeNodeContentProvider(); |
198 filteringContentProviderWrapper = |
265 filteringContentProviderWrapper = |
199 new FilteringContentProviderWrapper(treeNodeContentProvider); |
266 new FilteringContentProviderWrapper(treeNodeContentProvider); |
200 viewer.setContentProvider(filteringContentProviderWrapper); |
267 viewer.setContentProvider(filteringContentProviderWrapper); |
201 viewer.addCheckStateListener(new ICheckStateListener() { |
268 viewer.addCheckStateListener(new ICheckStateListener() { |
204 } |
271 } |
205 }); |
272 }); |
206 viewer.getControl().setData(UID, "buildConfigsTree"); //$NON-NLS-1$ |
273 viewer.getControl().setData(UID, "buildConfigsTree"); //$NON-NLS-1$ |
207 viewer.getControl().setData("viewer", viewer); //$NON-NLS-1$ |
274 viewer.getControl().setData("viewer", viewer); //$NON-NLS-1$ |
208 |
275 |
209 filterCheckbox = new Button(parent, SWT.CHECK); |
|
210 filterCheckbox.setText(Messages.getString("BuildTargetsPage.FilterText")); //$NON-NLS-1$ |
|
211 filterCheckbox.setSelection(true); // default to checked |
|
212 if (hideFilterCheckbox) |
|
213 filterCheckbox.setVisible(false); |
|
214 else |
|
215 filteringContentProviderWrapper.setFilter(templateFilter); |
|
216 filterCheckbox.addSelectionListener(new SelectionAdapter() { |
|
217 public void widgetSelected(SelectionEvent e) { |
|
218 TemplateSDKFilter filter = filterCheckbox.getSelection() ? templateFilter : null; |
|
219 filteringContentProviderWrapper.setFilter(filter); |
|
220 viewer.refresh(); |
|
221 setPageComplete(validatePage()); |
|
222 } |
|
223 }); |
|
224 filterCheckbox.setData(UID, "filterCheckbox"); //$NON-NLS-1$ |
|
225 |
|
226 addOtherControls(parent); |
|
227 |
|
228 setPageComplete(validatePage()); |
|
229 } |
276 } |
230 |
277 |
231 /** |
278 /** |
232 * Add more controls after the tree and filter checkbox. Allows subclasses to add |
279 * Add more controls after the tree and filter checkbox. Allows subclasses to add |
233 * more controls. |
280 * more controls. |