Allow removing a virtual sensor source

main
Clément FRÉVILLE 2 years ago
parent d715a6fc1e
commit 659fb26862

@ -4,6 +4,7 @@ import fr.uca.iut.clfreville2.gui.image.ImageSupplier;
import fr.uca.iut.clfreville2.gui.image.SensorTypeImageSupplier;
import fr.uca.iut.clfreville2.gui.image.StandardImageSupplier;
import fr.uca.iut.clfreville2.gui.list.NameableStringConverter;
import fr.uca.iut.clfreville2.gui.table.SourceTableRow;
import fr.uca.iut.clfreville2.gui.table.WeightSpinnerTableCell;
import fr.uca.iut.clfreville2.gui.thread.Ticker;
import fr.uca.iut.clfreville2.gui.tree.SensorTreeCell;
@ -174,6 +175,7 @@ public class MainWindows {
@FXML
private void bindSources() {
sourcesView.setRowFactory(row -> new SourceTableRow(this::delete));
sourceWeight.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue()));
sourceWeight.setCellFactory(cell -> new WeightSpinnerTableCell());
sourceIcon.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue().sensor()));
@ -214,4 +216,12 @@ public class MainWindows {
}
return selected.getValue();
}
private void delete(Sensor source) {
Sensor target = getSelectedSensor();
if (!(target instanceof VirtualSensor virtual)) {
return;
}
virtual.removeSource(source);
}
}

@ -0,0 +1,34 @@
package fr.uca.iut.clfreville2.gui.table;
import fr.uca.iut.clfreville2.model.sensor.Sensor;
import fr.uca.iut.clfreville2.model.sensor.VirtualSensor.DataSource;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TableRow;
import java.util.function.Consumer;
public class SourceTableRow extends TableRow<DataSource> {
private final MenuItem deleteItem;
private final ContextMenu menu;
private final Consumer<Sensor> deleteConsumer;
public SourceTableRow(Consumer<Sensor> deleteConsumer) {
this.deleteItem = new MenuItem("Remove");
this.menu = new ContextMenu(deleteItem);
this.deleteConsumer = deleteConsumer;
}
@Override
protected void updateItem(DataSource item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
deleteItem.setOnAction(null);
setContextMenu(null);
} else {
deleteItem.setOnAction((e) -> deleteConsumer.accept(item.sensor()));
setContextMenu(menu);
}
}
}
Loading…
Cancel
Save