* Returns existing or new launch configuration for given GWT module file.
*/
private ILaunchConfiguration getExistingOrNewConfiguration(ModuleDescription module)
throws CoreException {
// prepare launch parameters
ILaunchManager launchManager = getLaunchManager();
ILaunchConfigurationType configurationType = getConfigurationType();
// prepare module parameters
IProject project = module.getProject();
String moduleId = module.getId();
String moduleName = module.getSimpleName();
// try to find existing launch configuration for current module
{
// prepare list of candidates
List<ILaunchConfiguration> candidateConfigurations;
{
candidateConfigurations = new ArrayList<ILaunchConfiguration>();
ILaunchConfiguration[] launchConfigurations =
launchManager.getLaunchConfigurations(configurationType);
for (int i = 0; i < launchConfigurations.length; i++) {
ILaunchConfiguration configuration = launchConfigurations[i];
if (configuration.getAttribute(Constants.LAUNCH_ATTR_MODULE, "").equals(moduleId)) {
if (configuration.getAttribute(Constants.LAUNCH_ATTR_PROJECT, "").equals(
project.getName())) {
candidateConfigurations.add(configuration);
}
}
}
}
// use only one configuration or prompt user to choose one
int candidateCount = candidateConfigurations.size();
if (candidateCount == 1) {
return candidateConfigurations.get(0);
}
if (candidateCount > 1) {
return chooseConfiguration(candidateConfigurations);
}
}
// create new configuration
{
// create working copy
ILaunchConfigurationWorkingCopy wc;
{
String configurationName =
launchManager.generateUniqueLaunchConfigurationNameFrom(moduleName);
wc = configurationType.newInstance(null, configurationName);
wc.setAttribute(Constants.LAUNCH_ATTR_PROJECT, project.getName());
wc.setAttribute(Constants.LAUNCH_ATTR_MODULE, moduleId);
wc.setAttribute(Constants.LAUNCH_ATTR_LOG_LEVEL, "INFO");
wc.setAttribute(Constants.LAUNCH_ATTR_DIR_WAR, WebUtils.getWebFolderName(project));