1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Apply patch from 110423; add setSelectProjectType to se default project type in new project wizard

This commit is contained in:
Leo Treggiari 2005-11-24 00:31:47 +00:00
parent 4075cacd7d
commit bdd3de47b7
4 changed files with 180 additions and 2 deletions

View file

@ -0,0 +1,118 @@
/*******************************************************************************
* Copyright (c) 2005 Innoopract Informationssysteme GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Innoopract - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.ui.tests;
import junit.framework.TestCase;
import org.eclipse.cdt.managedbuilder.core.IProjectType;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.ui.wizards.CProjectPlatformPage;
import org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPageManager;
import org.eclipse.cdt.managedbuilder.ui.wizards.NewManagedProjectWizard;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
/**
* Tests for the get/setSelectedProjectType() of CProjectPlatformPage.
* @author Elias Volanakis
*/
public class TestCProjectPlatformPage extends TestCase {
private NewManagedProjectWizard wizard;
private TestPage page;
protected void setUp() throws Exception {
MBSCustomPageManager.init();
MBSCustomPageManager.loadExtensions();
wizard = new NewManagedProjectWizard();
page = new TestPage(wizard);
wizard.addPages();
}
protected void tearDown() throws Exception {
page.dispose();
page = null;
wizard = null;
}
// testing methods
//////////////////
/* Test the new page, set selection, create page lifecycle. */
public void testSelectedProjectType1() throws Exception {
page.createControl(getShell());
final IProjectType type2 = page.getSecondType();
TestPage page2 = new TestPage(wizard);
page2.setSelectedProjectType(type2);
page2.createControl(getShell());
assertEquals(type2, page2.getSelectedProjectType());
page2.dispose();
}
/* Test the new page, create page, set selection lifecycle. */
public void testSelectedProjectType2() throws Exception {
// test get null
assertNull(page.getSelectedProjectType());
// test set null
page.setSelectedProjectType(null);
assertNull(page.getSelectedProjectType()); // null, since no UI created
// create ui
page.createControl(getShell());
final IProjectType type1 = page.getFirstType();
// default behavior if selection set to null -> select first item
assertEquals(type1, page.getSelectedProjectType());
// set 2nd element from project types list
final IProjectType type2 = page.getSecondType();
assertNotNull(type2);
page.setSelectedProjectType(type2);
assertEquals(type2, page.getSelectedProjectType());
}
/*
* Tests that setting the selection to a projectType thats not on the list,
* is handled correctly.
*/
public void testSelectedProjectType3() throws Exception {
IProjectType testType = ManagedBuildManager.getProjectType("cdt.managedbuild.target.testgnu21.so");
assertNotNull(testType);
assertTrue(testType.isTestProjectType());
page.setSelectedProjectType(testType);
page.createControl(getShell());
// no selection made
assertNull(null,page.getSelectedProjectType());
assertFalse(page.canFlipToNextPage());
}
// helping methods and classes
//////////////////////////////
private Shell getShell() {
return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
class TestPage extends CProjectPlatformPage {
TestPage(NewManagedProjectWizard wizard) throws Exception {
super(TestCProjectPlatformPage.class.getName(), wizard);
}
IProjectType getFirstType() {
return (IProjectType) projectTypes.get(0);
}
IProjectType getSecondType() {
return (IProjectType) projectTypes.get(1);
}
}
}

View file

@ -11,6 +11,7 @@
package org.eclipse.cdt.managedbuilder.ui.tests.suite;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.managedbuilder.ui.tests.TestCProjectPlatformPage;
import org.eclipse.cdt.managedbuilder.ui.tests.TestCustomPageManager;
@ -31,6 +32,7 @@ public class AllManagedBuildUITests {
//$JUnit-BEGIN$
// TODO uncoment this
suite.addTest(TestCustomPageManager.suite());
suite.addTestSuite(TestCProjectPlatformPage.class);
//$JUnit-END$
return suite;

View file

@ -23,9 +23,12 @@ import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderHelpContextIds;
import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIMessages;
import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIPlugin;
import org.eclipse.cdt.ui.wizards.NewCProjectWizard;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@ -75,6 +78,7 @@ public class CProjectPlatformPage extends WizardPage {
protected NewManagedProjectWizard parentWizard;
protected Combo platformSelection;
private ArrayList selectedConfigurations;
private IProjectType defaultProjectType;
protected IProjectType selectedProjectType;
protected Button showAllProjTypes;
protected Button showAllConfigs;
@ -161,8 +165,10 @@ public class CProjectPlatformPage extends WizardPage {
// Select the first project type in the list
populateTypes();
platformSelection.select(0);
handleTypeSelection();
IProjectType type = (defaultProjectType != null)
? defaultProjectType
: (IProjectType) projectTypes.get(0);
setProjectType(type);
// Do the nasty
setErrorMessage(null);
@ -263,6 +269,41 @@ public class CProjectPlatformPage extends WizardPage {
public IProjectType getSelectedProjectType() {
return selectedProjectType;
}
/**
* Sets the selected project type.
* <p>If createControl(...) has been called, the selection will be set
* immediately. Otherwise the selection will be set during the
* createControl(...) invocation.
* </p>
* @param type a IProjectType instance, or <tt>null</tt> to select the
* the first available project type
* @see #createControl(Composite)
*/
public void setSelectedProjectType(IProjectType type) {
if (projectTypeNames != null && platformSelection != null) {
// set project type now
setProjectType(type);
} else {
// set project during createControl(Control)
defaultProjectType = type;
}
}
private void setProjectType(IProjectType type) {
String name = (type != null) ? type.getName() : projectTypeNames[0];
boolean found = false;
for (int i = 0; !found && i < projectTypeNames.length; i++) {
if (name.equals(projectTypeNames[i])) {
platformSelection.select(i);
handleTypeSelection();
found = true;
}
}
if (!found) {
log("Could not find project-type with name: " + name); //$NON-NLS-1$
}
}
private void handleConfigurationSelectionChange() {
// Get the selections from the table viewer
@ -491,4 +532,10 @@ public class CProjectPlatformPage extends WizardPage {
return false;
}
}
private void log(String msg) {
String id = ManagedBuilderUIPlugin.getUniqueIdentifier();
IStatus status = new Status(IStatus.WARNING, id, 0, msg, null);
ManagedBuilderUIPlugin.log(status);
}
}

View file

@ -259,4 +259,15 @@ public class NewManagedProjectWizard extends NewCProjectWizard {
public IConfiguration[] getSelectedConfigurations() {
return projectConfigurationPage.getSelectedConfigurations();
}
/**
* Sets the selected project type.
* <p>The addPages() method must have been invoked, before this method can
* be used.</p>
* @param type a IProjectType instance, or <tt>null</tt> to select the
* the first available project type
*/
public void setSelectedProjectType(IProjectType type) {
projectConfigurationPage.setSelectedProjectType(type);
}
}