| /******************************************************************************* |
| * Copyright (c) 2002-2005 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 - Initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.wsi.ui.internal.wizards; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| 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.wsi.ui.internal.WSIUIPlugin; |
| |
| /** |
| * Wizard page that allows the user to specify the location of the |
| * WS-I Message Log file for purposes of validation. |
| * |
| * @author David Lauzon, IBM |
| */ |
| |
| public class ValidationWizardLogPage extends WizardNewFileCreationPage |
| { |
| /** |
| * Recommended extension for a WS-I Message Log file. |
| */ |
| public static final String WSI_LOG_EXTENSION = "wsimsg"; |
| |
| /** |
| * Default WS-I Message filename passed in the Constructor. |
| */ |
| protected String filename; |
| |
| /** |
| * Constructor. |
| * |
| * @param selection: selection in the Resource Navigator view. |
| * @param filename: default message log file name. |
| */ |
| public ValidationWizardLogPage(IStructuredSelection selection, String filename) |
| { |
| super("ValidationWizardLogPage", selection); |
| this.filename = filename; |
| this.setTitle(WSIUIPlugin.getResourceString("_UI_WIZARD_V_SELECT_LOG_FILENAME_HEADING")); |
| this.setDescription(WSIUIPlugin.getResourceString("_UI_WIZARD_V_SELECT_LOG_FILENAME_EXPL")); |
| } |
| |
| |
| /** |
| * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) |
| */ |
| public void createControl(Composite parent) |
| { |
| super.createControl(parent); |
| super.setFileName(filename); |
| setPageComplete(validatePage()); |
| } |
| |
| /** |
| * Returns the current selected file. |
| * |
| * @return the selected IFile. |
| */ |
| public IFile getFile() |
| { |
| String fileName = getFileName(); |
| String fileExtension = (new Path(fileName)).getFileExtension(); |
| |
| if (fileExtension == null) |
| fileName = fileName.concat("." + WSI_LOG_EXTENSION); |
| |
| return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(fileName)); |
| } |
| |
| /** |
| * Returns true if selected file is a valid WS-I Message Log filename. |
| * |
| * Since the WizardNewFileCreationPage does not provide an interface to |
| * allow the file specified to already exist (it gives an error that the |
| * the file already exists, an no way of allowing it to pass), and we want |
| * to allow the file to exist, so that we can overwrite it, we have to |
| * override this method, and do some magic to allow this case to pass. |
| * |
| * @return true if selected file is a valid WS-I Message Log filename. |
| * @see org.eclipse.ui.dialogs.WizardNewFileCreationPage#validatePage() |
| */ |
| protected boolean validatePage() |
| { |
| String fileExtension = (new Path(getFileName())).getFileExtension(); |
| if (fileExtension != null) |
| { |
| if (fileExtension.compareTo(WSI_LOG_EXTENSION) != 0) |
| { |
| setErrorMessage(WSIUIPlugin.getResourceString("_ERROR_INVALID_LOG_FILE_EXTENSION")); |
| return false; |
| } |
| } |
| |
| // Essentially, we take the container and concat the file to it, and |
| // check if its in the workspace, if it is, then it exists and we can |
| // proceed. Otherwise, continue with the default validating. |
| if ( (getContainerFullPath() != null) && (getContainerFullPath().isEmpty() == false) |
| && (getFileName().compareTo("") != 0)) |
| { |
| Path fullPath; |
| |
| if (fileExtension != null) |
| fullPath = new Path(getContainerFullPath().toString() + '/' + getFileName()); |
| else |
| fullPath = new Path(getContainerFullPath().toString() + '/' + getFileName() + "." + WSI_LOG_EXTENSION); |
| |
| IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(fullPath); |
| |
| setErrorMessage(null); |
| if (resource != null) |
| setMessage(WSIUIPlugin.getResourceString("_WARNING_FILE_ALREADY_EXISTS")); |
| else |
| setMessage(null); |
| |
| return true; |
| } |
| return super.validatePage(); |
| } |
| } |
| |