Copyright (c) 2016, 2017 SSI Schaefer IT Solutions GmbH and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
SSI Schaefer IT Solutions GmbH
Axel Richard (Obeo) - Bug 41353 - Launch configurations prototypes
/*******************************************************************************
* Copyright (c) 2016, 2017 SSI Schaefer IT Solutions GmbH and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* SSI Schaefer IT Solutions GmbH
* Axel Richard (Obeo) - Bug 41353 - Launch configurations prototypes
*******************************************************************************/
package org.eclipse.debug.internal.core.groups;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationListener;
import org.eclipse.debug.core.ILaunchConfigurationType;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
Manages renames of launch configurations that are members of group launches
Since: 3.11
/**
* Manages renames of launch configurations that are members of group launches
*
* @since 3.11
*/
public class GroupMemberChangeListener implements ILaunchConfigurationListener {
private static final String GROUP_TYPE_ID = "org.eclipse.debug.core.groups.GroupLaunchConfigurationType"; //$NON-NLS-1$
@Override
public void launchConfigurationAdded(ILaunchConfiguration configuration) {
ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfiguration original = launchManager.getMovedFrom(configuration);
if (original != null) {
ILaunchConfigurationType type = launchManager.getLaunchConfigurationType(GROUP_TYPE_ID);
if (type == null) {
DebugPlugin.logMessage("cannot find group launch configuration type", null); //$NON-NLS-1$
return;
}
try {
for (ILaunchConfiguration c : DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurations(type, ILaunchConfiguration.CONFIGURATION | ILaunchConfiguration.PROTOTYPE)) {
List<GroupLaunchElement> elements = GroupLaunchConfigurationDelegate.createLaunchElements(c);
boolean updated = false;
for (GroupLaunchElement e : elements) {
if (e.name.equals(original.getName())) {
updated = true;
e.name = configuration.getName();
}
}
if (updated) {
ILaunchConfigurationWorkingCopy workingCopy = c.getWorkingCopy();
GroupLaunchConfigurationDelegate.storeLaunchElements(workingCopy, elements);
workingCopy.doSave();
}
}
} catch (CoreException e) {
DebugPlugin.log(e);
}
}
}
@Override
public void launchConfigurationChanged(ILaunchConfiguration configuration) {
}
@Override
public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
}
}