diff --git a/gradle.properties b/gradle.properties index 3bd2c6a3..00f10512 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,13 +10,13 @@ pluginVersion=1.19.2 #ideaVersion=IC-2020.1 might work on non mac # Fixes OS X Monterey error about missing a .dylib -ideaVersion=IC-2020.2.1 +#ideaVersion=IC-2020.2.1 #ideaVersion=IC-2020.2.2 #ideaVersion=IC-2021.2 -#ideaVersion=IC-2021.3.3 +ideaVersion=IC-2021.3.3 # The version of ANTLR v4 that will be used to generate the parser antlr4Version=4.10.1 diff --git a/src/main/java/org/antlr/intellij/plugin/preview/PreviewPanel.java b/src/main/java/org/antlr/intellij/plugin/preview/PreviewPanel.java index 2e9c2ae7..57838def 100644 --- a/src/main/java/org/antlr/intellij/plugin/preview/PreviewPanel.java +++ b/src/main/java/org/antlr/intellij/plugin/preview/PreviewPanel.java @@ -361,6 +361,10 @@ public void setEnabled(boolean enabled) { } private void setEnabledRecursive(Component component, boolean enabled) { + if (component instanceof JTable) { + // seems there's a special case + ((JTable) component).getTableHeader().setEnabled(enabled); + } if (component instanceof Container) { for (Component child : ((Container) component).getComponents()) { child.setEnabled(enabled); diff --git a/src/main/java/org/antlr/intellij/plugin/profiler/ProfilerPanel.java b/src/main/java/org/antlr/intellij/plugin/profiler/ProfilerPanel.java index 8b298485..5d0e552e 100644 --- a/src/main/java/org/antlr/intellij/plugin/profiler/ProfilerPanel.java +++ b/src/main/java/org/antlr/intellij/plugin/profiler/ProfilerPanel.java @@ -61,6 +61,41 @@ public class ProfilerPanel { protected JBTable profilerDataTable; protected JLabel deepestLookaheadLabel; + protected class ProfilerJBTable extends JBTable { + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + } + + @Override + protected JTableHeader createDefaultTableHeader() { + return new ProfilerTableHeader(); + } + + @Override + public TableCellRenderer getDefaultRenderer(Class columnClass) { + return new ProfileTableCellRenderer(); + } + + protected class ProfilerTableHeader extends JBTableHeader { + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + } + + public String getToolTipText(MouseEvent e) { + Point p = e.getPoint(); + int index = columnModel.getColumnIndexAtX(p.x); + int realIndex = columnModel.getColumn(index).getModelIndex(); + TableModel model = getModel(); + if ( model instanceof ProfilerTableDataModel) { + return ((ProfilerTableDataModel) model).getColumnToolTips()[realIndex]; + } + return model.getColumnName(realIndex); + } + } + } + public void grammarFileSaved(PreviewState previewState, VirtualFile grammarFile) { // leave model and such alone. } @@ -328,28 +363,7 @@ private void createUIComponents() { ParseInfo parseInfo = previewState.parsingResult.parser.getParseInfo(); updateTableModelPerExpertCheckBox(parseInfo,previewState.parsingResult.parser); }); - profilerDataTable = new JBTable() { - @Override - protected JTableHeader createDefaultTableHeader() { - return new JTableHeader(columnModel) { - public String getToolTipText(MouseEvent e) { - Point p = e.getPoint(); - int index = columnModel.getColumnIndexAtX(p.x); - int realIndex = columnModel.getColumn(index).getModelIndex(); - TableModel model = getModel(); - if ( model instanceof ProfilerTableDataModel ) { - return ((ProfilerTableDataModel) model).getColumnToolTips()[realIndex]; - } - return model.getColumnName(realIndex); - } - }; - } - - @Override - public TableCellRenderer getDefaultRenderer(Class columnClass) { - return new ProfileTableCellRenderer(); - } - }; + profilerDataTable = new ProfilerJBTable(); ListSelectionModel selectionModel = profilerDataTable.getSelectionModel(); selectionModel.addListSelectionListener( e -> { @@ -385,5 +399,4 @@ public TableCellRenderer getDefaultRenderer(Class columnClass) { deepestLookaheadLabel = new JBLabel("Deepest lookahead"); deepestLookaheadLabel.setForeground(DEEPESTLOOK_COLOR); } - }