Skip to content

Commit

Permalink
Fixes #558 (2nd try). Recursive setEnabled(false) somehow removes tab…
Browse files Browse the repository at this point in the history
…le header from (sub)component list so I had to special case that.

Extract jbtable inner class.

Signed-off-by: Terence Parr <[email protected]>
  • Loading branch information
parrt committed May 21, 2022
1 parent 520b7e5 commit 99853cf
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 25 deletions.
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
59 changes: 36 additions & 23 deletions src/main/java/org/antlr/intellij/plugin/profiler/ProfilerPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.
}
Expand Down Expand Up @@ -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 -> {
Expand Down Expand Up @@ -385,5 +399,4 @@ public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
deepestLookaheadLabel = new JBLabel("Deepest lookahead");
deepestLookaheadLabel.setForeground(DEEPESTLOOK_COLOR);
}

}

0 comments on commit 99853cf

Please sign in to comment.