core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/sdk/ui/shared/BuildTargetsPage.java
branchRCL_2_4
changeset 1267 f47181a17fe4
parent 356 c9e7d55745c8
child 1298 8aac8dbed773
equal deleted inserted replaced
1258:33a822a05021 1267:f47181a17fe4
    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.