diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SubstitutionShortInfoHandler.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SubstitutionShortInfoHandler.java index e992f4bd8887..ff04425c792e 100644 --- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SubstitutionShortInfoHandler.java +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SubstitutionShortInfoHandler.java @@ -9,6 +9,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.LogicalPosition; import com.intellij.openapi.editor.event.*; import com.intellij.openapi.util.Key; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.structuralsearch.MatchVariableConstraint; import com.intellij.structuralsearch.NamedScriptableDefinition; @@ -130,54 +131,45 @@ public class SubstitutionShortInfoHandler implements DocumentListener, EditorMou if (namedScriptableDefinition instanceof MatchVariableConstraint) { final MatchVariableConstraint constraint = (MatchVariableConstraint)namedScriptableDefinition; - if (constraint.isPartOfSearchResults()) { + if (constraint.isPartOfSearchResults() && !Registry.is("ssr.use.new.search.dialog")) { append(buf, SSRBundle.message("target.tooltip.message")); } if (constraint.getRegExp() != null && !constraint.getRegExp().isEmpty()) { - append(buf, SSRBundle.message("text.tooltip.message", - constraint.isInvertRegExp() ? SSRBundle.message("not.tooltip.message") : "", constraint.getRegExp())); + append(buf, SSRBundle.message("text.tooltip.message", constraint.isInvertRegExp() ? 1 : 0, constraint.getRegExp(), + constraint.isWholeWordsOnly() ? 1 : 0, constraint.isWithinHierarchy() ? 1 : 0)); } - if (constraint.isWithinHierarchy() || constraint.isStrictlyWithinHierarchy()) { - append(buf, SSRBundle.message("within.hierarchy.tooltip.message")); + else if (constraint.isWithinHierarchy()) { + append(buf, SSRBundle.message("hierarchy.tooltip.message")); } if (!StringUtil.isEmpty(constraint.getReferenceConstraint())) { final String text = StringUtil.unquoteString(constraint.getReferenceConstraint()); - append(buf, SSRBundle.message("reference.target.tooltip.message", - constraint.isInvertReference() ? SSRBundle.message("not.tooltip.message") : "", text)); + append(buf, SSRBundle.message("reference.target.tooltip.message", constraint.isInvertReference() ? 1 : 0, text)); } if (constraint.getNameOfExprType() != null && !constraint.getNameOfExprType().isEmpty()) { append(buf, SSRBundle.message("exprtype.tooltip.message", - constraint.isInvertExprType() ? SSRBundle.message("not.tooltip.message") : "", + constraint.isInvertExprType() ? 1 : 0, constraint.getNameOfExprType(), - constraint.isExprTypeWithinHierarchy() ? SSRBundle.message("supertype.tooltip.message") : "")); + constraint.isExprTypeWithinHierarchy() ? 1 : 0)); } if (constraint.getNameOfFormalArgType() != null && !constraint.getNameOfFormalArgType().isEmpty()) { append(buf, SSRBundle.message("expected.type.tooltip.message", - constraint.isInvertFormalType() ? SSRBundle.message("not.tooltip.message") : "", + constraint.isInvertFormalType() ? 1 : 0, constraint.getNameOfFormalArgType(), - constraint.isFormalArgTypeWithinHierarchy() ? SSRBundle.message("supertype.tooltip.message") : "")); + constraint.isFormalArgTypeWithinHierarchy() ? 1 : 0)); } if (StringUtil.isNotEmpty(constraint.getWithinConstraint())) { final String text = StringUtil.unquoteString(constraint.getWithinConstraint()); - append(buf, constraint.isInvertWithinConstraint() - ? SSRBundle.message("not.within.constraints.tooltip.message", text) - : SSRBundle.message("within.constraints.tooltip.message", text)); + append(buf, SSRBundle.message("within.constraints.tooltip.message", constraint.isInvertWithinConstraint() ? 1 : 0, text)); } final String name = constraint.getName(); if (!Configuration.CONTEXT_VAR_NAME.equals(name)) { - if (constraint.getMinCount() == constraint.getMaxCount()) { - append(buf, SSRBundle.message("occurs.tooltip.message", constraint.getMinCount())); - } - else { - append(buf, SSRBundle.message("min.occurs.tooltip.message", constraint.getMinCount(), - constraint.getMaxCount() == Integer.MAX_VALUE ? - StringUtil.decapitalize(SSRBundle.message("editvarcontraints.unlimited")) : - constraint.getMaxCount())); - } + final int maxCount = constraint.getMaxCount(); + append(buf, SSRBundle.message("min.occurs.tooltip.message", constraint.getMinCount(), + (maxCount == Integer.MAX_VALUE) ? "∞" : maxCount)); } } diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/filters/TextFilter.java b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/filters/TextFilter.java index fb15111e6f51..adef66671944 100644 --- a/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/filters/TextFilter.java +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/filters/TextFilter.java @@ -27,7 +27,8 @@ public class TextFilter extends FilterAction { @Override public boolean hasFilter() { - return !StringUtil.isEmpty(myTable.getConstraint().getRegExp()); + final MatchVariableConstraint constraint = myTable.getConstraint(); + return !StringUtil.isEmpty(constraint.getRegExp()) || constraint.isWithinHierarchy(); } @Override diff --git a/platform/structuralsearch/source/messages/SSRBundle.properties b/platform/structuralsearch/source/messages/SSRBundle.properties index 8dc1eee41c27..61e6b924596b 100644 --- a/platform/structuralsearch/source/messages/SSRBundle.properties +++ b/platform/structuralsearch/source/messages/SSRBundle.properties @@ -179,18 +179,15 @@ editvarcontraints.edit.variables=Edit Variables no.constraints.specified.tooltip.message=no constraints specified script.option.text=Script text\: occurs.tooltip.message=occurs: {0} -min.occurs.tooltip.message=min occurs: {0}, max occurs: {1} +min.occurs.tooltip.message=count=[{0},{1}] target.tooltip.message=target -text.tooltip.message=text{0} like: {1} -exprtype.tooltip.message=type{2}{0} like: {1} -supertype.tooltip.message=\ or supertype -expected.type.tooltip.message=expected type{2}{0} like: {1} -not.tooltip.message=\ not -within.hierarchy.tooltip.message=search in supers -script.tooltip.message=script:\n {0} -within.constraints.tooltip.message=within {0} -not.within.constraints.tooltip.message=not within {0} -reference.target.tooltip.message=reference target{0} like: {1} +text.tooltip.message=text{0,choice,0#=|1#\u2260}{1}{2,choice,0#|1#, whole words}{3,choice,0#|1#, within hierarchy} +hierarchy.tooltip.message=search within hierarchy +exprtype.tooltip.message=type{0,choice,0#=|1#\u2260}{1}{2,choice,0#|1#, within hierarchy} +expected.type.tooltip.message=expected type{0,choice,0#=|1#\u2260}{1}{2,choice,0#|1#, within hierarchy} +script.tooltip.message=script=\n {0} +within.constraints.tooltip.message=within{0,choice,0#=|1#\u2260}{1} +reference.target.tooltip.message=reference{0,choice,0#=|1#\u2260}{1} complete.match.variable.tooltip.message=Complete Match: {0} replacement.variable.is.not.defined.message=Replacement variable {0} is not defined. replacement.variable.is.not.valid=Replacement variable {0} has script code problem {1}