@FXML private void removeSubs() { try { MultiTransformation transformation = new MultiTransformation(); if (isFileToConvert) { transformation.addTransformation(new TransformationConfig(file, percentageToRemove, true)); // multiTransformation.addFile(file); } else { transformation.addDirectory(file, percentageToRemove, true); } transformation.perform(); alertInfo.showDialog( "Subtitles successfully modified !", "The subtitles file(s) has/have been replaced by the new one(s), but you can still find the old one(s) in the 'oldSubs' directory "); // Map<File, TransformationResult> result = multiTransformation.getResults(); for (DefaultTransformation t : transformation.getTransformations()) { HistoryHelper.save(new TransformationResultHistory(t.getResult())); } } catch (Exception ex) { logger.error(ex); alertError.showDialog(ex); ex.printStackTrace(); } buttonRemoveSubs.setDisable(true); }
public class SubtitleEditorController { static final Logger logger = Logger.getLogger(SubtitleEditorController.class); @FXML private Button selectFileButton; @FXML private Slider sliderSubsToRemove; @FXML private Button buttonRemoveSubs; @FXML private Label labelEffectivePercent; @FXML private PieChart pieChartSubsToRemove; @FXML private RadioButton folderRadio; @FXML private RadioButton fileRadio; @FXML private TableView<TransformationResultHistory> historyTable; @FXML private TableColumn<TransformationResultHistory, String> nameColumn; @FXML private TableColumn<TransformationResultHistory, Date> dateColumn; @FXML private TableColumn<TransformationResultHistory, Number> percentageColumn; ExceptionAlert alertError = ExceptionAlert.getINSTANCE(); InformationAlert alertInfo = InformationAlert.getINSTANCE(); private boolean isFileToConvert; private int percentageToRemove; private boolean isChooserShown = false; private FileChooser fileChooser = new FileChooser(); private DirectoryChooser directoryChooser = new DirectoryChooser(); final ToggleGroup radioFileGroup = new ToggleGroup(); private File file; @FXML private void initialize() throws Exception { initializeSlider(); initializePieChart(); initializeFileChooser(); initializeTableView(); initializeRadioButtons(); buttonRemoveSubs.setDisable(true); } @FXML private void selectFile() { if (!isChooserShown) { isChooserShown = true; File selectedFile; if (isFileToConvert) { selectedFile = fileChooser.showOpenDialog(new Stage()); } else { selectedFile = directoryChooser.showDialog(new Stage()); } isChooserShown = false; if (selectedFile != null) { buttonRemoveSubs.setDisable(false); file = selectedFile; } } else { alertInfo.showDialog( "FileChooser already in use", "Sorry, it's not possible to use multiple FileChoosers at the same time ."); } } @FXML private void removeSubs() { try { MultiTransformation transformation = new MultiTransformation(); if (isFileToConvert) { transformation.addTransformation(new TransformationConfig(file, percentageToRemove, true)); // multiTransformation.addFile(file); } else { transformation.addDirectory(file, percentageToRemove, true); } transformation.perform(); alertInfo.showDialog( "Subtitles successfully modified !", "The subtitles file(s) has/have been replaced by the new one(s), but you can still find the old one(s) in the 'oldSubs' directory "); // Map<File, TransformationResult> result = multiTransformation.getResults(); for (DefaultTransformation t : transformation.getTransformations()) { HistoryHelper.save(new TransformationResultHistory(t.getResult())); } } catch (Exception ex) { logger.error(ex); alertError.showDialog(ex); ex.printStackTrace(); } buttonRemoveSubs.setDisable(true); } /** initializes the tableView (history) */ private void initializeTableView() { historyTable.setItems(HistoryHelper.getHistory()); nameColumn.setCellValueFactory( new PropertyValueFactory<TransformationResultHistory, String>("fileName")); percentageColumn.setCellValueFactory( new PropertyValueFactory<TransformationResultHistory, Number>("percentOfSuppression")); dateColumn.setCellValueFactory( new PropertyValueFactory<TransformationResultHistory, Date>("transformationDate")); } /** initializes the PieChart */ private void initializePieChart() { ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList( new PieChart.Data("To Keep", 100), new PieChart.Data("To Remove", 0)); pieChartSubsToRemove.setData(pieChartData); } /** Initializes the FileChooser */ private void initializeFileChooser() { // init the single file chooser fileChooser.getExtensionFilters().setAll(new FileChooser.ExtensionFilter("SRT", "*.srt")); } /** Initializes the Slider */ private void initializeSlider() { sliderSubsToRemove .valueProperty() .addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { percentageToRemove = (int) sliderSubsToRemove.getValue(); labelEffectivePercent.setText(Integer.toString(percentageToRemove) + " %"); pieChartSubsToRemove.getData().get(0).setPieValue(100 - percentageToRemove); pieChartSubsToRemove.getData().get(1).setPieValue(percentageToRemove); } }); } /** * Initializes the RadioButton, permits to know if a file or a directory needs to be transformed */ private void initializeRadioButtons() { folderRadio.setToggleGroup(this.radioFileGroup); fileRadio.setToggleGroup(this.radioFileGroup); this.radioFileGroup .selectedToggleProperty() .addListener( new ChangeListener<Toggle>() { @Override public void changed( ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) { if (fileRadio.isSelected()) { selectFileButton.setText("Select your subtitle file !"); isFileToConvert = true; } else { selectFileButton.setText("Select your subtitles folder !"); isFileToConvert = false; } buttonRemoveSubs.setDisable(true); } }); fileRadio.setSelected(true); } }