소스 검색

Untersuchungscontroller Zustandsverwaltung;

Disabled-Style für alle Felder und Comboboxen angepasst;
Logs laden zeigt Animation unten
testBranch
Johannes 10 년 전
부모
커밋
9f346ab84d
9개의 변경된 파일150개의 추가작업 그리고 75개의 파일을 삭제
  1. +7
    -2
      src/main/java/de/uniluebeck/mi/projmi6/controller/LogController.java
  2. +1
    -1
      src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java
  3. +101
    -41
      src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java
  4. +5
    -2
      src/main/java/de/uniluebeck/mi/projmi6/view/DateTimePicker.java
  5. +1
    -1
      src/main/resources/diagnose.fxml
  6. +1
    -1
      src/main/resources/fall.fxml
  7. +1
    -1
      src/main/resources/stationshistorie.fxml
  8. +20
    -9
      src/main/resources/style.css
  9. +13
    -17
      src/main/resources/untersuchungen.fxml

+ 7
- 2
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<HL7LogEntry, LocalDateTime> 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


+ 1
- 1
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<Mitarbeiter> currentMitarbeiterProperty() {


+ 101
- 41
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> state = new SimpleObjectProperty<>(State.VIEW);

private MainController mainController;

public State getState() {
return state.get();
}

public ReadOnlyObjectProperty<State> stateProperty() {
return state;
}



private SimpleObjectProperty<ObservableList<Untersuchung>> untersuchungen = new SimpleObjectProperty<>();


private MainController mainController;

@FXML
private Button btnUntsCancel;

@@ -61,9 +76,11 @@ public class UntersuchungenController {
@FXML
private ComboBox<OpsCode> untsOpsCode;




@FXML
private ComboBox<Mitarbeiter> untsArzt;
private SimpleObjectProperty<ObservableList<Untersuchung>> untersuchungen = new SimpleObjectProperty<>();

public UntersuchungenController(MainController mainController) {
this.mainController = mainController;
@@ -77,21 +94,62 @@ public class UntersuchungenController {
this.untersuchungen.set(untersuchungen);
}


public SimpleObjectProperty<ObservableList<Untersuchung>> 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<Untersuchung>(){
@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("<auto>");
untsChanger.setText("");

untsOpsCode.setValue(null);
untsArzt.setValue(null);
untsArzt.setValue(mainController.getCurrentMitarbeiter());
dtTmUntersuchungszeitpunkt.setDateTime(null);

}


+ 5
- 2
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));
}
}



+ 1
- 1
src/main/resources/diagnose.fxml 파일 보기

@@ -22,7 +22,7 @@
</VBox>
<VBox>
<children>
<GridPane vgap="5.0" fx:id="fields">
<GridPane vgap="5.0" fx:id="fields" styleClass="fields">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />


+ 1
- 1
src/main/resources/fall.fxml 파일 보기

@@ -10,7 +10,7 @@
<?import de.uniluebeck.mi.projmi6.view.DateTimePicker?>
<VBox fx:controller="de.uniluebeck.mi.projmi6.controller.FallController" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<GridPane vgap="5.0" fx:id="fallFields" id="fallFields">
<GridPane vgap="5.0" fx:id="fallFields" styleClass="fields">
<children>
<Label text="Patient:"/>
<Label fx:id="fallPatID" text="John Doe (PatID = XXX)" GridPane.columnIndex="1"/>


+ 1
- 1
src/main/resources/stationshistorie.fxml 파일 보기

@@ -33,7 +33,7 @@
</VBox>
<VBox>
<children>
<GridPane VBox.vgrow="ALWAYS" fx:id="fields">
<GridPane VBox.vgrow="ALWAYS" fx:id="fields" styleClass="fields">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>


+ 20
- 9
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;
}


+ 13
- 17
src/main/resources/untersuchungen.fxml 파일 보기

@@ -20,7 +20,7 @@
</VBox>
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<GridPane vgap="5.0">
<GridPane vgap="5.0" styleClass="fields" fx:id="fields">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="40.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
@@ -31,24 +31,20 @@
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="OPS-Code" />
<Label text="OPS-Code:" />
<ComboBox fx:id="untsOpsCode" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1" />
<Label text="Durchführender Arzt" GridPane.rowIndex="1" />
<Label text="Untersuchungszeitpunkt" GridPane.rowIndex="2" />
<ComboBox fx:id="untsArzt" maxWidth="1.7976931348623157E308" promptText="aktueller Arzt is default" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<!--<HBox prefHeight="100.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
<children>
<DatePicker fx:id="untsDatum" prefWidth="150.0" />
<TextField fx:id="untsZeit" prefColumnCount="5" promptText="HH:MM" />
<Button fx:id="btnUntsNow" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#clickedUntsNow" text="Jetzt" HBox.hgrow="ALWAYS" />
</children>
</HBox>-->

<Label text="Durchführender Arzt:" GridPane.rowIndex="1" />
<ComboBox fx:id="untsArzt" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1" GridPane.rowIndex="1" />

<Label text="Untersuchungszeitpunkt:" GridPane.rowIndex="2" />
<DateTimePicker fx:id="dtTmUntersuchungszeitpunkt" GridPane.columnIndex="1" GridPane.rowIndex="2" />
</children>
</GridPane>
<HBox alignment="TOP_RIGHT" prefHeight="100.0" prefWidth="200.0" spacing="5.0" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="btnUntsCancel" mnemonicParsing="false" onAction="#clickedUntsAbort" text="Storno" />
<Button fx:id="btnUntsCancel" mnemonicParsing="false" onAction="#clickedUntsCancel" text="Storno" />
<Button fx:id="btnUntsAbort" mnemonicParsing="false" onAction="#clickedUntsAbort" text="Abbrechen" />
<Button fx:id="btnUntsSave" mnemonicParsing="false" onAction="#clickedUntsSave" text="Speichern" />
</children>
<padding>
@@ -71,10 +67,10 @@
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.columnIndex="0" GridPane.rowIndex="2" />
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.columnIndex="0" GridPane.rowIndex="3" />
<Label styleClass="ersteller-value" fx:id="untsCreator" text="Dr. Haha" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label styleClass="ersteller-value" fx:id="untsCreateTime" text="10.10.2013 09:00" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label styleClass="ersteller-value" fx:id="untsChanger" text="Dr. Haha" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label styleClass="ersteller-value" fx:id="untsChangeTime" text="10.10.2013 09:00" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label styleClass="ersteller-value" fx:id="untsCreator" text="" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label styleClass="ersteller-value" fx:id="untsCreateTime" text="" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label styleClass="ersteller-value" fx:id="untsChanger" text="" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label styleClass="ersteller-value" fx:id="untsChangeTime" text="" GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
</GridPane>
</children>


불러오는 중...
취소
저장