diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizardPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizardPage.java index bbcb466427c..62fe508686d 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizardPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/NewCProjectWizardPage.java @@ -4,34 +4,9 @@ package org.eclipse.cdt.ui.wizards; * (c) Copyright IBM Corp. 2000, 2001. * All Rights Reserved. */ - -import java.io.File; -import org.eclipse.cdt.ui.CUIPlugin; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.DirectoryDialog; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.help.WorkbenchHelp; -import org.eclipse.ui.internal.IHelpContextIds; +import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; /** * Standard main page for a wizard that is creates a project resource. @@ -47,243 +22,10 @@ import org.eclipse.ui.internal.IHelpContextIds; * *
*/ -public class NewCProjectWizardPage extends WizardPage { +public class NewCProjectWizardPage extends WizardNewProjectCreationPage { - protected boolean useDefaults = true; - - // initial value stores - private String initialProjectFieldValue; - private IPath initialLocationFieldValue; - - // widgets - private Text projectNameField; - protected Text locationPathField; - protected Label locationLabel; - protected Button browseButton; - - private Listener nameModifyListener = new Listener() { - public void handleEvent(Event e) { - setLocationForSelection(); - setPageComplete(validatePage()); - } - }; - - private Listener locationModifyListener = new Listener() { - public void handleEvent(Event e) { - setPageComplete(validatePage()); - } - }; - - // constants - private static final int SIZING_TEXT_FIELD_WIDTH = 250; - - /** (non-Javadoc) - * Method declared on IDialogPage. - */ - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NULL); - - WorkbenchHelp.setHelp(composite, IHelpContextIds.NEW_PROJECT_WIZARD_PAGE); - - composite.setLayout(new GridLayout()); - composite.setLayoutData(new GridData(GridData.FILL_BOTH)); - - createProjectNameGroup(composite); - createProjectLocationGroup(composite); - projectNameField.setFocus(); - validatePage(); - // Show description on opening - setErrorMessage(null); - setMessage(null); - setControl(composite); - } - - /** - * Creates the project location specification controls. - * - * @param parent the parent composite - */ - private final void createProjectLocationGroup(Composite parent) { - - // project specification group - Composite projectGroup = new Composite(parent,SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 3; - projectGroup.setLayout(layout); - projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - final Button useDefaultsButton = new Button(projectGroup, SWT.CHECK | SWT.RIGHT); - useDefaultsButton.setText(CUIPlugin.getResourceString("CProjectWizardPage.useDefaultLabel")); //$NON-NLS-1$ - useDefaultsButton.setSelection(this.useDefaults); - - GridData buttonData = new GridData(); - buttonData.horizontalSpan = 3; - useDefaultsButton.setLayoutData(buttonData); - - createUserSpecifiedProjectLocationGroup(projectGroup,!this.useDefaults); - - SelectionListener listener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - useDefaults = useDefaultsButton.getSelection(); - browseButton.setEnabled(!useDefaults); - locationPathField.setEnabled(!useDefaults); - locationLabel.setEnabled(!useDefaults); - setLocationForSelection(); - if (!useDefaults) - locationPathField.setText(""); //$NON-NLS-1$ - } - }; - useDefaultsButton.addSelectionListener(listener); - } - - /** - * Creates the project name specification controls. - * - * @param parent the parent composite - */ - private final void createProjectNameGroup(Composite parent) { - // project specification group - Composite projectGroup = new Composite(parent,SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - projectGroup.setLayout(layout); - projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - // new project label - Label projectLabel = new Label(projectGroup,SWT.NONE); - projectLabel.setText(CUIPlugin.getResourceString("CProjectWizardPage.nameLabel")); //$NON-NLS-1$ - - // new project name entry field - projectNameField = new Text(projectGroup, SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.widthHint = SIZING_TEXT_FIELD_WIDTH; - projectNameField.setLayoutData(data); - - // Set the initial value first before listener - // to avoid handling an event during the creation. - if (initialProjectFieldValue != null) - projectNameField.setText(initialProjectFieldValue); - projectNameField.addListener(SWT.Modify, nameModifyListener); - projectNameField.setVisible(true); - } - - /** - * Creates the project location specification controls. - * - * @param projectGroup the parent composite - * @param boolean - the initial enabled state of the widgets created - */ - private void createUserSpecifiedProjectLocationGroup(Composite projectGroup, boolean enabled) { - - // location label - locationLabel = new Label(projectGroup,SWT.NONE); - locationLabel.setText(CUIPlugin.getResourceString("CProjectWizardPage.locationLabel")); //$NON-NLS-1$ - locationLabel.setEnabled(enabled); - - // project location entry field - locationPathField = new Text(projectGroup, SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.widthHint = SIZING_TEXT_FIELD_WIDTH; - locationPathField.setLayoutData(data); - locationPathField.setEnabled(enabled); - - // browse button - browseButton = new Button(projectGroup, SWT.PUSH); - browseButton.setText(CUIPlugin.getResourceString("CProjectWizardPage.browseLabel")); //$NON-NLS-1$ - browseButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - handleLocationBrowseButtonPressed(); - } - }); - - browseButton.setEnabled(enabled); - - // Set the initial value first before listener - // to avoid handling an event during the creation. - if (initialLocationFieldValue != null) - locationPathField.setText(initialLocationFieldValue.toOSString()); - locationPathField.addListener(SWT.Modify, locationModifyListener); - } - - /** - * Returns the current project location path as entered by - * the user, or its anticipated initial value. - * - * @return the project location path, its anticipated initial value, ornull
- * if no project location path is known
- */
- public IPath getLocationPath() {
- if (useDefaults)
- return initialLocationFieldValue;
-
- return new Path(locationPathField.getText());
- }
-
- /**
- * Creates a project resource handle for the current project name field value.
- *
- * This method does not create the project resource; this is the responsibility
- * of IProject::create
invoked by the new project resource wizard.
- *
null
- * if no project name is known
- */
- public String getProjectName() {
- if (projectNameField == null)
- return initialProjectFieldValue;
-
- return projectNameField.getText();
- }
-
- /**
- * Open an appropriate directory browser
- */
- protected void handleLocationBrowseButtonPressed() {
- DirectoryDialog dialog = new DirectoryDialog(locationPathField.getShell());
- dialog.setMessage(CUIPlugin.getResourceString("CProjectWizardPage.directoryLabel")); //$NON-NLS-1$
-
- String dirName = locationPathField.getText();
- if (!dirName.equals("")) {//$NON-NLS-1$
- File path = new File(dirName);
- if (path.exists())
- dialog.setFilterPath(dirName);
- }
-
- String selectedDirectory = dialog.open();
- if (selectedDirectory != null)
- locationPathField.setText(selectedDirectory);
- }
-
- /**
- * Creates a new project creation wizard page.
- *
- * @param pageName the name of this page
- */
public NewCProjectWizardPage(String pageName) {
super(pageName);
- setPageComplete(false);
- this.initialLocationFieldValue = Platform.getLocation();
- }
-
- /**
- * Set the location to the default location if we are set to useDefaults.
- */
- protected void setLocationForSelection() {
- if (useDefaults) {
- IPath defaultPath = Platform.getLocation().append(projectNameField.getText());
- locationPathField.setText(defaultPath.toOSString());
- }
}
/**
@@ -294,57 +36,23 @@ public class NewCProjectWizardPage extends WizardPage {
* false
if at least one is invalid
*/
protected boolean validatePage() {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ if (super.validatePage() == true) {
- String projectFieldContents = projectNameField.getText();
- if (projectFieldContents.equals("")) { //$NON-NLS-1$
- setErrorMessage(null);
- setMessage(CUIPlugin.getResourceString("CProjectWizardPage.projectNameEmpty")); //$NON-NLS-1$
- return false;
- }
-
- // Give a chance to the wizard to do its own validation
- IStatus validName = ((NewCProjectWizard)getWizard()).isValidName(projectFieldContents);
- if (!validName.isOK()) {
- setErrorMessage(validName.getMessage());
- return false;
- }
-
- IStatus nameStatus =
- workspace.validateName(projectFieldContents, IResource.PROJECT);
- if (!nameStatus.isOK()) {
- setErrorMessage(nameStatus.getMessage());
- return false;
- }
-
- String locationFieldContents = locationPathField.getText();
-
- if (!locationFieldContents.equals("")) {//$NON-NLS-1$
// Give a chance to the wizard to do its own validation
- IStatus validLocation = ((NewCProjectWizard)getWizard()).isValidLocation(projectFieldContents);
+ IStatus validName = ((NewCProjectWizard) getWizard()).isValidName(getProjectName());
+ if (!validName.isOK()) {
+ setErrorMessage(validName.getMessage());
+ return false;
+ }
+
+ // Give a chance to the wizard to do its own validation
+ IStatus validLocation = ((NewCProjectWizard) getWizard()).isValidLocation(getLocationPath().toOSString());
if (!validLocation.isOK()) {
setErrorMessage(validLocation.getMessage());
- return false;
- }
-
- IPath path = new Path("");//$NON-NLS-1$
- if (!path.isValidPath(locationFieldContents)) {
- setErrorMessage(CUIPlugin.getResourceString("CProjectWizardPage.locationError")); //$NON-NLS-1$
- return false;
- }
- if (!useDefaults && Platform.getLocation().isPrefixOf(new Path(locationFieldContents))) {
- setErrorMessage(CUIPlugin.getResourceString("CProjectWizardPage.defaultLocationError")); //$NON-NLS-1$
return false;
}
+ return true;
}
-
- if (getProjectHandle().exists()) {
- setErrorMessage(CUIPlugin.getResourceString("CProjectWizardPage.projectExistsMessage")); //$NON-NLS-1$
- return false;
- }
-
- setErrorMessage(null);
- setMessage(null);
- return true;
+ return false;
}
}