| /******************************************************************************* |
| * Copyright (c) 2001, 2004 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.wsdl.ui.internal.wizards; |
| |
| import org.eclipse.core.resources.IContainer; |
| 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.viewers.IStructuredSelection; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.ui.dialogs.WizardNewFileCreationPage; |
| import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin; |
| |
| public class WSDLNewFilePage extends WizardNewFileCreationPage |
| { |
| public WSDLNewFilePage(IStructuredSelection selection) |
| { |
| super(WSDLEditorPlugin.getWSDLString("_UI_TITLE_NEW_WSDL_FILE"), selection); //$NON-NLS-1$ |
| setTitle(WSDLEditorPlugin.getWSDLString("_UI_TITLE_NEW_WSDL_FILE")); //$NON-NLS-1$ |
| setDescription(WSDLEditorPlugin.getWSDLString("_UI_LABEL_CREATE_NEW_WSDL_FILE")); //$NON-NLS-1$ |
| } |
| |
| public void createControl(Composite parent) |
| { |
| // inherit default container and name specification widgets |
| super.createControl(parent); |
| this.setFileName(computeDefaultFileName()); |
| |
| setPageComplete(validatePage()); |
| } |
| |
| protected boolean validatePage() |
| { |
| Path newName = new Path(getFileName()); |
| String fullFileName = getFileName(); |
| String extension = newName.getFileExtension(); |
| if (extension == null || !extension.equalsIgnoreCase("wsdl")) //$NON-NLS-1$ |
| { |
| setErrorMessage(WSDLEditorPlugin.getWSDLString("_UI_ERROR_FILE_MUST_END_WITH_WSDL")); //$NON-NLS-1$ |
| return false; |
| } |
| else |
| { |
| setErrorMessage(null); |
| } |
| |
| // check for file should be case insensitive |
| String sameName = existsFileAnyCase(fullFileName); |
| if (sameName != null) |
| { |
| // String qualifiedFileName = getContainerFullPath().toString() + '/' + fullFileName; |
| setErrorMessage(WSDLEditorPlugin.getWSDLString("_UI_ERROR_FILE_ALREADY_EXISTS", sameName)); //$NON-NLS-1$ |
| return false; |
| } |
| |
| |
| return super.validatePage(); |
| } |
| |
| public String defaultName = "NewWSDLFile"; //$NON-NLS-1$ |
| public String defaultFileExtension = ".wsdl"; //$NON-NLS-1$ |
| public String[] filterExtensions = { "*.wsdl"}; //$NON-NLS-1$ |
| |
| |
| protected String computeDefaultFileName() |
| { |
| int count = 0; |
| String fileName = defaultName + defaultFileExtension; |
| IPath containerFullPath = getContainerFullPath(); |
| if (containerFullPath != null) |
| { |
| while (true) |
| { |
| IPath path = containerFullPath.append(fileName); |
| // if (WorkbenchUtility.getWorkspace().getRoot().exists(path)) |
| if (ResourcesPlugin.getWorkspace().getRoot().exists(path)) |
| { |
| count++; |
| fileName = defaultName + count + defaultFileExtension; |
| } |
| else |
| { |
| break; |
| } |
| } |
| } |
| return fileName; |
| } |
| |
| // returns true if file of specified name exists in any case for selected container |
| protected String existsFileAnyCase(String fileName) |
| { |
| if ( (getContainerFullPath() != null) && (getContainerFullPath().isEmpty() == false) |
| && (fileName.compareTo("") != 0)) |
| { |
| //look through all resources at the specified container - compare in upper case |
| IResource parent = ResourcesPlugin.getWorkspace().getRoot().findMember(getContainerFullPath()); |
| if (parent instanceof IContainer) |
| { |
| IContainer container = (IContainer) parent; |
| try |
| { |
| IResource[] members = container.members(); |
| String enteredFileUpper = fileName.toUpperCase(); |
| for (int i=0; i<members.length; i++) |
| { |
| String resourceUpperName = members[i].getName().toUpperCase(); |
| if (resourceUpperName.equals(enteredFileUpper)) |
| { |
| return members[i].getName(); |
| } |
| } |
| } |
| catch (CoreException e) |
| { |
| } |
| } |
| } |
| return null; |
| } |
| |
| } |