SSR: generify to simplify code a little

GitOrigin-RevId: 4b3f2663afaf54ffed168086c737d2d633d85ec6
This commit is contained in:
Bas Leijdekkers
2020-06-18 18:38:12 +03:00
committed by intellij-monorepo-bot
parent c6b5e0f468
commit e5ca7439a6
9 changed files with 68 additions and 98 deletions
@@ -7,7 +7,6 @@ import com.intellij.openapi.keymap.KeymapUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.structuralsearch.MatchVariableConstraint;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import com.intellij.structuralsearch.SSRBundle;
import com.intellij.structuralsearch.plugin.ui.Configuration;
import com.intellij.structuralsearch.plugin.ui.ConfigurationManager;
@@ -28,29 +27,30 @@ class ContextFilter extends FilterAction {
@Override
public boolean hasFilter() {
return !StringUtil.isEmpty(getContextConstraint());
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
return variable != null && !StringUtil.isEmpty(variable.getContextConstraint());
}
@Override
public void clearFilter() {
setContextConstraint("");
myTable.getMatchVariableConstraint().setContextConstraint("");
}
@Override
public boolean isApplicable(List<? extends PsiElement> nodes, boolean completePattern, boolean target) {
return myTable.getVariable() instanceof MatchVariableConstraint &&
completePattern &&
myTable.getProfile().isApplicableConstraint(UIUtil.CONTEXT, nodes, completePattern, target);
return myTable.getVariable() instanceof MatchVariableConstraint && completePattern &&
myTable.getProfile().isApplicableConstraint(UIUtil.CONTEXT, nodes, true, target);
}
@Override
protected void setLabel(SimpleColoredComponent component) {
component.append(SSRBundle.message("context.0.label", StringUtil.unquoteString(getContextConstraint())));
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
component.append(SSRBundle.message("context.0.label", StringUtil.unquoteString(variable.getContextConstraint())));
}
@Override
public FilterEditor getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getVariable(), myTable.getConstraintChangedCallback()) {
public FilterEditor<MatchVariableConstraint> getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getMatchVariableConstraint(), myTable.getConstraintChangedCallback()) {
private final JLabel myLabel = new JLabel(SSRBundle.message("context.label"));
private final TextFieldWithAutoCompletion<String> textField =
TextFieldWithAutoCompletion.create(myTable.getProject(), Collections.emptyList(), false, "");
@@ -60,11 +60,11 @@ class ContextFilter extends FilterAction {
@Override
protected void layoutComponents() {
ConfigurationManager configManager = ConfigurationManager.getInstance(myTable.getProject());
List<String> configurationNames = JBIterable
final ConfigurationManager configManager = ConfigurationManager.getInstance(myTable.getProject());
final List<String> configurationNames = JBIterable
.from(configManager.getAllConfigurationNames())
.filter(name -> {
Configuration config = configManager.findConfigurationByName(name);
final Configuration config = configManager.findConfigurationByName(name);
return config != null && myTable.getProfile().isApplicableContextConfiguration(config);
})
.toList();
@@ -109,16 +109,4 @@ class ContextFilter extends FilterAction {
}
};
}
private String getContextConstraint() {
NamedScriptableDefinition variable = myTable.getVariable();
return variable instanceof MatchVariableConstraint ? ((MatchVariableConstraint)variable).getContextConstraint() : "";
}
private void setContextConstraint(String value) {
NamedScriptableDefinition variable = myTable.getVariable();
if (variable instanceof MatchVariableConstraint) {
((MatchVariableConstraint)variable).setContextConstraint(value);
}
}
}
@@ -3,7 +3,6 @@ package com.intellij.structuralsearch.plugin.ui.filters;
import com.intellij.psi.PsiElement;
import com.intellij.structuralsearch.MatchVariableConstraint;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import com.intellij.structuralsearch.SSRBundle;
import com.intellij.structuralsearch.StructuralSearchProfile;
import com.intellij.structuralsearch.plugin.ui.UIUtil;
@@ -28,28 +27,26 @@ class CountFilter extends FilterAction {
@Override
public boolean hasFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
if (variable == null) {
return false;
}
final MatchVariableConstraint matchVariableConstraint = (MatchVariableConstraint)variable;
return matchVariableConstraint.getMinCount() != 1 || matchVariableConstraint.getMaxCount() != 1;
return variable.getMinCount() != 1 || variable.getMaxCount() != 1;
}
@Override
public void clearFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
if (variable == null) {
return;
}
final MatchVariableConstraint constraint = (MatchVariableConstraint)variable;
constraint.setMinCount(1);
constraint.setMaxCount(1);
variable.setMinCount(1);
variable.setMaxCount(1);
}
@Override
public void initFilter() {
final MatchVariableConstraint constraint = (MatchVariableConstraint)myTable.getVariable();
final MatchVariableConstraint constraint = myTable.getMatchVariableConstraint();
constraint.setMinCount(myMinZero ? 0 : 1);
constraint.setMaxCount(myMaxUnlimited ? Integer.MAX_VALUE : 1);
}
@@ -67,7 +64,7 @@ class CountFilter extends FilterAction {
@Override
protected void setLabel(SimpleColoredComponent component) {
final MatchVariableConstraint constraint = (MatchVariableConstraint)myTable.getVariable();
final MatchVariableConstraint constraint = myTable.getMatchVariableConstraint();
final int min = constraint.getMinCount();
final int max = constraint.getMaxCount();
myLabel.append(SSRBundle.message("count.label", "[" + min + "," + (max == Integer.MAX_VALUE ? "∞" : max) + ']'));
@@ -77,8 +74,8 @@ class CountFilter extends FilterAction {
}
@Override
public FilterEditor getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getVariable(), myTable.getConstraintChangedCallback()) {
public FilterEditor<MatchVariableConstraint> getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getMatchVariableConstraint(), myTable.getConstraintChangedCallback()) {
private final IntegerField myMinField = new IntegerField();
private final IntegerField myMaxField = new IntegerField();
@@ -1,6 +1,8 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.structuralsearch.plugin.ui.filters;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import javax.swing.*;
/**
@@ -12,7 +14,7 @@ public interface Filter {
JComponent getRenderer();
default FilterEditor getEditor() {
default FilterEditor<? extends NamedScriptableDefinition> getEditor() {
return null;
}
}
@@ -1,4 +1,4 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.structuralsearch.plugin.ui.filters;
import com.intellij.structuralsearch.NamedScriptableDefinition;
@@ -15,9 +15,8 @@ public abstract class FilterEditor<T extends NamedScriptableDefinition> extends
protected final T myConstraint;
private final Runnable myConstraintChangedCallback;
public FilterEditor(NamedScriptableDefinition constraint, Runnable constraintChangedCallback) {
//noinspection unchecked
myConstraint = (T)constraint;
public FilterEditor(T constraint, Runnable constraintChangedCallback) {
myConstraint = constraint;
myConstraintChangedCallback = constraintChangedCallback;
}
@@ -1,7 +1,8 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.structuralsearch.plugin.ui.filters;
import com.intellij.openapi.project.Project;
import com.intellij.structuralsearch.MatchVariableConstraint;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import com.intellij.structuralsearch.StructuralSearchProfile;
import org.jetbrains.annotations.NotNull;
@@ -17,6 +18,11 @@ public interface FilterTable {
NamedScriptableDefinition getVariable();
default MatchVariableConstraint getMatchVariableConstraint() {
final NamedScriptableDefinition variable = getVariable();
return variable instanceof MatchVariableConstraint ? (MatchVariableConstraint)variable : null;
}
Runnable getConstraintChangedCallback();
@NotNull
@@ -7,7 +7,6 @@ import com.intellij.openapi.keymap.KeymapUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.structuralsearch.MatchVariableConstraint;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import com.intellij.structuralsearch.SSRBundle;
import com.intellij.structuralsearch.plugin.ui.ConfigurationManager;
import com.intellij.structuralsearch.plugin.ui.UIUtil;
@@ -30,23 +29,18 @@ class ReferenceFilter extends FilterAction {
@Override
public boolean hasFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
return false;
}
final MatchVariableConstraint constraint = (MatchVariableConstraint)variable;
return !StringUtil.isEmpty(constraint.getReferenceConstraint());
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
return variable != null && !StringUtil.isEmpty(variable.getReferenceConstraint());
}
@Override
public void clearFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
if (variable == null) {
return;
}
final MatchVariableConstraint constraint = (MatchVariableConstraint)variable;
constraint.setReferenceConstraint("");
constraint.setInvertReference(false);
variable.setReferenceConstraint("");
variable.setInvertReference(false);
}
@Override
@@ -57,14 +51,14 @@ class ReferenceFilter extends FilterAction {
@Override
protected void setLabel(SimpleColoredComponent component) {
final MatchVariableConstraint constraint = (MatchVariableConstraint)myTable.getVariable();
final MatchVariableConstraint constraint = myTable.getMatchVariableConstraint();
final String value = constraint.isInvertReference() ? "!" + constraint.getReferenceConstraint() : constraint.getReferenceConstraint();
component.append(SSRBundle.message("reference.0.label", value));
}
@Override
public FilterEditor getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getVariable(), myTable.getConstraintChangedCallback()) {
public FilterEditor<MatchVariableConstraint> getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getMatchVariableConstraint(), myTable.getConstraintChangedCallback()) {
private final JLabel myLabel = new JLabel(SSRBundle.message("reference.label"));
private final TextFieldWithAutoCompletion<String> textField =
@@ -51,7 +51,7 @@ class ScriptFilter extends FilterAction {
}
@Override
public FilterEditor getEditor() {
public FilterEditor<NamedScriptableDefinition> getEditor() {
return new FilterEditor<NamedScriptableDefinition>(myTable.getVariable(), myTable.getConstraintChangedCallback()) {
private final JLabel myLabel = new JLabel(SSRBundle.message("script.label"));
@@ -4,7 +4,6 @@ package com.intellij.structuralsearch.plugin.ui.filters;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.structuralsearch.MatchVariableConstraint;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import com.intellij.structuralsearch.SSRBundle;
import com.intellij.structuralsearch.StructuralSearchProfile;
import com.intellij.structuralsearch.plugin.ui.UIUtil;
@@ -29,24 +28,19 @@ class TextFilter extends FilterAction {
@Override
public boolean hasFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
return false;
}
final MatchVariableConstraint constraint = (MatchVariableConstraint)variable;
return !StringUtil.isEmpty(constraint.getRegExp()) || constraint.isWithinHierarchy();
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
return variable != null && (!StringUtil.isEmpty(variable.getRegExp()) || variable.isWithinHierarchy());
}
@Override
public void clearFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
if (variable == null) {
return;
}
final MatchVariableConstraint constraint = (MatchVariableConstraint)variable;
constraint.setRegExp("");
constraint.setWholeWordsOnly(false);
constraint.setWithinHierarchy(false);
variable.setRegExp("");
variable.setWholeWordsOnly(false);
variable.setWithinHierarchy(false);
}
@Override
@@ -61,7 +55,7 @@ class TextFilter extends FilterAction {
@Override
protected void setLabel(SimpleColoredComponent component) {
final MatchVariableConstraint constraint = (MatchVariableConstraint)myTable.getVariable();
final MatchVariableConstraint constraint = myTable.getMatchVariableConstraint();
String value = constraint.isInvertRegExp() ? "!" + constraint.getRegExp() : constraint.getRegExp();
myLabel.append(SSRBundle.message("text.0.label", value));
if (constraint.isWholeWordsOnly()) myLabel.append(SSRBundle.message("whole.words.label"), SimpleTextAttributes.GRAYED_ATTRIBUTES);
@@ -69,15 +63,14 @@ class TextFilter extends FilterAction {
}
@Override
public FilterEditor getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getVariable(), myTable.getConstraintChangedCallback()) {
public FilterEditor<MatchVariableConstraint> getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getMatchVariableConstraint(), myTable.getConstraintChangedCallback()) {
private final EditorTextField myTextField = UIUtil.createRegexComponent("", myTable.getProject());
private final JCheckBox myWordsCheckBox = new JCheckBox(SSRBundle.message("whole.words.check.box"), false);
private final JCheckBox myHierarchyCheckBox = new JCheckBox(SSRBundle.message("within.type.hierarchy.check.box"), false);
private final JLabel myTextLabel = new JLabel(SSRBundle.message("text.label"));
private final ContextHelpLabel myHelpLabel =
ContextHelpLabel.create(SSRBundle.message("text.filter.help.text"));
private final ContextHelpLabel myHelpLabel = ContextHelpLabel.create(SSRBundle.message("text.filter.help.text"));
@Override
protected void layoutComponents() {
@@ -5,7 +5,6 @@ import com.intellij.openapi.fileTypes.PlainTextFileType;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.structuralsearch.MatchVariableConstraint;
import com.intellij.structuralsearch.NamedScriptableDefinition;
import com.intellij.structuralsearch.SSRBundle;
import com.intellij.structuralsearch.StructuralSearchProfile;
import com.intellij.structuralsearch.plugin.ui.UIUtil;
@@ -31,29 +30,21 @@ class TypeFilter extends FilterAction {
@Override
public boolean hasFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
return false;
}
final MatchVariableConstraint constraint = (MatchVariableConstraint)variable;
return !StringUtil.isEmpty(constraint.getNameOfExprType());
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
return variable != null && !StringUtil.isEmpty(variable.getNameOfExprType());
}
@Override
public void clearFilter() {
final NamedScriptableDefinition variable = myTable.getVariable();
if (!(variable instanceof MatchVariableConstraint)) {
return;
}
final MatchVariableConstraint constraint = (MatchVariableConstraint)variable;
constraint.setNameOfExprType("");
constraint.setInvertExprType(false);
constraint.setExprTypeWithinHierarchy(false);
final MatchVariableConstraint variable = myTable.getMatchVariableConstraint();
variable.setNameOfExprType("");
variable.setInvertExprType(false);
variable.setExprTypeWithinHierarchy(false);
}
@Override
public boolean isApplicable(List<? extends PsiElement> nodes, boolean completePattern, boolean target) {
if (!(myTable.getVariable() instanceof MatchVariableConstraint)) {
if (myTable.getVariable() == null) {
return false;
}
final StructuralSearchProfile profile = myTable.getProfile();
@@ -63,7 +54,7 @@ class TypeFilter extends FilterAction {
@Override
protected void setLabel(SimpleColoredComponent component) {
final MatchVariableConstraint constraint = (MatchVariableConstraint)myTable.getVariable();
final MatchVariableConstraint constraint = myTable.getMatchVariableConstraint();
final String s = constraint.isRegexExprType() ? constraint.getNameOfExprType() : constraint.getExpressionTypes();
final String value = constraint.isInvertExprType() ? "!" + s : s;
myLabel.append(SSRBundle.message("type.0.label", value));
@@ -72,8 +63,8 @@ class TypeFilter extends FilterAction {
}
@Override
public FilterEditor getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getVariable(), myTable.getConstraintChangedCallback()) {
public FilterEditor<MatchVariableConstraint> getEditor() {
return new FilterEditor<MatchVariableConstraint>(myTable.getMatchVariableConstraint(), myTable.getConstraintChangedCallback()) {
private final EditorTextField myTextField = UIUtil.createTextComponent("", myTable.getProject());
private final JLabel myTypeLabel = new JLabel(SSRBundle.message("type.label"));