From 9f346ab84dc67343f1182a5c20e1fef6196fa6eb Mon Sep 17 00:00:00 2001 From: Johannes Date: Fri, 20 Nov 2015 10:50:58 +0100 Subject: [PATCH] =?UTF-8?q?Untersuchungscontroller=20Zustandsverwaltung;?= =?UTF-8?q?=20Disabled-Style=20f=C3=BCr=20alle=20Felder=20und=20Comboboxen?= =?UTF-8?q?=20angepasst;=20Logs=20laden=20zeigt=20Animation=20unten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mi/projmi6/controller/LogController.java | 9 +- .../mi/projmi6/controller/MainController.java | 2 +- .../controller/UntersuchungenController.java | 142 +++++++++++++++------ .../uniluebeck/mi/projmi6/view/DateTimePicker.java | 7 +- src/main/resources/diagnose.fxml | 2 +- src/main/resources/fall.fxml | 2 +- src/main/resources/stationshistorie.fxml | 2 +- src/main/resources/style.css | 29 +++-- src/main/resources/untersuchungen.fxml | 30 ++--- 9 files changed, 150 insertions(+), 75 deletions(-) diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/LogController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/LogController.java index e5a7c65..fa8855d 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/LogController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/LogController.java @@ -5,6 +5,7 @@ import de.uniluebeck.mi.projmi6.model.HL7LogEntry; import javafx.collections.FXCollections; import javafx.concurrent.Task; import javafx.fxml.FXML; +import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.PropertyValueFactory; @@ -29,6 +30,9 @@ public class LogController { @FXML TableColumn colLogTime; + @FXML + Button btnRefresh; + public LogController(MainController mainController) { @@ -52,13 +56,13 @@ public class LogController { public void refreshLogFromDb(){ if (this.loadLogEntryTask != null && this.loadLogEntryTask.isRunning()) { - System.out.println("Logs werden bereits geladen."); return; } - // btnPatRefresh.setDisable(true); + btnRefresh.setDisable(true); tblLog.setItems(null); + mainController.increaseParallelTaskCount(); tblLog.setPlaceholder(new Text("Liste wird geladen...")); @@ -75,6 +79,7 @@ public class LogController { tblLog.setPlaceholder(new Text("Liste ist leer.")); tblLog.setItems(FXCollections.observableArrayList(this.getValue())); mainController.decreaseParallelTaskCount(); + btnRefresh.setDisable(false); } @Override 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 94d0a90..106bd1c 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java @@ -406,7 +406,7 @@ public enum TabName { } public Mitarbeiter getCurrentMitarbeiter() { - return cmbUserChoose.getValue(); + return cmbUserChoose==null?null:cmbUserChoose.getValue(); } public ReadOnlyObjectProperty currentMitarbeiterProperty() { diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java index bb5ee64..997509e 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java @@ -10,11 +10,13 @@ import de.uniluebeck.mi.projmi6.model.OpsCode; import de.uniluebeck.mi.projmi6.model.Untersuchung; import de.uniluebeck.mi.projmi6.view.DateTimePicker; import de.uniluebeck.mi.projmi6.view.SelectKeyComboBoxListener; +import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.*; +import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.scene.text.Text; @@ -22,15 +24,28 @@ import java.sql.SQLException; public class UntersuchungenController { - /** - * The examination that is shown in the edit window, or null if a new examination should be created. - */ - private Untersuchung untersuchung = null; + public enum State { + CREATE, EDIT, VIEW + } + private final SimpleObjectProperty state = new SimpleObjectProperty<>(State.VIEW); - private MainController mainController; + + public State getState() { + return state.get(); + } + + public ReadOnlyObjectProperty stateProperty() { + return state; + } + + private SimpleObjectProperty> untersuchungen = new SimpleObjectProperty<>(); + + + private MainController mainController; + @FXML private Button btnUntsCancel; @@ -61,9 +76,11 @@ public class UntersuchungenController { @FXML private ComboBox untsOpsCode; + + + @FXML private ComboBox untsArzt; - private SimpleObjectProperty> untersuchungen = new SimpleObjectProperty<>(); public UntersuchungenController(MainController mainController) { this.mainController = mainController; @@ -77,21 +94,62 @@ public class UntersuchungenController { this.untersuchungen.set(untersuchungen); } + public SimpleObjectProperty> untersuchungenProperty() { return untersuchungen; } - @FXML - public void initialize(){ + private void initComboBoxes(){ untsOpsCode.itemsProperty().bind(mainController.getStammdaten().opsCodesProperty()); - new SelectKeyComboBoxListener(untsOpsCode); untsList.itemsProperty().bind(untersuchungen); - untsArzt.setItems(mainController.getStammdaten().getMitarbeiter()); + untsArzt.itemsProperty().bind(mainController.getStammdaten().mitarbeiterProperty()); + + } + + private void initButtons(){ + btnUntsCreate.disableProperty().bind(mainController.fallProperty().isNull()); + + btnUntsCancel.managedProperty().bind(state.isEqualTo(State.VIEW) + .and(untsList.getSelectionModel().selectedItemProperty().isNotNull())); + btnUntsCancel.visibleProperty().bind(btnUntsCreate.managedProperty()); + + btnUntsSave.managedProperty().bind(state.isNotEqualTo(State.VIEW)); + btnUntsSave.visibleProperty().bind(btnUntsSave.managedProperty()); + + btnUntsAbort.managedProperty().bind(btnUntsSave.managedProperty()); + btnUntsAbort.visibleProperty().bind(btnUntsSave.managedProperty()); + } + + @FXML + private Button btnUntsAbort; + @FXML + public void initialize(){ + //Clear fields on startup + copyUntersuchungDataIntoFields(); + + initComboBoxes(); + initButtons(); + + untsList.getSelectionModel().selectedItemProperty().addListener( + (observable, oldVal, newVal) -> copyUntersuchungDataIntoFields()); + + fields.disableProperty().bind(state.isEqualTo(State.VIEW)); + + state.addListener((observable, oldValue, newValue) -> { + if(newValue==State.VIEW){ + mainController.unlockFromEdit(); + }else{ + mainController.lockForEdit(MainController.TabName.UNTERSUCHUNG); + } + }); + + + untsList.disableProperty().bind(state.isNotEqualTo(State.VIEW)); untsList.setCellFactory(lv -> { return new ListCell(){ @Override @@ -119,29 +177,39 @@ public class UntersuchungenController { @FXML void clickedUntsCreate() { + this.state.set(State.CREATE); clearFields(); untsArzt.getSelectionModel().select(mainController.getCurrentMitarbeiter()); - untersuchung = null; } @FXML - void clickedUntsAbort() { + void clickedUntsCancel() { Untersuchung untersuchung = untsList.getSelectionModel().getSelectedItem(); - if(untersuchung!=null){ - untersuchung.setStorniert(true); - try { - DBHandler.setUntersuchung(untersuchung, mainController.getCurrentMitarbeiter().getMitarbID(), true); - }catch (Exception e){ - e.printStackTrace(); - } + if(untersuchung==null) { + return; + } + untersuchung.setStorniert(true); + try { + DBHandler.setUntersuchung(untersuchung, mainController.getCurrentMitarbeiter().getMitarbID(), true); + }catch (Exception e){ + e.printStackTrace(); } - mainController.refreshCaseData(); + mainController.refreshCaseData(); + } + + @FXML + GridPane fields; + + @FXML + private void clickedUntsAbort(){ + state.set(State.VIEW); + copyUntersuchungDataIntoFields(); } @FXML void clickedUntsSave(ActionEvent event) { - if (untersuchung == null) { - untersuchung = new Untersuchung(); + if (state.get() == State.CREATE) { + Untersuchung untersuchung = new Untersuchung(); untersuchung.setFall(mainController.getFallController().getFall()); copyFieldDataIntoUntersuchung(untersuchung); try { @@ -149,21 +217,21 @@ public class UntersuchungenController { } catch (SQLException e) { e.printStackTrace(); } + } else if(state.get()==State.EDIT){ + Untersuchung untersuchung = untsList.getSelectionModel().getSelectedItem(); + copyFieldDataIntoUntersuchung(untersuchung); + //... } } - public void setUntersuchung(Untersuchung untersuchung){ - this.untersuchung = untersuchung; + + private void copyUntersuchungDataIntoFields(){ + Untersuchung untersuchung = untsList.getSelectionModel().getSelectedItem(); if(untersuchung==null){ clearFields(); - }else { - copyUntersuchungDataIntoFields(); + return; } - } - - private void copyUntersuchungDataIntoFields(){ - // untsList.setText(Integer.toString(untersuchung.getUntersID())); untsOpsCode.setValue(untersuchung.getOpscode()); untsArzt.setValue(untersuchung.getDurchfuehrenderArzt()); dtTmUntersuchungszeitpunkt.setDateTime(untersuchung.getUntersuchungsdatum()); @@ -175,27 +243,19 @@ public class UntersuchungenController { } private void copyFieldDataIntoUntersuchung(Untersuchung untersuchung){ - untersuchung.setOpscode(untsOpsCode.getValue()); untersuchung.setDurchfuehrenderArzt(untsArzt.getValue()); - // untersuchung.set?(untsList.getValue()); - untersuchung.setUntersuchungsdatum(dtTmUntersuchungszeitpunkt.getDateTime()); - - // untersCreateTime.setText(untersuchung.getErstellDatumZeit().toString()); - // untersCreator.setText(Integer.toString(untersuchung.getErsteller())); - // untersEditTime.setText(untersuchung.getBearbeitetDatumZeit().toString()); - // untersEditor.setText(Integer.toString(untersuchung.getBearbeiter())); + untersuchung.setUntersuchungsdatum(dtTmUntersuchungszeitpunkt.getDateTime()); } private void clearFields(){ - untsCreateTime.setText(""); untsCreator.setText(""); untsChangeTime.setText(""); - // untersEditor.setText(""); + untsChanger.setText(""); untsOpsCode.setValue(null); - untsArzt.setValue(null); + untsArzt.setValue(mainController.getCurrentMitarbeiter()); dtTmUntersuchungszeitpunkt.setDateTime(null); } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/view/DateTimePicker.java b/src/main/java/de/uniluebeck/mi/projmi6/view/DateTimePicker.java index 56197bd..46ebb81 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/view/DateTimePicker.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/view/DateTimePicker.java @@ -86,6 +86,7 @@ public class DateTimePicker extends HBox { HBox timePicker = new HBox(hourText, colon,minuteText); timePicker.maxHeightProperty().bind(datePicker.heightProperty()); + timePicker.getStyleClass().add("time-picker"); timePicker.setMinWidth(55); timePicker.setMaxWidth(70); timePicker.getStyleClass().add("button"); @@ -116,9 +117,11 @@ public class DateTimePicker extends HBox { minuteText.setText(""); datePicker.setValue(null); }else{ - hourText.setText(Integer.toString(localDateTime.getHour())); - minuteText.setText(Integer.toString(localDateTime.getMinute())); datePicker.setValue(LocalDate.from(localDateTime)); + hourText.setText(Integer.toString(localDateTime.getHour())); + + int minute = localDateTime.getMinute(); + minuteText.setText((minute<9?"0":"")+Integer.toString(minute)); } } diff --git a/src/main/resources/diagnose.fxml b/src/main/resources/diagnose.fxml index 6e59995..cd869ac 100644 --- a/src/main/resources/diagnose.fxml +++ b/src/main/resources/diagnose.fxml @@ -22,7 +22,7 @@ - + diff --git a/src/main/resources/fall.fxml b/src/main/resources/fall.fxml index 728b3af..addce52 100644 --- a/src/main/resources/fall.fxml +++ b/src/main/resources/fall.fxml @@ -10,7 +10,7 @@ - + - + diff --git a/src/main/resources/style.css b/src/main/resources/style.css index 5eddd51..5fc606b 100644 --- a/src/main/resources/style.css +++ b/src/main/resources/style.css @@ -11,37 +11,48 @@ DateTimePicker .text-field{ } -#fallFields:disabled{ +.fields:disabled{ -fx-opacity: 1; } -#fallFields:disabled HBox { +.fields:disabled HBox { -fx-opacity: 1; } -#fallFields:disabled .text-field{ +.fields:disabled .text-field{ -fx-text-fill: black; -fx-background-color: transparent; -fx-opacity: 1; } -#fallFields:disabled Label{ + +.fields:disabled .label{ -fx-opacity: 1; } -#fallFields:disabled ComboBox{ +.fields:disabled ComboBox{ -fx-opacity: 1; -fx-background-color: transparent; + -fx-text-fill: black; } -#fallFields:disabled .arrow-button{ +.fields:disabled .list-cell{ + -fx-opacity: 1; + -fx-background-color: transparent; + -fx-text-fill: black; +} +.fields:disabled .time-picker { + -fx-background-color: transparent; +} + +.fields:disabled .arrow-button{ -fx-opacity: 0; } -#fallFields:disabled .arrow{ +.fields:disabled .arrow{ -fx-opacity: 0; } -#fallFields:disabled .date-picker { +.fields:disabled .date-picker { -fx-opacity: 1; -fx-background-color: transparent; } -#fallFields:disabled .now-button { +.fields:disabled .now-button { visibility: hidden; } diff --git a/src/main/resources/untersuchungen.fxml b/src/main/resources/untersuchungen.fxml index d6628cf..f585c7e 100644 --- a/src/main/resources/untersuchungen.fxml +++ b/src/main/resources/untersuchungen.fxml @@ -20,7 +20,7 @@ - + @@ -31,24 +31,20 @@ - -