From bb7618a0288785a640ffc95e4fd5be51ba6daf7a Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 21 Nov 2015 13:44:23 +0100 Subject: [PATCH] =?UTF-8?q?MessageList=20funktioniert=20nun=20zun=C3=A4chs?= =?UTF-8?q?t=20f=C3=BCr=20failed=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mi/projmi6/controller/MainController.java | 4 ++ .../mi/projmi6/controller/MessageController.java | 45 +++++++++++- .../projmi6/controller/MessageListController.java | 79 ++++++++++++++++++++++ .../de/uniluebeck/mi/projmi6/model/HL7Message.java | 7 +- src/main/resources/message_list.fxml | 23 +++++++ 5 files changed, 154 insertions(+), 4 deletions(-) create mode 100644 src/main/java/de/uniluebeck/mi/projmi6/controller/MessageListController.java create mode 100644 src/main/resources/message_list.fxml diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java index d4463da..b3f0b2e 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java @@ -132,6 +132,10 @@ public class MainController { return messageController; } + public LogController getLogController(){ + return logController; + } + public void increaseParallelTaskCount() { parallelTaskCount++; if (parallelTaskCount > 0 && progressIndicator != null) { diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/MessageController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/MessageController.java index 82c4c71..d1d90d3 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/MessageController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/MessageController.java @@ -4,8 +4,19 @@ import de.uniluebeck.mi.projmi6.model.Fall; import de.uniluebeck.mi.projmi6.model.HL7Message; import de.uniluebeck.mi.projmi6.model.Patient; import de.uniluebeck.mi.projmi6.view.MessageIcon; +import javafx.beans.property.SimpleListProperty; +import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.image.Image; +import javafx.stage.Modality; +import javafx.stage.Stage; + +import java.io.IOException; +import java.time.LocalDateTime; /** * Created by Johannes on 21/11/2015. @@ -16,6 +27,7 @@ public class MessageController { @FXML private MessageIcon messageIcon; + private final SimpleListProperty messages = new SimpleListProperty(FXCollections.observableArrayList()); @@ -25,18 +37,45 @@ public class MessageController { @FXML private void initialize(){ - - + messageIcon.messageCountProperty().bind(messages.sizeProperty()); + messages.add(new HL7Message(null, 0, LocalDateTime.now(), null, true)); } @FXML private void onMessageIconClicked(){ + showMessageList(); } + private void showMessageList(){ + FXMLLoader fxmlLoader = new FXMLLoader(); + fxmlLoader.setLocation(getClass().getClassLoader().getResource("message_list.fxml")); + MessageListController messageListController = new MessageListController(messages, mainController); + fxmlLoader.setControllerFactory(clazz -> messageListController); + + Parent root = null; + try { + root = fxmlLoader.load(); + } catch (IOException e) { + e.printStackTrace(); + return; + } + + Stage stage = new Stage(); + + stage.setTitle(messages.size()+ " neue HL7-Nachrichten"); + stage.setScene(new Scene(root, 600, 400)); + + stage.getIcons().add(new Image("icon.png")); + stage.initModality(Modality.WINDOW_MODAL); + stage.initOwner(messageIcon.getScene().getWindow()); + stage.show(); + } - public void addMessage(HL7Message message){ + public void addMessage(HL7Message message){ + messages.add(message); + mainController.getLogController().refreshLogFromDb(); } } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/MessageListController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/MessageListController.java new file mode 100644 index 0000000..98f9391 --- /dev/null +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/MessageListController.java @@ -0,0 +1,79 @@ +package de.uniluebeck.mi.projmi6.controller; + +/** + * Created by Johannes on 21/11/2015. + */ +import de.uniluebeck.mi.projmi6.model.HL7Message; +import javafx.beans.property.SimpleListProperty; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.Button; +import javafx.scene.control.ListView; +import javafx.stage.Modality; +import javafx.stage.Stage; + +public class MessageListController { + + private final SimpleListProperty messages; + private final MainController mainController; + + public MessageListController(SimpleListProperty messages, MainController mainController){ + this.messages = messages; + this.mainController = mainController; + } + + @FXML + private void initialize(){ + lvMessages.setItems(messages); + btnShow.disableProperty().bind(lvMessages.getSelectionModel().selectedItemProperty().isNull()); + btnRemove.disableProperty().bind(lvMessages.getSelectionModel().selectedItemProperty().isNull()); + + messages.sizeProperty().addListener((observable, oldValue, newValue) -> { + if(messages.getSize()<=0){ + ((Stage)lvMessages.getScene().getWindow()).close(); + } + }); + } + + @FXML + private ListView lvMessages; + + @FXML + private Button btnShow; + + @FXML + private Button btnRemove; + + @FXML + void clickedRemove() { + HL7Message message = lvMessages.getSelectionModel().getSelectedItem(); + if(message==null){ + return; + } + messages.remove(message); + } + + @FXML + void clickedShow() { + HL7Message message = lvMessages.getSelectionModel().getSelectedItem(); + if(message==null){ + return; + } + messages.remove(message); + + if(message.isFailed()){ + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle("Nachricht konnte nicht verarbeitet werden"); + alert.setHeaderText("Die Nachricht konnte nicht verarbeitet werden"); + alert.setContentText(message.getMessageContent()); + alert.initOwner(btnShow.getScene().getWindow()); + alert.initModality(Modality.APPLICATION_MODAL); + + alert.showAndWait(); + } + //TODO Go to patient + + } + +} \ No newline at end of file diff --git a/src/main/java/de/uniluebeck/mi/projmi6/model/HL7Message.java b/src/main/java/de/uniluebeck/mi/projmi6/model/HL7Message.java index d0985e7..92a6cff 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/model/HL7Message.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/model/HL7Message.java @@ -23,10 +23,15 @@ public class HL7Message { } public LocalDateTime getDateTime() { - return dateTime; } + @Override + public String toString() { + return dateTime+ " - "+(failed?"": + (patient!=null? patient.getNachname()+", "+patient.getVorname():"")); + } + public void setDateTime(LocalDateTime dateTime) { this.dateTime = dateTime; } diff --git a/src/main/resources/message_list.fxml b/src/main/resources/message_list.fxml new file mode 100644 index 0000000..0178b20 --- /dev/null +++ b/src/main/resources/message_list.fxml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + +