/** * {@inheritDoc} */ @Override public boolean isExpanded() { return table.isExpanded(row); }
private void initListener(ClassEntity classEntity, String generateClassStr) { this.classEntity = classEntity; defaultMutableTreeTableNodeList = new ArrayList<DefaultMutableTreeTableNode>(); JXTreeTable treetable = new JXTreeTable(new FiledTreeTableModel(createData(classEntity))); CheckTreeTableManager manager = new CheckTreeTableManager(treetable); manager.getSelectionModel().addPathsByNodes(defaultMutableTreeTableNodeList); treetable.getColumnModel().getColumn(0).setPreferredWidth(150); treetable.expandAll(); treetable.setCellSelectionEnabled(false); final DefaultListSelectionModel defaultListSelectionModel = new DefaultListSelectionModel(); treetable.setSelectionModel(defaultListSelectionModel); treetable.setRowHeight(30); sp.setViewportView(treetable); generateClass.setText(generateClassStr);
@Override public void run() { int i = 0; while (i < treeTable.getRowCount()) { treeTable.expandRow(i++); } } });
@Override protected boolean expandOrCollapseNode(int column, EventObject e) { if (!isHierarchical(column)) return false; if (!mightBeExpansionTrigger(e)) boolean changedExpansion = false; MouseEvent me = (MouseEvent) e; if (hackAroundDragEnabled(me)) { if (getComponentOrientation().isLeftToRight()) { || ((treeRow < 0) && (row < 0))) {// or outside but leading if (treeRow >= 0) { //Issue 561-swingx: in content box, update column lead to focus getColumnModel().getSelectionModel().setLeadSelectionIndex(column); requestFocusInWindow();
int col = columnAtPoint(pt); if (col >= 0 && isHierarchical(col)) { int row = rowAtPoint(pt); if (row >= 0) { Rectangle cellBounds = getCellRect(row, col, false); int x = e.getX() - cellBounds.x; Rectangle nodeBounds = renderer.getRowBounds(row);
public boolean canExpand(TestStepInstance tsi) { for (int row = 0; row < jXTreeTable.getRowCount(); row++) { if (jXTreeTable.getValueAt(row, TestSequenceInstanceModel.SequenceColumn.NAME.ordinal()) instanceof TestStepInstance) { if (((TestStepInstance) jXTreeTable.getValueAt(row, TestSequenceInstanceModel.SequenceColumn.NAME.ordinal())).getTestStepInstancePath().equals(tsi.getTestStepInstancePath())) { jXTreeTable.expandPath(jXTreeTable.getPathForRow(row)); // System.out.println("expanded: " + tsi); return true; } } } log.warn("could not expand: " + tsi); return false; }
/** * Overriden to invoke repaint for the particular location if * the column contains the tree. This is done as the tree editor does * not fill the bounds of the cell, we need the renderer to paint * the tree in the background, and then draw the editor over it. * You should not need to call this method directly. <p> * * Additionally, there is tricksery involved to expand/collapse * the nodes. * * {@inheritDoc} */ @Override public boolean editCellAt(int row, int column, EventObject e) { getTreeTableHacker().hitHandleDetectionFromEditCell(column, e); // RG: Fix Issue 49! boolean canEdit = super.editCellAt(row, column, e); if (canEdit && isHierarchical(column)) { repaint(getCellRect(row, column, false)); } return canEdit; }
@Override public String getToolTipText(MouseEvent event) { int column = columnAtPoint(event.getPoint()); if (isHierarchical(column)) { int row = rowAtPoint(event.getPoint()); return renderer.getToolTipText(event, row, column); } return super.getToolTipText(event); }
/** * This is overridden to set the location to (0, 0) and set * the dimension to exactly fill the bounds of the hierarchical * column.<p> */ @Override public void setBounds(int x, int y, int w, int h) { // location is relative to the hierarchical column y = 0; x = 0; if (treeTable != null) { // adjust height to table height // It is not enough to set the height to treeTable.getHeight() // JW: why not? h = treeTable.getRowCount() * this.getRowHeight(); int hierarchicalC = treeTable.getHierarchicalColumn(); // JW: re-introduced to fix Issue 1168-swingx if (hierarchicalC >= 0) { TableColumn column = treeTable.getColumn(hierarchicalC); // adjust width to width of hierarchical column w = column.getWidth(); } } super.setBounds(x, y, w, h); }
/** * {@inheritDoc} */ @Override public boolean isLeaf() { // Issue #270-swingx: guard against invisible row TreePath path = table.getPathForRow(row); if (path != null) { return table.getTreeTableModel().isLeaf(path.getLastPathComponent()); } // JW: this is the same as BasicTreeUI.isLeaf. // Shouldn't happen anyway because must be called for visible rows only. return true; } /**
int treeClickedRow = jXTreeTable.rowAtPoint(p); if (treeClickedRow >= 0) { int treeClickedColumn = jXTreeTable.columnAtPoint(p); if (treeClickedColumn >= 0) { if (TestSequenceInstanceModel.SequenceColumn.STEPSTATUS.ordinal() == treeClickedColumn) { Object o = jXTreeTable.getModel().getValueAt(treeClickedRow, SequenceColumn.NAME.ordinal()); if (o != null) { log.trace("Row: " + treeClickedRow + " Column: " + treeClickedColumn + " Object:" + o); } else { if (jXTreeTable.isExpanded(treeClickedRow)) { jXTreeTable.collapseRow(treeClickedRow); } else { jXTreeTable.expandRow(treeClickedRow);
@Override public void actionPerformed(ActionEvent evt) { if ("expand-all".equals(getName())) { expandAll(); } else if ("collapse-all".equals(getName())) { collapseAll(); } } }
/** * Sets the data model for this JXTreeTable to the specified * {@link org.jdesktop.swingx.treetable.TreeTableModel}. The same data model * may be shared by any number of JXTreeTable instances. * * @param treeModel data model for this JXTreeTable */ public void setTreeTableModel(TreeTableModel treeModel) { TreeTableModel old = getTreeTableModel(); // boolean rootVisible = isRootVisible(); // setRootVisible(false); renderer.setModel(treeModel); // setRootVisible(rootVisible); firePropertyChange("treeTableModel", old, getTreeTableModel()); }
private void initJTree() { this.jTree = new JXTreeTable(jTreeModel); jTree.setTreeCellRenderer(new NameTreeTableCellRenderer()); jTree.getColumnExt(ProcessTreeTableColumn.LEGEND.getIndex()).setCellRenderer(new LegendTableCellRenderer(processColorService)); jTree.getColumnExt(ProcessTreeTableColumn.LEGEND.getIndex()).setMinWidth(55); jTree.getColumnExt(ProcessTreeTableColumn.LEGEND.getIndex()).setMaxWidth(55); jTree.getColumnExt(ProcessTreeTableColumn.USAGE.getIndex()).setCellRenderer(new UsageTableCellRenderer()); jTree.getColumnExt(ProcessTreeTableColumn.USAGE.getIndex()).setMinWidth(60); jTree.getColumnExt(ProcessTreeTableColumn.USAGE.getIndex()).setMaxWidth(60); jTree.getColumnExt(ProcessTreeTableColumn.PERCENTAGE.getIndex()).setCellRenderer(new PercentageTableCellRenderer()); jTree.getColumnExt(ProcessTreeTableColumn.PERCENTAGE.getIndex()).setMinWidth(80); jTree.getColumnExt(ProcessTreeTableColumn.PERCENTAGE.getIndex()).setMaxWidth(80); jTree.getColumnExt(ProcessTreeTableColumn.TOTAL_TIME.getIndex()).setCellRenderer(new TotalTimeTableCellRenderer()); jTree.getColumnExt(ProcessTreeTableColumn.TOTAL_TIME.getIndex()).setMinWidth(140); jTree.getColumnExt(ProcessTreeTableColumn.TOTAL_TIME.getIndex()).setMaxWidth(140); jTree.getColumnExt(ProcessTreeTableColumn.INTERRUPTIONS.getIndex()).setCellRenderer(new InterruptionsTableCellRenderer()); jTree.getColumnExt(ProcessTreeTableColumn.INTERRUPTIONS.getIndex()).setMinWidth(80); jTree.getColumnExt(ProcessTreeTableColumn.INTERRUPTIONS.getIndex()).setMaxWidth(80); jTree.moveColumn(1, 0); jTree.moveColumn(2, 1); int columnIndex = jTree.getColumnModel().getColumnCount() - i - 1; jTree.getColumnExt(columnIndex).setMinWidth(18); jTree.getColumnExt(columnIndex).setPreferredWidth(140); jTree.getColumnExt(columnIndex).setMaxWidth(1200); jTree.getColumnExt(columnIndex).setCellRenderer(new CategoryTableCellRenderer()); jTree.getColumnExt(columnIndex).setCellEditor(new CategoryTableCellEditor()); jTree.getColumnExt(columnIndex).setHeaderRenderer(new CategoryTableHeaderCellRenderer(categoryColorService));
/** * move selected paths when export of drag is done * @param source the component that was the source of the data * @param data the data that was transferred or possibly null if the action is NONE. * @param action the actual action that was performed */ @Override protected void exportDone(JComponent source, Transferable data, int action) { if (source instanceof JXTreeTable) { JXTreeTable treeTable = (JXTreeTable) source; ContextTreeModel model = (ContextTreeModel) treeTable.getTreeTableModel(); TreePath currentPath = treeTable.getPathForRow(treeTable.getSelectedRow()); if (currentPath != null) { addNodes(currentPath, model, data); } else { insertNodes(treeTable, model, data); } } super.exportDone(source, data, action); }
/** * Determines whether or not the root node from the TreeModel is visible. * * @param visible true, if the root node is visible; false, otherwise */ public void setRootVisible(boolean visible) { renderer.setRootVisible(visible); // JW: the revalidate forces the root to appear after a // toggling a visible from an initially invisible root. // JTree fires a propertyChange on the ROOT_VISIBLE_PROPERTY // BasicTreeUI reacts by (ultimately) calling JTree.treeDidChange // which revalidate the tree part. // Might consider to listen for the propertyChange (fired only if there // actually was a change) instead of revalidating unconditionally. revalidate(); repaint(); }
jButton2 = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); tableSummary = new org.jdesktop.swingx.JXTreeTable(); tableSummary.getTableHeader().setReorderingAllowed(false); tableSummary.setTreeCellRenderer(new SummaryTreeCellRenderer()); tableSummary.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); summaryOptionsLabel = new javax.swing.JLabel(); ); tableSummary.setRootVisible(true); tableSummary.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tableSummaryMouseClicked(evt); tableSummary.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { tableSummaryValueChanged(evt);
/** * paint an insert marker between the nodes closest to the current mouse location * @param tree * @param location */ private void paintInsertMarker(JXTreeTable tree, Point location) { Graphics g = tree.getGraphics(); tree.clearSelection(); int row = tree.getRowForPath(tree.getPathForLocation(location.x, location.y)); TreePath path = tree.getPathForRow(row); if (path != null) { Rectangle rowBounds = tree.getCellRect(row, 0, false); //tree.getPathBounds(path); if (lastRowBounds != null) { g.setColor(Color.white); g.drawLine(lastRowBounds.x, lastRowBounds.y, lastRowBounds.x + lastRowBounds.width, lastRowBounds.y); } if (rowBounds != null) { g.setColor(Color.black); g.drawLine(rowBounds.x, rowBounds.y, rowBounds.x + rowBounds.width, rowBounds.y); } lastRowBounds = rowBounds; } }
/** * get the tree model. dont play with the model, too much things are linked * @return the tree model */ @Override public ContextTreeModel getTreeTableModel() { return (ContextTreeModel) super.getTreeTableModel(); }
/** * {@inheritDoc} */ @Override public int getDepth() { return table.getPathForRow(row).getPathCount() - 1; }