diff --git a/platform/lang-impl/src/com/intellij/util/TextFieldCompletionProvider.java b/platform/lang-impl/src/com/intellij/util/TextFieldCompletionProvider.java
index 74e55e234807..5cd27a8189e4 100644
--- a/platform/lang-impl/src/com/intellij/util/TextFieldCompletionProvider.java
+++ b/platform/lang-impl/src/com/intellij/util/TextFieldCompletionProvider.java
@@ -46,4 +46,8 @@ public abstract class TextFieldCompletionProvider {
}
protected abstract void addCompletionVariants(@NotNull String text, int offset, @NotNull String prefix, @NotNull CompletionResultSet result);
+
+ public EditorTextField createEditor(Project project) {
+ return new EditorTextField(createDocument(project), project, PlainTextLanguage.INSTANCE.getAssociatedFileType());
+ }
}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.form b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.form
index 9049fa8c69f5..3c19d370efe7 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.form
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.form
@@ -61,14 +61,6 @@
-
-
-
-
-
-
-
-
@@ -83,6 +75,12 @@
+
+
+
+
+
+
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java
index eb10523504f7..b8e2a57df1fd 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java
@@ -44,7 +44,7 @@ public class MvcRunTargetDialog extends DialogWrapper {
private JPanel contentPane;
private JLabel myTargetLabel;
private JPanel myFakePanel;
- private JTextField myVmOptionsField;
+ private EditorTextField myVmOptionsField;
private JComboBox myModuleBox;
private JLabel myModuleLabel;
private JLabel myVmOptionLabel;
@@ -140,6 +140,22 @@ public class MvcRunTargetDialog extends DialogWrapper {
myFakePanel = new JPanel(new BorderLayout());
myFakePanel.add(myTargetField, BorderLayout.CENTER);
+ TextFieldCompletionProvider vmOptionCompletionProvider = new TextFieldCompletionProvider() {
+ @NotNull
+ @Override
+ protected String getPrefix(@NotNull String currentTextPrefix) {
+ return MvcRunTargetDialog.getPrefix(currentTextPrefix);
+ }
+
+ @Override
+ protected void addCompletionVariants(@NotNull String text, int offset, @NotNull String prefix, @NotNull CompletionResultSet result) {
+ if (prefix.endsWith("-D")) {
+ result.addAllElements(MvcTargetDialogCompletionUtils.getSystemPropertiesVariants());
+ }
+ }
+ };
+ myVmOptionsField = vmOptionCompletionProvider.createEditor(myModule.getProject());
+
new TextFieldCompletionProvider() {
@NotNull
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java
index 60fd18a5e19c..67406cfc0b37 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/util/MvcTargetDialogCompletionUtils.java
@@ -53,20 +53,31 @@ public class MvcTargetDialogCompletionUtils {
"grails.testing.functional.baseUrl", "grails.compile.artefacts.closures.convert"
};
+ private static List SYSTEM_PROPERTIES_VARIANTS;
+
private MvcTargetDialogCompletionUtils() {
}
- public static Collection collectVariants(@NotNull Module module, @NotNull String text, int offset, @NotNull String prefix) {
- List res = new ArrayList();
-
- if (prefix.startsWith("-D")) {
- for (String property : SYSTEM_PROPERTIES) {
- res.add(TailTypeDecorator.withTail(LookupElementBuilder.create("-D" + property), MyTailTypeEQ.INSTANCE));
+ public static List getSystemPropertiesVariants() {
+ if (SYSTEM_PROPERTIES_VARIANTS == null) {
+ LookupElement[] res = new LookupElement[SYSTEM_PROPERTIES.length];
+ for (int i = 0; i < res.length; i++) {
+ res[i] = TailTypeDecorator.withTail(LookupElementBuilder.create("-D" + SYSTEM_PROPERTIES[i]), MyTailTypeEQ.INSTANCE);
}
- return res;
+ SYSTEM_PROPERTIES_VARIANTS = Arrays.asList(res);
}
+ return SYSTEM_PROPERTIES_VARIANTS;
+ }
+
+ public static Collection collectVariants(@NotNull Module module, @NotNull String text, int offset, @NotNull String prefix) {
+ if (prefix.startsWith("-D")) {
+ return getSystemPropertiesVariants();
+ }
+
+ List res = new ArrayList();
+
if (text.substring(0, offset).matches("\\s*(?:(:?-\\S+|dev|prod|test)\\s+)*\\S*")) {
// Complete command name because command name is not typed.
for (String completionVariant : getAllTargetNames(module)) {