Browse Source

Supercoolen Listener fuer Keyeingaben in die Comboboxen eingebaut.

testBranch
parent
commit
2bb0c8a9bb
5 changed files with 171 additions and 94 deletions
  1. +53
    -70
      src/main/java/de/uniluebeck/mi/projmi6/controller/DiagnoseController.java
  2. +2
    -0
      src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java
  3. +15
    -14
      src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java
  4. +14
    -10
      src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java
  5. +87
    -0
      src/main/java/de/uniluebeck/mi/projmi6/view/SelectKeyComboBoxListener.java

+ 53
- 70
src/main/java/de/uniluebeck/mi/projmi6/controller/DiagnoseController.java View File

@@ -5,7 +5,11 @@ package de.uniluebeck.mi.projmi6.controller;
*/

import de.uniluebeck.mi.projmi6.db.DBHandler;
import de.uniluebeck.mi.projmi6.model.*;
import de.uniluebeck.mi.projmi6.model.DiagArt;
import de.uniluebeck.mi.projmi6.model.Diagnose;
import de.uniluebeck.mi.projmi6.model.Icd10Code;
import de.uniluebeck.mi.projmi6.model.Mitarbeiter;
import de.uniluebeck.mi.projmi6.view.SelectKeyComboBoxListener;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.FXCollections;
@@ -13,14 +17,43 @@ import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.event.ActionEvent;
import javafx.scene.layout.GridPane;

public class DiagnoseController {

SimpleObjectProperty<State> state = new SimpleObjectProperty<>(State.VIEW);
@FXML
Button btnDiagAbort, btnDiagEdit;
private MainController mainController;
private SimpleObjectProperty<ObservableList<Diagnose>> diagnosen = new SimpleObjectProperty<>();
@FXML
private ListView<Diagnose> diagnoseList;
@FXML
private GridPane fields;
@FXML
private ComboBox<Mitarbeiter> diagDiagnoseArzt;
@FXML
private Label diagCreator;
@FXML
private Button btnDiagCancel;
@FXML
private TextArea diagFreitext;
@FXML
private Button btnDiagSave;
@FXML
private Label diagCreateTime;
@FXML
private ComboBox<DiagArt> diagDiagnoseArt;
@FXML
private Label diagChanger;
@FXML
private ComboBox<Icd10Code> diagDiagnose;
@FXML
private Label diagChangeTime;
@FXML
private Button btnDiagCreate;

public DiagnoseController(MainController mainController){
public DiagnoseController(MainController mainController) {
this.mainController = mainController;
}

@@ -28,24 +61,14 @@ public class DiagnoseController {
return diagnosen.get();
}

public SimpleObjectProperty<ObservableList<Diagnose>> diagnosenProperty() {
return diagnosen;
}

public void setDiagnosen(ObservableList<Diagnose> diagnosen) {
this.diagnosen.set(diagnosen);
}

private SimpleObjectProperty<ObservableList<Diagnose>> diagnosen = new SimpleObjectProperty<>();



public enum State {
CREATE, EDIT, VIEW
public SimpleObjectProperty<ObservableList<Diagnose>> diagnosenProperty() {
return diagnosen;
}

SimpleObjectProperty<State> state = new SimpleObjectProperty<>(State.VIEW);

public State getState() {
return state.get();
}
@@ -54,14 +77,13 @@ public class DiagnoseController {
return state;
}


@FXML
private ListView<Diagnose> diagnoseList;

@FXML
public void initialize(){
public void initialize() {

diagDiagnose.itemsProperty().bind(mainController.getStammdaten().icd10CodesProperty());

new SelectKeyComboBoxListener(diagDiagnose);

diagDiagnoseArt.setItems(FXCollections.observableArrayList(DiagArt.values()));
diagDiagnoseArzt.itemsProperty().bind(mainController.getStammdaten().mitarbeiterProperty());

@@ -73,9 +95,9 @@ public class DiagnoseController {

diagnoseList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
diagnoseList.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if(newValue==null){
if (newValue == null) {
clearFields();
}else{
} else {
copyDiagnoseDataIntoFields(newValue);
}
});
@@ -83,8 +105,7 @@ public class DiagnoseController {

}


private void initButtons(){
private void initButtons() {
btnDiagCreate.disableProperty().bind(mainController.fallProperty().isNull());

btnDiagEdit.disableProperty().bind(diagnoseList.getSelectionModel().selectedItemProperty().isNull());
@@ -102,62 +123,22 @@ public class DiagnoseController {
}

@FXML
Button btnDiagAbort, btnDiagEdit;


@FXML
private void clickedEdit(){
private void clickedEdit() {
state.set(State.EDIT);
}

@FXML
private void clickedAbort(){
private void clickedAbort() {
state.set(State.VIEW);
Diagnose diagnose = diagnoseList.getSelectionModel().getSelectedItem();
if(diagnose==null){
if (diagnose == null) {
clearFields();
}else{
} else {
copyDiagnoseDataIntoFields(diagnose);
}
}

@FXML
private GridPane fields;

@FXML
private ComboBox<Mitarbeiter> diagDiagnoseArzt;

@FXML
private Label diagCreator;

@FXML
private Button btnDiagCancel;

@FXML
private TextArea diagFreitext;

@FXML
private Button btnDiagSave;

@FXML
private Label diagCreateTime;

@FXML
private ComboBox<DiagArt> diagDiagnoseArt;

@FXML
private Label diagChanger;

@FXML
private ComboBox<Icd10Code> diagDiagnose;

@FXML
private Label diagChangeTime;

@FXML
private Button btnDiagCreate;

@FXML
void clickedDiagCreate(ActionEvent event) {
this.state.set(State.CREATE);
}
@@ -185,8 +166,6 @@ public class DiagnoseController {
mainController.refreshCaseData();
}



private void copyDiagnoseDataIntoFields(Diagnose diagnose){
diagDiagnoseArzt.setValue(diagnose.getArzt());

@@ -224,4 +203,8 @@ public class DiagnoseController {
diagChanger.setText("");
diagChangeTime.setText("");
}

public enum State {
CREATE, EDIT, VIEW
}
}

+ 2
- 0
src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java View File

@@ -8,6 +8,7 @@ import de.uniluebeck.mi.projmi6.db.DBHandler;
import de.uniluebeck.mi.projmi6.model.Patient;
import de.uniluebeck.mi.projmi6.model.Station;
import de.uniluebeck.mi.projmi6.model.StationsUebersichtsItem;
import de.uniluebeck.mi.projmi6.view.SelectKeyComboBoxListener;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.ObjectBinding;
import javafx.collections.FXCollections;
@@ -123,6 +124,7 @@ public class PatientTablesController {
tblStationOverview.disableProperty().bind(cmbStationenFilter.valueProperty().isNull());

cmbStationenFilter.itemsProperty().bind(mainController.getStammdaten().stationenProperty());
new SelectKeyComboBoxListener(cmbStationenFilter);


patientObjectBinding = Bindings.<Patient>createObjectBinding(() -> {


+ 15
- 14
src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java View File

@@ -4,6 +4,7 @@ import de.uniluebeck.mi.projmi6.db.DBHandler;
import de.uniluebeck.mi.projmi6.model.Station;
import de.uniluebeck.mi.projmi6.model.StationsHistorie;
import de.uniluebeck.mi.projmi6.view.DateTimePicker;
import de.uniluebeck.mi.projmi6.view.SelectKeyComboBoxListener;
import javafx.beans.binding.Bindings;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
@@ -35,6 +36,8 @@ public class StationsHistorieController {
GridPane fields;
@FXML
Button btnStatHistEdit;
@FXML
Button btnStatHistDelete;
/**
* The station history that is shown in the edit window, or null if a new station history should be created.
*/
@@ -58,9 +61,10 @@ public class StationsHistorieController {
private ComboBox<String> cmbAbteilung;
private SimpleObjectProperty<ObservableList<StationsHistorie>> stationsHistorie =
new SimpleObjectProperty<>();
@FXML
private Button btnStatHistCreate;


public StationsHistorieController(MainController mainController){
public StationsHistorieController(MainController mainController) {
this.mainController = mainController;
}

@@ -78,9 +82,6 @@ public class StationsHistorieController {
}

@FXML
private Button btnStatHistCreate;

@FXML
private void initialize() {
initColumns();

@@ -137,6 +138,8 @@ public class StationsHistorieController {
cmbAbteilung.getItems().add(0, any);
cmbAbteilung.getSelectionModel().select(0);

new SelectKeyComboBoxListener(cmbAbteilung);

tblStationsHistorie.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
setStationsHistorieSelected(newValue);
});
@@ -153,6 +156,7 @@ public class StationsHistorieController {


cmbStation.setItems(stationenFiltered);
new SelectKeyComboBoxListener(cmbStation);
}

@FXML
@@ -171,7 +175,7 @@ public class StationsHistorieController {
e.printStackTrace();
}
mainController.refreshCaseData();
}else{
} else {
copyFieldDataIntoStationsHistorie(stationsHistorieSelected);
try {
DBHandler.setStationsHistorie(stationsHistorieSelected, true);
@@ -190,16 +194,16 @@ public class StationsHistorieController {
}

@FXML
private void clickedCreateAufenthalt(){
private void clickedCreateAufenthalt() {
this.state.set(State.CREATE);
setStationsHistorieSelected(null);
}

@FXML
private void clickedDelete(){
private void clickedDelete() {
StationsHistorie selectedItem = tblStationsHistorie.getSelectionModel().getSelectedItem();

if(!LocalDateTime.now().isBefore(selectedItem.getAufnahmeDatum())){
if (!LocalDateTime.now().isBefore(selectedItem.getAufnahmeDatum())) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Stationsaufenthalt kann nicht entfernt werden!");
alert.setHeaderText(null);
@@ -210,9 +214,9 @@ public class StationsHistorieController {
return;
}

try{
try {
DBHandler.delStationsHistorie(selectedItem);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}

@@ -221,9 +225,6 @@ public class StationsHistorieController {

}

@FXML
Button btnStatHistDelete;

public ObservableList<StationsHistorie> getStationsHistorie() {
return stationsHistorie.get();
}


+ 14
- 10
src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java View File

@@ -4,10 +4,12 @@ package de.uniluebeck.mi.projmi6.controller;
* Created by 626947 on 12.11.15.
*/

import de.uniluebeck.mi.projmi6.Main;
import de.uniluebeck.mi.projmi6.db.DBHandler;
import de.uniluebeck.mi.projmi6.model.*;
import de.uniluebeck.mi.projmi6.model.Mitarbeiter;
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.SimpleObjectProperty;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
@@ -61,28 +63,30 @@ public class UntersuchungenController {

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

public ObservableList<Untersuchung> getUntersuchungen() {
return untersuchungen.get();
public UntersuchungenController(MainController mainController) {
this.mainController = mainController;
}

public SimpleObjectProperty<ObservableList<Untersuchung>> untersuchungenProperty() {
return untersuchungen;
public ObservableList<Untersuchung> getUntersuchungen() {
return untersuchungen.get();
}

public void setUntersuchungen(ObservableList<Untersuchung> untersuchungen) {
this.untersuchungen.set(untersuchungen);
}

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

public UntersuchungenController (MainController mainController){
this.mainController = mainController;
public SimpleObjectProperty<ObservableList<Untersuchung>> untersuchungenProperty() {
return untersuchungen;
}

@FXML
public void initialize(){
untsOpsCode.itemsProperty().bind(mainController.getStammdaten().opsCodesProperty());

new SelectKeyComboBoxListener(untsOpsCode);

untsList.itemsProperty().bind(untersuchungen);
untsArzt.setItems(mainController.getStammdaten().getMitarbeiter());



+ 87
- 0
src/main/java/de/uniluebeck/mi/projmi6/view/SelectKeyComboBoxListener.java View File

@@ -0,0 +1,87 @@
package de.uniluebeck.mi.projmi6.view;

import com.sun.javafx.scene.control.skin.ComboBoxListViewSkin;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListView;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;

/**
* Created by nils on 19.11.2015.
* <p/>
* Geklaut von <a href="http://tech.chitgoks.com/2013/07/19/how-to-go-to-item-in-combobox-on-keypress-in-java-fx-2/">hier</a>
*/
public class SelectKeyComboBoxListener implements EventHandler<KeyEvent> {

private ComboBox comboBox;
private StringBuilder sb = new StringBuilder();

public SelectKeyComboBoxListener(ComboBox comboBox) {
this.comboBox = comboBox;
this.comboBox.setOnKeyReleased(SelectKeyComboBoxListener.this);

this.comboBox.addEventFilter(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (event.getCode() == KeyCode.ESCAPE && sb.length() > 0) {
sb.delete(0, sb.length());
}
}
});

// add a focus listener such that if not in focus, reset the filtered typed keys
this.comboBox.focusedProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
if (newValue instanceof Boolean && !((Boolean) newValue).booleanValue())
sb.delete(0, sb.length());
else {
ListView lv = ((ComboBoxListViewSkin) SelectKeyComboBoxListener.this.comboBox.getSkin()).getListView();
lv.scrollTo(lv.getSelectionModel().getSelectedIndex());
}
}
});

this.comboBox.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
ListView lv = ((ComboBoxListViewSkin) SelectKeyComboBoxListener.this.comboBox.getSkin()).getListView();
lv.scrollTo(lv.getSelectionModel().getSelectedIndex());
}
});
}

@Override
public void handle(KeyEvent event) {
if (event.getCode() == KeyCode.DOWN || event.getCode() == KeyCode.UP || event.getCode() == KeyCode.TAB) {
return;
} else if (event.getCode() == KeyCode.BACK_SPACE && sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
} else {
sb.append(event.getText());
}

if (sb.length() == 0)
return;

boolean found = false;
ObservableList items = comboBox.getItems();
for (int i = 0; i < items.size(); i++) {
if (event.getCode() != KeyCode.BACK_SPACE && items.get(i).toString().toLowerCase().startsWith(sb.toString().toLowerCase())) {
ListView lv = ((ComboBoxListViewSkin) comboBox.getSkin()).getListView();
lv.getSelectionModel().clearAndSelect(i);
lv.scrollTo(lv.getSelectionModel().getSelectedIndex());
found = true;
break;
}
}

if (!found && sb.length() > 0)
sb.deleteCharAt(sb.length() - 1);
}
}

Loading…
Cancel
Save