@Override public void addNotify() { // to allow displaying popup also in blank area if (treeTable.getParent() != null) { treeTableParent = treeTable.getParent(); treeTableParent.addMouseListener(tableMouseListener); } super.addNotify(); if( tableModel.getRowCount() == 0 ) { //re-attach node listeners Node[] nodes = new Node[tree.getRowCount()]; for (int i = 0; i < tree.getRowCount(); i++) { nodes[i] = Visualizer.findNode(tree.getPathForRow(i).getLastPathComponent()); } tableModel.setNodes(nodes); } listener.revalidateScrollBar(); ViewUtil.adjustBackground(treeTable); ViewUtil.adjustBackground(scrollPane); ViewUtil.adjustBackground(scrollPane.getViewport()); }
/** Synchronize the selected nodes from the manager of this Explorer. */ final void synchronizeSelectedNodes() { Node[] arr = manager.getSelectedNodes (); table.getSelectionModel().clearSelection(); NodeTableModel ntm = (NodeTableModel)table.getModel(); int size = ntm.getRowCount(); int firstSelection = -1; for (int i = 0; i < size; i++) { Node n = getNodeFromRow(i); for (int j = 0; j < arr.length; j++) { if (n.equals(arr[j])) { table.getSelectionModel().addSelectionInterval(i, i); if (firstSelection == -1) { firstSelection = i; } } } } if (firstSelection >= 0) { Rectangle rect = table.getCellRect(firstSelection, 0, true); if (!getViewport().getViewRect().contains(rect.getLocation())) { rect.height = Math.max(rect.height, getHeight() - 30); table.scrollRectToVisible(rect); } } }