|
|
@@ -0,0 +1,170 @@
|
|
|
+package com.usoftchina.smartschool.device.client.biometric.controller;
|
|
|
+
|
|
|
+import com.usoftchina.smartschool.device.client.biometric.DeviceClient;
|
|
|
+import com.usoftchina.smartschool.device.client.biometric.po.AccessType;
|
|
|
+import com.usoftchina.smartschool.device.client.biometric.po.FaceGate;
|
|
|
+import com.usoftchina.smartschool.device.client.biometric.service.FaceGateService;
|
|
|
+import com.usoftchina.smartschool.device.client.biometric.util.AlertUtils;
|
|
|
+import com.usoftchina.smartschool.device.client.biometric.util.ViewUtils;
|
|
|
+import com.usoftchina.smartschool.device.context.SpringContextHolder;
|
|
|
+import javafx.application.Platform;
|
|
|
+import javafx.beans.value.ChangeListener;
|
|
|
+import javafx.beans.value.ObservableValue;
|
|
|
+import javafx.collections.FXCollections;
|
|
|
+import javafx.collections.ObservableList;
|
|
|
+import javafx.event.ActionEvent;
|
|
|
+import javafx.fxml.FXML;
|
|
|
+import javafx.fxml.Initializable;
|
|
|
+import javafx.scene.Scene;
|
|
|
+import javafx.scene.control.Button;
|
|
|
+import javafx.scene.control.TableCell;
|
|
|
+import javafx.scene.control.TableColumn;
|
|
|
+import javafx.scene.control.TableView;
|
|
|
+import javafx.scene.control.cell.PropertyValueFactory;
|
|
|
+import javafx.stage.Stage;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+
|
|
|
+import java.net.URL;
|
|
|
+import java.util.ResourceBundle;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author yingp
|
|
|
+ * @date 2019/11/14
|
|
|
+ */
|
|
|
+public class GateController implements Initializable {
|
|
|
+
|
|
|
+ private final Logger logger = LoggerFactory.getLogger(GateController.class);
|
|
|
+ @FXML
|
|
|
+ public TableView<FaceGate> tableView;
|
|
|
+ @FXML
|
|
|
+ public TableColumn nameCol;
|
|
|
+ @FXML
|
|
|
+ public TableColumn placeCol;
|
|
|
+ @FXML
|
|
|
+ public TableColumn ipCol;
|
|
|
+ @FXML
|
|
|
+ public TableColumn accessTypeCol;
|
|
|
+ @FXML
|
|
|
+ public TableColumn startTimeCol;
|
|
|
+ @FXML
|
|
|
+ public TableColumn lastActiveCol;
|
|
|
+ @FXML
|
|
|
+ public TableColumn statusCol;
|
|
|
+ @FXML
|
|
|
+ public Button editButton;
|
|
|
+ @FXML
|
|
|
+ public Button delButton;
|
|
|
+ private FaceGateService faceGateService;
|
|
|
+ private ObservableList<FaceGate> faceGateObservableList = FXCollections.observableArrayList();
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void initialize(URL location, ResourceBundle resources) {
|
|
|
+ faceGateService = SpringContextHolder.getContext().getBean(FaceGateService.class);
|
|
|
+ initTable();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initTable() {
|
|
|
+ nameCol.setCellValueFactory(new PropertyValueFactory<>("name"));
|
|
|
+ placeCol.setCellValueFactory(new PropertyValueFactory<>("place"));
|
|
|
+ ipCol.setCellValueFactory(new PropertyValueFactory<>("ip"));
|
|
|
+ accessTypeCol.setCellValueFactory(new PropertyValueFactory<>("accessType"));
|
|
|
+ accessTypeCol.setCellFactory((col) -> {
|
|
|
+ TableCell<FaceGate, AccessType> cell = new TableCell<FaceGate, AccessType>() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateItem(AccessType item, boolean empty) {
|
|
|
+ super.updateItem(item, empty);
|
|
|
+ if (null != item) {
|
|
|
+ this.setText(item.getText());
|
|
|
+ } else {
|
|
|
+ this.setText(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ return cell;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ startTimeCol.setCellValueFactory(new PropertyValueFactory<>("startTime"));
|
|
|
+ lastActiveCol.setCellValueFactory(new PropertyValueFactory<>("lastActiveTime"));
|
|
|
+ statusCol.setCellValueFactory(new PropertyValueFactory<>("status"));
|
|
|
+
|
|
|
+ tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
|
|
+ tableView.setItems(faceGateObservableList);
|
|
|
+ loadData();
|
|
|
+
|
|
|
+ tableView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<FaceGate>() {
|
|
|
+ @Override
|
|
|
+ public void changed(ObservableValue<? extends FaceGate> observable, FaceGate oldValue, FaceGate newValue) {
|
|
|
+ if (null == newValue) {
|
|
|
+ editButton.setDisable(true);
|
|
|
+ delButton.setDisable(true);
|
|
|
+ } else {
|
|
|
+ editButton.setDisable(false);
|
|
|
+ delButton.setDisable(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void loadData() {
|
|
|
+ Platform.runLater(() -> {
|
|
|
+ faceGateObservableList.setAll(FXCollections.observableList(faceGateService.findAll()));
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @FXML
|
|
|
+ public void handleAdd(ActionEvent event) {
|
|
|
+ createGateEditPane(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Scene createGateEditPane(FaceGate faceGate) {
|
|
|
+ try {
|
|
|
+ Scene scene = ViewUtils.load("/view/gate_edit.fxml", faceGate);
|
|
|
+ Stage stage = new Stage();
|
|
|
+ stage.setScene(scene);
|
|
|
+ stage.setResizable(false);
|
|
|
+ stage.setTitle("人脸闸机设备");
|
|
|
+ stage.getIcons().addAll(DeviceClient.defaultIcons);
|
|
|
+ stage.show();
|
|
|
+ stage.showingProperty().addListener(new ChangeListener<Boolean>() {
|
|
|
+ @Override
|
|
|
+ public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
|
|
+ if (null == newValue || !newValue.booleanValue()) {
|
|
|
+ loadData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return scene;
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("Edit Device Error", e);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @FXML
|
|
|
+ public void handleRefresh(ActionEvent event) {
|
|
|
+ loadData();
|
|
|
+ }
|
|
|
+
|
|
|
+ @FXML
|
|
|
+ public void handleEdit(ActionEvent event) {
|
|
|
+ FaceGate faceGate = tableView.getSelectionModel().getSelectedItem();
|
|
|
+ if (null == faceGate) {
|
|
|
+ AlertUtils.warn("请先选择一行数据");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ createGateEditPane(faceGate);
|
|
|
+ }
|
|
|
+
|
|
|
+ @FXML
|
|
|
+ public void handleDelete(ActionEvent event) {
|
|
|
+ FaceGate faceGate = tableView.getSelectionModel().getSelectedItem();
|
|
|
+ if (null == faceGate) {
|
|
|
+ AlertUtils.warn("请先选择一行数据");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ faceGateService.delete(faceGate.getId());
|
|
|
+ loadData();
|
|
|
+ }
|
|
|
+}
|