use of il.ac.technion.cs.smarthouse.gui_controller.GuiController in project Smartcity-Smarthouse by TechnionYP5777.
the class MainSensorListController method initialize.
/*
* (non-Javadoc)
*
* @see
* il.ac.technion.cs.smarthouse.gui_controller.GuiController#initialize(java
* .lang.Object, il.ac.technion.cs.smarthouse.gui_controller.GuiController,
* java.net.URL, java.util.ResourceBundle)
*/
@Override
protected <T extends GuiController<SensorsSimulator>> void initialize(SensorsSimulator model1, T parent1, URL location, ResourceBundle b) {
Consumer<GenericSensor> addConsumer = x -> {
this.sensors.add(new Pair<String, String>(model1.getSensorId(x), x.getCommname() + "(" + x.getAlias() + ")"));
sensors.sort(new Comparator<Pair<String, String>>() {
@Override
public int compare(Pair<String, String> o1, Pair<String, String> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
};
model1.addListenerWhen(SensorsSimulator.Action.ADD, addConsumer);
sensorTable.setItems(sensors);
nameColumn.prefWidthProperty().bind(sensorTable.widthProperty().multiply(0.7));
nameColumn.setResizable(false);
nameColumn.setCellValueFactory(cellData -> new ReadOnlyStringWrapper(cellData.getValue().getValue()));
configColumn.prefWidthProperty().bind(sensorTable.widthProperty().multiply(0.1));
configColumn.setResizable(false);
configColumn.setCellValueFactory(param -> new SimpleBooleanProperty(param.getValue() != null));
configColumn.setCellFactory(p -> {
final ButtonCell $ = new ButtonCell();
$.setAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
final TextInputDialog dialog = new TextInputDialog();
dialog.setGraphic(new ImageView(new Image(getClass().getResourceAsStream("/Homeicon.png"))));
dialog.setTitle("Sensor simulator");
dialog.setHeaderText("Clone Sensor");
dialog.setContentText("Please enter the cloned sensor alias:");
final Optional<String> result = dialog.showAndWait();
if (!result.isPresent())
return;
final String name = result.get();
MainSensorListController.this.getModel().cloneSensor($.getTableView().getItems().get($.getIndex()).getKey(), name);
}
});
$.setImage(new ImageView(new Image(getClass().getResourceAsStream("/Copy.png"))));
$.setAlignment(Pos.CENTER);
return $;
});
messageColumn.prefWidthProperty().bind(sensorTable.widthProperty().multiply(0.1));
messageColumn.setResizable(false);
messageColumn.setCellValueFactory(param -> new SimpleBooleanProperty(param.getValue() != null));
messageColumn.setCellFactory(p -> {
final ButtonCell $ = new ButtonCell();
$.setAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
setSelectedSensor($.getTableView().getItems().get($.getIndex()).getKey());
((DeveloperSimulatorController) MainSensorListController.this.getParentController()).openMessageWindow();
}
});
$.setImage(new ImageView(new Image(getClass().getResourceAsStream("/Message.png"))));
$.setAlignment(Pos.CENTER);
return $;
});
deleteColumn.prefWidthProperty().bind(sensorTable.widthProperty().multiply(0.1));
deleteColumn.setResizable(false);
deleteColumn.setCellValueFactory(param -> new SimpleBooleanProperty(param.getValue() != null));
deleteColumn.setCellFactory(p -> {
final ButtonCell $ = new ButtonCell();
$.setAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Confirmation Dialog");
alert.setHeaderText("Are you sure?");
alert.setContentText("The sensor will be deleted forever!");
Optional<ButtonType> result = alert.showAndWait();
if (result.get() != ButtonType.OK)
return;
final Pair<String, String> currentSensor = $.getTableView().getItems().get($.getIndex());
model1.removeSensor(currentSensor.getKey());
MainSensorListController.this.sensors.remove(currentSensor);
}
});
$.setImage(new ImageView(new Image(getClass().getResourceAsStream("/Delete.png"))));
$.setAlignment(Pos.CENTER);
return $;
});
addButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
((DeveloperSimulatorController) MainSensorListController.this.getParentController()).moveToConfiguration();
}
});
}
Aggregations