Make JBTableHeader support column header tooltips from TreeTableModels

This commit is contained in:
Kirill Likhodedov
2018-07-23 14:17:05 +03:00
parent 87841ef26e
commit aae821963a
@@ -20,11 +20,14 @@ import com.intellij.openapi.util.ExpirableRunnable;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.ui.*;
import com.intellij.ui.speedSearch.SpeedSearchSupply;
import com.intellij.ui.treeStructure.treetable.TreeTable;
import com.intellij.ui.treeStructure.treetable.TreeTableModel;
import com.intellij.util.ui.*;
import com.intellij.util.ui.accessibility.ScreenReader;
import com.intellij.util.ui.update.Activatable;
import com.intellij.util.ui.update.UiNotifyConnector;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
@@ -818,11 +821,10 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component
@Override
public String getToolTipText(@NotNull final MouseEvent event) {
final TableModel model = getModel();
if (model instanceof SortableColumnModel) {
ColumnInfo[] columnInfos = getColumnInfos();
if (columnInfos != null) {
final int i = columnAtPoint(event.getPoint());
final int infoIndex = i >= 0 ? convertColumnIndexToModel(i) : -1;
final ColumnInfo[] columnInfos = ((SortableColumnModel)model).getColumnInfos();
final String tooltipText = infoIndex >= 0 && infoIndex < columnInfos.length ? columnInfos[infoIndex].getTooltipText() : null;
if (tooltipText != null) {
return tooltipText;
@@ -831,6 +833,21 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component
return super.getToolTipText(event);
}
@Nullable
private ColumnInfo[] getColumnInfos() {
TableModel model = getModel();
if (model instanceof SortableColumnModel) {
return ((SortableColumnModel)model).getColumnInfos();
}
else if (getTable() instanceof TreeTable) {
TreeTableModel treeTableModel = ((TreeTable)getTable()).getTableModel();
if (treeTableModel instanceof SortableColumnModel) {
return ((SortableColumnModel)treeTableModel).getColumnInfos();
}
}
return null;
}
@Override
protected void processMouseEvent(MouseEvent e) {
if (e.getID() == MouseEvent.MOUSE_CLICKED && e.getButton() == MouseEvent.BUTTON1) {