1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
| import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import java.util.function.UnaryOperator;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.ComboBoxTableCell;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.util.converter.DefaultStringConverter;
/**
* FXML Controller class
*
* @author
*/
public class RootController implements Initializable {
@FXML
private TextField userTfd;
@FXML
private TableView<User> userTbv;
@FXML
private TableColumn<User, String> userNomCol;
@FXML
private TableColumn<User, String> metierCol;
@FXML
private Button ajoutBtn;
@FXML
private Button modifBtn;
@FXML
private Button enregistrerBtn;
private ObservableList<String> metiers;
@FXML
private TextField nomTfd;
@FXML
private ComboBox<String> metierCb;
private List<User> userls;
private List<User> initialList;
@FXML
Button annulerBtn;
private final UnaryOperator<List<User>> unaryOP = RootController::cloneList;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
initMetiers();
initTabView();
initMetierCb();
initUsers();
userls = new java.util.ArrayList<User>(initialList.size());
userls = unaryOP.apply(initialList);
// userls.forEach(e -> System.out.println(e + " "));
userTbv.getItems().addAll(initialList);
}
public void initMetierCb() {
metierCb.setItems(metiers);
}
public void initTabView() {
userNomCol.setCellValueFactory(e -> new SimpleStringProperty(e.getValue().getNom()));
metierCol.setCellValueFactory(e -> new SimpleStringProperty(e.getValue().getMetier()));
userNomCol.setCellFactory(TextFieldTableCell.forTableColumn(new DefaultStringConverter()));
metierCol.setCellFactory(ComboBoxTableCell.forTableColumn(metiers));
userTbv.setEditable(true);
userNomCol.setEditable(true);
userNomCol.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<User, String>>() {
@Override
public void handle(TableColumn.CellEditEvent<User, String> t
) {
User ag = t.getTableView().getItems().get(t.getTablePosition().getRow());
if (t.getNewValue() != null && !((t.getNewValue()).replaceAll("\\s", "")).equals("")) {
ag.setNom(t.getNewValue());
} else {
ag.setNom(t.getOldValue());
t.getTableView().getColumns().get(0).setVisible(false);
t.getTableView().getColumns().get(0).setVisible(true);
}
}
});
metierCol.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<User, String>>() {
@Override
public void handle(TableColumn.CellEditEvent<User, String> t) {
((User) t.getTableView().getItems().get(t.getTablePosition().getRow())).setMetier(t.getNewValue());
}
});
}
public void initMetiers() {
metiers = FXCollections.observableArrayList("métier 1", "métier 2", "métier 3", "métier 4", "métier 5", "métier 6");
}
public void initUsers() {
User user1 = new User();
user1.setNom("Albert");
user1.setMetier("métier1");
User user2 = new User();
user2.setNom("Louis");
user2.setMetier("métier3");
User user3 = new User();
user3.setNom("Marion");
user3.setMetier("métier5");
initialList = FXCollections.observableArrayList(user1, user2, user3);
}
@FXML
public void ajouterUser(ActionEvent event) {
User user = new User();
user.setNom(nomTfd.getText());
user.setMetier(metierCb.getValue());
userTbv.getItems().add(user);
nomTfd.setText("");
metierCb.setValue("");
}
@FXML
public void enregistrerUser(ActionEvent event) {
//rien mis
}
@FXML
public void annulerUser(ActionEvent event) {
nomTfd.setText("");
metierCb.setValue("");
initialList.clear();
userTbv.getItems().clear();
initialList = unaryOP.apply(userls);
userTbv.getItems().addAll(initialList);
// userls.forEach(e -> System.out.println(e + " "));
}
public static List<User> cloneList(List<User> userList) {
List<User> clonedList = new ArrayList<>(userList.size());
userList.forEach(user -> clonedList.add(new User(user)));
return clonedList;
}
} |
Partager