Create new sensors directly in the application
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
<?import javafx.scene.control.TableView?>
|
||||
<?import javafx.scene.control.TableColumn?>
|
||||
<?import javafx.scene.control.TreeView?>
|
||||
<?import javafx.scene.control.ChoiceBox?>
|
||||
<BorderPane xmlns:fx="http://javafx.com/fxml" prefHeight="400.0" prefWidth="600.0">
|
||||
<center>
|
||||
<SplitPane>
|
||||
@@ -38,6 +39,11 @@
|
||||
<TableColumn fx:id="sourceId" text="Id" />
|
||||
</columns>
|
||||
</TableView>
|
||||
<FlowPane>
|
||||
<TextField fx:id="newName" />
|
||||
<ChoiceBox fx:id="createType" />
|
||||
<Button onAction="#onCreateClick">Create</Button>
|
||||
</FlowPane>
|
||||
</VBox>
|
||||
</SplitPane>
|
||||
</center>
|
||||
|
@@ -3,6 +3,7 @@ package fr.uca.iut.clfreville2.gui;
|
||||
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.WeightSpinnerTableCell;
|
||||
import fr.uca.iut.clfreville2.gui.thread.Ticker;
|
||||
import fr.uca.iut.clfreville2.gui.tree.SensorTreeCell;
|
||||
@@ -12,12 +13,17 @@ import fr.uca.iut.clfreville2.model.binding.ToBooleanBinding;
|
||||
import fr.uca.iut.clfreville2.model.sensor.ManualSensor;
|
||||
import fr.uca.iut.clfreville2.model.sensor.Sensor;
|
||||
import fr.uca.iut.clfreville2.model.sensor.VirtualSensor;
|
||||
import fr.uca.iut.clfreville2.model.sensor.provider.AutoSensorProvider;
|
||||
import fr.uca.iut.clfreville2.model.sensor.provider.ManualSensorProvider;
|
||||
import fr.uca.iut.clfreville2.model.sensor.provider.SensorProvider;
|
||||
import fr.uca.iut.clfreville2.model.sensor.provider.VirtualSensorProvider;
|
||||
import fr.uca.iut.clfreville2.persistence.StubSensorRegistryLoader;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.CheckBox;
|
||||
import javafx.scene.control.ChoiceBox;
|
||||
import javafx.scene.control.Slider;
|
||||
import javafx.scene.control.Spinner;
|
||||
import javafx.scene.control.TableCell;
|
||||
@@ -26,7 +32,6 @@ import javafx.scene.control.TableView;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.control.TreeItem;
|
||||
import javafx.scene.control.TreeView;
|
||||
import javafx.scene.control.cell.PropertyValueFactory;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.text.Text;
|
||||
import javafx.stage.Stage;
|
||||
@@ -66,6 +71,15 @@ public class MainWindows {
|
||||
@FXML
|
||||
private TableColumn<VirtualSensor.DataSource, String> sourceId;
|
||||
|
||||
@FXML
|
||||
private TextField newName;
|
||||
|
||||
@FXML
|
||||
private ChoiceBox<SensorProvider> createType;
|
||||
|
||||
@FXML
|
||||
private Button createButton;
|
||||
|
||||
@FXML
|
||||
private Spinner<Integer> updateInterval;
|
||||
|
||||
@@ -112,11 +126,17 @@ public class MainWindows {
|
||||
}).show();
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void onCreateClick() {
|
||||
createType.getSelectionModel().getSelectedItem().create(registry, newName.getText());
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void initialize() {
|
||||
bindSensorTree();
|
||||
bindActiveButtons();
|
||||
bindSources();
|
||||
bindProvidable();
|
||||
bindUpdate();
|
||||
}
|
||||
|
||||
@@ -171,6 +191,16 @@ public class MainWindows {
|
||||
sourceId.setCellValueFactory(cell -> cell.getValue().sensor().idProperty().asString());
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void bindProvidable() {
|
||||
createType.getItems().addAll(
|
||||
new ManualSensorProvider(),
|
||||
new AutoSensorProvider(),
|
||||
new VirtualSensorProvider()
|
||||
);
|
||||
createType.setConverter(new NameableStringConverter<>(createType.getItems()));
|
||||
}
|
||||
|
||||
@FXML
|
||||
private void bindUpdate() {
|
||||
updateInterval.getValueFactory().valueProperty().bindBidirectional(ticker.millisPerTickProperty().asObject());
|
||||
|
@@ -0,0 +1,28 @@
|
||||
package fr.uca.iut.clfreville2.gui.list;
|
||||
|
||||
import fr.uca.iut.clfreville2.model.shared.Nameable;
|
||||
import javafx.util.StringConverter;
|
||||
|
||||
public class NameableStringConverter<T extends Nameable> extends StringConverter<T> {
|
||||
|
||||
private final Iterable<T> items;
|
||||
|
||||
public NameableStringConverter(Iterable<T> items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(T object) {
|
||||
return object.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T fromString(String string) {
|
||||
for (T item : items) {
|
||||
if (item.getName().equals(string)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package fr.uca.iut.clfreville2.model.sensor.provider;
|
||||
|
||||
import fr.uca.iut.clfreville2.model.SensorRegistry;
|
||||
import fr.uca.iut.clfreville2.model.sensor.Sensor;
|
||||
import fr.uca.iut.clfreville2.model.sensor.auto.RandomVariationStrategy;
|
||||
|
||||
public class AutoSensorProvider implements SensorProvider {
|
||||
|
||||
@Override
|
||||
public Sensor create(SensorRegistry registry, String name) {
|
||||
return registry.createAuto(name, new RandomVariationStrategy(5));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Auto";
|
||||
}
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
package fr.uca.iut.clfreville2.model.sensor.provider;
|
||||
|
||||
import fr.uca.iut.clfreville2.model.SensorRegistry;
|
||||
import fr.uca.iut.clfreville2.model.sensor.Sensor;
|
||||
|
||||
public class ManualSensorProvider implements SensorProvider {
|
||||
|
||||
@Override
|
||||
public Sensor create(SensorRegistry registry, String name) {
|
||||
return registry.createManual(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Manual";
|
||||
}
|
||||
}
|
@@ -0,0 +1,10 @@
|
||||
package fr.uca.iut.clfreville2.model.sensor.provider;
|
||||
|
||||
import fr.uca.iut.clfreville2.model.SensorRegistry;
|
||||
import fr.uca.iut.clfreville2.model.sensor.Sensor;
|
||||
import fr.uca.iut.clfreville2.model.shared.Nameable;
|
||||
|
||||
public interface SensorProvider extends Nameable {
|
||||
|
||||
Sensor create(SensorRegistry registry, String name);
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
package fr.uca.iut.clfreville2.model.sensor.provider;
|
||||
|
||||
import fr.uca.iut.clfreville2.model.SensorRegistry;
|
||||
import fr.uca.iut.clfreville2.model.sensor.Sensor;
|
||||
|
||||
public class VirtualSensorProvider implements SensorProvider {
|
||||
|
||||
@Override
|
||||
public Sensor create(SensorRegistry registry, String name) {
|
||||
return registry.createVirtual(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Virtual";
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user