private JScrollPane createTable()

in src/main/java/idea/plugin/psiviewer/view/PropertySheetPanel.java [94:141]


    private JScrollPane createTable(Object[][] tableData, Object[] columnTitle)
    {
        myTable = new JTable(tableData, columnTitle) {
            public boolean isCellEditable(int row, int column) {
                return false;
            }

            public JToolTip createToolTip() {
                PropertySheetToolTip.getInstance().setComponent(this);
                return PropertySheetToolTip.getInstance();
            }

            public String getToolTipText(@NotNull MouseEvent event) {
                int col = columnAtPoint(event.getPoint());
                int row = rowAtPoint(event.getPoint());

                String tip = (String) getValueAt(row, col);

                Graphics2D g2 = (Graphics2D) getGraphics();
                Rectangle2D tipRect = getFont().getStringBounds(tip, g2.getFontRenderContext());
                g2.dispose();

                Rectangle visibleCell = getVisibleRect().intersection(getCellRect(row, col, false));

                if (tipRect.getWidth() + 1 < visibleCell.getWidth())
                    tip = null;   // Cell content is completely visible, so no tip is required
                return tip;
            }

            private static final boolean INCLUDE_INTERCELL_SPACING = true;

            public Point getToolTipLocation(MouseEvent event) {
                int col = columnAtPoint(event.getPoint());
                int row = rowAtPoint(event.getPoint());
                return getCellRect(row, col, INCLUDE_INTERCELL_SPACING).getLocation();
            }


        }
        ;
        myTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
        myTable.getSelectionModel().setSelectionMode(0);

        packColumn(myTable, 0, 2);
        packColumn(myTable, 1, 2);

        return new JBScrollPane(myTable);
    }