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 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.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;
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) {
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.
*/
updateStatus("WizardPage.nameMustBeSpecified");
return;
}
- int dotLoc = fileName.lastIndexOf('.');
- if (dotLoc != -1) {
- String ext = fileName.substring(dotLoc + 1);
- if (ext.equalsIgnoreCase("php") == false) {
- updateStatus(PHPWizardMessages.getString("WizardPage.mustBePHP"));
- return;
- }
- }
+
updateStatus(null);
}
public String getContainerName() {
return containerText.getText();
}
+
public String getFileName() {
return fileText.getText();
}
-
+
/**
* @see WizardPage#isPageComplete()
*/
* 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;
+ }
+ }
+ 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