core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetsPage.java
changeset 1270 ad41cb5ef65f
parent 610 bfb3ab3f70f2
child 1302 012040f34296
--- a/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetsPage.java	Fri Apr 23 09:37:47 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetsPage.java	Fri Apr 23 11:41:51 2010 -0500
@@ -18,14 +18,24 @@
 package com.nokia.carbide.cpp.sdk.ui.shared;
 
 import java.text.MessageFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.dialogs.DialogPage;
 import org.eclipse.jface.dialogs.IDialogPage;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.IFilter;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.jface.viewers.TreeNodeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -33,9 +43,14 @@
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.TreeItem;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
+import org.eclipse.ui.dialogs.PreferencesUtil;
 
 import com.nokia.carbide.cpp.internal.api.sdk.ui.TemplateUtils;
 import com.nokia.carbide.cpp.internal.sdk.ui.Messages;
@@ -192,20 +207,7 @@
 		configLabel.setText(Messages.getString("BuildTargetsPage.BuildConfigsLabel")); //$NON-NLS-1$
 		configLabel.setToolTipText(Messages.getString("BuildTargetsPage.BuildConfigsToolTip")); //$NON-NLS-1$
 		
-		viewer = new ContainerCheckedTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-		viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
-		viewer.setLabelProvider(new LabelProvider());
-		TreeNodeContentProvider treeNodeContentProvider = new TreeNodeContentProvider();
-		filteringContentProviderWrapper = 
-			new FilteringContentProviderWrapper(treeNodeContentProvider);
-		viewer.setContentProvider(filteringContentProviderWrapper);
-		viewer.addCheckStateListener(new ICheckStateListener() {
-			public void checkStateChanged(CheckStateChangedEvent event) {
-				setPageComplete(validatePage());
-			}
-		});
-		viewer.getControl().setData(UID, "buildConfigsTree"); //$NON-NLS-1$
-		viewer.getControl().setData("viewer", viewer); //$NON-NLS-1$
+        drawSDKConfigView(parent);
 		
         filterCheckbox = new Button(parent, SWT.CHECK);
         filterCheckbox.setText(Messages.getString("BuildTargetsPage.FilterText")); //$NON-NLS-1$
@@ -224,11 +226,54 @@
         });
 		filterCheckbox.setData(UID, "filterCheckbox"); //$NON-NLS-1$
 
+		Link fLink = new Link(parent, SWT.WRAP);
+		fLink.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		fLink.setText(Messages.getString("BuildTargetsPage.Select_Filtering_Prefs_Link")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		fLink.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
+		fLink.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				// I don't see a way to open it to a specific tab, only the page
+				if (Window.OK == PreferencesUtil.createPreferenceDialogOn(getShell(), "com.nokia.carbide.cpp.sdk.ui.preferences.BuildPlatformFilterPage", null, null, 0).open()){ //$NON-NLS-1$
+					inited = false;
+					setVisible(true);
+					drawSDKConfigView(getControl().getParent());
+					TemplateSDKFilter filter = filterCheckbox.getSelection() ? templateFilter
+							: null;
+					filteringContentProviderWrapper.setFilter(filter);
+					viewer.getTree().clearAll(true);
+					viewer.refresh();
+					setPageComplete(validatePage());
+				}
+			}
+
+		});
+		
 		addOtherControls(parent);
 		
 		setPageComplete(validatePage());
 	}
 	
+	private void drawSDKConfigView(Composite parent) {
+		
+		if (viewer == null){
+			viewer = new ContainerCheckedTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+			viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
+			viewer.setLabelProvider(new LabelProvider());
+		}
+		TreeNodeContentProvider treeNodeContentProvider = new TreeNodeContentProvider();
+		filteringContentProviderWrapper = 
+			new FilteringContentProviderWrapper(treeNodeContentProvider);
+		viewer.setContentProvider(filteringContentProviderWrapper);
+		viewer.addCheckStateListener(new ICheckStateListener() {
+			public void checkStateChanged(CheckStateChangedEvent event) {
+				setPageComplete(validatePage());
+			}
+		});
+		viewer.getControl().setData(UID, "buildConfigsTree"); //$NON-NLS-1$
+		viewer.getControl().setData("viewer", viewer); //$NON-NLS-1$
+		
+	}
+
 	/**
 	 * Add more controls after the tree and filter checkbox.  Allows subclasses to add
 	 * more controls.