blob: ae0e15be82c7b0b3908f3f8fa567be5f1aa6e4c8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 Chase Technology Ltd - http://www.chasetechnology.co.uk
* 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:
* Doug Satchwell (Chase Technology Ltd) - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xsl.internal.debug.ui.tabs.main;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.variables.IStringVariableManager;
import org.eclipse.core.variables.VariablesPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.wst.xsl.internal.debug.ui.ResourceSelectionBlock;
import org.eclipse.wst.xsl.internal.debug.ui.XSLDebugUIPlugin;
import org.eclipse.wst.xsl.launching.XSLLaunchConfigurationConstants;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.content.IContentTypeManager;
import org.eclipse.core.runtime.content.IContentTypeMatcher;
public class InputFileBlock extends ResourceSelectionBlock
{
private final IFile defaultFile;
IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
public InputFileBlock(IFile defaultFile)
{
super(IResource.FILE, false);
this.defaultFile = defaultFile;
}
@Override
protected String[] getFileExtensions()
{
IContentType contentType = contentTypeManager.getContentType("org.eclipse.core.runtime.xml"); //$NON-NLS-1$
String[] xmlContentTypes = contentType.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
return xmlContentTypes;
}
public void setDefaults(ILaunchConfigurationWorkingCopy configuration)
{
String path = ""; //$NON-NLS-1$
if (defaultFile != null)
path = VariablesPlugin.getDefault().getStringVariableManager().generateVariableExpression("workspace_loc", defaultFile.getFullPath().toPortableString()); //$NON-NLS-1$
configuration.setAttribute(XSLLaunchConfigurationConstants.ATTR_INPUT_FILE, path);
}
public void initializeFrom(ILaunchConfiguration configuration)
{
setLaunchConfiguration(configuration);
try
{
String wd = configuration.getAttribute(XSLLaunchConfigurationConstants.ATTR_INPUT_FILE, (String) null);
if (wd != null)
{
setText(wd);
}
}
catch (CoreException e)
{
setErrorMessage(MainTabMessages.InputFileBlock_Exception_occurred_reading_configuration + e.getStatus().getMessage());
XSLDebugUIPlugin.log(e);
}
}
public void performApply(ILaunchConfigurationWorkingCopy configuration)
{
configuration.setAttribute(XSLLaunchConfigurationConstants.ATTR_INPUT_FILE, getText());
}
public String getName()
{
return MainTabMessages.InputFileBlock_Name;
}
@Override
protected void setDefaultResource()
{
}
@Override
protected void textModified()
{
IPath path = null;
String workingDirPath = getText();
if (workingDirPath.indexOf("${") >= 0) //$NON-NLS-1$
{
IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager();
try
{
manager.validateStringVariables(workingDirPath);
path = new Path(manager.performStringSubstitution(workingDirPath));
}
catch (CoreException e)
{
}
}
else if (workingDirPath.length() > 0)
{
path = new Path(workingDirPath);
}
}
@Override
protected String getMessage(int type)
{
switch (type)
{
case ERROR_DIRECTORY_NOT_SPECIFIED:
return MainTabMessages.InputFileBlock_DIRECTORY_NOT_SPECIFIED;
case ERROR_DIRECTORY_DOES_NOT_EXIST:
return MainTabMessages.InputFileBlock_DIRECTORY_DOES_NOT_EXIST;
case GROUP_NAME:
return MainTabMessages.InputFileBlock_GROUP_NAME;
case USE_DEFAULT_RADIO:
return MainTabMessages.InputFileBlock_DEFAULT_RADIO;
case USE_OTHER_RADIO:
return MainTabMessages.InputFileBlock_OTHER_RADIO;
case DIRECTORY_DIALOG_MESSAGE:
return MainTabMessages.InputFileBlock_DIALOG_MESSAGE;
case WORKSPACE_DIALOG_MESSAGE:
return MainTabMessages.InputFileBlock_WORKSPACE_DIALOG_MESSAGE;
case VARIABLES_BUTTON:
return MainTabMessages.InputFileBlock_VARIABLES_BUTTON;
case FILE_SYSTEM_BUTTON:
return MainTabMessages.InputFileBlock_FILE_SYSTEM_BUTTON;
case WORKSPACE_BUTTON:
return MainTabMessages.InputFileBlock_WORKSPACE_BUTTON;
case WORKSPACE_DIALOG_TITLE:
return MainTabMessages.InputFileBlock_WORKSPACE_DIALOG_TITLE;
}
return "" + type; //$NON-NLS-1$
}
@Override
protected void updateResourceText(boolean useDefault)
{
}
}