blob: e92c4f336a416aa999d949051b1bec56057e5f81 [file] [log] [blame]
/*******************************************************************************
* 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();
}
}