1 package com
.intellij
.ui
;
6 public class TableToolTipHandler
extends AbstractToolTipHandler
<TableCellKey
, JTable
> {
7 protected TableToolTipHandler(JTable table
) {
11 public static void install(JTable table
) {
12 new TableToolTipHandler(table
);
15 public Rectangle
getCellBounds(TableCellKey tableCellKey
, Component rendererComponent
) {
16 Rectangle cellRect
= getCellRect(tableCellKey
);
17 cellRect
.width
= rendererComponent
.getPreferredSize().width
;
21 private Rectangle
getCellRect(TableCellKey tableCellKey
) {
22 return myComponent
.getCellRect(tableCellKey
.myRowIndex
, tableCellKey
.myColumnIndex
, false);
25 public Component
getRendererComponent(TableCellKey key
) {
26 int modelColumnIndex
= myComponent
.convertColumnIndexToModel(key
.myColumnIndex
);
27 return myComponent
.getCellRenderer(key
.myRowIndex
, key
.myColumnIndex
).
28 getTableCellRendererComponent(myComponent
,
29 myComponent
.getModel().getValueAt(key
.myRowIndex
, modelColumnIndex
),
30 myComponent
.getSelectionModel().isSelectedIndex(key
.myRowIndex
),
31 myComponent
.hasFocus(),
32 key
.myRowIndex
,key
.myColumnIndex
36 public Rectangle
getVisibleRect(TableCellKey key
) {
37 Rectangle columnVisibleRect
= myComponent
.getVisibleRect();
38 Rectangle cellRect
= getCellRect(key
);
39 int visibleRight
= Math
.min(columnVisibleRect
.x
+ columnVisibleRect
.width
, cellRect
.x
+ cellRect
.width
);
40 columnVisibleRect
.x
= Math
.min(columnVisibleRect
.x
, cellRect
.x
);
41 columnVisibleRect
.width
= Math
.max(0, visibleRight
- columnVisibleRect
.x
);
42 return columnVisibleRect
;
45 //private Rectangle getColumnRectangle(int columnIndex) {
46 // TableColumnModel cm = getColumnModel();
47 // if (getComponentOrientation().isLeftToRight()) {
48 // for (int i = 0; i < column; i++) {
49 // r.x += cm.getColumn(i).getWidth();
53 // for (int i = cm.getColumnCount() - 1; i > column; i--) {
54 // r.x += cm.getColumn(i).getWidth();
57 // r.width = cm.getColumn(column).getWidth();
60 public TableCellKey
getCellKeyForPoint(Point point
) {
61 int rowIndex
= myComponent
.rowAtPoint(point
);
66 int columnIndex
= myComponent
.columnAtPoint(point
); // column index in visible coordinates
67 if (columnIndex
== -1) {
71 return new TableCellKey(rowIndex
, columnIndex
);