diff --git a/pom.xml b/pom.xml index 756d610..26abf17 100644 --- a/pom.xml +++ b/pom.xml @@ -3,11 +3,20 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + 1S Corrector ru.dmitriymx corrector-1s + jar 1.0-SNAPSHOT + + + DmitriyMX + dmiriymx@yandex.ru + + + UTF-8 1.8 @@ -45,7 +54,6 @@ poi-ooxml 3.17 - @@ -70,13 +78,16 @@ + maven-assembly-plugin 2.2-beta-5 + ${project.artifactId}-${project.version} + false - ru.dmitriymx.Main + ru.dmitriymx.corrector1s.Main @@ -86,5 +97,4 @@ - - \ No newline at end of file + diff --git a/src/main/java/ru/dmitriymx/corrector1s/Main.java b/src/main/java/ru/dmitriymx/corrector1s/Main.java index a564605..652446f 100644 --- a/src/main/java/ru/dmitriymx/corrector1s/Main.java +++ b/src/main/java/ru/dmitriymx/corrector1s/Main.java @@ -1,6 +1,7 @@ package ru.dmitriymx.corrector1s; import lombok.extern.slf4j.Slf4j; +import ru.dmitriymx.corrector1s.gui.MainApp; import java.io.File; import java.util.List; @@ -8,14 +9,18 @@ import java.util.List; @Slf4j public class Main { public static void main(String[] args) throws Exception { - File file = new File(args[0]); - File file1 = new File(args[1]); + if (args.length == 0) { + MainApp.main(args); + } else { + File file = new File(args[0]); + File file1 = new File(args[1]); - ExcelReader excelReader = new ExcelReader(file); - List data = excelReader.getData(); - excelReader.correctStyle(); - excelReader.correctData(data); - excelReader.insertNewCols(); - excelReader.save(file1); + ExcelReader excelReader = new ExcelReader(file); + List data = excelReader.getData(); + excelReader.correctStyle(); + excelReader.correctData(data); + excelReader.insertNewCols(); + excelReader.save(file1); + } } } diff --git a/src/main/java/ru/dmitriymx/corrector1s/gui/MainApp.java b/src/main/java/ru/dmitriymx/corrector1s/gui/MainApp.java new file mode 100644 index 0000000..2351197 --- /dev/null +++ b/src/main/java/ru/dmitriymx/corrector1s/gui/MainApp.java @@ -0,0 +1,33 @@ +package ru.dmitriymx.corrector1s.gui; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.image.Image; +import javafx.stage.Stage; + +import java.io.IOException; + +public class MainApp extends Application { + + public static void main(String[] args) { + launch(args); + } + + @Override + public void start(Stage primaryStage) throws Exception { + primaryStage.setTitle("1С корректор (v1.0)"); + primaryStage.setResizable(false); + primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("excel.png"))); + primaryStage.setScene(loadScene(primaryStage)); + primaryStage.show(); + } + + private Scene loadScene(Stage stage) throws IOException { + FXMLLoader loader = new FXMLLoader(getClass().getResource("single_layout.fxml")); + Scene scene = new Scene(loader.load(), 350-10, 203-10); + MainController controller = loader.getController(); + controller.setStage(stage); + return scene; + } +} diff --git a/src/main/java/ru/dmitriymx/corrector1s/gui/MainController.java b/src/main/java/ru/dmitriymx/corrector1s/gui/MainController.java new file mode 100644 index 0000000..28c2cce --- /dev/null +++ b/src/main/java/ru/dmitriymx/corrector1s/gui/MainController.java @@ -0,0 +1,107 @@ +package ru.dmitriymx.corrector1s.gui; + +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.*; +import javafx.scene.layout.Pane; +import javafx.stage.FileChooser; +import javafx.stage.Stage; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class MainController { + private Stage stage; + @FXML + private TextField sourceFilePath; + @FXML + private TextField saveAsFilePath; + @FXML + private CheckBox saveAsCheckBox; + @FXML + private Button btnSourceFilePath; + @FXML + private Button btnSaveAsFilePath; + @FXML + private Pane mainPane; + @FXML + private Pane waitPane; + @FXML + private ProgressIndicator progressBar; + @FXML + private Button btnStartCorrect; + @FXML + private Spinner gonorar; + private SpinnerValueFactory gonorarValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 100, 9); + + private FileChooser buildFileChooser(TextField textField) { + FileChooser fileChooser = new FileChooser(); + + if (!textField.getText().isEmpty() && Files.exists(Paths.get(textField.getText()))) { + File file = new File(textField.getText()); + if (file.isDirectory()) { + fileChooser.setInitialDirectory(file); + } else { + fileChooser.setInitialDirectory(file.getParentFile()); + } + } + + fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter( + "Таблицы Excel (*.xls, *.xlsx)", + "*.xls", "*.xlsx")); + + return fileChooser; + } + + @FXML + public void initialize() { + gonorar.setValueFactory(gonorarValueFactory); + + saveAsCheckBox.selectedProperty().addListener((observable, oldValue, newValue) -> { + saveAsFilePath.setDisable(!newValue); + btnSaveAsFilePath.setDisable(!newValue); + }); + + btnSourceFilePath.addEventHandler(ActionEvent.ACTION, event -> { + File file = buildFileChooser(sourceFilePath).showOpenDialog(stage); + if (file != null) { + sourceFilePath.setText(file.getAbsolutePath()); + if (!saveAsCheckBox.selectedProperty().get()) { + saveAsFilePath.setText(file.getAbsolutePath()); + } + } + }); + + btnSaveAsFilePath.addEventHandler(ActionEvent.ACTION, + event -> buildFileChooser(saveAsFilePath).showSaveDialog(stage)); + + btnStartCorrect.addEventHandler(ActionEvent.ACTION, event -> { + mainPane.setDisable(true); + mainPane.setOpacity(0.3d); + waitPane.setVisible(true); + progressBar.setProgress(0d); + + Runnable runnable = () -> { + do { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + break; + } + progressBar.setProgress(progressBar.getProgress() + 0.1d); + } while (progressBar.getProgress() <= 1.0d); + + waitPane.setVisible(false); + mainPane.setOpacity(1.0d); + mainPane.setDisable(false); + }; + Thread thread = new Thread(runnable); + thread.start(); + }); + } + + void setStage(Stage stage) { + this.stage = stage; + } +} diff --git a/src/main/resources/ru/dmitriymx/corrector1s/gui/excel.png b/src/main/resources/ru/dmitriymx/corrector1s/gui/excel.png new file mode 100644 index 0000000..3b8d353 Binary files /dev/null and b/src/main/resources/ru/dmitriymx/corrector1s/gui/excel.png differ diff --git a/src/main/resources/ru/dmitriymx/corrector1s/gui/single_layout.fxml b/src/main/resources/ru/dmitriymx/corrector1s/gui/single_layout.fxml new file mode 100644 index 0000000..734c1aa --- /dev/null +++ b/src/main/resources/ru/dmitriymx/corrector1s/gui/single_layout.fxml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +