do not refresh all table on every select event

This commit is contained in:
Anna Kozlova
2014-10-02 12:44:03 +02:00
parent 40c3bfec2c
commit 59c7f7402c
2 changed files with 23 additions and 10 deletions
@@ -33,6 +33,7 @@ import com.intellij.ide.TreeExpander;
import com.intellij.ide.ui.search.SearchUtil;
import com.intellij.ide.ui.search.SearchableOptionsRegistrar;
import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.colors.TextAttributesKey;
@@ -43,6 +44,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.Splitter;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.profile.ApplicationProfileManager;
@@ -130,6 +132,10 @@ public class SingleInspectionProfilePanel extends JPanel {
private Splitter myMainSplitter;
private String[] myInitialScopesOrder;
private Disposable myDisposable = new Disposable() {
@Override
public void dispose() {}
};
public SingleInspectionProfilePanel(@NotNull InspectionProjectProfileManager projectProfileManager,
@NotNull String inspectionProfileName,
@@ -501,7 +507,7 @@ public class SingleInspectionProfilePanel extends JPanel {
public InspectionProfileImpl getInspectionProfile() {
return mySelectedProfile;
}
});
}, myDisposable);
myTreeTable.setTreeCellRenderer(renderer);
myTreeTable.setRootVisible(false);
UIUtil.setLineStyleAngled(myTreeTable.getTree());
@@ -1020,6 +1026,8 @@ public class SingleInspectionProfilePanel extends JPanel {
}
}
mySelectedProfile = null;
Disposer.dispose(myDisposable);
myDisposable = null;
}
private JPanel createInspectionProfileSettingsPanel() {
@@ -23,6 +23,7 @@ import com.intellij.codeInspection.ex.ToolsImpl;
import com.intellij.ide.IdeTooltip;
import com.intellij.ide.IdeTooltipManager;
import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
@@ -34,9 +35,10 @@ import com.intellij.ui.DoubleClickListener;
import com.intellij.ui.treeStructure.treetable.TreeTable;
import com.intellij.ui.treeStructure.treetable.TreeTableModel;
import com.intellij.ui.treeStructure.treetable.TreeTableTree;
import com.intellij.util.Alarm;
import com.intellij.util.SingleAlarm;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.TextTransferable;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -62,8 +64,8 @@ public class InspectionsConfigTreeTable extends TreeTable {
private final static int SEVERITIES_COLUMN = 1;
private final static int IS_ENABLED_COLUMN = 2;
public InspectionsConfigTreeTable(final InspectionsConfigTreeTableSettings settings) {
super(new InspectionsConfigTreeTableModel(settings));
public InspectionsConfigTreeTable(final InspectionsConfigTreeTableSettings settings, Disposable parentDisposable) {
super(new InspectionsConfigTreeTableModel(settings, parentDisposable));
final TableColumn severitiesColumn = getColumnModel().getColumn(SEVERITIES_COLUMN);
severitiesColumn.setMaxWidth(20);
@@ -180,9 +182,16 @@ public class InspectionsConfigTreeTable extends TreeTable {
private final InspectionsConfigTreeTableSettings mySettings;
private TreeTable myTreeTable;
public InspectionsConfigTreeTableModel(final InspectionsConfigTreeTableSettings settings) {
private SingleAlarm myUpdateAlarm;
public InspectionsConfigTreeTableModel(final InspectionsConfigTreeTableSettings settings, Disposable parentDisposable) {
super(settings.getRoot());
mySettings = settings;
myUpdateAlarm = new SingleAlarm(new Runnable() {
public void run() {
((AbstractTableModel)myTreeTable.getModel()).fireTableDataChanged();
}
}, 10, Alarm.ThreadToUse.SWING_THREAD, parentDisposable);
}
@Override
@@ -275,11 +284,7 @@ public class InspectionsConfigTreeTable extends TreeTable {
mySettings.onChanged(aNode);
}
if (myTreeTable != null) {
UIUtil.invokeLaterIfNeeded(new Runnable() {
public void run() {
((AbstractTableModel)myTreeTable.getModel()).fireTableDataChanged();
}
});
myUpdateAlarm.cancelAndRequest();
}
}