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.SensorTypeImageSupplier;
|
||||||
import fr.uca.iut.clfreville2.gui.image.StandardImageSupplier;
|
import fr.uca.iut.clfreville2.gui.image.StandardImageSupplier;
|
||||||
import fr.uca.iut.clfreville2.gui.list.NameableStringConverter;
|
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.table.WeightSpinnerTableCell;
|
||||||
import fr.uca.iut.clfreville2.gui.thread.Ticker;
|
import fr.uca.iut.clfreville2.gui.thread.Ticker;
|
||||||
import fr.uca.iut.clfreville2.gui.tree.SensorTreeCell;
|
import fr.uca.iut.clfreville2.gui.tree.SensorTreeCell;
|
||||||
@@ -174,6 +175,7 @@ public class MainWindows {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private void bindSources() {
|
private void bindSources() {
|
||||||
|
sourcesView.setRowFactory(row -> new SourceTableRow(this::delete));
|
||||||
sourceWeight.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue()));
|
sourceWeight.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue()));
|
||||||
sourceWeight.setCellFactory(cell -> new WeightSpinnerTableCell());
|
sourceWeight.setCellFactory(cell -> new WeightSpinnerTableCell());
|
||||||
sourceIcon.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue().sensor()));
|
sourceIcon.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue().sensor()));
|
||||||
@@ -214,4 +216,12 @@ public class MainWindows {
|
|||||||
}
|
}
|
||||||
return selected.getValue();
|
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