Program: 77787
Project: 77787
Buggy source:
@FXML private void initialize(){
  tableLogo.setEditable(true);
  colLogoID.setCellValueFactory(new PropertyValueFactory<Profile.PairLogoRelativeRectangle,Integer>("String_Node_Str"));
  colLogoID.setCellFactory(tc -> {
    TableCell<Profile.PairLogoRelativeRectangle,Integer> cell=new TableCell<Profile.PairLogoRelativeRectangle,Integer>(){
      @Override protected void updateItem(      Integer item,      boolean empty){
        super.updateItem(item,empty);
        setText(empty ? null : String.valueOf(item));
      }
    }
;
    cell.setOnMouseClicked(e -> {
      if (!cell.isEmpty() && selectedLogo != null) {
        if (selectedLogo.getLogo().getId() == cell.getItem()) {
          LOGGER.debug("String_Node_Str" + selectedLogo.getLogo().getId());
          tableLogo.getSelectionModel().clearSelection();
          selectedLogo=null;
          try {
            previewLogo.setImage(SwingFXUtils.toFXImage(logoService.getPreviewForMultipleLogos(logoList,Integer.valueOf(txPreviewWidth.getText()),Integer.valueOf(txPreviewHeight.getText())),null));
          }
 catch (          ServiceException e1) {
            LOGGER.error("String_Node_Str",e1);
          }
        }
      }
    }
);
    return cell;
  }
);
  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){
      String newLabel="String_Node_Str";
      if (p.getValue().getLogo() != null)       newLabel=p.getValue().getLogo().getLabel();
      return new ReadOnlyObjectWrapper(newLabel);
    }
  }
);
  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=(t.getTableView().getItems().get(t.getTablePosition().getRow()));
        if (t.getNewValue().compareTo("String_Node_Str") != 0) {
          if (p.getLogo() == null) {
            Logo newLogo=pservice.addLogo(new Logo(t.getNewValue(),"String_Node_Str"));
            p.setLogo(newLogo);
          }
 else {
            if (pservice.getNumberOfUsing(p.getLogo().getId()) == 1) {
              txLogoName.getEntries().remove(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              txLogoName.getImgViews().remove(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              p.getLogo().setLabel(t.getNewValue());
              ImageView imgView=new ImageView(new Image("String_Node_Str" + p.getLogo().getPath(),30,30,true,true));
              imgView.setId((p.getLogo().getPath()));
              txLogoName.getEntries().add(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              txLogoName.getImgViews().put(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId(),imgView);
            }
 else {
              int index=logoList.indexOf(p);
              logoList.remove(p);
              p.getLogo().setId(Integer.MIN_VALUE);
              p.getLogo().setLabel(t.getNewValue());
              Logo newLogo=pservice.addLogo(p.getLogo());
              p.setLogo(newLogo);
              logoList.add(index,p);
              ImageView imgView=new ImageView(new Image("String_Node_Str" + p.getLogo().getPath(),30,30,true,true));
              imgView.setId((p.getLogo().getPath()));
              txLogoName.getEntries().add(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              txLogoName.getImgViews().put(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId(),imgView);
              pservice.editPairLogoRelativeRectangle(p);
            }
          }
          LOGGER.debug("String_Node_Str" + p.getLogo().getId() + "String_Node_Str"+ p.getLogo().getLabel()+ "String_Node_Str"+ p.getLogo().getPath());
          pservice.editLogo(p.getLogo());
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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){
      String logoPath="String_Node_Str";
      if (p.getValue().getLogo() != null)       logoPath=p.getValue().getLogo().getPath();
      return new ReadOnlyObjectWrapper(logoPath);
    }
  }
);
  colLogoLogo.setCellFactory(new Callback<TableColumn,TableCell>(){
    @Override public TableCell call(    TableColumn p){
      return new LogoImgCell(logoList,pservice,imageHandler,windowManager.getStage(),txLogoName);
    }
  }
);
  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(imageHandler,logoList,pservice,windowManager.getStage(),selectedProfile,previewLogo,txLogoName);
    }
  }
);
  tableLogo.getSelectionModel().selectedItemProperty().addListener((obs,oldSelection,newSelection) -> {
    if (newSelection != null) {
      Profile.PairLogoRelativeRectangle selectedLogo=(Profile.PairLogoRelativeRectangle)newSelection;
      LOGGER.debug("String_Node_Str" + selectedLogo.getId());
      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());
          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) {
          LOGGER.error("String_Node_Str",e);
        }
      }
 else       LOGGER.debug("String_Node_Str");
    }
  }
);
  txPreviewHeight.textProperty().addListener((observable,oldValue,newValue) -> {
    changePreviewSize(newValue,0);
  }
);
  txPreviewWidth.textProperty().addListener((observable,oldValue,newValue) -> {
    changePreviewSize(newValue,1);
  }
);
  txLogoUpload.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  txLogoUpload.setPrefWidth(50);
  txLogoUpload.setPrefHeight(50);
  txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  txLogoAdd.setPrefWidth(50);
  txLogoAdd.setPrefHeight(50);
  txLogoName.textProperty().addListener((observable,oldValue,newValue) -> {
    if (!newValue.isEmpty() && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoY.getText().isEmpty() && (!txLogoBreite.getText().isEmpty() || !txLogoHoehe.getText().isEmpty())) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoX.textProperty().addListener((observable,oldValue,newValue) -> {
    if (!newValue.isEmpty() && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoName.getText().isEmpty() && !txLogoY.getText().isEmpty() && (!txLogoBreite.getText().isEmpty() || !txLogoHoehe.getText().isEmpty())) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoY.textProperty().addListener((observable,oldValue,newValue) -> {
    if (!newValue.isEmpty() && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoName.getText().isEmpty() && (!txLogoBreite.getText().isEmpty() || !txLogoHoehe.getText().isEmpty())) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoBreite.textProperty().addListener((observable,oldValue,newValue) -> {
    if ((!newValue.isEmpty() || !txLogoHoehe.getText().isEmpty()) && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoY.getText().isEmpty() && !txLogoName.getText().isEmpty()) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoHoehe.textProperty().addListener((observable,oldValue,newValue) -> {
    if ((!newValue.isEmpty() || !txLogoBreite.getText().isEmpty()) && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoY.getText().isEmpty() && !txLogoName.getText().isEmpty()) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
}

Fixed version (ground truth):
@FXML private void initialize(){
  tableLogo.setEditable(true);
  colLogoID.setCellValueFactory(new PropertyValueFactory<Profile.PairLogoRelativeRectangle,Integer>("String_Node_Str"));
  colLogoID.setCellFactory(tc -> {
    TableCell<Profile.PairLogoRelativeRectangle,Integer> cell=new TableCell<Profile.PairLogoRelativeRectangle,Integer>(){
      @Override protected void updateItem(      Integer item,      boolean empty){
        super.updateItem(item,empty);
        setText(empty ? null : String.valueOf(item));
      }
    }
;
    cell.setOnMouseClicked(e -> {
      if (!cell.isEmpty() && selectedLogo != null) {
        if (selectedLogo.getId() == cell.getItem()) {
          LOGGER.debug("String_Node_Str" + selectedLogo.getId());
          tableLogo.getSelectionModel().clearSelection();
          selectedLogo=null;
          try {
            previewLogo.setImage(SwingFXUtils.toFXImage(logoService.getPreviewForMultipleLogos(logoList,Integer.valueOf(txPreviewWidth.getText()),Integer.valueOf(txPreviewHeight.getText())),null));
          }
 catch (          ServiceException e1) {
            LOGGER.error("String_Node_Str",e1);
          }
        }
      }
    }
);
    return cell;
  }
);
  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){
      String newLabel="String_Node_Str";
      if (p.getValue().getLogo() != null)       newLabel=p.getValue().getLogo().getLabel();
      return new ReadOnlyObjectWrapper(newLabel);
    }
  }
);
  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=(t.getTableView().getItems().get(t.getTablePosition().getRow()));
        if (t.getNewValue().compareTo("String_Node_Str") != 0) {
          if (p.getLogo() == null) {
            Logo newLogo=pservice.addLogo(new Logo(t.getNewValue(),"String_Node_Str"));
            p.setLogo(newLogo);
          }
 else {
            if (pservice.getNumberOfUsing(p.getLogo().getId()) == 1) {
              txLogoName.getEntries().remove(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              txLogoName.getImgViews().remove(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              p.getLogo().setLabel(t.getNewValue());
              ImageView imgView=new ImageView(new Image("String_Node_Str" + p.getLogo().getPath(),30,30,true,true));
              imgView.setId((p.getLogo().getPath()));
              txLogoName.getEntries().add(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              txLogoName.getImgViews().put(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId(),imgView);
            }
 else {
              int index=logoList.indexOf(p);
              logoList.remove(p);
              p.getLogo().setId(Integer.MIN_VALUE);
              p.getLogo().setLabel(t.getNewValue());
              Logo newLogo=pservice.addLogo(p.getLogo());
              p.setLogo(newLogo);
              logoList.add(index,p);
              ImageView imgView=new ImageView(new Image("String_Node_Str" + p.getLogo().getPath(),30,30,true,true));
              imgView.setId((p.getLogo().getPath()));
              txLogoName.getEntries().add(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId());
              txLogoName.getImgViews().put(p.getLogo().getLabel().toLowerCase() + "String_Node_Str" + p.getLogo().getId(),imgView);
              pservice.editPairLogoRelativeRectangle(p);
            }
          }
          LOGGER.debug("String_Node_Str" + p.getLogo().getId() + "String_Node_Str"+ p.getLogo().getLabel()+ "String_Node_Str"+ p.getLogo().getPath());
          pservice.editLogo(p.getLogo());
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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);
          changePreviewSize(txPreviewHeight.getText(),0);
        }
 else {
          refreshTableLogo(pservice.getAllPairLogoRelativeRectangle(selectedProfile.get(0).getId()));
        }
      }
 catch (      ServiceException e) {
        LOGGER.error("String_Node_Str",e);
        try {
          refreshTableProfiles(pservice.getAllProfiles());
        }
 catch (        ServiceException e1) {
          LOGGER.error("String_Node_Str",e1);
        }
      }
    }
  }
);
  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){
      String logoPath="String_Node_Str";
      if (p.getValue().getLogo() != null)       logoPath=p.getValue().getLogo().getPath();
      return new ReadOnlyObjectWrapper(logoPath);
    }
  }
);
  colLogoLogo.setCellFactory(new Callback<TableColumn,TableCell>(){
    @Override public TableCell call(    TableColumn p){
      return new LogoImgCell(logoList,pservice,imageHandler,windowManager.getStage(),txLogoName);
    }
  }
);
  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(imageHandler,logoList,pservice,windowManager.getStage(),selectedProfile,previewLogo,txLogoName);
    }
  }
);
  tableLogo.getSelectionModel().selectedItemProperty().addListener((obs,oldSelection,newSelection) -> {
    if (newSelection != null) {
      Profile.PairLogoRelativeRectangle selectedLogo=(Profile.PairLogoRelativeRectangle)newSelection;
      LOGGER.debug("String_Node_Str" + selectedLogo.getId());
      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());
          Image image=SwingFXUtils.toFXImage(logoService.getPreviewForLogo(selectedLogo.getLogo(),selectedLogo.getRelativeRectangle(),width,height),null);
          previewLogo.setImage(image);
        }
 catch (        NumberFormatException e) {
          LOGGER.error("String_Node_Str",e);
        }
catch (        ServiceException e) {
          LOGGER.error("String_Node_Str",e);
        }
      }
 else       LOGGER.debug("String_Node_Str");
    }
  }
);
  txPreviewHeight.textProperty().addListener((observable,oldValue,newValue) -> {
    changePreviewSize(newValue,0);
  }
);
  txPreviewWidth.textProperty().addListener((observable,oldValue,newValue) -> {
    changePreviewSize(newValue,1);
  }
);
  txLogoUpload.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  txLogoUpload.setPrefWidth(50);
  txLogoUpload.setPrefHeight(50);
  txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  txLogoAdd.setPrefWidth(50);
  txLogoAdd.setPrefHeight(50);
  txLogoName.textProperty().addListener((observable,oldValue,newValue) -> {
    if (!newValue.isEmpty() && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoY.getText().isEmpty() && (!txLogoBreite.getText().isEmpty() || !txLogoHoehe.getText().isEmpty())) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoX.textProperty().addListener((observable,oldValue,newValue) -> {
    if (!newValue.isEmpty() && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoName.getText().isEmpty() && !txLogoY.getText().isEmpty() && (!txLogoBreite.getText().isEmpty() || !txLogoHoehe.getText().isEmpty())) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoY.textProperty().addListener((observable,oldValue,newValue) -> {
    if (!newValue.isEmpty() && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoName.getText().isEmpty() && (!txLogoBreite.getText().isEmpty() || !txLogoHoehe.getText().isEmpty())) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoBreite.textProperty().addListener((observable,oldValue,newValue) -> {
    if ((!newValue.isEmpty() || !txLogoHoehe.getText().isEmpty()) && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoY.getText().isEmpty() && !txLogoName.getText().isEmpty()) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
  txLogoHoehe.textProperty().addListener((observable,oldValue,newValue) -> {
    if ((!newValue.isEmpty() || !txLogoBreite.getText().isEmpty()) && selectedProfile != null && txLogoLogo.getText().compareTo("String_Node_Str") != 0 && !txLogoX.getText().isEmpty() && !txLogoY.getText().isEmpty() && !txLogoName.getText().isEmpty()) {
      txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
    }
 else     txLogoAdd.setBackground(imageHandler.getButtonBackground("String_Node_Str",50,50));
  }
);
}