下面列出了javafx.scene.control.TreeTableColumn.CellDataFeatures#javafx.scene.control.TreeTableCell 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public TreeTableCell<T, Long> call(TreeTableColumn<T, Long> param) {
TreeTableCell<T, Long> cell = new TreeTableCell<T, Long>() {
private final Text text = new Text();
@Override
protected void updateItem(final Long item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || (long) item <= 0) {
setText(null);
setGraphic(null);
return;
}
text.setText(DateTools.datetimeToString((long) item));
setGraphic(text);
}
};
return cell;
}
@Override
public TreeTableCell<T, Long> call(TreeTableColumn<T, Long> param) {
TreeTableCell<T, Long> cell = new TreeTableCell<T, Long>() {
private final Text text = new Text();
@Override
protected void updateItem(final Long item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null || (long) item <= 0) {
setText(null);
setGraphic(null);
return;
}
text.setText(FileTools.showFileSize((long) item));
setGraphic(text);
}
};
return cell;
}
protected Point2D getPoint(TreeTableView<?> treeTableView, int rowIndex, int columnIndex) {
Set<Node> treeTableRowCell = treeTableView.lookupAll(".tree-table-row-cell");
TreeTableRow<?> row = null;
for (Node tableRow : treeTableRowCell) {
TreeTableRow<?> r = (TreeTableRow<?>) tableRow;
if (r.getIndex() == rowIndex) {
row = r;
break;
}
}
Set<Node> cells = row.lookupAll(".tree-table-cell");
for (Node node : cells) {
TreeTableCell<?, ?> cell = (TreeTableCell<?, ?>) node;
if (treeTableView.getColumns().indexOf(cell.getTableColumn()) == columnIndex) {
Bounds bounds = cell.getBoundsInParent();
Point2D localToParent = cell.localToParent(bounds.getWidth() / 2, bounds.getHeight() / 2);
Point2D rowLocal = row.localToScene(localToParent, true);
return rowLocal;
}
}
return null;
}
@Override
public TreeTableCell<FeatureTableRow, Object> call(TreeTableColumn<FeatureTableRow, Object> p) {
return new TreeTableCell<FeatureTableRow, Object>() {
@Override
public void updateItem(Object object, boolean empty) {
super.updateItem(object, empty);
setStyle("-fx-alignment: CENTER;"
+ "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
if (object == null) {
setText(null);
} else {
NumberFormat formatter = MZmineCore.getConfiguration().getMZFormat();
Double doubleValue = Double.parseDouble(object.toString());
setText(formatter.format(doubleValue));
}
}
};
}
@Override
public TreeTableCell<FeatureTableRow, Object> call(TreeTableColumn<FeatureTableRow, Object> p) {
return new TreeTableCell<FeatureTableRow, Object>() {
@Override
public void updateItem(Object object, boolean empty) {
super.updateItem(object, empty);
setStyle("-fx-alignment: CENTER;"
+ "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
if (object == null) {
setText(null);
} else {
try {
NumberFormat formatter = new DecimalFormat("#0.00");
Double doubleValue = Double.parseDouble(object.toString());
setText(formatter.format(doubleValue));
} catch (NumberFormatException e) {
setText(object.toString());
}
}
}
};
}
@Override
public TreeTableCell<FeatureTableRow, Object> call(TreeTableColumn<FeatureTableRow, Object> p) {
return new TreeTableCell<FeatureTableRow, Object>() {
@Override
public void updateItem(Object object, boolean empty) {
super.updateItem(object, empty);
setStyle("-fx-alignment: CENTER;"
+ "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
if (object == null) {
setText(null);
} else {
Integer integerValue = Integer.parseInt(object.toString());
setText(integerValue.toString());
}
}
};
}
@Override
public TreeTableCell<FeatureTableRow, Object> call(TreeTableColumn<FeatureTableRow, Object> p) {
return new TreeTableCell<FeatureTableRow, Object>() {
@Override
public void updateItem(Object object, boolean empty) {
super.updateItem(object, empty);
setStyle("-fx-alignment: CENTER;"
+ "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
if (object == null) {
setText(null);
} else {
Range rangeValue = (Range) object;
NumberFormat formatter = MZmineCore.getConfiguration().getMZFormat();
String value = formatter.format(rangeValue.lowerEndpoint()) + " - "
+ formatter.format(rangeValue.upperEndpoint());
setText(value);
}
}
};
}
@Override
public TreeTableCell<FeatureTableRow, Object> call(TreeTableColumn<FeatureTableRow, Object> p) {
return new TreeTableCell<FeatureTableRow, Object>() {
@Override
public void updateItem(Object object, boolean empty) {
super.updateItem(object, empty);
setStyle("-fx-alignment: CENTER;"
+ "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
if (object == null) {
setText(null);
} else {
Double doubleValue = Double.parseDouble(object.toString());
NumberFormat formatter = MZmineCore.getConfiguration().getIntensityFormat();
setText(formatter.format(doubleValue));
}
}
};
}
@Override
public TreeTableCell<FeatureTableRow, Object> call(TreeTableColumn<FeatureTableRow, Object> p) {
return new TreeTableCell<FeatureTableRow, Object>() {
@Override
public void updateItem(Object object, boolean empty) {
super.updateItem(object, empty);
setStyle("-fx-alignment: CENTER;"
+ "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
if (object == null) {
setText(null);
} else {
NumberFormat formatter = MZmineCore.getConfiguration().getRTFormat();
Float floatValue = Float.parseFloat(object.toString());
setText(formatter.format(floatValue));
}
}
};
}
@Override
public TreeTableCell<FeatureTableRow, Object> call(TreeTableColumn<FeatureTableRow, Object> p) {
return new TreeTableCell<FeatureTableRow, Object>() {
@Override
public void updateItem(Object object, boolean empty) {
super.updateItem(object, empty);
setStyle("-fx-alignment: CENTER;"
+ "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
if (object == null) {
setText(null);
} else {
// Default format to two decimals
NumberFormat formatter = new DecimalFormat("#0.00");
Double doubleValue = Double.parseDouble(object.toString());
setText(formatter.format(doubleValue));
}
}
};
}
@Override
public Node getCellNode(TreeTableCell<ModularFeatureListRow, FeatureStatus> cell,
TreeTableColumn<ModularFeatureListRow, FeatureStatus> coll, FeatureStatus cellData,
RawDataFile raw) {
if (cellData == null)
return null;
Circle circle = new Circle();
circle.setRadius(10);
circle.setFill(cellData.getColorFX());
return circle;
}
@Override
public TreeTableCell<ModularFeatureListRow, Object> call(
TreeTableColumn<ModularFeatureListRow, Object> param) {
TextFieldTreeTableCell<ModularFeatureListRow, Object> cell = new TextFieldTreeTableCell<>();
if (type instanceof StringParser) {
cell.setConverter(((StringParser) type).getStringConverter());
cell.setAlignment(Pos.CENTER);
return cell;
} else {
logger.log(Level.SEVERE,
"Class in editable CellFactory is no StringParser: " + type.getClass().toString());
return null;
}
}
@Override
public Node getCellNode(TreeTableCell<ModularFeatureListRow, ObjectProperty<Color>> cell,
TreeTableColumn<ModularFeatureListRow, ObjectProperty<Color>> coll,
ObjectProperty<Color> value, RawDataFile raw) {
Pane pane = new Pane();
pane.setStyle("-fx-background-color: #"
+ ColorsFX.toHexString(value.getValue() == null ? Color.BLACK : value.getValue()));
return pane;
}
@Override
@Nullable
public String getFormattedSubColValue(int subcolumn,
TreeTableCell<ModularFeatureListRow, Object> cell,
TreeTableColumn<ModularFeatureListRow, Object> coll, Object cellData, RawDataFile raw) {
return "";
}
@Override
@Nullable
public String getFormattedSubColValue(int subcolumn,
TreeTableCell<ModularFeatureListRow, Object> cell,
TreeTableColumn<ModularFeatureListRow, Object> coll, Object value, RawDataFile raw) {
if (value == null)
return "";
switch (subcolumn) {
case 0:
return getFormatter().format(((Range) value).lowerEndpoint());
case 1:
return getFormatter().format(((Range) value).upperEndpoint());
}
return "";
}
public TreeTableCell<?, ?> getTreeTableCellAt(TreeTableView<?> treeTableView, Point2D point) {
point = treeTableView.localToScene(point);
Set<Node> lookupAll = getTreeTableCells(treeTableView);
TreeTableCell<?, ?> selected = null;
for (Node cellNode : lookupAll) {
Bounds boundsInScene = cellNode.localToScene(cellNode.getBoundsInLocal(), true);
if (boundsInScene.contains(point)) {
selected = (TreeTableCell<?, ?>) cellNode;
break;
}
}
return selected;
}
protected int getTreeTableColumnAt(TreeTableView<?> treeTableView, Point2D point) {
TreeTableCell<?, ?> selected = getTreeTableCellAt(treeTableView, point);
if (selected == null) {
return -1;
}
return treeTableView.getColumns().indexOf(selected.getTableColumn());
}
protected int getTreeTableRowAt(TreeTableView<?> treeTableView, Point2D point) {
TreeTableCell<?, ?> selected = getTreeTableCellAt(treeTableView, point);
if (selected == null) {
return -1;
}
return selected.getTreeTableRow().getIndex();
}
@SuppressWarnings("rawtypes")
public TreeTableCell getVisibleCellAt(TreeTableView<?> treeTableView, int row, int column) {
Set<Node> lookupAll = getTreeTableCells(treeTableView);
TreeTableCell cell = null;
for (Node node : lookupAll) {
TreeTableCell<?, ?> cell1 = (TreeTableCell<?, ?>) node;
TreeTableRow<?> tableRow = cell1.getTreeTableRow();
TreeTableColumn<?, ?> tableColumn = cell1.getTableColumn();
if (tableRow.getIndex() == row && tableColumn == treeTableView.getColumns().get(column)) {
cell = cell1;
break;
}
}
return cell;
}
private Set<Node> getTreeTableCells(TreeTableView<?> treeTableView) {
Set<Node> l = treeTableView.lookupAll("*");
Set<Node> r = new HashSet<>();
for (Node node : l) {
if (node instanceof TreeTableCell<?, ?>) {
if (!((TreeTableCell<?, ?>) node).isEmpty())
r.add(node);
}
}
return r;
}
public static void reset() {
add(Node.class, JavaFXElement.class);
add(TextInputControl.class, JavaFXTextInputControlElement.class);
add(HTMLEditor.class, JavaFXHTMLEditor.class);
add(CheckBox.class, JavaFXCheckBoxElement.class);
add(ToggleButton.class, JavaFXToggleButtonElement.class);
add(Slider.class, JavaFXSliderElement.class);
add(Spinner.class, JavaFXSpinnerElement.class);
add(SplitPane.class, JavaFXSplitPaneElement.class);
add(ProgressBar.class, JavaFXProgressBarElement.class);
add(ChoiceBox.class, JavaFXChoiceBoxElement.class);
add(ColorPicker.class, JavaFXColorPickerElement.class);
add(ComboBox.class, JavaFXComboBoxElement.class);
add(DatePicker.class, JavaFXDatePickerElement.class);
add(TabPane.class, JavaFXTabPaneElement.class);
add(ListView.class, JavaFXListViewElement.class);
add(TreeView.class, JavaFXTreeViewElement.class);
add(TableView.class, JavaFXTableViewElement.class);
add(TreeTableView.class, JavaFXTreeTableViewElement.class);
add(CheckBoxListCell.class, JavaFXCheckBoxListCellElement.class);
add(ChoiceBoxListCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxListCell.class, JavaFXComboBoxCellElement.class);
add(CheckBoxTreeCell.class, JavaFXCheckBoxTreeCellElement.class);
add(ChoiceBoxTreeCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxTreeCell.class, JavaFXComboBoxCellElement.class);
add(TableCell.class, JavaFXTableViewCellElement.class);
add(CheckBoxTableCell.class, JavaFXCheckBoxTableCellElement.class);
add(ChoiceBoxTableCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxTableCell.class, JavaFXComboBoxCellElement.class);
add(TreeTableCell.class, JavaFXTreeTableCellElement.class);
add(CheckBoxTreeTableCell.class, JavaFXCheckBoxTreeTableCell.class);
add(ChoiceBoxTreeTableCell.class, JavaFXChoiceBoxCellElement.class);
add(ComboBoxTreeTableCell.class, JavaFXComboBoxCellElement.class);
add(WebView.class, JavaFXWebViewElement.class);
add(GenericStyledArea.GENERIC_STYLED_AREA_CLASS, RichTextFXGenericStyledAreaElement.class);
}
@Override
public String _getValue() {
TreeTableCell<?, ?> cell = (TreeTableCell<?, ?>) node;
Node graphic = cell.getGraphic();
JavaFXElement component = (JavaFXElement) JavaFXElementFactory.createElement(graphic, driver, window);
if (graphic != null && component != null) {
if (graphic instanceof CheckBox) {
String cellText = cell.getText() == null ? "" : cell.getText();
return cellText + ":" + component._getValue();
}
return component._getValue();
}
return super._getValue();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private Node getEditor() {
TreeTableCell cell = (TreeTableCell) getPseudoComponent();
cell.getTreeTableView().edit(cell.getTreeTableRow().getIndex(), cell.getTableColumn());
Node cellComponent = cell.getGraphic();
cellComponent.getProperties().put("marathon.celleditor", true);
cellComponent.getProperties().put("marathon.cell", cell);
return cellComponent;
}
@Override
public void click(int button, Node target, PickResult pickResult, int clickCount, double xoffset, double yoffset) {
Node cell = getPseudoComponent();
target = getTextObj((TreeTableCell<?, ?>) cell);
Point2D targetXY = target.localToParent(xoffset, yoffset);
targetXY = node.localToScene(targetXY);
super.click(button, target, new PickResult(target, targetXY.getX(), targetXY.getY()), clickCount, xoffset, yoffset);
}
private Node getTextObj(TreeTableCell<?, ?> cell) {
for (Node child : cell.getChildrenUnmodifiable()) {
if (child instanceof Text) {
return child;
}
}
return cell;
}
@Override
public Object _makeVisible() {
TreeTableView<?> treeTableView = (TreeTableView<?>) getComponent();
TreeTableCell<?, ?> cell = (TreeTableCell<?, ?>) getPseudoComponent();
if (cell == null) {
treeTableView.scrollToColumnIndex(viewColumn);
treeTableView.scrollTo(getTreeTableNodeIndex(treeTableView, path));
return false;
}
return true;
}
public String getTreeTableCellValueAt(TreeTableView<?> treeTableView, int row, int column) {
if (row == -1 || column == -1) {
return null;
}
TreeTableCell<?, ?> treeTableCell = getCellAt(treeTableView, row, column);
RFXComponent cellComponent = getFinder().findRCellComponent(treeTableCell, null, recorder);
return cellComponent == null ? null : cellComponent.getValue();
}
@Override
public String _getText() {
if (row != -1 && column != -1) {
TreeTableCell<?, ?> treeTableCell = getCellAt((TreeTableView<?>) node, row, column);
if (treeTableCell != null) {
return treeTableCell.getText();
}
}
return getTreeTableSelection((TreeTableView<?>) node);
}
private TreeTableCell<T,Object> getCellFactory(TreeTableColumn<T,Object> tc)
{
return new TreeTableCell<T,Object>()
{
@Override
protected void updateItem(Object item, boolean empty)
{
super.updateItem(item, empty);
if(empty)
{
setText(null);
setGraphic(null);
}
else
{
if(renderer == null)
{
String text = formatter.toString(item);
setText(text);
setGraphic(null);
setAlignment(alignment);
}
else
{
Node n = renderer.apply(item);
setText(null);
setGraphic(n);
}
}
}
};
}
private Callback createCellFactory()
{
return new Callback<TreeTableColumn<T,?>,TreeTableCell<T,?>>()
{
@Override
public TreeTableCell<T,?> call(TreeTableColumn<T,?> column)
{
return new TreeTableCell()
{
@Override
protected void updateItem(Object item, boolean empty)
{
if(item == getItem())
{
return;
}
super.updateItem(item, empty);
if(item == null)
{
super.setText(null);
super.setGraphic(null);
}
else if(item instanceof Node)
{
super.setText(null);
super.setGraphic((Node)item);
}
else
{
super.setText(item.toString());
super.setGraphic(null);
}
}
};
}
};
}