diff -r f1112f777ce9 -r 96906a986c3b testdev/ite/src/com.nokia.testfw.codegen.ui/src/com/nokia/testfw/codegen/ui/wizard/ChooseProjectPage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testdev/ite/src/com.nokia.testfw.codegen.ui/src/com/nokia/testfw/codegen/ui/wizard/ChooseProjectPage.java Tue Mar 30 14:39:29 2010 +0800 @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * + */ +package com.nokia.testfw.codegen.ui.wizard; + +import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin; +import com.nokia.carbide.cdt.builder.ICarbideBuildManager; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.ui.model.WorkbenchLabelProvider; +import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.jface.dialogs.IPageChangingListener; +import org.eclipse.jface.dialogs.PageChangingEvent; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +import com.nokia.testfw.codegen.ui.Messages; + +public class ChooseProjectPage extends WizardPage implements + IPageChangingListener { + + private TableViewer iTableViewer; + private IStructuredSelection iSelection; + private ICarbideBuildManager iBuildManager; + private IProject iTargetProject; + + public ChooseProjectPage() { + super("ChooseProjectPage"); + setTitle(Messages.getString("ChooseProjectPage.Title")); + setDescription(Messages.getString("ChooseProjectPage.Description")); + iBuildManager = CarbideBuilderPlugin.getBuildManager(); + } + + public void createControl(Composite parent) { + initializeDialogUnits(parent); + Composite container = new Composite(parent, 0); + GridLayout gridLayout = new GridLayout(); + gridLayout.marginTop = 10; + gridLayout.marginRight = 10; + gridLayout.marginLeft = 10; + gridLayout.marginBottom = 10; + gridLayout.horizontalSpacing = 10; + container.setLayout(gridLayout); + Label selectAnExistingLabel = new Label(container, 0); + GridData gridData = new GridData(4, 2, true, false); + selectAnExistingLabel.setLayoutData(gridData); + selectAnExistingLabel.setText(Messages + .getString("ChooseProjectPage.Label")); + iTableViewer = new TableViewer(container, 2816); + iTableViewer.getTable().setLayoutData(new GridData(4, 4, true, true)); + iTableViewer.setContentProvider(new ArrayContentProvider()); + iTableViewer.setLabelProvider(new WorkbenchLabelProvider()); + iTableViewer.setInput(getEligibleProjects()); + iTableViewer + .addSelectionChangedListener(new ISelectionChangedListener() { + + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event + .getSelection(); + handleSelection(selection); + } + }); + setControl(container); + + iSelection = (IStructuredSelection) ((BasicNewResourceWizard) getWizard()) + .getSelection(); + iTableViewer.setSelection(iSelection); + handleSelection(iSelection); + + ((WizardDialog) getContainer()).addPageChangingListener(this); + } + + public IProject getTargetProject() { + return iTargetProject; + } + + private boolean isValid() { + return !iSelection.isEmpty(); + } + + protected void handleSelection(IStructuredSelection selection) { + iSelection = selection; + if (iTableViewer.getTable().getItemCount() == 0) { + setErrorMessage(Messages + .getString("ChooseProjectPage.NoProjectsError")); + } else { + if (iSelection.isEmpty()) { + setErrorMessage(Messages + .getString("ChooseProjectPage.NoSelectionError")); + } else { + iTargetProject = (IProject) iSelection.getFirstElement(); + setErrorMessage(null); + } + } + setPageComplete(isValid()); + } + + private IProject[] getEligibleProjects() { + List eligibleProjects = new ArrayList(); + IProject projects[] = ResourcesPlugin.getWorkspace().getRoot() + .getProjects(); + for (int i = 0; i < projects.length; i++) { + IProject project = projects[i]; + if (projectIsEligible(project)) + eligibleProjects.add(project); + } + + return (IProject[]) eligibleProjects + .toArray(new IProject[eligibleProjects.size()]); + } + + private boolean projectIsEligible(IProject project) { + return iBuildManager.isCarbideProject(project); + } + + public void handlePageChanging(PageChangingEvent event) { + if (event.getCurrentPage() instanceof ChooseProjectPage) { + if(iTargetProject!=null){ + ((AbstractTemplateWizard) getWizard()).setSelection(iSelection); + ((AbstractTemplateWizard) getWizard()) + .setTargetProject(iTargetProject); + ((AbstractTemplateWizard) getWizard()) + .setProjectLocation(iTargetProject.getLocation() + .toOSString()); + ((AbstractTemplateWizard) getWizard()).getDataMap().put( + AbstractTemplateWizard.PROJECT_NAME, + iTargetProject.getName()); + ((AbstractTemplateWizard) getWizard()).initPages(); + } + } + } +}