package mara.mybox.controller; import java.io.File; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.scene.control.RadioButton; import javafx.scene.control.Toggle; import javafx.scene.control.ToggleGroup; import mara.mybox.data.FileEditInformation.Line_Break; import mara.mybox.tools.TextTools; import mara.mybox.value.AppVariables; import static mara.mybox.value.AppVariables.logger; /** * @Author Mara * @CreateDate 2018-9-21 * @Description * @License Apache License Version 2.0 */ public class TextLineBreakBatchController extends TextEncodingBatchController { @FXML protected ToggleGroup lbGroup; public TextLineBreakBatchController() { baseTitle = AppVariables.message("TextLineBreakBatch"); } @Override public void initOptionsSection() { super.initOptionsSection(); lbGroup.selectedToggleProperty().addListener(new ChangeListener<Toggle>() { @Override public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) { checkLineBreak(); } }); checkLineBreak(); } protected void checkLineBreak() { RadioButton selected = (RadioButton) lbGroup.getSelectedToggle(); if (AppVariables.message("LF").equals(selected.getText())) { targetInformation.setLineBreak(Line_Break.LF); } else if (AppVariables.message("CR").equals(selected.getText())) { targetInformation.setLineBreak(Line_Break.CR); } else if (AppVariables.message("CRLF").equals(selected.getText())) { targetInformation.setLineBreak(Line_Break.CRLF); } targetInformation.setLineBreakValue(TextTools.lineBreakValue(targetInformation.getLineBreak())); } @Override public String handleFile(File srcFile, File targetPath) { try { countHandling(srcFile); File target = makeTargetFile(srcFile, targetPath); if (target == null) { return AppVariables.message("Skip"); } sourceInformation.setFile(srcFile); sourceInformation.setLineBreak(TextTools.checkLineBreak(srcFile)); sourceInformation.setLineBreakValue(TextTools.lineBreakValue(sourceInformation.getLineBreak())); if (autoDetermine) { boolean ok = TextTools.checkCharset(sourceInformation); if (!ok || sourceInformation == null) { return AppVariables.message("Failed"); } } targetInformation.setFile(target); targetInformation.setCharset(sourceInformation.getCharset()); if (TextTools.convertLineBreak(sourceInformation, targetInformation)) { targetFileGenerated(target); return AppVariables.message("Successful"); } else { return AppVariables.message("Failed"); } } catch (Exception e) { logger.error(e.toString()); return AppVariables.message("Failed"); } } }