X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java index 7785377..8fffaec 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizardPage.java @@ -1,24 +1,27 @@ package net.sourceforge.phpeclipse.wizards; /********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html + Copyright (c) 2000, 2002 IBM Corp. and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Common Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/cpl-v10.html -Contributors: - IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de -**********************************************************************/ + Contributors: + IBM Corporation - Initial implementation + www.phpeclipse.de + **********************************************************************/ + +import net.sourceforge.phpdt.core.ICompilationUnit; +import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility; import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.IDialogPage; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardPage; @@ -36,19 +39,23 @@ import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.ContainerSelectionDialog; /** - * The "New" wizard page allows setting the container for - * the new file as well as the file name. The page - * will only accept file name without the extension OR - * with the extension that matches the expected one (cs). + * The "New" wizard page allows setting the container for the new file as well + * as the file name. The page will only accept file name without the extension + * OR with the extension that matches the expected one (cs). */ public class PHPFileWizardPage extends WizardPage { + private static final String INITIAL_FILENAME = "file.php"; + private Text containerText; + private Text fileText; + private ISelection selection; /** * Constructor for SampleNewWizardPage. + * * @param pageName */ public PHPFileWizardPage(ISelection selection) { @@ -101,54 +108,53 @@ public class PHPFileWizardPage extends WizardPage { dialogChanged(); setControl(container); } - + /** - * Tests if the current workbench selection is a suitable - * container to use. + * Tests if the current workbench selection is a suitable container to use. */ - + private void initialize() { - if (selection!=null && selection.isEmpty()==false && selection instanceof IStructuredSelection) { - IStructuredSelection ssel = (IStructuredSelection)selection; - if (ssel.size()>1) return; + if (selection != null && selection.isEmpty() == false && selection instanceof IStructuredSelection) { + IStructuredSelection ssel = (IStructuredSelection) selection; + if (ssel.size() > 1) + return; Object obj = ssel.getFirstElement(); if (obj instanceof IResource) { IContainer container; if (obj instanceof IContainer) - container = (IContainer)obj; + container = (IContainer) obj; else - container = ((IResource)obj).getParent(); + container = ((IResource) obj).getParent(); containerText.setText(container.getFullPath().toString()); + fileText.setFocus(); } } - fileText.setText("index.php"); + fileText.setText(INITIAL_FILENAME); } - + /** - * Uses the standard container selection dialog to - * choose the new value for the container field. + * Uses the standard container selection dialog to choose the new value for + * the container field. */ private void handleBrowse() { - ContainerSelectionDialog dialog = - new ContainerSelectionDialog( - getShell(), - ResourcesPlugin.getWorkspace().getRoot(), - false, + ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(), ResourcesPlugin.getWorkspace().getRoot(), false, PHPWizardMessages.getString("WizardPage.selectNewFileContainer")); if (dialog.open() == ContainerSelectionDialog.OK) { - Object[] result = dialog.getResult(); - if (result.length == 1) { - IContainer container = (IContainer) result[0]; - containerText.setText(container.getFullPath().toString()); + Object[] results = dialog.getResult(); + if (results.length == 1) { + Object result = results[0]; + if (result instanceof IPath) { + IPath ipath = (IPath) result; + containerText.setText(ipath.toString()); + } } } } - + /** * Ensures that both text fields are set. */ - private void dialogChanged() { String container = getContainerName(); String fileName = getFileName(); @@ -161,14 +167,7 @@ public class PHPFileWizardPage extends WizardPage { updateStatus("WizardPage.nameMustBeSpecified"); return; } - int dotLoc = fileName.indexOf('.'); - if (dotLoc != -1) { - String ext = fileName.substring(dotLoc + 1); - if (ext.equalsIgnoreCase("php") == false) { - updateStatus(PHPWizardMessages.getString("WizardPage.mustBePHP")); - return; - } - } + updateStatus(null); } @@ -180,10 +179,11 @@ public class PHPFileWizardPage extends WizardPage { public String getContainerName() { return containerText.getText(); } + public String getFileName() { return fileText.getText(); } - + /** * @see WizardPage#isPageComplete() */ @@ -195,36 +195,48 @@ public class PHPFileWizardPage extends WizardPage { * Finds the current directory where the file should be created */ protected boolean checkFolderForExistingFile() { - boolean result = false; - + IContainer container = getFileContainer(); + if (container != null) { + IResource file = container.getFile(new Path(fileText.getText().trim())); + if (file != null && file.exists()) { + this.setErrorMessage(PHPWizardMessages.getString("WizardPage.fileAlreadyExists")); + return true; + } + + ((PHPFileWizard) this.getWizard()).setFileName(fileText.getText().trim()); + } + return false; + } + + private IContainer getFileContainer() { if (containerText.getText() != null) { - IPath containerPath = new Path(containerText.getText().trim()); + IPath containerPath = new Path(containerText.getText().trim()); + IContainer container = null; if (containerPath.segmentCount() > 1) { - IFolder container = ResourcesPlugin.getWorkspace().getRoot().getFolder(containerPath); - if (container != null && container.exists()) { - IResource file = container.getFile(fileText.getText().trim()); - if (file != null && file.exists()) { - this.setErrorMessage(PHPWizardMessages.getString("WizardPage.fileAlreadyExists")); - result = true; - } - } + container = ResourcesPlugin.getWorkspace().getRoot().getFolder(containerPath); } else { - // this is a project - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(containerText.getText().trim()); - if (project != null && project.exists()) { - IResource file = project.getFile(fileText.getText().trim()); - if (file != null && file.exists()) { - this.setErrorMessage(PHPWizardMessages.getString("WizardPage.fileAlreadyExists")); - result = true; - } + if (containerPath.segmentCount() == 1) { + // this is a project + container = ResourcesPlugin.getWorkspace().getRoot().getProject(containerText.getText().trim()); } } + if (container != null && container.exists()) { + return container; + } + } + return null; + } + + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + String fileName = fileText.getText().trim(); + if (getFileContainer() != null && fileName.equalsIgnoreCase(INITIAL_FILENAME)) { + fileText.setFocus(); + fileText.setText(fileName); + fileText.setSelection(0, fileName.length() - (new Path(INITIAL_FILENAME)).getFileExtension().length() - 1); + } } - - if (!result) - ((PHPFileWizard) this.getWizard()).setFileName(fileText.getText().trim()); - - return result; } } \ No newline at end of file