Skip to content

Commit 99853cf

Browse files
committed
Fixes #558 (2nd try). Recursive setEnabled(false) somehow removes table header from (sub)component list so I had to special case that.
Extract jbtable inner class. Signed-off-by: Terence Parr <[email protected]>
1 parent 520b7e5 commit 99853cf

File tree

3 files changed

+42
-25
lines changed

3 files changed

+42
-25
lines changed

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ pluginVersion=1.19.2
1010
#ideaVersion=IC-2020.1 might work on non mac
1111

1212
# Fixes OS X Monterey error about missing a .dylib
13-
ideaVersion=IC-2020.2.1
13+
#ideaVersion=IC-2020.2.1
1414

1515
#ideaVersion=IC-2020.2.2
1616

1717
#ideaVersion=IC-2021.2
1818

19-
#ideaVersion=IC-2021.3.3
19+
ideaVersion=IC-2021.3.3
2020

2121
# The version of ANTLR v4 that will be used to generate the parser
2222
antlr4Version=4.10.1

src/main/java/org/antlr/intellij/plugin/preview/PreviewPanel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,10 @@ public void setEnabled(boolean enabled) {
361361
}
362362

363363
private void setEnabledRecursive(Component component, boolean enabled) {
364+
if (component instanceof JTable) {
365+
// seems there's a special case
366+
((JTable) component).getTableHeader().setEnabled(enabled);
367+
}
364368
if (component instanceof Container) {
365369
for (Component child : ((Container) component).getComponents()) {
366370
child.setEnabled(enabled);

src/main/java/org/antlr/intellij/plugin/profiler/ProfilerPanel.java

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,41 @@ public class ProfilerPanel {
6161
protected JBTable profilerDataTable;
6262
protected JLabel deepestLookaheadLabel;
6363

64+
protected class ProfilerJBTable extends JBTable {
65+
@Override
66+
public void setEnabled(boolean enabled) {
67+
super.setEnabled(enabled);
68+
}
69+
70+
@Override
71+
protected JTableHeader createDefaultTableHeader() {
72+
return new ProfilerTableHeader();
73+
}
74+
75+
@Override
76+
public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
77+
return new ProfileTableCellRenderer();
78+
}
79+
80+
protected class ProfilerTableHeader extends JBTableHeader {
81+
@Override
82+
public void setEnabled(boolean enabled) {
83+
super.setEnabled(enabled);
84+
}
85+
86+
public String getToolTipText(MouseEvent e) {
87+
Point p = e.getPoint();
88+
int index = columnModel.getColumnIndexAtX(p.x);
89+
int realIndex = columnModel.getColumn(index).getModelIndex();
90+
TableModel model = getModel();
91+
if ( model instanceof ProfilerTableDataModel) {
92+
return ((ProfilerTableDataModel) model).getColumnToolTips()[realIndex];
93+
}
94+
return model.getColumnName(realIndex);
95+
}
96+
}
97+
}
98+
6499
public void grammarFileSaved(PreviewState previewState, VirtualFile grammarFile) {
65100
// leave model and such alone.
66101
}
@@ -328,28 +363,7 @@ private void createUIComponents() {
328363
ParseInfo parseInfo = previewState.parsingResult.parser.getParseInfo();
329364
updateTableModelPerExpertCheckBox(parseInfo,previewState.parsingResult.parser);
330365
});
331-
profilerDataTable = new JBTable() {
332-
@Override
333-
protected JTableHeader createDefaultTableHeader() {
334-
return new JTableHeader(columnModel) {
335-
public String getToolTipText(MouseEvent e) {
336-
Point p = e.getPoint();
337-
int index = columnModel.getColumnIndexAtX(p.x);
338-
int realIndex = columnModel.getColumn(index).getModelIndex();
339-
TableModel model = getModel();
340-
if ( model instanceof ProfilerTableDataModel ) {
341-
return ((ProfilerTableDataModel) model).getColumnToolTips()[realIndex];
342-
}
343-
return model.getColumnName(realIndex);
344-
}
345-
};
346-
}
347-
348-
@Override
349-
public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
350-
return new ProfileTableCellRenderer();
351-
}
352-
};
366+
profilerDataTable = new ProfilerJBTable();
353367
ListSelectionModel selectionModel = profilerDataTable.getSelectionModel();
354368
selectionModel.addListSelectionListener(
355369
e -> {
@@ -385,5 +399,4 @@ public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
385399
deepestLookaheadLabel = new JBLabel("Deepest lookahead");
386400
deepestLookaheadLabel.setForeground(DEEPESTLOOK_COLOR);
387401
}
388-
389402
}

0 commit comments

Comments
 (0)