@Override @SuppressWarnings("unchecked") public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Object transformedValue = Stream.of(model.getColumns()) .filter(col -> TreeTableModel.class == col.getColumnClass()) .findAny() .map(col -> col.valueOf(value)) .orElseThrow(() -> new ShouldNeverHappenException("Sergey Ishchenko", "columns are statically defined, and each column set should contain " + "operator column")); JComponent result = (JComponent) myBaseRenderer.getTreeCellRendererComponent(tree, transformedValue, selected, expanded, leaf, row, hasFocus); result.setOpaque(!selected); return result; } });
private void initTreeCellRenderer(ListTreeTableModelOnColumns model) { ((TreeTableCellRenderer) treeTable.getDefaultRenderer(TreeTableModel.class)) .setCellRenderer(new TreeCellRenderer() { private final TreeCellRenderer myBaseRenderer = new HighlightableCellRenderer(); @Override @SuppressWarnings("unchecked") public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Object transformedValue = Stream.of(model.getColumns()) .filter(col -> TreeTableModel.class == col.getColumnClass()) .findAny() .map(col -> col.valueOf(value)) .orElseThrow(() -> new ShouldNeverHappenException("Sergey Ishchenko", "columns are statically defined, and each column set should contain " + "operator column")); JComponent result = (JComponent) myBaseRenderer.getTreeCellRendererComponent(tree, transformedValue, selected, expanded, leaf, row, hasFocus); result.setOpaque(!selected); return result; } }); }
throw new ShouldNeverHappenException("Andrew Naydyonock", "edge always intersect a node");
public void initialize(Container container) { JTextArea queryLabel = new JTextArea(originalQuery); queryLabel.setRows(3); queryLabel.setEditable(false); GraphQueryPlan graphQueryPlan = result.getPlan() .orElseThrow(() -> new ShouldNeverHappenException("Sergey Ishchenko", "GraphQueryPanel is initialized when explain or profile queries are executed")); ListTreeTableModelOnColumns model = createModel(graphQueryPlan, result.isProfilePlan()); treeTable = new TreeTableView(model); treeTable.setAutoCreateColumnsFromModel(true); treeTable.setRootVisible(true); treeTable.setCellSelectionEnabled(false); treeTable.setRowSelectionAllowed(true); treeTable.setAutoResizeMode(TreeTableView.AUTO_RESIZE_OFF); treeTable.getTree().setShowsRootHandles(true); DefaultTreeExpander expander = new DefaultTreeExpander(treeTable.getTree()); expander.expandAll(); initTreeCellRenderer(model); JBLabel infoLabel = new JBLabel(getStatusText(result)); infoLabel.setHorizontalAlignment(SwingConstants.LEFT); container.add(new JBScrollPane(queryLabel), BorderLayout.NORTH); // scroll pane is needed to correctly fit all the tree content and to show table header container.add(new JBScrollPane(treeTable, JBScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JBScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER); container.add(infoLabel, BorderLayout.SOUTH); new ColumnResizer(treeTable).resize(); }