summaryrefslogtreecommitdiff
path: root/platform/structuralsearch/source/com/intellij/structuralsearch
diff options
context:
space:
mode:
Diffstat (limited to 'platform/structuralsearch/source/com/intellij/structuralsearch')
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/DataProvider.java16
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceUsageViewContext.java7
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/DialogBase.java152
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java22
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java7
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchContext.java3
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java18
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java16
-rw-r--r--platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UsageViewContext.java34
9 files changed, 50 insertions, 225 deletions
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/DataProvider.java b/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/DataProvider.java
deleted file mode 100644
index e7327fad7e5e..000000000000
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/DataProvider.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.intellij.structuralsearch.impl.matcher;
-
-import com.intellij.openapi.editor.Editor;
-import com.intellij.openapi.project.Project;
-
-/**
- * Created by IntelliJ IDEA.
- * User: maxim
- * Date: 07.01.2004
- * Time: 1:06:51
- * To change this template use Options | File Templates.
- */
-public interface DataProvider {
- Editor getEditor();
- Project getProject();
-}
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceUsageViewContext.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceUsageViewContext.java
index 6a0d352d3284..f5279e15026e 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceUsageViewContext.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceUsageViewContext.java
@@ -44,13 +44,6 @@ class ReplaceUsageViewContext extends UsageViewContext {
return command;
}
- protected String _getPresentableText() {
- return SSRBundle.message("replaceusageview.text",
- getConfiguration().getMatchOptions().getSearchPattern(),
- ((ReplaceConfiguration)getConfiguration()).getOptions().getReplacement()
- );
- }
-
public Replacer getReplacer() {
return replacer;
}
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/DialogBase.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/DialogBase.java
deleted file mode 100644
index 83d93ba0d05c..000000000000
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/DialogBase.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package com.intellij.structuralsearch.plugin.ui;
-
-import com.intellij.openapi.MnemonicHelper;
-import com.intellij.CommonBundle;
-
-import javax.swing.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
-import java.awt.event.InputEvent;
-import java.awt.*;
-
-import org.jetbrains.annotations.NonNls;
-
-/**
- * Base dialog class
- */
-public abstract class DialogBase extends JDialog {
- private JButton ok;
- private JButton cancel;
-
- private Action okAction;
- private Action cancelAction;
- private static Rectangle virtualBounds;
-
- class OkAction extends AbstractAction {
- OkAction() {
- putValue(NAME, CommonBundle.getOkButtonText());
- }
- public void actionPerformed(ActionEvent e) {
- doOKAction();
- }
- }
-
- class CancelAction extends AbstractAction {
- CancelAction() {
- putValue(NAME,CommonBundle.getCancelButtonText());
- }
-
- public void actionPerformed(ActionEvent e) {
- doCancelAction();
- }
- }
-
- protected DialogBase() {
- this(null);
- }
-
- protected DialogBase(Frame frame) {
- this(frame,true);
- }
-
- protected DialogBase(Frame frame,boolean modal) {
- super(frame,modal);
-
- new MnemonicHelper().register(getContentPane());
-
- okAction = new OkAction();
- cancelAction = new CancelAction();
-
- ok = createJButtonForAction(okAction);
- cancel = createJButtonForAction(cancelAction);
-
- if (virtualBounds == null) {
- GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice[] gs = ge.getScreenDevices();
- virtualBounds = new Rectangle();
-
- for (int j = 0; j < gs.length; j++) {
- GraphicsDevice gd = gs[j];
- GraphicsConfiguration[] gc = gd.getConfigurations();
-
- for (int i=0; i < gc.length; i++) {
- virtualBounds = virtualBounds.union(gc[i].getBounds());
- }
- }
- }
-
- @NonNls String cancelCommandName = "close";
- KeyStroke escKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0);
- ok.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escKeyStroke, cancelCommandName);
- ok.getActionMap().put(cancelCommandName, cancelAction);
-
- @NonNls String startCommandName = "start";
- KeyStroke enterKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,InputEvent.CTRL_MASK);
- ok.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(enterKeyStroke, startCommandName);
- ok.getActionMap().put(startCommandName, okAction);
- }
-
- protected JButton getCancelButton() {
- return cancel;
- }
-
- protected JButton getOkButton() {
- return ok;
- }
-
- protected abstract JComponent createCenterPanel();
-
- protected JComponent createSouthPanel() {
- JPanel p = new JPanel( null );
- p.setLayout( new BoxLayout(p,BoxLayout.X_AXIS) );
- p.add(Box.createHorizontalGlue());
- p.add(getOkButton());
- p.add(getCancelButton());
- return p;
- }
-
- public void init() {
- getContentPane().setLayout(new BorderLayout());
- getContentPane().add(BorderLayout.CENTER,createCenterPanel());
- getContentPane().add(BorderLayout.SOUTH,createSouthPanel());
- pack();
-
- Dimension dim = getPreferredSize();
- setLocation(
- (int)(virtualBounds.getWidth()/2 - dim.getWidth()/2),
- (int)(virtualBounds.getHeight()/2 - dim.getHeight()/2)
- );
- }
-
- public void show() {
- pack();
- super.show();
- }
-
- protected void doCancelAction() {
- setVisible(false);
- }
-
- protected void doOKAction() {
- setVisible(false);
- }
-
- protected void setOKActionEnabled(boolean b) {
- okAction.setEnabled(b);
- }
-
- protected void setOKButtonText(String text) {
- okAction.putValue(Action.NAME,text);
- }
-
- protected void setCancelButtonText(String text) {
- cancelAction.putValue(Action.NAME,text);
- }
-
- protected JButton createJButtonForAction(Action _action) {
- JButton jb = new JButton( (String)_action.getValue(Action.NAME) );
- jb.setAction(_action);
-
- return jb;
- }
-}
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java
index f82ad12e5f4f..258aaf6b8ccc 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/EditVarConstraintsDialog.java
@@ -30,11 +30,13 @@ import com.intellij.structuralsearch.MatchVariableConstraint;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import com.intellij.structuralsearch.ReplacementVariableDefinition;
import com.intellij.structuralsearch.SSRBundle;
+import com.intellij.structuralsearch.impl.matcher.CompiledPattern;
import com.intellij.structuralsearch.impl.matcher.predicates.ScriptSupport;
import com.intellij.structuralsearch.plugin.replace.ReplaceOptions;
import com.intellij.structuralsearch.plugin.replace.ui.ReplaceConfiguration;
import com.intellij.ui.ComboboxWithBrowseButton;
import com.intellij.ui.EditorTextField;
+import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -47,6 +49,7 @@ import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
+import java.util.Set;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
@@ -223,7 +226,10 @@ class EditVarConstraintsDialog extends DialogWrapper {
customScriptCode.getButton().addActionListener(new ActionListener() {
public void actionPerformed(@NotNull final ActionEvent e) {
- final EditScriptDialog dialog = new EditScriptDialog(project, customScriptCode.getChildComponent().getText());
+ Set<String> strings = ContainerUtil.collectSet(model.getConfig().getMatchOptions().getVariableConstraintNames());
+ strings.remove(current.getName());
+ strings.remove(CompiledPattern.ALL_CLASS_UNMATCHED_CONTENT_VAR_ARTIFICIAL_NAME);
+ EditScriptDialog dialog = new EditScriptDialog(project, customScriptCode.getChildComponent().getText(), strings);
dialog.show();
if (dialog.getExitCode() == OK_EXIT_CODE) {
customScriptCode.getChildComponent().setText(dialog.getScriptText());
@@ -585,11 +591,13 @@ class EditVarConstraintsDialog extends DialogWrapper {
private static class EditScriptDialog extends DialogWrapper {
private final Editor editor;
+ private final String title;
- public EditScriptDialog(final Project project, String text) {
+ public EditScriptDialog(Project project, String text, Set<String> names) {
super(project, true);
setTitle(SSRBundle.message("edit.groovy.script.constraint.title"));
editor = createEditor(project, text, "1.groovy");
+ title = names.size() > 0 ? "Available variables: " + StringUtil.join(names, ", ") : "";
init();
}
@@ -604,7 +612,15 @@ class EditVarConstraintsDialog extends DialogWrapper {
}
protected JComponent createCenterPanel() {
- return editor.getComponent();
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.add(editor.getComponent(), BorderLayout.CENTER);
+ if (!title.isEmpty()) {
+ JTextField f=new JTextField(title);
+ f.setEditable(false);
+ f.setBorder(null);
+ panel.add(f, BorderLayout.SOUTH);
+ }
+ return panel;
}
String getScriptText() {
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java
index 8cb7e55ea290..80f0c7b8ce0d 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java
@@ -56,6 +56,7 @@ public class SearchCommand {
}
public void matchingFinished() {
+ if (project.isDisposed()) return;
findEnded();
progress.setText(SSRBundle.message("found.progress.message", count));
}
@@ -114,7 +115,7 @@ public class SearchCommand {
new Runnable() {
@Override
public void run() {
- NotificationGroup.toolWindowGroup("Structural Search", ToolWindowId.FIND, true)
+ NotificationGroup.toolWindowGroup("Structural Search", ToolWindowId.FIND)
.createNotification(SSRBundle.message("problem", e.getMessage()), MessageType.ERROR).notify(project);
}
},
@@ -132,9 +133,7 @@ public class SearchCommand {
}
protected void findEnded() {
- if (!project.isDisposed()) {
- StructuralSearchPlugin.getInstance(project).setSearchInProgress(false);
- }
+ StructuralSearchPlugin.getInstance(project).setSearchInProgress(false);
}
protected void foundUsage(MatchResult result, Usage usage) {
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchContext.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchContext.java
index 62371e7e29d1..045c2749871c 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchContext.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchContext.java
@@ -9,12 +9,11 @@ import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
-import com.intellij.structuralsearch.impl.matcher.DataProvider;
/**
* Context of the search to be done
*/
-public final class SearchContext implements DataProvider, Cloneable {
+public final class SearchContext implements Cloneable {
private final PsiFile file;
private final Project project;
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java
index a3bee702563e..3f89f11b9e6d 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java
@@ -12,6 +12,7 @@ import com.intellij.lang.LanguageUtil;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.command.WriteCommandAction;
+import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.EditorFactory;
@@ -90,8 +91,6 @@ public class SearchDialog extends DialogWrapper implements ConfigurationCreator
private boolean useLastConfiguration;
- private static boolean ourOpenInNewTab;
-
@NonNls private FileType ourFtSearchVariant = StructuralSearchUtil.getDefaultFileType();
private static Language ourDialect = null;
private static String ourContext = null;
@@ -184,7 +183,7 @@ public class SearchDialog extends DialogWrapper implements ConfigurationCreator
try {
new WriteAction(){
@Override
- protected void run(Result result) throws Throwable {
+ protected void run(Result result) {
if (!isValid()) {
getOKAction().setEnabled(false);
}
@@ -195,8 +194,8 @@ public class SearchDialog extends DialogWrapper implements ConfigurationCreator
}
}.execute();
}
- catch (Exception e) {
- e.printStackTrace();
+ catch (RuntimeException e) {
+ Logger.getInstance(SearchDialog.class).error(e);
}
}
}, 500);
@@ -498,7 +497,7 @@ public class SearchDialog extends DialogWrapper implements ConfigurationCreator
final UsageViewContext context = createUsageViewContext(config);
final UsageViewPresentation presentation = new UsageViewPresentation();
- presentation.setOpenInNewTab(openInNewTab.isSelected());
+ presentation.setOpenInNewTab(FindSettings.getInstance().isShowResultsInSeparateView());
presentation.setScopeText(config.getMatchOptions().getScope().getDisplayName());
context.configure(presentation);
@@ -635,7 +634,7 @@ public class SearchDialog extends DialogWrapper implements ConfigurationCreator
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 0));
openInNewTab = new JCheckBox(FindBundle.message("find.open.in.new.tab.checkbox"));
- openInNewTab.setSelected(ourOpenInNewTab);
+ openInNewTab.setSelected(FindSettings.getInstance().isShowResultsInSeparateView());
ToolWindow findWindow = ToolWindowManager.getInstance(searchContext.getProject()).getToolWindow(ToolWindowId.FIND);
openInNewTab.setEnabled(findWindow != null && findWindow.isAvailable());
panel.add(openInNewTab, BorderLayout.EAST);
@@ -868,8 +867,9 @@ public class SearchDialog extends DialogWrapper implements ConfigurationCreator
super.doOKAction();
if (!myRunFindActionOnClose) return;
- FindSettings.getInstance().setDefaultScopeName(selectedScope.getDisplayName());
- ourOpenInNewTab = openInNewTab.isSelected();
+ final FindSettings findSettings = FindSettings.getInstance();
+ findSettings.setDefaultScopeName(selectedScope.getDisplayName());
+ findSettings.setShowResultsInSeparateView(openInNewTab.isSelected());
try {
if (model.getShadowConfig() != null) {
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java
index e2c16bfbc355..7521b9bbc014 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UIUtil.java
@@ -3,7 +3,6 @@ package com.intellij.structuralsearch.plugin.ui;
import com.intellij.codeInsight.hint.TooltipController;
import com.intellij.codeInsight.hint.TooltipGroup;
import com.intellij.codeInsight.template.TemplateContextType;
-import com.intellij.codeInsight.template.impl.TemplateContext;
import com.intellij.codeInsight.template.impl.TemplateEditorUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
@@ -77,12 +76,8 @@ public class UIUtil {
else {
((EditorEx)editor).setEmbeddedIntoDialogWrapper(true);
}
-
- if (contextType != null) {
- TemplateContext context = new TemplateContext();
- context.setEnabled(contextType, true);
- TemplateEditorUtil.setHighlighter(editor, context);
- }
+
+ TemplateEditorUtil.setHighlighter(editor, contextType);
if (addToolTipForVariableHandler) {
SubstitutionShortInfoHandler handler = new SubstitutionShortInfoHandler(editor);
@@ -222,11 +217,6 @@ public class UIUtil {
}
public static void updateHighlighter(Editor editor, StructuralSearchProfile profile) {
- final TemplateContextType contextType = profile.getTemplateContextType();
- if (contextType != null) {
- TemplateContext context = new TemplateContext();
- context.setEnabled(contextType, true);
- TemplateEditorUtil.setHighlighter(editor, context);
- }
+ TemplateEditorUtil.setHighlighter(editor, profile.getTemplateContextType());
}
}
diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UsageViewContext.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UsageViewContext.java
index a55a16d4c379..e492906f0d4f 100644
--- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UsageViewContext.java
+++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/UsageViewContext.java
@@ -8,9 +8,13 @@ import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
+import com.intellij.structuralsearch.MatchOptions;
import com.intellij.structuralsearch.SSRBundle;
import com.intellij.structuralsearch.plugin.replace.ui.ReplaceCommand;
-import com.intellij.usages.*;
+import com.intellij.usages.ConfigurableUsageTarget;
+import com.intellij.usages.Usage;
+import com.intellij.usages.UsageView;
+import com.intellij.usages.UsageViewPresentation;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
@@ -61,20 +65,15 @@ public class UsageViewContext {
return new SearchCommand(mySearchContext.getProject(), this);
}
- protected String _getPresentableText() {
- return myConfiguration.getMatchOptions().getSearchPattern();
- }
-
- public UsageTarget getTarget() {
- return new MyUsageTarget(_getPresentableText());
+ public ConfigurableUsageTarget getTarget() {
+ return new MyUsageTarget();
}
public void configure(@NotNull UsageViewPresentation presentation) {
- String s = _getPresentableText();
- if (s.length() > 15) s = s.substring(0,15) + "...";
- final String usagesString = SSRBundle.message("occurrences.of", s);
- presentation.setUsagesString(usagesString);
- presentation.setTabText(StringUtil.capitalize(usagesString));
+ final String pattern = myConfiguration.getMatchOptions().getSearchPattern();
+ final String usagesString = SSRBundle.message("occurrences.of", StringUtil.shortenTextWithEllipsis(pattern, 50, 0, true));
+ presentation.setUsagesString(SSRBundle.message("occurrences.of", pattern));
+ presentation.setTabText(usagesString);
presentation.setUsagesWord(SSRBundle.message("occurrence"));
presentation.setCodeUsagesString(SSRBundle.message("found.occurrences"));
}
@@ -82,15 +81,12 @@ public class UsageViewContext {
protected void configureActions() {}
private class MyUsageTarget implements ConfigurableUsageTarget,ItemPresentation {
- private final String myPresentableText;
-
- MyUsageTarget(String str) {
- myPresentableText = str;
- }
+ @NotNull
@Override
public String getPresentableText() {
- return myPresentableText;
+ final MatchOptions matchOptions = myConfiguration.getMatchOptions();
+ return SSRBundle.message("occurrences.of.0.in.1", matchOptions.getSearchPattern(), matchOptions.getScope().getDisplayName());
}
@Override
@@ -177,7 +173,7 @@ public class UsageViewContext {
@NotNull
@Override
public String getLongDescriptiveName() {
- return _getPresentableText();
+ return getPresentableText();
}
}
}