package com.twasyl.slideshowfx.controls.builder.editor; import com.twasyl.slideshowfx.utils.io.DefaultCharsetWriter; import javafx.scene.control.TextArea; import java.io.*; import java.util.logging.Level; import java.util.logging.Logger; import static com.twasyl.slideshowfx.global.configuration.GlobalConfiguration.getDefaultCharset; /** * @author Thierry Wasylczenko */ public class SimpleFileEditor extends AbstractFileEditor<TextArea> { private static final Logger LOGGER = Logger.getLogger(SimpleFileEditor.class.getName()); public SimpleFileEditor() { super(); final TextArea area = new TextArea(); area.setWrapText(true); this.setFileContent(area); } public SimpleFileEditor(File file) { this(); this.setFile(file); } @Override public void updateFileContent() { if(getFile() == null) throw new NullPointerException("The fileProperty is null"); try(final InputStreamReader inputReader = new InputStreamReader(new FileInputStream(getFile()), getDefaultCharset()); final BufferedReader reader = new BufferedReader(inputReader)) { final StringBuilder builder = new StringBuilder(); reader.lines().forEach(line -> builder.append(line).append("\n")); getFileContent().setText(builder.toString()); } catch (IOException e) { LOGGER.log(Level.SEVERE, "Can not save the content", e); } } @Override public void saveContent() { if(getFile() == null) throw new NullPointerException("The fileProperty is null"); try(final DefaultCharsetWriter writer = new DefaultCharsetWriter(getFile())) { writer.write(this.getFileContent().getText()); writer.flush(); } catch (IOException e) { LOGGER.log(Level.SEVERE, "Can not save the content", e); } } }