private JButton createHeaderPopupCornerButton(final JPopupMenu headerPopup) { final JButton cornerButton = new JButton(Icons.getIcon(GeneralIcons.HIDE_COLUMN)); cornerButton.setToolTipText(Bundle.ReferencesBrowserControllerUI_ShowHideColumnsString()); cornerButton.setDefaultCapable(false); if (UIUtils.isWindowsClassicLookAndFeel()) { cornerButton.setMargin(new Insets(0, 0, 2, 2)); } else if (UIUtils.isWindowsXPLookAndFeel()) { cornerButton.setMargin(new Insets(0, 0, 0, 1)); } else if (UIUtils.isMetalLookAndFeel()) { cornerButton.setMargin(new Insets(0, 0, 2, 1)); } cornerButton.addKeyListener( new KeyAdapter() { public void keyPressed(final KeyEvent evt) { if (evt.getKeyCode() == KeyEvent.VK_SPACE) { showColumnSelectionPopup(headerPopup, cornerButton); } } }); cornerButton.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent mouseEvent) { if (headerPopup.isVisible()) { internalCornerButtonClick = true; cornerButton.getModel().setArmed(false); } else { internalCornerButtonClick = false; if (mouseEvent.getModifiers() == InputEvent.BUTTON3_MASK) { showColumnSelectionPopup(headerPopup, cornerButton); } } } public void mouseClicked(MouseEvent mouseEvent) { if ((mouseEvent.getModifiers() == InputEvent.BUTTON1_MASK) && (!internalCornerButtonClick)) { showColumnSelectionPopup(headerPopup, cornerButton); } } }); return cornerButton; }
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()); }