Search in sources :

Example 1 with GuiController

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();
        }
    });
}
Also used : EventHandler(javafx.event.EventHandler) Button(javafx.scene.control.Button) Pos(javafx.geometry.Pos) URL(java.net.URL) GuiController(il.ac.technion.cs.smarthouse.gui_controller.GuiController) ButtonType(javafx.scene.control.ButtonType) FXCollections(javafx.collections.FXCollections) TableColumn(javafx.scene.control.TableColumn) TableCell(javafx.scene.control.TableCell) ResourceBundle(java.util.ResourceBundle) AlertType(javafx.scene.control.Alert.AlertType) TableView(javafx.scene.control.TableView) Alert(javafx.scene.control.Alert) Pair(javafx.util.Pair) SensorsSimulator(il.ac.technion.cs.smarthouse.sensors.simulator.SensorsSimulator) ReadOnlyStringWrapper(javafx.beans.property.ReadOnlyStringWrapper) Consumer(java.util.function.Consumer) FXML(javafx.fxml.FXML) ActionEvent(javafx.event.ActionEvent) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) GenericSensor(il.ac.technion.cs.smarthouse.sensors.simulator.GenericSensor) ImageView(javafx.scene.image.ImageView) TextInputDialog(javafx.scene.control.TextInputDialog) Optional(java.util.Optional) ObservableList(javafx.collections.ObservableList) Comparator(java.util.Comparator) Image(javafx.scene.image.Image) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) Optional(java.util.Optional) ReadOnlyStringWrapper(javafx.beans.property.ReadOnlyStringWrapper) ActionEvent(javafx.event.ActionEvent) Image(javafx.scene.image.Image) Comparator(java.util.Comparator) Alert(javafx.scene.control.Alert) ImageView(javafx.scene.image.ImageView) GenericSensor(il.ac.technion.cs.smarthouse.sensors.simulator.GenericSensor) Pair(javafx.util.Pair) TextInputDialog(javafx.scene.control.TextInputDialog)

Aggregations

GuiController (il.ac.technion.cs.smarthouse.gui_controller.GuiController)1 GenericSensor (il.ac.technion.cs.smarthouse.sensors.simulator.GenericSensor)1 SensorsSimulator (il.ac.technion.cs.smarthouse.sensors.simulator.SensorsSimulator)1 URL (java.net.URL)1 Comparator (java.util.Comparator)1 Optional (java.util.Optional)1 ResourceBundle (java.util.ResourceBundle)1 Consumer (java.util.function.Consumer)1 ReadOnlyStringWrapper (javafx.beans.property.ReadOnlyStringWrapper)1 SimpleBooleanProperty (javafx.beans.property.SimpleBooleanProperty)1 FXCollections (javafx.collections.FXCollections)1 ObservableList (javafx.collections.ObservableList)1 ActionEvent (javafx.event.ActionEvent)1 EventHandler (javafx.event.EventHandler)1 FXML (javafx.fxml.FXML)1 Pos (javafx.geometry.Pos)1 Alert (javafx.scene.control.Alert)1 AlertType (javafx.scene.control.Alert.AlertType)1 Button (javafx.scene.control.Button)1 ButtonType (javafx.scene.control.ButtonType)1