mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SSR: new dialog text completion - insert constraints, not just text
and show language and template type
This commit is contained in:
+4
-4
@@ -83,7 +83,7 @@ public class StructuralSearchDialog extends DialogWrapper {
|
||||
@NonNls private static final String REFORMAT_STATE = "structural.search.reformat";
|
||||
@NonNls private static final String USE_STATIC_IMPORT_STATE = "structural.search.use.static.import";
|
||||
|
||||
static final Key<Boolean> STRUCTURAL_SEARCH = Key.create("STRUCTURAL_SEARCH_AREA");
|
||||
static final Key<StructuralSearchDialog> STRUCTURAL_SEARCH = Key.create("STRUCTURAL_SEARCH_AREA");
|
||||
public static final String USER_DEFINED = SSRBundle.message("new.template.defaultname");
|
||||
|
||||
private final SearchContext mySearchContext;
|
||||
@@ -178,7 +178,7 @@ public class StructuralSearchDialog extends DialogWrapper {
|
||||
myUseLastConfiguration = useLastConfiguration;
|
||||
}
|
||||
|
||||
void setSearchPattern(final Configuration config) {
|
||||
void setSearchPattern(Configuration config) {
|
||||
loadConfiguration(config);
|
||||
initiateValidation();
|
||||
}
|
||||
@@ -208,7 +208,7 @@ public class StructuralSearchDialog extends DialogWrapper {
|
||||
DaemonCodeAnalyzer.getInstance(project).setHighlightingEnabled(file, false);
|
||||
}
|
||||
TextCompletionUtil.installCompletionHint(editor);
|
||||
editor.putUserData(STRUCTURAL_SEARCH, true);
|
||||
editor.putUserData(STRUCTURAL_SEARCH, StructuralSearchDialog.this);
|
||||
editor.setEmbeddedIntoDialogWrapper(true);
|
||||
return editor;
|
||||
}
|
||||
@@ -401,7 +401,7 @@ public class StructuralSearchDialog extends DialogWrapper {
|
||||
.addGap(2)
|
||||
.addComponent(myReplacePanel)
|
||||
.addComponent(myScopePanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(2)
|
||||
.addGap(16)
|
||||
.addGroup(layout.createParallelGroup()
|
||||
.addComponent(searchTargetLabel)
|
||||
.addComponent(myTargetComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
|
||||
|
||||
+14
-6
@@ -4,26 +4,34 @@ package com.intellij.structuralsearch.plugin.ui;
|
||||
import com.intellij.codeInsight.completion.CompletionContributor;
|
||||
import com.intellij.codeInsight.completion.CompletionParameters;
|
||||
import com.intellij.codeInsight.completion.CompletionResultSet;
|
||||
import com.intellij.codeInsight.completion.InsertionContext;
|
||||
import com.intellij.codeInsight.completion.impl.CamelHumpMatcher;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.structuralsearch.MatchOptions;
|
||||
import com.intellij.ui.TextFieldWithAutoCompletionListProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class StructuralSearchTemplatesCompletionContributor extends CompletionContributor {
|
||||
@Override
|
||||
public void fillCompletionVariants(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet result) {
|
||||
if (parameters.getEditor().getUserData(StructuralSearchDialog.STRUCTURAL_SEARCH) == null) return;
|
||||
final StructuralSearchDialog dialog = parameters.getEditor().getUserData(StructuralSearchDialog.STRUCTURAL_SEARCH);
|
||||
if (dialog == null) return;
|
||||
String prefix = TextFieldWithAutoCompletionListProvider.getCompletionPrefix(parameters);
|
||||
CompletionResultSet insensitive = result.withPrefixMatcher(new CamelHumpMatcher(prefix));
|
||||
ConfigurationManager configurationManager = ConfigurationManager.getInstance(parameters.getPosition().getProject());
|
||||
for (String configurationName: configurationManager.getAllConfigurationNames()) {
|
||||
Configuration configuration = configurationManager.findConfigurationByName(configurationName);
|
||||
if (configuration == null) continue;
|
||||
LookupElementBuilder element = LookupElementBuilder.create(configuration, configuration.getMatchOptions().getSearchPattern())
|
||||
.withLookupString(configurationName)
|
||||
.withTailText(" (search template)", true)
|
||||
.withCaseSensitivity(false)
|
||||
.withPresentableText(configurationName);
|
||||
final MatchOptions matchOptions = configuration.getMatchOptions();
|
||||
LookupElementBuilder element = LookupElementBuilder.create(configuration, matchOptions.getSearchPattern())
|
||||
.withLookupString(configurationName)
|
||||
.withTailText(" (" + StringUtil.toLowerCase(matchOptions.getFileType().getName()) +
|
||||
(configuration instanceof SearchConfiguration ? " search" : " replace") + " template)", true)
|
||||
.withCaseSensitivity(false)
|
||||
.withPresentableText(configurationName)
|
||||
.withInsertHandler((InsertionContext context, LookupElement item) -> dialog.setSearchPattern((Configuration)item.getObject()));
|
||||
insensitive.addElement(element);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user