Program: 78074
Project: 78074
Buggy source:
@FXML private void initialize(){
  LOGGER.debug("String_Node_Str");
  try {
    tableProfil.setEditable(true);
    colProfilID.setCellValueFactory(new PropertyValueFactory<Profile,Integer>("String_Node_Str"));
    colProfilName.setCellValueFactory(new PropertyValueFactory<Profile,String>("String_Node_Str"));
    colProfilName.setCellFactory(TextFieldTableCell.forTableColumn());
    colProfilName.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile,String>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile,String> t){
        try {
          Profile p=((Profile)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (t.getNewValue().compareTo("String_Node_Str") != 0) {
            p.setName(t.getNewValue());
            pservice.edit(p);
          }
 else {
            refreshTableProfiles(pservice.getAllProfiles());
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colProfilMobil.setStyle("String_Node_Str");
    colProfilMobil.setSortable(false);
    colProfilMobil.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilMobil.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilGreen.setStyle("String_Node_Str");
    colProfilGreen.setSortable(false);
    colProfilGreen.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilGreen.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilFilter.setStyle("String_Node_Str");
    colProfilFilter.setSortable(false);
    colProfilFilter.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilFilter.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilDrucken.setStyle("String_Node_Str");
    colProfilDrucken.setSortable(false);
    colProfilDrucken.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilDrucken.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilWatermark.setStyle("String_Node_Str");
    colProfilWatermark.setSortable(false);
    colProfilWatermark.setCellValueFactory(new PropertyValueFactory<Profile,String>("String_Node_Str"));
    colProfilWatermark.setCellFactory(new Callback<TableColumn,TableCell>(){
      @Override public TableCell call(      TableColumn p){
        return new ProfileImgCell(profList,pservice);
      }
    }
);
    colProfilAktion.setStyle("String_Node_Str");
    colProfilAktion.setSortable(false);
    colProfilAktion.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilAktion.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileButtonCell(profList,pservice,windowManager.getStage());
      }
    }
);
    this.refreshTableProfiles(pservice.getAllProfiles());
    profilList.getItems().addAll(pservice.getAllProfiles());
    profilList.valueProperty().addListener(new ChangeListener<Profile>(){
      @Override public void changed(      ObservableValue ov,      Profile t,      Profile selectedProfil){
        try {
          refreshTablePosition(pservice.getAllPositions());
          int selectedProfilID=((Profile)profilList.getSelectionModel().getSelectedItem()) == null ? 0 : ((Profile)profilList.getSelectionModel().getSelectedItem()).getId();
          refreshTableKameraPosition(pservice.getAllPairCameraPositionOfProfile(selectedProfil.getId()));
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfilID));
        }
 catch (        ServiceException e) {
          e.printStackTrace();
        }
      }
    }
);
    tablePosition.setEditable(true);
    colPositionID.setCellValueFactory(new PropertyValueFactory<Position,Integer>("String_Node_Str"));
    colPositionName.setCellValueFactory(new PropertyValueFactory<Position,String>("String_Node_Str"));
    colPositionName.setCellFactory(TextFieldTableCell.forTableColumn());
    colPositionName.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Position,String>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Position,String> t){
        try {
          Position p=((Position)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (t.getNewValue().compareTo("String_Node_Str") != 0) {
            p.setName(t.getNewValue());
            pservice.editPosition(p);
            int selectedProfilID=((Profile)profilList.getSelectionModel().getSelectedItem()) == null ? 0 : ((Profile)profilList.getSelectionModel().getSelectedItem()).getId();
            kamPosList.removeAll(kamPosList);
            kamPosList.addAll(pservice.getAllPairCameraPositionOfProfile(selectedProfilID));
          }
 else {
            refreshTablePosition(pservice.getAllPositionsOfProfile(((Profile)profilList.getSelectionModel().getSelectedItem())));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colPositionBild.setStyle("String_Node_Str");
    colPositionBild.setSortable(false);
    colPositionBild.setCellValueFactory(new PropertyValueFactory<Position,String>("String_Node_Str"));
    colPositionBild.setCellFactory(new Callback<TableColumn,TableCell>(){
      @Override public TableCell call(      TableColumn p){
        return new PositionImgCell(posList,pservice);
      }
    }
);
    colPositionAktion.setStyle("String_Node_Str");
    colPositionAktion.setSortable(false);
    colPositionAktion.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Position,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Position,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colPositionAktion.setCellFactory(new Callback<TableColumn<Position,Boolean>,TableCell<Position,Boolean>>(){
      @Override public TableCell<Position,Boolean> call(      TableColumn<Position,Boolean> p){
        int selectedProfilID=((Profile)profilList.getSelectionModel().getSelectedItem()) == null ? 0 : ((Profile)profilList.getSelectionModel().getSelectedItem()).getId();
        return new PositionButtonCell(posList,kamPosList,selectedProfilID,pservice,windowManager.getStage());
      }
    }
);
    tableKamPos.setEditable(true);
    colKamPosKamera.setCellValueFactory(new PropertyValueFactory<Profile.PairCameraPosition,String>("String_Node_Str"));
    colKamPosPosition.setStyle("String_Node_Str");
    colKamPosPosition.setSortable(false);
    colKamPosPosition.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairCameraPosition,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile.PairCameraPosition,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colKamPosPosition.setCellFactory(new Callback<TableColumn<Profile.PairCameraPosition,Boolean>,TableCell<Profile.PairCameraPosition,Boolean>>(){
      @Override public TableCell<Profile.PairCameraPosition,Boolean> call(      TableColumn<Profile.PairCameraPosition,Boolean> p){
        return new CamPosComboBoxCell(kamPosList,pservice,posList);
      }
    }
);
    tableLogo.setEditable(true);
    colLogoID.setCellValueFactory(new PropertyValueFactory<Profile.PairLogoRelativeRectangle,Integer>("String_Node_Str"));
    colLogoName.setCellValueFactory(new PropertyValueFactory<Profile.PairLogoRelativeRectangle,Logo>("String_Node_Str"));
    colLogoName.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String>,ObservableValue<String>>(){
      public ObservableValue<String> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String> p){
        return new ReadOnlyObjectWrapper(p.getValue().getLogo().getLabel());
      }
    }
);
    colLogoName.setCellFactory(TextFieldTableCell.forTableColumn());
    colLogoName.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,String>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,String> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (t.getNewValue().compareTo("String_Node_Str") != 0) {
            p.getLogo().setLabel(t.getNewValue());
            System.out.println(p.getLogo().getId() + "String_Node_Str" + p.getLogo().getLabel()+ "String_Node_Str"+ p.getLogo().getPath());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoX.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getX());
      }
    }
);
    colLogoX.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoX.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setX(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoY.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getY());
      }
    }
);
    colLogoY.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoY.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setY(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoBreite.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getWidth());
      }
    }
);
    colLogoBreite.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoBreite.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setWidth(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoHoehe.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getHeight());
      }
    }
);
    colLogoHoehe.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoHoehe.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setHeight(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoLogo.setStyle("String_Node_Str");
    colLogoLogo.setSortable(false);
    colLogoLogo.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String>,ObservableValue<String>>(){
      public ObservableValue<String> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String> p){
        return new ReadOnlyObjectWrapper(p.getValue().getLogo().getPath());
      }
    }
);
    colLogoLogo.setCellFactory(new Callback<TableColumn,TableCell>(){
      @Override public TableCell call(      TableColumn p){
        return new LogoImgCell(logoList,pservice);
      }
    }
);
    colLogoAktion.setStyle("String_Node_Str");
    colLogoAktion.setSortable(false);
    colLogoAktion.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colLogoAktion.setCellFactory(new Callback<TableColumn<Profile.PairLogoRelativeRectangle,Boolean>,TableCell<Profile.PairLogoRelativeRectangle,Boolean>>(){
      @Override public TableCell<Profile.PairLogoRelativeRectangle,Boolean> call(      TableColumn<Profile.PairLogoRelativeRectangle,Boolean> p){
        return new LogoButtonCell(logoList,pservice,windowManager.getStage());
      }
    }
);
    tableLogo.getSelectionModel().selectedItemProperty().addListener((obs,oldSelection,newSelection) -> {
      if (newSelection != null) {
        Profile.PairLogoRelativeRectangle selectedLogo=(Profile.PairLogoRelativeRectangle)newSelection;
        LOGGER.info("String_Node_Str" + selectedLogo.getLogo().getPath());
        this.selectedLogo=selectedLogo;
        if (!selectedLogo.getLogo().getPath().isEmpty() && !selectedLogo.getLogo().getPath().equals("String_Node_Str") && new File(selectedLogo.getLogo().getPath()).isFile()) {
          try {
            int width=Integer.parseInt(txPreviewWidth.getText());
            int height=Integer.parseInt(txPreviewHeight.getText());
            javafx.scene.image.Image image=SwingFXUtils.toFXImage(logoService.getPreviewForLogo(selectedLogo.getLogo(),selectedLogo.getRelativeRectangle(),width,height),null);
            previewLogo.setImage(image);
          }
 catch (          NumberFormatException e) {
            LOGGER.error("String_Node_Str");
          }
catch (          ServiceException e) {
            e.printStackTrace();
          }
        }
 else         LOGGER.info("String_Node_Str");
      }
    }
);
    txPreviewHeight.textProperty().addListener((observable,oldValue,newValue) -> {
      if (selectedLogo != null) {
        try {
          int height=Integer.parseInt(newValue);
          int width=Integer.parseInt(txPreviewWidth.getText());
          javafx.scene.image.Image image=SwingFXUtils.toFXImage(logoService.getPreviewForLogo(selectedLogo.getLogo(),selectedLogo.getRelativeRectangle(),width,height),null);
          previewLogo.setImage(image);
        }
 catch (        NumberFormatException e) {
          LOGGER.error("String_Node_Str");
        }
catch (        ServiceException e) {
          e.printStackTrace();
        }
      }
    }
);
    txPreviewWidth.textProperty().addListener((observable,oldValue,newValue) -> {
      if (selectedLogo != null) {
        try {
          int width=Integer.parseInt(newValue);
          int height=Integer.parseInt(txPreviewHeight.getText());
          javafx.scene.image.Image image=SwingFXUtils.toFXImage(logoService.getPreviewForLogo(selectedLogo.getLogo(),selectedLogo.getRelativeRectangle(),width,height),null);
          previewLogo.setImage(image);
        }
 catch (        NumberFormatException e) {
          LOGGER.error("String_Node_Str");
        }
catch (        ServiceException e) {
          e.printStackTrace();
        }
      }
    }
);
  }
 catch (  ServiceException e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
@FXML private void initialize(){
  LOGGER.debug("String_Node_Str");
  try {
    tableProfil.setEditable(true);
    colProfilID.setCellValueFactory(new PropertyValueFactory<Profile,Integer>("String_Node_Str"));
    colProfilName.setCellValueFactory(new PropertyValueFactory<Profile,String>("String_Node_Str"));
    colProfilName.setCellFactory(TextFieldTableCell.forTableColumn());
    colProfilName.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile,String>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile,String> t){
        try {
          Profile p=((Profile)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (t.getNewValue().compareTo("String_Node_Str") != 0) {
            p.setName(t.getNewValue());
            pservice.edit(p);
          }
 else {
            refreshTableProfiles(pservice.getAllProfiles());
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colProfilMobil.setStyle("String_Node_Str");
    colProfilMobil.setSortable(false);
    colProfilMobil.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilMobil.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilGreen.setStyle("String_Node_Str");
    colProfilGreen.setSortable(false);
    colProfilGreen.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilGreen.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilFilter.setStyle("String_Node_Str");
    colProfilFilter.setSortable(false);
    colProfilFilter.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilFilter.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilDrucken.setStyle("String_Node_Str");
    colProfilDrucken.setSortable(false);
    colProfilDrucken.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilDrucken.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileCheckboxCell(profList,pservice,"String_Node_Str");
      }
    }
);
    colProfilWatermark.setStyle("String_Node_Str");
    colProfilWatermark.setSortable(false);
    colProfilWatermark.setCellValueFactory(new PropertyValueFactory<Profile,String>("String_Node_Str"));
    colProfilWatermark.setCellFactory(new Callback<TableColumn,TableCell>(){
      @Override public TableCell call(      TableColumn p){
        return new ProfileImgCell(profList,pservice);
      }
    }
);
    colProfilAktion.setStyle("String_Node_Str");
    colProfilAktion.setSortable(false);
    colProfilAktion.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colProfilAktion.setCellFactory(new Callback<TableColumn<Profile,Boolean>,TableCell<Profile,Boolean>>(){
      @Override public TableCell<Profile,Boolean> call(      TableColumn<Profile,Boolean> p){
        return new ProfileButtonCell(profList,pservice,windowManager.getStage());
      }
    }
);
    this.refreshTableProfiles(pservice.getAllProfiles());
    profilList.getItems().addAll(pservice.getAllProfiles());
    profilList.valueProperty().addListener(new ChangeListener<Profile>(){
      @Override public void changed(      ObservableValue ov,      Profile t,      Profile selectedProfil){
        try {
          refreshTablePosition(pservice.getAllPositions());
          int selectedProfilID=((Profile)profilList.getSelectionModel().getSelectedItem()) == null ? 0 : ((Profile)profilList.getSelectionModel().getSelectedItem()).getId();
          refreshTableKameraPosition(pservice.getAllPairCameraPositionOfProfile(selectedProfil.getId()));
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfilID));
        }
 catch (        ServiceException e) {
          e.printStackTrace();
        }
      }
    }
);
    tablePosition.setEditable(true);
    colPositionID.setCellValueFactory(new PropertyValueFactory<Position,Integer>("String_Node_Str"));
    colPositionName.setCellValueFactory(new PropertyValueFactory<Position,String>("String_Node_Str"));
    colPositionName.setCellFactory(TextFieldTableCell.forTableColumn());
    colPositionName.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Position,String>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Position,String> t){
        try {
          Position p=((Position)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (t.getNewValue().compareTo("String_Node_Str") != 0) {
            p.setName(t.getNewValue());
            pservice.editPosition(p);
            int selectedProfilID=((Profile)profilList.getSelectionModel().getSelectedItem()) == null ? 0 : ((Profile)profilList.getSelectionModel().getSelectedItem()).getId();
            kamPosList.removeAll(kamPosList);
            kamPosList.addAll(pservice.getAllPairCameraPositionOfProfile(selectedProfilID));
          }
 else {
            refreshTablePosition(pservice.getAllPositionsOfProfile(((Profile)profilList.getSelectionModel().getSelectedItem())));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colPositionBild.setStyle("String_Node_Str");
    colPositionBild.setSortable(false);
    colPositionBild.setCellValueFactory(new PropertyValueFactory<Position,String>("String_Node_Str"));
    colPositionBild.setCellFactory(new Callback<TableColumn,TableCell>(){
      @Override public TableCell call(      TableColumn p){
        return new PositionImgCell(posList,pservice);
      }
    }
);
    colPositionAktion.setStyle("String_Node_Str");
    colPositionAktion.setSortable(false);
    colPositionAktion.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Position,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Position,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colPositionAktion.setCellFactory(new Callback<TableColumn<Position,Boolean>,TableCell<Position,Boolean>>(){
      @Override public TableCell<Position,Boolean> call(      TableColumn<Position,Boolean> p){
        int selectedProfilID=((Profile)profilList.getSelectionModel().getSelectedItem()) == null ? 0 : ((Profile)profilList.getSelectionModel().getSelectedItem()).getId();
        return new PositionButtonCell(posList,kamPosList,selectedProfilID,pservice,windowManager.getStage());
      }
    }
);
    tableKamPos.setEditable(true);
    colKamPosKamera.setCellValueFactory(new PropertyValueFactory<Profile.PairCameraPosition,String>("String_Node_Str"));
    colKamPosPosition.setStyle("String_Node_Str");
    colKamPosPosition.setSortable(false);
    colKamPosPosition.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairCameraPosition,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile.PairCameraPosition,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colKamPosPosition.setCellFactory(new Callback<TableColumn<Profile.PairCameraPosition,Boolean>,TableCell<Profile.PairCameraPosition,Boolean>>(){
      @Override public TableCell<Profile.PairCameraPosition,Boolean> call(      TableColumn<Profile.PairCameraPosition,Boolean> p){
        return new CamPosComboBoxCell(kamPosList,pservice,posList);
      }
    }
);
    tableLogo.setEditable(true);
    colLogoID.setCellValueFactory(new PropertyValueFactory<Profile.PairLogoRelativeRectangle,Integer>("String_Node_Str"));
    colLogoName.setCellValueFactory(new PropertyValueFactory<Profile.PairLogoRelativeRectangle,Logo>("String_Node_Str"));
    colLogoName.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String>,ObservableValue<String>>(){
      public ObservableValue<String> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String> p){
        return new ReadOnlyObjectWrapper(p.getValue().getLogo().getLabel());
      }
    }
);
    colLogoName.setCellFactory(TextFieldTableCell.forTableColumn());
    colLogoName.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,String>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,String> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (t.getNewValue().compareTo("String_Node_Str") != 0) {
            p.getLogo().setLabel(t.getNewValue());
            System.out.println(p.getLogo().getId() + "String_Node_Str" + p.getLogo().getLabel()+ "String_Node_Str"+ p.getLogo().getPath());
            pservice.editLogo(p.getLogo());
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoX.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getX());
      }
    }
);
    colLogoX.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoX.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setX(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoY.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getY());
      }
    }
);
    colLogoY.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoY.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setY(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoBreite.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getWidth());
      }
    }
);
    colLogoBreite.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoBreite.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setWidth(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoHoehe.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double>,ObservableValue<Double>>(){
      public ObservableValue<Double> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Double> p){
        return new ReadOnlyObjectWrapper(p.getValue().getRelativeRectangle().getHeight());
      }
    }
);
    colLogoHoehe.setCellFactory(TextFieldTableCell.forTableColumn(new Double2String("String_Node_Str")));
    colLogoHoehe.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double>>(){
      @Override public void handle(      TableColumn.CellEditEvent<Profile.PairLogoRelativeRectangle,Double> t){
        try {
          Profile.PairLogoRelativeRectangle p=((Profile.PairLogoRelativeRectangle)t.getTableView().getItems().get(t.getTablePosition().getRow()));
          if (!t.getNewValue().isNaN()) {
            p.getRelativeRectangle().setHeight(t.getNewValue());
            pservice.editPairLogoRelativeRectangle(p);
          }
 else {
            refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(((Profile)profilList.getSelectionModel().getSelectedItem()).getId()));
          }
        }
 catch (        ServiceException e) {
          try {
            refreshTableProfiles(pservice.getAllProfiles());
          }
 catch (          ServiceException e1) {
            LOGGER.debug("String_Node_Str" + e1.getMessage());
          }
        }
      }
    }
);
    colLogoLogo.setStyle("String_Node_Str");
    colLogoLogo.setSortable(false);
    colLogoLogo.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String>,ObservableValue<String>>(){
      public ObservableValue<String> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,String> p){
        return new ReadOnlyObjectWrapper(p.getValue().getLogo().getPath());
      }
    }
);
    colLogoLogo.setCellFactory(new Callback<TableColumn,TableCell>(){
      @Override public TableCell call(      TableColumn p){
        return new LogoImgCell(logoList,pservice);
      }
    }
);
    colLogoAktion.setStyle("String_Node_Str");
    colLogoAktion.setSortable(false);
    colLogoAktion.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Boolean>,ObservableValue<Boolean>>(){
      @Override public ObservableValue<Boolean> call(      TableColumn.CellDataFeatures<Profile.PairLogoRelativeRectangle,Boolean> p){
        return new SimpleBooleanProperty(p.getValue() != null);
      }
    }
);
    colLogoAktion.setCellFactory(new Callback<TableColumn<Profile.PairLogoRelativeRectangle,Boolean>,TableCell<Profile.PairLogoRelativeRectangle,Boolean>>(){
      @Override public TableCell<Profile.PairLogoRelativeRectangle,Boolean> call(      TableColumn<Profile.PairLogoRelativeRectangle,Boolean> p){
        return new LogoButtonCell(logoList,pservice,windowManager.getStage());
      }
    }
);
    tableLogo.getSelectionModel().selectedItemProperty().addListener((obs,oldSelection,newSelection) -> {
      if (newSelection != null) {
        Profile.PairLogoRelativeRectangle selectedLogo=(Profile.PairLogoRelativeRectangle)newSelection;
        LOGGER.info("String_Node_Str" + selectedLogo.getLogo().getPath());
        this.selectedLogo=selectedLogo;
        if (!selectedLogo.getLogo().getPath().isEmpty() && !selectedLogo.getLogo().getPath().equals("String_Node_Str") && new File(selectedLogo.getLogo().getPath()).isFile()) {
          try {
            int width=Integer.parseInt(txPreviewWidth.getText());
            int height=Integer.parseInt(txPreviewHeight.getText());
            javafx.scene.image.Image image=SwingFXUtils.toFXImage(logoService.getPreviewForLogo(selectedLogo.getLogo(),selectedLogo.getRelativeRectangle(),width,height),null);
            previewLogo.setImage(image);
          }
 catch (          NumberFormatException e) {
            LOGGER.error("String_Node_Str");
          }
catch (          ServiceException e) {
            e.printStackTrace();
          }
        }
 else         LOGGER.info("String_Node_Str");
      }
    }
);
    txPreviewHeight.textProperty().addListener((observable,oldValue,newValue) -> {
      if (selectedLogo != null) {
        try {
          int height=Integer.parseInt(newValue);
          int width=Integer.parseInt(txPreviewWidth.getText());
          javafx.scene.image.Image image=SwingFXUtils.toFXImage(logoService.getPreviewForLogo(selectedLogo.getLogo(),selectedLogo.getRelativeRectangle(),width,height),null);
          previewLogo.setImage(image);
        }
 catch (        NumberFormatException e) {
          LOGGER.error("String_Node_Str");
        }
catch (        ServiceException e) {
          e.printStackTrace();
        }
      }
    }
);
    txPreviewWidth.textProperty().addListener((observable,oldValue,newValue) -> {
      if (selectedLogo != null) {
        try {
          int width=Integer.parseInt(newValue);
          int height=Integer.parseInt(txPreviewHeight.getText());
          javafx.scene.image.Image image=SwingFXUtils.toFXImage(logoService.getPreviewForLogo(selectedLogo.getLogo(),selectedLogo.getRelativeRectangle(),width,height),null);
          previewLogo.setImage(image);
        }
 catch (        NumberFormatException e) {
          LOGGER.error("String_Node_Str");
        }
catch (        ServiceException e) {
          e.printStackTrace();
        }
      }
    }
);
  }
 catch (  ServiceException e) {
    e.printStackTrace();
  }
}