mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
better names for copied run configurations (IDEA-23836)
This commit is contained in:
committed by
Dmitry Jemerov
parent
cd9e11ea5c
commit
18875e5dc0
@@ -64,6 +64,8 @@ import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.net.URL;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class RunConfigurable extends BaseConfigurable {
|
||||
private static final Icon ICON = IconLoader.getIcon("/general/configurableRunDebug.png");
|
||||
@@ -646,8 +648,8 @@ class RunConfigurable extends BaseConfigurable {
|
||||
}
|
||||
}
|
||||
|
||||
private static String createUniqueName(DefaultMutableTreeNode typeNode) {
|
||||
String str = ExecutionBundle.message("run.configuration.unnamed.name.prefix");
|
||||
private static String createUniqueName(DefaultMutableTreeNode typeNode, @Nullable String baseName) {
|
||||
String str = (baseName == null) ? ExecutionBundle.message("run.configuration.unnamed.name.prefix") : baseName;
|
||||
final ArrayList<String> currentNames = new ArrayList<String>();
|
||||
for (int i = 0; i < typeNode.getChildCount(); i++) {
|
||||
final Object userObject = ((DefaultMutableTreeNode)typeNode.getChildAt(i)).getUserObject();
|
||||
@@ -659,9 +661,13 @@ class RunConfigurable extends BaseConfigurable {
|
||||
}
|
||||
}
|
||||
if (!currentNames.contains(str)) return str;
|
||||
|
||||
final Matcher matcher = Pattern.compile("(.*?)\\s*\\(\\d+\\)").matcher(str);
|
||||
final String originalName = (matcher.matches()) ? matcher.group(1) : str;
|
||||
int i = 1;
|
||||
while (true) {
|
||||
if (!currentNames.contains(str + i)) return str + i;
|
||||
final String newName = String.format("%s (%d)", originalName, i);
|
||||
if (!currentNames.contains(newName)) return newName;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -692,7 +698,7 @@ class RunConfigurable extends BaseConfigurable {
|
||||
sortTree(myRoot);
|
||||
((DefaultTreeModel)myTree.getModel()).reload();
|
||||
}
|
||||
final RunnerAndConfigurationSettings settings = getRunManager().createConfiguration(createUniqueName(node), factory);
|
||||
final RunnerAndConfigurationSettings settings = getRunManager().createConfiguration(createUniqueName(node, null), factory);
|
||||
if (factory instanceof ConfigurationFactoryEx) {
|
||||
((ConfigurationFactoryEx)factory).onNewConfigurationCreated(settings.getConfiguration());
|
||||
}
|
||||
@@ -901,7 +907,7 @@ class RunConfigurable extends BaseConfigurable {
|
||||
try {
|
||||
final DefaultMutableTreeNode typeNode = getSelectedConfigurationTypeNode();
|
||||
final RunnerAndConfigurationSettings settings = configuration.getSnapshot();
|
||||
final String copyName = createUniqueName(typeNode);
|
||||
final String copyName = createUniqueName(typeNode, configuration.getNameText());
|
||||
settings.setName(copyName);
|
||||
final ConfigurationFactory factory = settings.getFactory();
|
||||
if (factory instanceof ConfigurationFactoryEx) {
|
||||
|
||||
Reference in New Issue
Block a user