blob: f532085082737a8f189c4c4d5947b20cd6e8aa7e [file] [log] [blame]
package org.eclipse.fx.emf.edit.ui;
import java.util.List;
import javafx.scene.control.Cell;
import javafx.scene.control.Control;
import javafx.scene.control.ListView;
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableCell;
import javafx.scene.control.TreeTableRow;
import javafx.scene.control.TreeTableView;
import javafx.scene.control.TreeView;
public class CellUtil {
/**
* Whether the JavaFX is version 2.x
*/
private static final boolean FX2 = System.getProperty("javafx.version") != null && System.getProperty("javafx.version").startsWith("2");
/**
* Finds the row for a {@link Cell} so the feedback can be applied to the
* whole row
*
* @return the containing {@link TableRow} for {@link TableCell}s or the
* {@link TreeTableRow} for {@link TreeTableCell}s and the
* {@link Cell} itself otherwise
*/
public static Cell<?> getRowNode(final Cell<?> cell) {
return FX2 ? CellUtil2.getRowNode(cell) : CellUtil8.getRowNode(cell);
}
/**
* Retrieves the {@link MultipleSelectionModel} from the {@link ListView},
* {@link TreeView}, {@link TableView} or {@link TreeTableView} in which
* <code>cell</code> is displayed
*
* @param cell
* the {@link Cell} for which the {@link MultipleSelectionModel}
* is to be retrieved
* @return the {@link MultipleSelectionModel} for this {@link Cell}
*/
public static MultipleSelectionModel<?> getSelectionModel(Cell<?> cell) {
return FX2 ? CellUtil2.getSelectionModel(cell) : CellUtil8.getSelectionModel(cell);
}
public static MultipleSelectionModel<?> getSelectionModel(Control view) {
return FX2 ? CellUtil2.getSelectionModel(view) : CellUtil8.getSelectionModel(view);
}
/**
* Retrieves the selected items from the {@link ListView}, {@link TreeView},
* {@link TableView} or {@link TreeTableView} in which <code>cell</code> is
* displayed. {@link TreeItem}s will be replaced with
* {@link TreeItem#getValue()}.
*
* @param cell
* the {@link Cell} for which the selected items should be
* retrieved
* @return a {@link List} with the selected items
*/
public static List<?> getSelectedItems(Cell<?> cell) {
return FX2 ? CellUtil2.getSelectedItems(cell) : CellUtil8.getSelectedItems(cell);
}
}