private void initColumnsData() { columnWidths = new int[columnCount - 1]; // Width of the first column fits to width columnNames = new String[columnCount]; columnToolTips = new String[columnCount]; columnRenderers = new TableCellRenderer[columnCount]; columnNames[0] = Bundle.ReferencesBrowserControllerUI_FieldColumnName(); columnToolTips[0] = Bundle.ReferencesBrowserControllerUI_FieldColumnDescr(); columnNames[1] = Bundle.ReferencesBrowserControllerUI_TypeColumnName(); columnToolTips[1] = Bundle.ReferencesBrowserControllerUI_TypeColumnDescr(); columnNames[2] = Bundle.ReferencesBrowserControllerUI_FullTypeColumnName(); columnToolTips[2] = Bundle.ReferencesBrowserControllerUI_FullTypeColumnDescr(); columnNames[3] = Bundle.ReferencesBrowserControllerUI_ValueColumnName(); columnToolTips[3] = Bundle.ReferencesBrowserControllerUI_ValueColumnDescr(); columnNames[4] = Bundle.ReferencesBrowserControllerUI_SizeColumnName(); columnToolTips[4] = Bundle.ReferencesBrowserControllerUI_SizeColumnDescr(); if (retainedSizeSupported) { columnNames[5] = Bundle.ReferencesBrowserControllerUI_RetainedSizeColumnName(); columnToolTips[5] = Bundle.ReferencesBrowserControllerUI_RetainedSizeColumnDescr(); } int unitWidth = getFontMetrics(getFont()).charWidth('W'); // NOI18N // initial width of data columns FieldTreeCellRenderer treeCellRenderer = new FieldTreeCellRenderer(); treeCellRenderer.setLeafIcon(null); treeCellRenderer.setClosedIcon(null); treeCellRenderer.setOpenIcon(null); LabelTableCellRenderer dataCellRendererL = new LabelTableCellRenderer(JLabel.LEADING); LabelTableCellRenderer dataCellRendererT = new LabelTableCellRenderer(JLabel.TRAILING); // method / class / package name columnRenderers[0] = null; columnWidths[1 - 1] = unitWidth * 18; columnRenderers[1] = dataCellRendererL; columnWidths[2 - 1] = unitWidth * 28; columnRenderers[2] = dataCellRendererL; columnWidths[3 - 1] = unitWidth * 14; columnRenderers[3] = dataCellRendererT; columnWidths[4 - 1] = unitWidth * 7; columnRenderers[4] = dataCellRendererT; if (retainedSizeSupported) { columnWidths[5 - 1] = unitWidth * 7; columnRenderers[5] = dataCellRendererT; } }
private void initComponents() { treeCellRenderer.setLeafIcon(null); treeCellRenderer.setClosedIcon(null); treeCellRenderer.setOpenIcon(null); fieldsListTableModel.setRealColumnVisibility(2, false); fieldsListTableModel.setRealColumnVisibility(4, false); if (retainedSizeSupported) fieldsListTableModel.setRealColumnVisibility( 5, referencesBrowserController .getReferencesControllerHandler() .getHeapFragmentWalker() .getRetainedSizesStatus() == HeapFragmentWalker.RETAINED_SIZES_COMPUTED); fieldsListTable = new JTreeTable(fieldsListTableModel) { public void doLayout() { int columnsWidthsSum = 0; int realFirstColumn = -1; TableColumnModel colModel = getColumnModel(); for (int i = 0; i < fieldsListTableModel.getColumnCount(); i++) { if (fieldsListTableModel.getRealColumn(i) == 0) { realFirstColumn = i; } else { columnsWidthsSum += colModel.getColumn(i).getPreferredWidth(); } } if (realFirstColumn != -1) { colModel.getColumn(realFirstColumn).setPreferredWidth(getWidth() - columnsWidthsSum); } super.doLayout(); } }; fieldsListTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fieldsListTable.setGridColor(UIConstants.TABLE_VERTICAL_GRID_COLOR); fieldsListTable.setSelectionBackground(UIConstants.TABLE_SELECTION_BACKGROUND_COLOR); fieldsListTable.setSelectionForeground(UIConstants.TABLE_SELECTION_FOREGROUND_COLOR); fieldsListTable.setShowHorizontalLines(UIConstants.SHOW_TABLE_HORIZONTAL_GRID); fieldsListTable.setShowVerticalLines(UIConstants.SHOW_TABLE_VERTICAL_GRID); fieldsListTable.setRowMargin(UIConstants.TABLE_ROW_MARGIN); fieldsListTable.setRowHeight(UIUtils.getDefaultRowHeight() + 2); fieldsListTable.getTree().setLargeModel(true); fieldsListTable.getTree().setToggleClickCount(0); fieldsListTable.getColumnModel().getColumn(0).setMinWidth(150); fieldsListTable .getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "DEFAULT_ACTION"); // NOI18N fieldsListTable .getActionMap() .put( "DEFAULT_ACTION", // NOI18N new AbstractAction() { public void actionPerformed(ActionEvent e) { performDefaultAction(); } }); // Disable traversing table cells using TAB and Shift+TAB Set keys = new HashSet( fieldsListTable.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS)); keys.add(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0)); fieldsListTable.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, keys); keys = new HashSet( fieldsListTable.getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS)); keys.add(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.SHIFT_MASK)); fieldsListTable.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, keys); setColumnsData(); tablePopup = createTablePopup(); cornerPopup = new JPopupMenu(); JTreeTablePanel tablePanel = new JTreeTablePanel(fieldsListTable); tablePanel.setCorner( JScrollPane.UPPER_RIGHT_CORNER, createHeaderPopupCornerButton(cornerPopup)); dataPanel = new JPanel(new BorderLayout()); dataPanel.add(tablePanel, BorderLayout.CENTER); noDataPanel = new JPanel(new BorderLayout()); noDataPanel.setBorder(BorderFactory.createLoweredBevelBorder()); HTMLTextArea hintArea = new HTMLTextArea(); hintArea.setBorder(BorderFactory.createEmptyBorder(10, 8, 8, 8)); String instancesRes = Icons.getResource(HeapWalkerIcons.INSTANCES); String hintText = Bundle.ReferencesBrowserControllerUI_NoInstanceSelectedMsg( "<img border='0' align='bottom' src='nbresloc:/" + instancesRes + "'>"); // NOI18N hintArea.setText(hintText); noDataPanel.add(hintArea, BorderLayout.CENTER); contents = new CardLayout(); setLayout(contents); add(noDataPanel, NO_DATA); add(dataPanel, DATA); fieldsListTable.addMouseListener(new FieldsListTableMouseListener()); fieldsListTable.addKeyListener(new FieldsListTableKeyListener()); }