mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
coverage: split settings so it's clear what enabled/disabled states are (IDEA-200520)
This commit is contained in:
@@ -49,14 +49,12 @@ import java.util.List;
|
||||
|
||||
public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText {
|
||||
private static final String IS_ACTIVE = "Is Active";
|
||||
private static final String INCLUDE_EXCLUDE = "Include/Exclude";
|
||||
protected JBTable myTable = null;
|
||||
protected FilterTableModel myTableModel = null;
|
||||
protected final Project myProject;
|
||||
private final ClassFilter myChooserFilter;
|
||||
@Nullable
|
||||
private final String myPatternsHelpId;
|
||||
private final boolean myExcludeAllowed;
|
||||
private String classDelimiter = "$";
|
||||
|
||||
public ClassFilterEditor(Project project) {
|
||||
@@ -68,13 +66,8 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText
|
||||
}
|
||||
|
||||
public ClassFilterEditor(Project project, ClassFilter classFilter, @Nullable String patternsHelpId) {
|
||||
this(project, classFilter, patternsHelpId, false);
|
||||
}
|
||||
|
||||
public ClassFilterEditor(Project project, ClassFilter classFilter, @Nullable String patternsHelpId, boolean excludeAllowed) {
|
||||
super(new BorderLayout());
|
||||
myPatternsHelpId = patternsHelpId;
|
||||
myExcludeAllowed = excludeAllowed;
|
||||
myTable = new JBTable();
|
||||
|
||||
final ToolbarDecorator decorator = ToolbarDecorator.createDecorator(myTable)
|
||||
@@ -126,19 +119,8 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText
|
||||
TableColumnModel columnModel = myTable.getColumnModel();
|
||||
TableColumn column = columnModel.getColumn(FilterTableModel.CHECK_MARK);
|
||||
int preferredWidth;
|
||||
if (!excludeAllowed) {
|
||||
myTable.setTableHeader(null);
|
||||
preferredWidth = 0;
|
||||
}
|
||||
else {
|
||||
JTableHeader tableHeader = myTable.getTableHeader();
|
||||
final FontMetrics fontMetrics = tableHeader.getFontMetrics(tableHeader.getFont());
|
||||
preferredWidth = fontMetrics.stringWidth(IS_ACTIVE) + 20;
|
||||
|
||||
TableColumn includeColumn = columnModel.getColumn(FilterTableModel.INCLUDE_MARK);
|
||||
includeColumn.setCellRenderer(new EnabledCellRenderer(myTable.getDefaultRenderer(Boolean.class)));
|
||||
TableUtil.setupCheckboxColumn(includeColumn, fontMetrics.stringWidth(INCLUDE_EXCLUDE) + 20);
|
||||
}
|
||||
myTable.setTableHeader(null);
|
||||
preferredWidth = 0;
|
||||
TableUtil.setupCheckboxColumn(column, preferredWidth);
|
||||
column.setCellRenderer(new EnabledCellRenderer(myTable.getDefaultRenderer(Boolean.class)));
|
||||
columnModel.getColumn(FilterTableModel.FILTER).setCellRenderer(new FilterCellRenderer());
|
||||
@@ -241,9 +223,6 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText
|
||||
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
if (myExcludeAllowed) {
|
||||
return 3;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
@@ -252,9 +231,6 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText
|
||||
if (column == FILTER) {
|
||||
return "Pattern";
|
||||
}
|
||||
if (column == INCLUDE_MARK) {
|
||||
return INCLUDE_EXCLUDE;
|
||||
}
|
||||
return IS_ACTIVE;
|
||||
}
|
||||
|
||||
|
||||
@@ -310,7 +310,8 @@ run.configuration.unknown.description=Configuration which cannot be loaded due t
|
||||
#code coverage
|
||||
enable.coverage.with.emma=Record code &coverage information
|
||||
merge.coverage.data=&Merge gathered coverage with suite chosen below
|
||||
record.coverage.filters.title=Packages and classes to record coverage data
|
||||
record.coverage.filters.title=Packages and classes to include in coverage data
|
||||
exclude.coverage.filters.title=Packages and classes to exclude from coverage data
|
||||
coverage.tab.title=Code Coverage
|
||||
show.swing.inspector=&Enable capturing form snapshots
|
||||
show.swing.inspector.disabled=&Enable capturing form snapshots (requires JRE 5.0 or higher)
|
||||
|
||||
+25
-8
@@ -11,7 +11,6 @@ import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.execution.configurations.RunConfigurationBase;
|
||||
import com.intellij.execution.util.JreVersionDetector;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.util.ClassFilter;
|
||||
import com.intellij.ide.util.PackageChooserDialog;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
@@ -22,11 +21,14 @@ import com.intellij.openapi.ui.VerticalFlowLayout;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
import com.intellij.ui.ListCellRendererWrapper;
|
||||
import com.intellij.ui.TitledSeparator;
|
||||
import com.intellij.ui.classFilter.ClassFilter;
|
||||
import com.intellij.ui.classFilter.ClassFilterEditor;
|
||||
import com.intellij.ui.components.JBPanel;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IconUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -36,6 +38,7 @@ import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -54,6 +57,7 @@ public class CoverageConfigurable extends SettingsEditor<RunConfigurationBase> {
|
||||
private final JreVersionDetector myVersionDetector = new JreVersionDetector();
|
||||
Project myProject;
|
||||
private MyClassFilterEditor myClassFilterEditor;
|
||||
private MyClassFilterEditor myExcludeClassFilterEditor;
|
||||
private JLabel myCoverageNotSupportedLabel;
|
||||
private JComboBox myCoverageRunnerCb;
|
||||
private JPanel myRunnerPanel;
|
||||
@@ -66,13 +70,13 @@ public class CoverageConfigurable extends SettingsEditor<RunConfigurationBase> {
|
||||
|
||||
private static class MyClassFilterEditor extends ClassFilterEditor {
|
||||
MyClassFilterEditor(Project project) {
|
||||
super(project, new ClassFilter() {
|
||||
super(project, new com.intellij.ide.util.ClassFilter() {
|
||||
@Override
|
||||
public boolean isAccepted(PsiClass aClass) {
|
||||
if (aClass.getContainingClass() != null) return false;
|
||||
return true;
|
||||
}
|
||||
}, null, true);
|
||||
}, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -147,7 +151,10 @@ public class CoverageConfigurable extends SettingsEditor<RunConfigurationBase> {
|
||||
UIUtil.setEnabled(myRunnerPanel, isJre50, true);
|
||||
|
||||
|
||||
myClassFilterEditor.setFilters(configuration.getCoveragePatterns());
|
||||
myClassFilterEditor.setFilters(Arrays.stream(configuration.getCoveragePatterns())
|
||||
.filter(classFilter -> classFilter.INCLUDE).toArray(ClassFilter[]::new));
|
||||
myExcludeClassFilterEditor.setFilters(Arrays.stream(configuration.getCoveragePatterns())
|
||||
.filter(classFilter -> !classFilter.INCLUDE).toArray(ClassFilter[]::new));
|
||||
final boolean isCoverageByTestApplicable = runner != null && runner.isCoverageByTestApplicable();
|
||||
myTracingRb.setEnabled(myTracingRb.isEnabled() && isCoverageByTestApplicable);
|
||||
mySamplingRb.setSelected(configuration.isSampling() || !isCoverageByTestApplicable);
|
||||
@@ -166,7 +173,13 @@ public class CoverageConfigurable extends SettingsEditor<RunConfigurationBase> {
|
||||
@Override
|
||||
protected void applyEditorTo(@NotNull final RunConfigurationBase runConfiguration) throws ConfigurationException {
|
||||
final JavaCoverageEnabledConfiguration configuration = (JavaCoverageEnabledConfiguration)CoverageEnabledConfiguration.getOrCreate(runConfiguration);
|
||||
configuration.setCoveragePatterns(myClassFilterEditor.getFilters());
|
||||
ClassFilter[] newCoveragePatterns = ArrayUtil.mergeArrays(myClassFilterEditor.getFilters(), myExcludeClassFilterEditor.getFilters());
|
||||
ClassFilter[] oldCoveragePatterns = configuration.getCoveragePatterns();
|
||||
//apply new order if something else was changed as well
|
||||
if (newCoveragePatterns.length != oldCoveragePatterns.length ||
|
||||
!ContainerUtil.newHashSet(newCoveragePatterns).equals(ContainerUtil.newHashSet(oldCoveragePatterns))) {
|
||||
configuration.setCoveragePatterns(newCoveragePatterns);
|
||||
}
|
||||
configuration.setCoverageRunner(getSelectedRunner());
|
||||
configuration.setTrackPerTestCoverage(myTrackPerTestCoverageCb.isSelected());
|
||||
configuration.setSampling(mySamplingRb.isSelected());
|
||||
@@ -243,12 +256,16 @@ public class CoverageConfigurable extends SettingsEditor<RunConfigurationBase> {
|
||||
result.add(myRunnerPanel, gc);
|
||||
|
||||
JPanel panel = new JPanel(new GridBagLayout());
|
||||
panel.setBorder(IdeBorderFactory.createTitledBorder(ExecutionBundle.message("record.coverage.filters.title"), false));
|
||||
myClassFilterEditor = new MyClassFilterEditor(myProject);
|
||||
final GridBagConstraints bagConstraints =
|
||||
new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
|
||||
JBUI.emptyInsets(), 0, 0);
|
||||
panel.add(new TitledSeparator(ExecutionBundle.message("record.coverage.filters.title")), bagConstraints);
|
||||
myClassFilterEditor = new MyClassFilterEditor(myProject);
|
||||
panel.add(myClassFilterEditor, bagConstraints);
|
||||
|
||||
panel.add(new TitledSeparator(ExecutionBundle.message("exclude.coverage.filters.title")), bagConstraints);
|
||||
myExcludeClassFilterEditor = new MyClassFilterEditor(myProject);
|
||||
panel.add(myExcludeClassFilterEditor, bagConstraints);
|
||||
|
||||
bagConstraints.weighty = 0;
|
||||
myTrackTestSourcesCb = new JCheckBox("Enable coverage in test folders");
|
||||
|
||||
Reference in New Issue
Block a user