IDEA-186951 Caller method filter - correct caller filters editor

This commit is contained in:
Egor Ushakov
2018-05-23 17:48:27 +03:00
parent 01adb0deec
commit a10d0e1b87
8 changed files with 84 additions and 44 deletions
@@ -7,16 +7,11 @@ import com.intellij.openapi.ui.InputValidatorEx;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.ui.classFilter.ClassFilter;
import com.intellij.ui.classFilter.ClassFilterEditor;
import com.intellij.util.IconUtil;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
public class InstanceFilterEditor extends ClassFilterEditor {
public class InstanceFilterEditor extends PatternFilterEditor {
public InstanceFilterEditor(Project project) {
super(project);
getEmptyText().setText(DebuggerBundle.message("add.instance.filter.dialog.empty.text"));
}
protected void addClassFilter() {
@@ -60,18 +55,4 @@ public class InstanceFilterEditor extends ClassFilterEditor {
});
}
}
protected String getAddButtonText() {
return DebuggerBundle.message("button.add");
}
@Override
protected Icon getAddButtonIcon() {
return IconUtil.getAddIcon();
}
@Override
protected boolean addPatternButtonVisible() {
return false;
}
}
@@ -0,0 +1,34 @@
// 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.
package com.intellij.debugger.ui;
import com.intellij.debugger.DebuggerBundle;
import com.intellij.openapi.project.Project;
import com.intellij.ui.classFilter.ClassFilterEditor;
import com.intellij.util.IconUtil;
import javax.swing.*;
public class PatternFilterEditor extends ClassFilterEditor {
public PatternFilterEditor(Project project) {
super(project);
getEmptyText().setText(DebuggerBundle.message("filters.not.configured"));
}
protected void addClassFilter() {
addPatternFilter();
}
protected String getAddButtonText() {
return DebuggerBundle.message("button.add");
}
@Override
protected Icon getAddButtonIcon() {
return IconUtil.getAddIcon();
}
@Override
protected boolean addPatternButtonVisible() {
return false;
}
}
@@ -0,0 +1,29 @@
// 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.
package com.intellij.debugger.ui.breakpoints;
import com.intellij.debugger.DebuggerBundle;
import com.intellij.debugger.ui.PatternFilterEditor;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project;
import com.intellij.ui.classFilter.ClassFilterEditor;
/**
* @author egor
*/
public class CallerFiltersField extends ClassFiltersField {
public CallerFiltersField(Project project, Disposable parent) {
super(project, parent);
}
@Override
protected EditClassFiltersDialog createEditDialog(Project project) {
EditClassFiltersDialog dialog = new EditClassFiltersDialog(project) {
@Override
protected ClassFilterEditor createClassFilterEditor(Project project) {
return new PatternFilterEditor(project);
}
};
dialog.setTitle(DebuggerBundle.message("caller.filters.dialog.title"));
return dialog;
}
}
@@ -22,7 +22,7 @@ public class ClassFiltersField extends TextFieldWithBrowseButton {
super(null, parent);
addActionListener(e -> {
reloadFilters();
EditClassFiltersDialog dialog = new EditClassFiltersDialog(project);
EditClassFiltersDialog dialog = createEditDialog(project);
dialog.setFilters(myClassFilters, myClassExclusionFilters);
dialog.show();
if (dialog.getExitCode() == DialogWrapper.OK_EXIT_CODE) {
@@ -34,6 +34,10 @@ public class ClassFiltersField extends TextFieldWithBrowseButton {
);
}
protected EditClassFiltersDialog createEditDialog(Project project) {
return new EditClassFiltersDialog(project);
}
public void setClassFilters(ClassFilter[] includeFilters, ClassFilter[] excludeFilters) {
myClassFilters = includeFilters;
myClassExclusionFilters = excludeFilters;
@@ -1,18 +1,4 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// 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.
/*
* Class EditClassFiltersDialog
@@ -49,19 +35,22 @@ public class EditClassFiltersDialog extends DialogWrapper {
init();
}
protected ClassFilterEditor createClassFilterEditor(Project project) {
return new ClassFilterEditor(project, myChooserFilter, "reference.viewBreakpoints.classFilters.newPattern");
}
protected JComponent createCenterPanel() {
JPanel contentPanel = new JPanel(new BorderLayout());
Box mainPanel = Box.createHorizontalBox();
myClassFilterEditor = new ClassFilterEditor(myProject, myChooserFilter, "reference.viewBreakpoints.classFilters.newPattern");
myClassFilterEditor = createClassFilterEditor(myProject);
myClassFilterEditor.setPreferredSize(JBUI.size(400, 200));
myClassFilterEditor.setBorder(IdeBorderFactory.createTitledBorder(
DebuggerBundle.message("class.filters.dialog.inclusion.filters.group"), false));
mainPanel.add(myClassFilterEditor);
myClassExclusionFilterEditor = new ClassFilterEditor(myProject, myChooserFilter, "reference.viewBreakpoints.classFilters.newPattern");
myClassExclusionFilterEditor = createClassFilterEditor(myProject);
myClassExclusionFilterEditor.setPreferredSize(JBUI.size(400, 200));
myClassExclusionFilterEditor.setBorder(IdeBorderFactory.createTitledBorder(
DebuggerBundle.message("class.filters.dialog.exclusion.filters.group"), false));
@@ -74,6 +63,7 @@ public class EditClassFiltersDialog extends DialogWrapper {
public void dispose(){
myClassFilterEditor.stopEditing();
myClassExclusionFilterEditor.stopEditing();
super.dispose();
}
@@ -197,7 +197,7 @@
<properties/>
<border type="none"/>
<children>
<component id="18657" class="com.intellij.debugger.ui.breakpoints.ClassFiltersField" binding="myCallerFilters" custom-create="true">
<component id="e6e72" class="com.intellij.debugger.ui.breakpoints.CallerFiltersField" binding="myCallerFilters" custom-create="true">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
@@ -2,6 +2,7 @@
package org.jetbrains.java.debugger.breakpoints;
import com.intellij.debugger.InstanceFilter;
import com.intellij.debugger.ui.breakpoints.CallerFiltersField;
import com.intellij.debugger.ui.breakpoints.ClassFiltersField;
import com.intellij.debugger.ui.breakpoints.EditInstanceFiltersDialog;
import com.intellij.ide.util.ClassFilter;
@@ -48,7 +49,7 @@ public class JavaBreakpointFiltersPanel<T extends JavaBreakpointProperties, B ex
private JPanel myCatchFiltersPanel;
private JPanel myPassCountFieldPanel;
private JCheckBox myCallerFiltersCheckBox;
private ClassFiltersField myCallerFilters;
private CallerFiltersField myCallerFilters;
private JPanel myCallerFiltersPanel;
private final FieldPanel myInstanceFiltersField;
@@ -233,7 +234,7 @@ public class JavaBreakpointFiltersPanel<T extends JavaBreakpointProperties, B ex
private void createUIComponents() {
myClassFiltersField = new ClassFiltersField(myProject, this);
myCatchClassFilters = new ClassFiltersField(myProject, this);
myCallerFilters = new ClassFiltersField(myProject, this);
myCallerFilters = new CallerFiltersField(myProject, this);
}
private class MyTextField extends JTextField {
@@ -319,7 +319,7 @@ status.hotswap.uptodate=Loaded classes are up to date. Nothing to reload.
add.instance.filter.dialog.title=Add Instance Filter
add.instance.filter.dialog.prompt=Enter instance ID:
add.instance.filter.dialog.error.numeric.value.expected=Instance ID should be a numeric value of type 'long'
add.instance.filter.dialog.empty.text=No instance filters configured
filters.not.configured=No filters configured
position.highlighter.stripe.tooltip=Execution line
hotswap.dialog.title.with.session=Reload Changed Classes for {0}
hotswap.dialog.title=Reload Changed Classes
@@ -345,8 +345,8 @@ breakpoint.table.header.column.enabled=Enabled
breakpoint.table.header.column.name=Name
default.package.name=<Default>
class.filters.dialog.title=Class Filters
class.filters.dialog.inclusion.filters.group=Class Filters
class.filters.dialog.exclusion.filters.group=Class Exclusion Filters
class.filters.dialog.inclusion.filters.group=Include
class.filters.dialog.exclusion.filters.group=Exclude
instance.filters.dialog.title=Instance Filters
instance.filters.dialog.instance.filters.group=Instance Filters
breakpoint.exception.breakpoint.display.name=''{0}''
@@ -506,3 +506,4 @@ editor.notification.alternative.source=Alternative source available for the clas
label.threads.view.configurable.show.prams.types=Show method arguments types
breakpoint.properties.panel.option.catch.class.filters=Catc&h class filters:
breakpoint.properties.panel.option.caller.filter=Calle&r filters:
caller.filters.dialog.title=Caller Filters