Allow removing a virtual sensor source
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
34
src/fr/uca/iut/clfreville2/gui/table/SourceTableRow.java
Normal file
34
src/fr/uca/iut/clfreville2/gui/table/SourceTableRow.java
Normal file
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user