@Override
    public void changed(
        ObservableValue<? extends LocalFile> observable, LocalFile oldValue, LocalFile newValue) {
      if (newValue == null || oldValue == newValue) return;

      // if selected item in FileList is a directory, display contents
      if (newValue.isDirectory()) {
        detailsView.centerProperty().setValue(fileGrid);

        listFiles.clear();
        newValue.getChildren().stream().forEach(listFiles::add);

        fileGrid.getItems().clear();
        fileGrid.getItems().addAll(listFiles);
      } else {

        // set ListView as display main element
        detailsView.centerProperty().setValue(fileDetailsList);

        // clear existing data
        fileDetails.clear();
        fileDetailsList.getItems().clear();

        newValue.getFileInfoList().stream().forEach(fileDetails::add);

        // add list of file attributes to ListView
        fileDetailsList.getItems().addAll(fileDetails);
      }
    }