package CADM;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Tooltip;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.util.Callback;
public class SML_TSTController implements Initializable {
@FXML
private AnchorPane AP;
@FXML
private TreeView<DUO> TreeViewS;
@FXML
private Label Wert;
public String SavWert = null;
public TreeCell<DUO> TreeCellSav = null;
//----------------------------class DUO
public class DUO {
private String code;
private String name;
public DUO() {
}
public DUO(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.name;
}
}
//----------------------------init
@Override
public void initialize(URL url, ResourceBundle rb) {
loadTreeItems_DUO("w1", "w2", "w3");
int i = 0;
}
//-------------------------loadTreeItems
public void loadTreeItems_DUO(String... rootItems) { //ist nur ein Test
TreeItem<DUO> root = new TreeItem<DUO>(new DUO("DUOroot", "DUO"));
TreeItem<DUO> A1 = new TreeItem<DUO>(new DUO("Zw", "Wid"));
TreeItem<DUO> A2 = new TreeItem<DUO>(new DUO("Zc", "Cons"));
TreeItem<DUO> A3 = new TreeItem<DUO>(new DUO("Zi", "IC"));
root.setExpanded(true);
root.getChildren().add(A1);
root.getChildren().add(A2);
A1.getChildren().add(A3);
//-- -- -- -- -- -- -- -- -- -- -- --- // Set Cell Factory.
TreeViewS.setCellFactory(new Callback<TreeView<DUO>, TreeCell<DUO>>() {
@Override
public TreeCell<DUO> call(TreeView<DUO> p) {
TreeCell<DUO> TST = new TextFieldTreeCellImpl();
if (SavWert != null) {
if (TST.getTooltip() == null) {
Tooltip T = new Tooltip(SavWert);
TST.setTooltip(T);
}
}
int i = 0;
return TST;
//return new TextFieldTreeCellImpl();
}
});
TreeViewS.setRoot(root);
TreeViewS.setOnMouseClicked(Mevent);
}
//----------------------Event-Handler
EventHandler<MouseEvent> Mevent = (MouseEvent evt) -> {
if (((TreeView<String>) evt.getSource()).getSelectionModel().getSelectedItem() != null) {
String EZG = ((TreeView<DUO>) evt.getSource()).getSelectionModel().getSelectedItem().getValue().getCode();
Wert.setText(EZG);
int i = 0;
}
int i = 0;
};
//-------------------class TextFieldTreeCellImpl
private final class TextFieldTreeCellImpl extends TreeCell<DUO> {
private TextField textField;
public TextFieldTreeCellImpl() {
}
@Override
public void startEdit() {
super.startEdit();
if (textField == null) {
//createTextField();
}
setText(null);
setGraphic(textField);
textField.selectAll();
}
/* @Override
public void cancelEdit() {
super.cancelEdit();
setText((DUO) getItem().getName());
setGraphic(getTreeItem().getGraphic());
}*/
@Override
public void updateItem(DUO item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
//SavWert = null;
} else {
if (isEditing()) {
if (textField != null) {
textField.setText(getString());
}
setText(null);
setGraphic(textField);
} else {
setText(item.getName() + "_b");
SavWert = item.getCode();
System.out.println(item.getCode() + "," + item.getName());
setGraphic(getTreeItem().getGraphic());
int i = 0;
}
}
}
private String getString() {
return getItem() == null ? "" : getItem().toString();
}
}
}